<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3853391852959341694</id><updated>2011-11-27T21:13:23.209-04:00</updated><category term='wxHaskell'/><category term='ubuntu'/><category term='umss'/><category term='xmonad'/><category term='ACM-ICPC'/><category term='haskell'/><category term='ghc'/><category term='gnome'/><category term='canbal'/><category term='Spoj'/><title type='text'>to_On1</title><subtitle type='html'>Las razones agudas son ronquidos para los oídos tontos</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-2294309651082770714</id><published>2010-09-18T11:05:00.008-04:00</published><updated>2010-10-20T09:29:52.004-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><title type='text'>Numeros Primos</title><content type='html'>En una materia de mi carrera Lic. Informática, mi docente nos dio de tarea(reto) calcular los números primos que se encuentran en el rango de mil millones números (100.000.000.000) y generarlo en un archivo.&lt;br /&gt;&lt;br /&gt;Cualquiera dirá hallar el numero primo es fácil, si es verdad de echo ya hay algoritmos que te calculan los números primos, pero para un rango de mil millones la cosa se complica.&lt;br /&gt;&lt;br /&gt;El reto esta en generarlo en el menor tiempo posible en el lenguaje funcional Haskell.&lt;br /&gt;&lt;br /&gt;Mi docente me explico un poco como funciona la criba de Erastotenes, entonces decidí aplicar ese algoritmo para generar los números primos.&lt;br /&gt;&lt;br /&gt;Este es mi primer intento para 10 millones de números:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/585759.js?file=gistfile1.hs"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Y obtuve los siguientes resultados&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span title=""&gt;$ time ./Primes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;real   1m8.407s&lt;br /&gt;user 1m5.015s&lt;br /&gt;sys   0m0.815s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con mi código, de entrada no podre superar el reto, entonces me puse a analizar por que tardaba tanto y como podía mejorarlo.&lt;br /&gt;&lt;br /&gt;Pude hacer la siguiente mejora para mil millones de números:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/585813.js?file=gistfile1.hs"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;$time ./Primos&lt;br /&gt;&lt;span&gt;&lt;span title=""&gt;&lt;span style="font-weight: bold;"&gt;real 4m59.920s&lt;br /&gt;user 4m40.015s&lt;br /&gt;sys   0m6.015s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si hacemos una comparación con mi primera versión, logre mejorar bastante ya que para el primero solo calculo para diez millones y  para el segundo calculo para mil millones números.&lt;br /&gt;&lt;br /&gt;Haciendo cálculos matemáticos 100 * 5 (redondeado al tiempo que tardo para mil millones) = 500 minutos y lo dividimos en 60 minutos, nos dará el siguiente resultado 500/60 = 8.33.&lt;br /&gt;&lt;br /&gt;Esto quiere decir que para calcular el rango de mil millones de números tardara 8 horas con 33 minutos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-2294309651082770714?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/2294309651082770714/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2010/09/numeros-primos.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/2294309651082770714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/2294309651082770714'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2010/09/numeros-primos.html' title='Numeros Primos'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-473467766790550088</id><published>2010-07-11T13:24:00.005-04:00</published><updated>2010-07-12T07:17:44.840-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='umss'/><category scheme='http://www.blogger.com/atom/ns#' term='ACM-ICPC'/><title type='text'>Criptografia</title><content type='html'>En los entrenamientos para el concurso de la &lt;a href="http://cm.baylor.edu/welcome.icpc"&gt;ACM_ICPC&lt;/a&gt; realizado en la UMSS, propuse el siguiente problema.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Description&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El gente to_O1 estuvo investigando por mucho tiempo a una banda de "Hackers" que opera en la ciudad de Cochabamba. En su investigación pudo interceptar varios mensajes cifrados que se enviaban entre " Hackes";  después  de hacer un análisis a todos los mensajes interceptados descubrió que cada palabra tiene una llave que lo cifra. to_On1 elaboro un algoritmo que pueda descifrar los mensajes cifrados. pero lamentablemente en un accidente aéreo el agente to_On1 falleció y con el su portátil donde tenia toda la información de como descifrar los mensajes.&lt;br /&gt;&lt;br /&gt;Ahora usted formara parte de nuestro equipo de investigación y como su primera tarea sera elaborar un algoritmo que pueda descifrar los mensajes, gracias al agente to_On1 tenemos todas las llaves que utilizan los "Hackers" para poder descifrar los mensajes.&lt;br /&gt;&lt;br /&gt;Esperemos que este ejemplo le ayuden a elaborar el algoritmo descifrador&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Encrypted message : &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;ahac qvkzayo mj klcmbi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Kay word                     : &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;hackers&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Decoded message    :&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;this message is secure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;INPUT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La entrada consiste en N casos (1&lt;= N &lt;=10000). La primera linea solo contiene un numero entero positivo N. A continuación siguen los casos. La primera linea de cada coso contiene dos números enteros M y K (1 &lt;= M ,K &lt;= 10000) separados por un espacio. M determina la cantidad de palabras que tiene el mensaje cifrado, K determina la cantidad de llaves para descifrar el mensaje.  &lt;span style="font-weight: bold;"&gt;OUPUT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por cada caso  hay que imprimir el mensaje descifrado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Input&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;5 5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;rvcu if acm d qgjqpzm&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;you can not decrypt it&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;4 4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;wco eaa acm uacs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;you can not know&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;5 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;fwqf # yxtjaf zd (591-123?u24)?&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;hi world&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ouput&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;this is not a message&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;you can not know&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;your # number is (591-123?m24)?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Solution&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;La solución es muy sencilla solo hay que agarrar cada dígito del mensaje y de las palabras llave y aplicar el &lt;a href="http://es.wikipedia.org/wiki/Cifrado_de_Vigen%C3%A8re"&gt;Cifrado de Vigenere&lt;/a&gt; de forma invertida con todos los dígitos, en caso de que las palabras llave tenga menos dígitos que el mensaje, entonces se vuelve a utilizar las palabras llave hasta terminar de descifrar todo los dígitos del mensaje.&lt;br /&gt;&lt;br /&gt;A continuación una solución en &lt;a href="http://haskell.org/"&gt;Haskell&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/472296.js?file=gistfile1.hs"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-473467766790550088?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/473467766790550088/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2010/07/criptografia.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/473467766790550088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/473467766790550088'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2010/07/criptografia.html' title='Criptografia'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-3253283962715872301</id><published>2010-07-11T09:21:00.006-04:00</published><updated>2010-07-11T11:34:30.021-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='xmonad'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Cofigurar Xmonad en Gnome - Ubuntu</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_E7SOy4GA9vY/TDnfesl79XI/AAAAAAAAAHg/uwmtGXAmPfU/s1600/xmonad.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 341px; height: 213px;" src="http://1.bp.blogspot.com/_E7SOy4GA9vY/TDnfesl79XI/AAAAAAAAAHg/uwmtGXAmPfU/s320/xmonad.png" alt="" id="BLOGGER_PHOTO_ID_5492666939014378866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;En un post anterior explique como &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://info-antonio.blogspot.com/2009/08/personalizar-xmonad.html"&gt;configurar xmonad&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; como gestor de escritorio por defecto. Ahora explicare como configurar &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://xmonad.org/"&gt;Xmonad&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; en &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://www.gnome.org/"&gt;Gnome&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;, para lo cual hay que seguir los siguientes pasos:&lt;/span&gt;  &lt;span style="font-family:verdana;"&gt;Abrimos una terminal y instalamos el xmonad&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);font-family:arial;" &gt;$ sudo aptitude install xmonad &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;font-family:verdana;font-size:100%;"  &gt;Aptitude se encarga automáticamente de todas las dependencias. Luego debemos crear y modificar el archivo de  configuración.&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;$ mkdir ~/.xmonad &amp;amp;&amp;amp; touch ~/.xmonad/xmonad.hs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: normal;font-family:verdana;" &gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Abrimos el archivo xmonad.hs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;$ gedit ~/.xmonad/xmonad.hs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;y copiamos las siguientes lineas de código&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code style="color: rgb(51, 102, 255);"&gt;import XMonad&lt;br /&gt;import XMonad.Config.Gnome&lt;br /&gt;&lt;br /&gt;main = xmonad gnomeConfig&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-family: verdana;font-size:100%;" &gt;Ahora debemos recompilar el archivo xmonad.hs con el siguiente comando&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;$ xmonad --recompile &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Ahora tenemos que activarlo nuestra configuración de nuestro xmonad, para lo cual tenemos que avisarle a gnome que utilice xmonad como decorador de ventanas en lugar de&lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt; gnome-wm&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;. Tenemos dos opciones uno configurar por consola otro visualmente.&lt;/span&gt;  &lt;span style="font-family:verdana;"&gt;Por consola:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre style="color: rgb(51, 102, 255);"&gt;&lt;code&gt;$ gconftool-2 -s /desktop/gnome/session/required_components/windowmanager xmonad --type string&lt;/code&gt;&lt;/pre&gt; &lt;p style="font-family: verdana;"&gt;Forma gráfica:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;ejecutamos por la consola la siguiente aplicación&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(51, 102, 255);"&gt;$ &lt;code&gt;gconf-editor&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;vamos abriendo las pestañas&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;em style="font-family: verdana;"&gt;desktop&lt;/em&gt;&lt;span style="font-family:verdana;"&gt;, &lt;/span&gt;&lt;em style="font-family: verdana;"&gt;gnome&lt;/em&gt;&lt;span style="font-family:verdana;"&gt;,  &lt;/span&gt;&lt;em style="font-family: verdana;"&gt;session&lt;/em&gt;&lt;span style="font-family:verdana;"&gt; y &lt;/span&gt;&lt;em style="font-family: verdana;"&gt;requiered_components&lt;/em&gt;&lt;span style="font-family:verdana;"&gt;, ahora  debemos hacer  clic derecho en &lt;/span&gt;&lt;em style="font-family: verdana;"&gt;windowmanager&lt;/em&gt;&lt;span style="font-family:verdana;"&gt;, elegir “Editar clave" allí escribir xmonad en lugar de gnome-wm ahora reiniciamos nuestro sistema o cerramos sesión y volvemos a entrar, ahora podremos disfrutar de nuestro xmonad :)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-3253283962715872301?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/3253283962715872301/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2010/07/cofigurar-xmonad-en-gnome-ubuntu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/3253283962715872301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/3253283962715872301'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2010/07/cofigurar-xmonad-en-gnome-ubuntu.html' title='Cofigurar Xmonad en Gnome - Ubuntu'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_E7SOy4GA9vY/TDnfesl79XI/AAAAAAAAAHg/uwmtGXAmPfU/s72-c/xmonad.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-5473258904495419823</id><published>2010-05-29T17:12:00.003-04:00</published><updated>2010-05-29T17:48:26.013-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Spoj'/><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='ACM-ICPC'/><title type='text'>Roman Calculator</title><content type='html'>Utilizando &lt;a href="http://info-antonio.blogspot.com/2010/02/convertir-un-entero-en-un-numero-romano.html"&gt;mi algoritmo&lt;/a&gt; para convertir un numero entero es un numero romano; encontré un problema en el juez virtual &lt;a href="http://www.spoj.pl/"&gt;Spoj&lt;/a&gt; donde aplicar mi algoritmo.&lt;br /&gt;El ejercicio es &lt;a href="http://www.spoj.pl/SHORTEN/problems/ROMANCAL/"&gt;Roman Calculator&lt;/a&gt;, donde se tiene que hacer operaciones matemáticas con números romanos. Los datos de entrada y salida seria de la siguiente manera&lt;br /&gt;&lt;br /&gt;Input:&lt;br /&gt;6&lt;br /&gt;II + III&lt;br /&gt;II - III&lt;br /&gt;II * III&lt;br /&gt;VI : III&lt;br /&gt;V % III&lt;br /&gt;I - I&lt;br /&gt;Output:&lt;br /&gt;V&lt;br /&gt;-I&lt;br /&gt;VI&lt;br /&gt;II&lt;br /&gt;II&lt;br /&gt;ERROR&lt;br /&gt;&lt;br /&gt;Este seria mi solución para Roman Calculator &lt;br /&gt;&lt;script src="http://gist.github.com/418557.js?file=gistfile1.hsc"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-5473258904495419823?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/5473258904495419823/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2010/05/roman-calculator.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/5473258904495419823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/5473258904495419823'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2010/05/roman-calculator.html' title='Roman Calculator'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-5212586992255705571</id><published>2010-02-26T08:06:00.004-04:00</published><updated>2010-02-26T08:38:52.862-04:00</updated><title type='text'>Convertir un Entero en un Número Romano</title><content type='html'>A modo de entrenar mis habilidades de programación en haskell decidí hacer un algoritmo que me convierta un numero entero que este entre 1 y 3999 a su equivalente &lt;a href="http://es.wikipedia.org/wiki/Numeraci%C3%B3n_romana"&gt;número romano&lt;/a&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/315673.js?file=gistfile1.hs"&gt; &lt;/script&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-5212586992255705571?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/5212586992255705571/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2010/02/convertir-un-entero-en-un-numero-romano.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/5212586992255705571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/5212586992255705571'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2010/02/convertir-un-entero-en-un-numero-romano.html' title='Convertir un Entero en un Número Romano'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-4093239097139858537</id><published>2009-08-21T23:49:00.009-04:00</published><updated>2010-10-20T10:11:44.706-04:00</updated><title type='text'>Personalizar xmonad</title><content type='html'>Con la ayuda de amigo Carlos pude configurar mi xmonad de la siguiente manera,&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_E7SOy4GA9vY/So-fqe6gGyI/AAAAAAAAAFM/PPYwyO0BAUc/s1600-h/xmonad.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_E7SOy4GA9vY/So-fqe6gGyI/AAAAAAAAAFM/PPYwyO0BAUc/s320/xmonad.png" alt="" id="BLOGGER_PHOTO_ID_5372688432678050594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Con la explicación que are a continuación uno podrá  modificar a placer su xmonad.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_E7SOy4GA9vY/So96aDojVbI/AAAAAAAAAE8/3qoN18yk-2w/s1600-h/xmonad.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_E7SOy4GA9vY/So96aDojVbI/AAAAAAAAAE8/3qoN18yk-2w/s320/xmonad.png" alt="" id="BLOGGER_PHOTO_ID_5372647468546872754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para ello hay que tener instalado &lt;a href="http://info-antonio.blogspot.com/2009/06/xmonad-es-un-gestor-de-ventanas-escrito.html"&gt;xmonad&lt;/a&gt; . el siguiente paso es instalar &lt;a href="http://code.haskell.org/%7Earossato/xmobar/"&gt;xmobar&lt;/a&gt; lo puedes descargar de su pagina oficial o si tienes instalado darcs ejecuta el siguiente comando.&lt;br /&gt;&lt;pre&gt;darcs get http://darcs.complete.org/xmobar&lt;br /&gt;&lt;/pre&gt;&lt;code&gt;ahora hay que configurar ciertos archivos para poder agregar programas que se inicien por defecto, control de volumen, red , batería, etc.&lt;/code&gt;&lt;p&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;Pasos&lt;/span&gt;:&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;1. crear el archivo .xmobarrc&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;touch ~/.xmobarrc&lt;br /&gt;&lt;/pre&gt;&lt;code style="font-weight: bold;"&gt;2. abrimos el archivo creado y copiamos los siguientes codigos&lt;/code&gt;&lt;p&gt;&lt;code&gt;Config { font = "-*-Fixed-Bold-R-Normal-*-13-*-*-*-*-*-*-*"&lt;br /&gt;, bgColor = "black"&lt;br /&gt;, fgColor = "grey"&lt;br /&gt;, position = TopW L 85&lt;br /&gt;, lowerOnStart = True&lt;br /&gt;, commands = [ Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10&lt;br /&gt;    , Run Network "wlan0" ["-L","0","-H","32","--normal","green","--high","red"] 10&lt;br /&gt;    , Run Weather "EGPF" ["-t"," &lt;tempf&gt;F","-L","64","-H","77","--normal","green","--high","red","--low","lightblue"] 36000&lt;br /&gt;    , Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10&lt;br /&gt;    , Run Memory ["-t","Mem: &lt;usedratio&gt;%"] 10&lt;br /&gt;    , Run Swap [] 10&lt;br /&gt;    , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10&lt;br /&gt;    , Run StdinReader&lt;br /&gt;    , Run Com "df" ["-h | grep /dev/sda2 | awk '{print $5}'"] "disk1" 60&lt;br /&gt;    , Run Com "df" ["-h | grep /dev/sda3 | awk '{print $5}'"] "disk2" 60&lt;br /&gt;    , Run Battery ["-L", "50", "-H", "75", "--high", "green", "--normal", "yellow", "--low", "red"] 10&lt;br /&gt;    ]&lt;br /&gt;, sepChar = "%"&lt;br /&gt;, alignSep = "}{"&lt;br /&gt;, template = "%StdinReader% }{ %cpu% | %memory%  %swap% | Battery: %battery% | HD1: %disk1% | HD2: %disk2% | &lt;fc=#ee9a00&gt;%date%&lt;/fc=#ee9a00&gt;"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Todo este código es configurable de acuerdo a lo que quieres que aparezca en el xmobar para mayor información puedes ver la pagina oficial de &lt;a href="http://code.haskell.org/%7Earossato/xmobar/"&gt;xmobar.&lt;/a&gt;&lt;/usedratio&gt;&lt;/tempf&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;3. hora nos creamos los siguientes archivos si es que no los tenemos creados&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;touch /usr/share/xsessions/xmonad.start&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;touch /usr/share/xsessions/xmonad.desktop&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;4. abrimos el archivo xmonad.start y copiamos el siguiente código&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;xrdb -merge .Xresources&lt;br /&gt;&lt;br /&gt;trayer --edge top --align right --SetDockType true --SetPartialStrut true --expand true --width 15 --height 12 --transparent true --tint 0x000000 &amp;amp;&lt;br /&gt;&lt;br /&gt;gnome-screensaver&lt;br /&gt;&lt;br /&gt;gnome-settings-daemon&lt;br /&gt;&lt;br /&gt;if [ -x /usr/bin/gnome-power-manager ] ; then&lt;br /&gt;sleep 1&lt;br /&gt;gnome-power-manager&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ -x /usr/bin/nm-applet ] ; then&lt;br /&gt;nm-applet --sm-disable &amp;amp;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;kmix --keepvisibility&lt;br /&gt;&lt;br /&gt;feh --bg-scale /home/usuario/Imágenes/geek.jpg &amp;amp;&lt;br /&gt;&lt;br /&gt;exec xmonad&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:monospace;"&gt;En este archivo lo que hacemos es poder colocar la imagen que queramos en el fondo de escritori&lt;span style="font-family:Georgia,serif;"&gt;o, también que estén activos el medidor de la batería, configuración de la red, control de volumen, también podemos agregar programas que queremos que se inicialices eso depende de cada uno.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="font-family:Georgia,serif;"&gt;Para que todo esto funcione tenemos que instalar los siguientes programas&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:monospace;"&gt;&lt;span style="font-family:Georgia,serif;"&gt;sudo apt-get install feh kmix &lt;/span&gt;&lt;/span&gt;&lt;code&gt;trayer&lt;/code&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;code&gt;5. el siguiente paso es llamar a este archivo xmodan.start, para ello abrimos el archivo xmonad.desktop y copiamos las siguientes lineas&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;[Desktop Entry]&lt;br /&gt;Encoding=UTF-8&lt;br /&gt;Name=XMonadAntonio&lt;br /&gt;Comment=Leightweight tiling window manager&lt;br /&gt;Exec=/usr/share/xsessions/xmonad.start&lt;br /&gt;Icon=xmonad.png&lt;br /&gt;Type=XSession&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;code&gt;6. por ultimo creamos el siguiente archivo xmonad.hs en caso que no exista dentro el directorio .xmonad&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;mkdir ~/.xmonad&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;cd .xmonad&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;touch xmonad.hs&lt;/code&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;code&gt;7. abrimos el archivo xmonad.hs y copiamos el siguiente código haskell&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;import XMonad&lt;br /&gt;import XMonad.Hooks.DynamicLog&lt;br /&gt;import XMonad.Hooks.ManageDocks&lt;br /&gt;import XMonad.Util.Run(spawnPipe)&lt;br /&gt;import XMonad.Util.EZConfig(additionalKeys)&lt;br /&gt;import System.IO&lt;br /&gt;&lt;br /&gt;myManageHook = composeAll&lt;br /&gt;[ className =? "Gimp"      --&gt; doFloat&lt;br /&gt;, className =? "Vncviewer" --&gt; doFloat&lt;br /&gt;--    , className =? "Pidgin"    --&gt; doFloat&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;main = do&lt;br /&gt;xmproc &lt;- spawnPipe "xmobar /home/usurio/.xmobarrc" xmonad $ defaultConfig { manageHook = manageDocks &lt;+&gt; myManageHook&lt;br /&gt;                   &lt;+&gt; manageHook defaultConfig&lt;br /&gt;, layoutHook = avoidStruts  $  layoutHook defaultConfig&lt;br /&gt;, logHook = dynamicLogWithPP $ xmobarPP&lt;br /&gt;        { ppOutput = hPutStrLn xmproc&lt;br /&gt;        , ppTitle = xmobarColor "green" "" . shorten 50&lt;br /&gt;        }&lt;br /&gt;, modMask = mod4Mask     -- Rebind Mod to the Windows key&lt;br /&gt;} `additionalKeys`&lt;br /&gt;[ ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")&lt;br /&gt;, ((0, xK_Print), spawn "scrot")&lt;br /&gt;]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Listo, no se olvide cambiar los directorios por la de usted para que funcione, ahora serramos sesión y escogemos la sesión XmonadAntonio y listo ya puedes disfrutar del xmonad :)&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_E7SOy4GA9vY/So-aAl3LSPI/AAAAAAAAAFE/O8ZFVu_UfQo/s1600-h/xmonad2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_E7SOy4GA9vY/So-aAl3LSPI/AAAAAAAAAFE/O8ZFVu_UfQo/s320/xmonad2.png" alt="" id="BLOGGER_PHOTO_ID_5372682215430506738" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-4093239097139858537?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/4093239097139858537/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2009/08/personalizar-xmonad.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/4093239097139858537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/4093239097139858537'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2009/08/personalizar-xmonad.html' title='Personalizar xmonad'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_E7SOy4GA9vY/So-fqe6gGyI/AAAAAAAAAFM/PPYwyO0BAUc/s72-c/xmonad.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-7502056270864390744</id><published>2009-07-27T02:51:00.004-04:00</published><updated>2009-07-27T03:18:43.035-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><category scheme='http://www.blogger.com/atom/ns#' term='ghc'/><category scheme='http://www.blogger.com/atom/ns#' term='wxHaskell'/><category scheme='http://www.blogger.com/atom/ns#' term='canbal'/><title type='text'>Instalar GHC, Cabal y WXHaskell en Ubuntu</title><content type='html'>&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;Instalación de GHC 6.10.1, Cabal y WXHaskell en Ubuntu &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pasos&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;1. Instalar los siguientes paquetes.&lt;br /&gt;&lt;br /&gt; sudo apt-get install build-essential libglut3-dev libglitz-glx1-dev zlib1g-dev libwxgtk2.8-dev libgmp3-dev&lt;br /&gt;&lt;br /&gt;2. Creamos un directorio donde descargaremos los binarios de ghc&lt;br /&gt;&lt;br /&gt;cd ~&lt;br /&gt;mkdir ghc&lt;br /&gt;cd ghc&lt;br /&gt;&lt;br /&gt;3. Descargamos los binarios de ghc release (6.10.1)&lt;br /&gt;## Download the appropriate BINAIRY ghc release (6.10.1)&lt;br /&gt;&lt;br /&gt;# Para sistemas de 32-bit&lt;br /&gt;wget http://haskell.org/ghc/dist/6.10.1/ghc-6.10.1-i386-unknown-linux-libedit2.tar.bz2&lt;br /&gt;&lt;br /&gt;#Para sistemas de 64-bit&lt;br /&gt;wget http://haskell.org/ghc/dist/6.10.1/ghc-6.10.1-x86_64-unknown-linux-libedit2.tar.bz2&lt;br /&gt;&lt;br /&gt;4. Descargamos el codigo fuente de cabal y sus dependencias&lt;br /&gt;&lt;br /&gt;wget http://hackage.haskell.org/packages/archive/zlib/0.5.0.0/zlib-0.5.0.0.tar.gz&lt;br /&gt;wget http://hackage.haskell.org/packages/archive/HTTP/4000.0.5/HTTP-4000.0.5.tar.gz&lt;br /&gt;wget http://hackage.haskell.org/packages/archive/cabal-install/0.6.2/cabal-install-0.6.2.tar.gz&lt;br /&gt;&lt;br /&gt;5. Descomprimimos los archivos que acabamos de descargar&lt;br /&gt;&lt;br /&gt;tar -xzf zlib-0.5.0.0.tar.gz&lt;br /&gt;tar -xzf HTTP-4000.0.5.tar.gz&lt;br /&gt;tar -xzf cabal-install-0.6.2.tar.gz&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. ahora instalamos cada uno de los paquetes&lt;br /&gt;&lt;br /&gt;6.1 nos vamos a donde esta los binarios de ghc y ejecutamos los siguientes comandos&lt;br /&gt;&lt;br /&gt;./configure&lt;br /&gt;sudo make install&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.2 Instalamos el paquete zlib y ejecutamos los siguientes comandos&lt;br /&gt;&lt;br /&gt;cd zlib-0.5.0.0&lt;br /&gt;runhaskell Setup configure&lt;br /&gt;runhaskell Setup build&lt;br /&gt;sudo runhaskell Setup install&lt;br /&gt;cd ..&lt;br /&gt;&lt;br /&gt;6.3 Instalamos el paquete HTTP&lt;br /&gt;&lt;br /&gt;cd HTTP-4000.0.5&lt;br /&gt;runhaskell Setup configure&lt;br /&gt;runhaskell Setup build&lt;br /&gt;sudo runhaskell Setup install&lt;br /&gt;cd ..&lt;br /&gt;&lt;br /&gt;6.4 Instalamos el paquete cabal-install&lt;br /&gt;&lt;br /&gt;cd cabal-install-0.6.2&lt;br /&gt;runhaskell Setup configure&lt;br /&gt;runhaskell Setup build&lt;br /&gt;sudo runhaskell Setup install&lt;br /&gt;cd ..&lt;br /&gt;&lt;br /&gt;7. ahora ya tenemos compilado cabal-install, para probar ejecutamos los siguientes comandos&lt;br /&gt;&lt;br /&gt;~/.cabal/bin/cabal update&lt;br /&gt;~/.cabal/bin/cabal list&lt;br /&gt;&lt;br /&gt;8. Si estos 2 comandos funcionan, copiamos en el directorio del sistema&lt;br /&gt;&lt;br /&gt;sudo cp ~/.cabal/bin/cabal /usr/local/bin/&lt;br /&gt;&lt;br /&gt;9. Intalamos wxcore y wx&lt;br /&gt;&lt;br /&gt;sudo cabal install wxcore&lt;br /&gt;sudo cabal install wx&lt;br /&gt;&lt;br /&gt;Eso seria todo ahora a disfrutar de Haskell y wxHaskell para hacer interfaces graficas :) &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-7502056270864390744?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/7502056270864390744/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2009/07/instalar-ghc-cabal-y-wxhaskell-en.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/7502056270864390744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/7502056270864390744'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2009/07/instalar-ghc-cabal-y-wxhaskell-en.html' title='Instalar GHC, Cabal y WXHaskell en Ubuntu'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-2310906770740977606</id><published>2009-06-20T10:54:00.000-04:00</published><updated>2009-06-20T12:18:31.392-04:00</updated><title type='text'>Xmonad</title><content type='html'>Xmonad es un gestor de ventanas escrito en haskell. Las ventanas se administran con algoritmos de distribución automática, en cuanto a manejo de memoria, es súper eficiente, utiliza poca memoria casi comparado a C respecto a otros gestores de ventanas que no son muy buenos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_E7SOy4GA9vY/Sjz-r3auxKI/AAAAAAAAAEE/11XVtcO6f8w/s1600-h/xmonad.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;" src="http://4.bp.blogspot.com/_E7SOy4GA9vY/Sjz-r3auxKI/AAAAAAAAAEE/11XVtcO6f8w/s320/xmonad.png" alt="" id="BLOGGER_PHOTO_ID_5349430486973203618" border="0" /&gt;&lt;/a&gt;Lo rico es que puedes programarlo y configurarlo a tu gusto :) , pero con el predeterminado es mas que suficiente, la navegación entre ventanas es súper eficiente, el mause queda casi obsoleto.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_E7SOy4GA9vY/Sjz-rn4tjMI/AAAAAAAAAD8/A-96lyPVBf4/s1600-h/xmonad2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_E7SOy4GA9vY/Sjz-rn4tjMI/AAAAAAAAAD8/A-96lyPVBf4/s320/xmonad2.png" alt="" id="BLOGGER_PHOTO_ID_5349430482803985602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Xmonad se puede utilizar en varios distros de linux como , Ubuntu, Gentoo, Fedora, Slackware,etc , tambien en &lt;a href="http://www.haskell.org/haskellwiki/Xmonad/Using_xmonad_on_Apple_OSX"&gt;Mac OSX&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;pienso que todo programador en Unix debería utilizarlo.&lt;br /&gt;&lt;br /&gt;Paso para instalar solo hay que ejecutar en una terminal&lt;br /&gt;&lt;br /&gt;$ sudo apt-get install xmonad&lt;br /&gt;&lt;br /&gt;o si quieres bajartelo el codigo y compilarlo&lt;br /&gt;&lt;br /&gt;$ darcs get http://code.haskell.org/xmonad&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ahora para utilizar solo el xmonad por que puedes configurar para que funcione con gnome. Cerrar sesion y elegir xmonad como escritorio al momento de cargar sistema y listo.&lt;br /&gt;A primera imprecisión pareciera que que se colgó la maquina por que solo aparece el fondo de escritorio y solo puedes mover el mause, no se asuste por que xmonad ya esta ejecutándose para probarlo presione  alt+shift+enter y se abrirá una terminal y desde allí ejecutar los programas que quiere, como dije antes puedes configurarlo y programarlo todo depende de ti.&lt;br /&gt;&lt;br /&gt;Comando basicos de Xmonad&lt;br /&gt;&lt;br /&gt;alt+j             = para moverse por las ventanas&lt;br /&gt;alt+espacio = rotar las ventanas&lt;br /&gt;alt+h           = redimencionar a la izquierda&lt;br /&gt;alt+l            = redimencionar a la derecha&lt;br /&gt;alt+enter    = llevar de la venta actual a la ventana principal&lt;br /&gt;alt+t            = para volver donde estabas&lt;br /&gt;alt+shift+backspace = para salir de xmonad&lt;br /&gt;&lt;br /&gt;en xmonad tienes 9 escritorios :) para moverte por cada uno de ello solo tienes que precionar alt+"nuero de ventana al que quieres ir".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-2310906770740977606?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/2310906770740977606/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2009/06/xmonad-es-un-gestor-de-ventanas-escrito.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/2310906770740977606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/2310906770740977606'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2009/06/xmonad-es-un-gestor-de-ventanas-escrito.html' title='Xmonad'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_E7SOy4GA9vY/Sjz-r3auxKI/AAAAAAAAAEE/11XVtcO6f8w/s72-c/xmonad.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3853391852959341694.post-6503796667441326424</id><published>2007-06-07T12:01:00.000-04:00</published><updated>2007-06-07T13:49:18.095-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='haskell'/><title type='text'>robot programado en haskell</title><content type='html'>&lt;span style="font-family:verdana;color:#cccccc;"&gt;Este &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;vídeo&lt;/span&gt; es una &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;demostración&lt;/span&gt; de lo que se puede hacer con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Haskell&lt;/span&gt; en la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;robótica&lt;/span&gt;, cada vez me interesa saber mas de la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;electrónica&lt;/span&gt; para poder implementar la programación funciona en la &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;robótica&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-zEWS7P91d4"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/-zEWS7P91d4" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sigfpe.blogspot.com/"&gt;Mas &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;información&lt;/span&gt;&lt;/a&gt; &lt;span style="color:#cccccc;"&gt;de como lo hicieron&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3853391852959341694-6503796667441326424?l=info-antonio.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://info-antonio.blogspot.com/feeds/6503796667441326424/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://info-antonio.blogspot.com/2007/06/robot-programado-en-haskell_07.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/6503796667441326424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3853391852959341694/posts/default/6503796667441326424'/><link rel='alternate' type='text/html' href='http://info-antonio.blogspot.com/2007/06/robot-programado-en-haskell_07.html' title='robot programado en haskell'/><author><name>@nt[]n!()</name><uri>http://www.blogger.com/profile/17698286877560666419</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='18' src='http://2.bp.blogspot.com/_E7SOy4GA9vY/TJlKhI_KEwI/AAAAAAAAAI8/OQZ1TsfO6cM/S220/DSC00820.JPG'/></author><thr:total>2</thr:total></entry></feed>
