<?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-4326990029691694464</id><updated>2012-01-30T15:17:11.036-03:00</updated><category term='linux'/><category term='plone'/><category term='programación'/><category term='pelotudeces'/><category term='javascript'/><category term='python'/><category term='internet'/><category term='nerdeadas'/><category term='videos'/><category term='intentos por salvar al mundo'/><category term='música'/><category term='wtf'/><category term='ocio'/><category term='bash'/><category term='fotos'/><title type='text'>Cerveza con lupines</title><subtitle type='html'>Mi primer blog, no esperen mucho de el. Probablemente postee pelotudeces aleatorias en español y eventually some posts about my experiences on software development in english.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-137426993530895598</id><published>2010-04-29T19:23:00.005-03:00</published><updated>2010-04-29T20:37:50.830-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocio'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='música'/><title type='text'>Pedalera de guitarra con una distro live</title><content type='html'>Un amigo empezó hace unos días a armar una distro live con el propósito de usarla como pedalera de efectos para guitarra. La idea es proveer los programas necesarios, configurados, e instalados sobre un sistema preparado para ofrecer una baja latencia, que con la configuración por defecto de la mayoría de las distribuciones actuales no se logra.&lt;br /&gt;&lt;br /&gt;Esta distro está basada en Debian Squeeze, con un kernel real-time y los programas necesarios para aplicarle efectos a la entrada de audio: &lt;a href="http://www.jackaudio.org/"&gt;Jack&lt;/a&gt; y &lt;a href="http://sourceforge.net/projects/rakarrack/"&gt;Rackarrack&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ya existe una primer versión de &lt;a href="http://sourceforge.net/projects/gnuguitarinux/"&gt;GNUGuitarINUX&lt;/a&gt; (geekismo y marketing no van de la mano :P), en estado &lt;span style="font-weight: bold;"&gt;prealpha&lt;/span&gt; en &lt;a href="http://sourceforge.net/projects/gnuguitarinux/"&gt;Sourceforge&lt;/a&gt; para los curiosos que quieran rockear un poco y ver de que se trata.&lt;br /&gt;&lt;br /&gt;Hay que ejecutar algunos pasos manuales antes de usarla.&lt;br /&gt;&lt;br /&gt;Luego de bootear y aparecer la consola para el usuario guitar:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Iniciar X manualmente, tipeando desde la consola el comando &lt;span style="font-weight: bold;"&gt;startx&lt;/span&gt;. Esto inicia Fluxbox. Este manejador de ventanas no tiene íconos ni barra de tareas. Para iniciar los programas se los tiene que seleccionar desde el menú que aparece al hacer click derecho con el mouse.&lt;/li&gt;&lt;li&gt;Abrir &lt;span style="font-weight: bold;"&gt;JACK Control&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Opcionalmente configurarlo para obtener una mejor latencia (en mi caso lo dejé por default. Con chunks más chicos obtuve mejor latencia pero los datos eran muy pocos y el sonido generado no tenía sentido. Más cosas no probé)&lt;/li&gt;&lt;li&gt;Abrir &lt;span style="font-weight: bold;"&gt;Rakarrack&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Volver al JACK Control, elegir el botón &lt;span style="font-weight: bold;"&gt;Conexiones&lt;/span&gt; y conectar las &lt;span style="font-weight: bold;"&gt;capturas del sistema&lt;/span&gt; con las &lt;span style="font-weight: bold;"&gt;entradas de Rackarrack&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Prender el botón de iniciar del JACK Control&lt;/li&gt;&lt;li&gt;Volver a Rackarrack y prender el botón para iniciar los efectos.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Sigan el avance del proyecto que pinta muy interesante!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/S9oLJz65h0I/AAAAAAAADT0/98x_p9b7LtM/s1600/famguychris_noGuitar_05_72.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 273px; height: 320px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/S9oLJz65h0I/AAAAAAAADT0/98x_p9b7LtM/s320/famguychris_noGuitar_05_72.jpg" alt="" id="BLOGGER_PHOTO_ID_5465693360951494466" 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/4326990029691694464-137426993530895598?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/137426993530895598/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=137426993530895598' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/137426993530895598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/137426993530895598'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2010/04/pedalera-de-guitarra-con-una-distro.html' title='Pedalera de guitarra con una distro live'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jFNpgu2oQ7Y/S9oLJz65h0I/AAAAAAAADT0/98x_p9b7LtM/s72-c/famguychris_noGuitar_05_72.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-2694135886831108199</id><published>2010-02-05T20:25:00.005-03:00</published><updated>2010-02-05T21:33:24.905-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><category scheme='http://www.blogger.com/atom/ns#' term='wtf'/><title type='text'>¿Se puede leer sin subvocalizar?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/S2y3Zt9TAyI/AAAAAAAADRY/wcXyc52WA0g/s1600-h/leyendo_el_periodico_1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 257px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/S2y3Zt9TAyI/AAAAAAAADRY/wcXyc52WA0g/s320/leyendo_el_periodico_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5434920502790652706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Estas vacaciones después de mucho tiempo volví a agarrar un libro, leerlo y terminarlo. Mientras lo leía, y sin haberme fumado nada, me puse a pensar en por qué uno tiene que pronunciar mentalmente cada palabra que lee. Seguía leyendo y me reía porque escuchaba esa voz constantemente y nunca me había puesto a pensar en si había alguna forma de callarla y poder entender el texto igual.&lt;br /&gt;Fue como a veces me pasa, que me pongo a pensar en por qué para llamar algún objeto se usa una palabra en particular, al punto que me resulta graciosa la palabra, caso de "garrafa" o "palangana", por ejemplo.&lt;br /&gt;Lo que yo pensaba es que si puedo mirar el reloj y ver que las agujas marcan las nueve y cuarto, y puedo darme cuenta que son las nueve y cuarto sin decir "nueve y cuarto", algo similar debería pasar al mirar palabras.&lt;br /&gt;La cuestión es que no sabía ni cómo buscar para encontrar alguna respuesta (el título de este post lo escribí después de haber buscado), y finalmente dí con un par de páginas que tratan el tema. &lt;a href="http://www.tecnicas-de-estudio.org/lectura-veloz/vocalizacion.htm"&gt;Cómo&lt;/a&gt; &lt;a href="http://www.articuloz.com/educacion-articulos/como-eliminar-la-subvocalizacion-983670.html"&gt;eliminar&lt;/a&gt; &lt;a href="http://www.lalalalalalalalalalalalalalalalalala.com/"&gt;la&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/Leer#Subvocalizaci.C3.B3n"&gt;subvocalización&lt;/a&gt;.&lt;br /&gt;Todavía no intenté ninguna de estas técnicas locas como tararear mientras se lee, pero aparentemente son todas técnicas de lectura rápida. Obvio :P, pero me refiero a esa lectura para estudiar mucho y sacar la idea principal. No se si uno logrará apreciar todo el texto, o sea que no me parece que sea para lectura placentera. Yo diría que comparándolo con el reloj sería como cuando uno mira rápido el reloj y le sirve para darse cuenta que está a horario, pero si alguien le pregunta en ese mismo momento qué hora es, tiene que mirar de nuevo el reloj y decodificar la hora... ¿Alguien tuvo alguna experiencia con esto?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/S2y3eCOUHmI/AAAAAAAADRg/avHgQ8LCQZ0/s1600-h/mujer_leyendo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 254px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/S2y3eCOUHmI/AAAAAAAADRg/avHgQ8LCQZ0/s320/mujer_leyendo.jpg" alt="" id="BLOGGER_PHOTO_ID_5434920576950214242" 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/4326990029691694464-2694135886831108199?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/2694135886831108199/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=2694135886831108199' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/2694135886831108199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/2694135886831108199'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2010/02/se-puede-leer-sin-subvocalizar.html' title='¿Se puede leer sin subvocalizar?'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jFNpgu2oQ7Y/S2y3Zt9TAyI/AAAAAAAADRY/wcXyc52WA0g/s72-c/leyendo_el_periodico_1.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-5480276984477706948</id><published>2009-08-30T23:37:00.012-03:00</published><updated>2009-08-31T02:58:20.920-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocio'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Graphjam</title><content type='html'>Me pasaron una página que no conocía: &lt;a href="http://graphjam.com/"&gt;graphjam.com&lt;/a&gt;. Un sitio donde los usuarios suben gráficos que tratan de ser graciosos, al estilo del famoso &lt;a href="http://www.insideview.ie/photos/covers/time_breakdown_web_design.jpg"&gt;gráfico de la división de tiempos en el desarrollo web&lt;/a&gt;, pero no tan nerds. Los votan y comentan. Hay algunos muy buenos.&lt;br /&gt;&lt;br /&gt;El sitio está junto con otros más populares como &lt;a href="http://failblog.org/"&gt;fail blog&lt;/a&gt; o &lt;a href="http://icanhascheezburger.com/"&gt;lolcatz&lt;/a&gt;, pero nunca lo había visto.&lt;br /&gt;&lt;br /&gt;Acá dejo algunos gráficos que me gustaron:&lt;br /&gt;&lt;br /&gt;Temas tratados en una reunión:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptOFNBzoMI/AAAAAAAADNw/J3PmCv1sEM8/s1600-h/discussed-at-meetings.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 169px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptOFNBzoMI/AAAAAAAADNw/J3PmCv1sEM8/s320/discussed-at-meetings.jpg" alt="" id="BLOGGER_PHOTO_ID_5375976431500370114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Las últimas palabras:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SptONdIvUaI/AAAAAAAADN4/pnaB-sanuOM/s1600-h/last-words.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 167px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SptONdIvUaI/AAAAAAAADN4/pnaB-sanuOM/s320/last-words.jpg" alt="" id="BLOGGER_PHOTO_ID_5375976573263368610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Contenido de una pileta pública:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptO6b2KKEI/AAAAAAAADOA/PLkjAr3nS2g/s1600-h/content-pool.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 190px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptO6b2KKEI/AAAAAAAADOA/PLkjAr3nS2g/s320/content-pool.jpg" alt="" id="BLOGGER_PHOTO_ID_5375977346011113538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Miembros de la banda que consiguen chicas:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SptPFolyfoI/AAAAAAAADOI/7i39smlL9KE/s1600-h/band-chicks.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 163px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SptPFolyfoI/AAAAAAAADOI/7i39smlL9KE/s320/band-chicks.jpg" alt="" id="BLOGGER_PHOTO_ID_5375977538410675842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Qué se necesita según Los Beatles:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SptPNBpG7LI/AAAAAAAADOQ/v7XKSpIRK7I/s1600-h/beatles1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 317px; height: 320px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SptPNBpG7LI/AAAAAAAADOQ/v7XKSpIRK7I/s320/beatles1.gif" alt="" id="BLOGGER_PHOTO_ID_5375977665394568370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Contenido musical de MTV a lo largo del tiempo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SptPWsoIl8I/AAAAAAAADOY/ezsIRs5wpD4/s1600-h/mtv-music.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 309px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SptPWsoIl8I/AAAAAAAADOY/ezsIRs5wpD4/s320/mtv-music.jpg" alt="" id="BLOGGER_PHOTO_ID_5375977831552030658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El calendario según The Cure:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SptPffusxTI/AAAAAAAADOg/XSAMacz_YmM/s1600-h/cure-schedule.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 206px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SptPffusxTI/AAAAAAAADOg/XSAMacz_YmM/s320/cure-schedule.gif" alt="" id="BLOGGER_PHOTO_ID_5375977982708729138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Política:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SptQ8DBSYaI/AAAAAAAADOo/5WPU3pYmK54/s1600-h/politics.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 261px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SptQ8DBSYaI/AAAAAAAADOo/5WPU3pYmK54/s320/politics.jpg" alt="" id="BLOGGER_PHOTO_ID_5375979572729897378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Relevancia de los comentarios en sitios web:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptU6xR0dZI/AAAAAAAADO4/ciANQcVQqUY/s1600-h/comments.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 306px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptU6xR0dZI/AAAAAAAADO4/ciANQcVQqUY/s320/comments.jpg" alt="" id="BLOGGER_PHOTO_ID_5375983948834043282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Conocimientos de computación que tengo vs lo que piensa mi familia de ellos.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptURnzVRtI/AAAAAAAADOw/as56NFSMvUk/s1600-h/computer-skills.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 311px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptURnzVRtI/AAAAAAAADOw/as56NFSMvUk/s320/computer-skills.jpg" alt="" id="BLOGGER_PHOTO_ID_5375983241915614930" 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/4326990029691694464-5480276984477706948?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/5480276984477706948/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=5480276984477706948' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5480276984477706948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5480276984477706948'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/08/graphjam.html' title='Graphjam'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SptOFNBzoMI/AAAAAAAADNw/J3PmCv1sEM8/s72-c/discussed-at-meetings.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-907019525110943145</id><published>2009-08-05T00:24:00.002-03:00</published><updated>2009-08-05T01:21:49.193-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><title type='text'>Whitest Kids U' Know subtitulado</title><content type='html'>Here I go again de nuevo otra vez nuevamente. Ya le recomendé a medio mundo estos videos por mail, chat, facebook, etc. Así que ahora los recomiendo en el blog para llegar a la otra mitad del planeta :D&lt;br /&gt;&lt;br /&gt;Los videos son de una serie de sketchs que se llama &lt;a href="http://en.wikipedia.org/wiki/Whitest_Kids_U%27Know"&gt;Whitest Kids U'Know&lt;/a&gt; y que estuve viendo a partir del video &lt;span style="font-style:italic;"&gt;The Grapist&lt;/span&gt;, que encontré en el mensaje de estado de un contacto (¡grande flecox por el descubrimiento!)&lt;br /&gt;&lt;br /&gt;Tienen 3 temporadas y están filmando la 4ta. De la primera hay un DVD.&lt;br /&gt;El tipo de humor, no se... puede que no le guste a muchos. Tiene algo de humor negro, absurdo, etc. Yo diría que si les gusta Padre de familia, les va a gustar.&lt;br /&gt;&lt;br /&gt;Acá dejo los que están subtitulados en youtube. En la &lt;a href="http://whitestkids.com/media/"&gt;página oficial&lt;/a&gt; se pueden ver muchos más.&lt;br /&gt;&lt;br /&gt;The grapist&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/znWWRfGtThE&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/znWWRfGtThE&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;La compra de Billy&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/e83JaykWtmg&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/e83JaykWtmg&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Call of Duty&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NwQFZHhcogk&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/NwQFZHhcogk&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fake Puke&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/e9I88SBu5SY&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/e9I88SBu5SY&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Clase de teatro&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cTnqV2IymK0&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/cTnqV2IymK0&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reunión de trabajo&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tqe2AanHqZE&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/tqe2AanHqZE&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Slow Jerk (sin subtítulos)&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/31stiwdxeMI&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/31stiwdxeMI&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=adQjGYWDcLM"&gt;Esta&lt;/a&gt; era la versión con subtítulos pero no anda en Argentina&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cubicle guy&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BK6646VEaF8&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/BK6646VEaF8&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Can't stop peeing&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PfeJJyQegsE&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PfeJJyQegsE&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Test de embarazo&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pAzbnf52Xmc&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/pAzbnf52Xmc&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-907019525110943145?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/907019525110943145/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=907019525110943145' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/907019525110943145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/907019525110943145'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/08/whitest-kids-u-know-subtitulado.html' title='Whitest Kids U&apos; Know subtitulado'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-187283199167934886</id><published>2009-07-02T22:40:00.015-03:00</published><updated>2009-07-03T08:34:59.462-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocio'/><category scheme='http://www.blogger.com/atom/ns#' term='nerdeadas'/><title type='text'>Más hardware vintage</title><content type='html'>Como cada vez que vuelvo para mis pagos a la casa de mis viejos, aparte de socializar siempre hay algún rato para nerdear. Sobre todo porque allá tengo una buena cantidad de cachivaches como &lt;a href="http://cervezaconlupines.blogspot.com/2008/10/overclockeando-la-msx.html"&gt;mi primera PC&lt;/a&gt;, que cada tanto saco a descarbonizar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esta vez puse de nuevo en marcha mi primer scanner. Un Witty Scan de mano, de 16 tonos de grises, con su plaquita ISA de 8 bits. Y quise dejarlo documentado a continuación:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1t4h03P9I/AAAAAAAADJo/gpHQv-THCyA/s1600-h/scanner_tapa.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1t4h03P9I/AAAAAAAADJo/gpHQv-THCyA/s320/scanner_tapa.JPG" alt="" id="BLOGGER_PHOTO_ID_5354056349933584338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1us0o4sXI/AAAAAAAADJw/5ofQC6_9Of4/s1600-h/scanner_placa_discos.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 168px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1us0o4sXI/AAAAAAAADJw/5ofQC6_9Of4/s320/scanner_placa_discos.JPG" alt="" id="BLOGGER_PHOTO_ID_5354057248336818546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1utRYXm9I/AAAAAAAADJ4/h2yfZ6290zQ/s1600-h/scanner_placa.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 282px; height: 320px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1utRYXm9I/AAAAAAAADJ4/h2yfZ6290zQ/s320/scanner_placa.JPG" alt="" id="BLOGGER_PHOTO_ID_5354057256052169682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1utoFAGdI/AAAAAAAADKA/kjmuHfrZip8/s1600-h/discos.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 288px; height: 320px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1utoFAGdI/AAAAAAAADKA/kjmuHfrZip8/s320/discos.JPG" alt="" id="BLOGGER_PHOTO_ID_5354057262144952786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1uuHxyEXI/AAAAAAAADKI/awo0zqzUzxY/s1600-h/scanner_abajo.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1uuHxyEXI/AAAAAAAADKI/awo0zqzUzxY/s320/scanner_abajo.JPG" alt="" id="BLOGGER_PHOTO_ID_5354057270654275954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este tenía un programa para hacer gráficos muy simples desde el cual se escaneaba, que se llamaba Image 72.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1vhoY1uUI/AAAAAAAADKQ/m8xXpstVPDk/s1600-h/image72.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1vhoY1uUI/AAAAAAAADKQ/m8xXpstVPDk/s320/image72.JPG" alt="" id="BLOGGER_PHOTO_ID_5354058155581356354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y un programa de reconocimiento óptico de caracteres que se llamaba AIOCR.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wDO677-I/AAAAAAAADKY/jtlpe-7Gy2c/s1600-h/aiocr_caja.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wDO677-I/AAAAAAAADKY/jtlpe-7Gy2c/s320/aiocr_caja.JPG" alt="" id="BLOGGER_PHOTO_ID_5354058732860600290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wDkEBN9I/AAAAAAAADKg/a3DFxiH2Bl8/s1600-h/manual_aiocr.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wDkEBN9I/AAAAAAAADKg/a3DFxiH2Bl8/s320/manual_aiocr.JPG" alt="" id="BLOGGER_PHOTO_ID_5354058738535839698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wEakN4DI/AAAAAAAADK4/RBLRhJ75gVM/s1600-h/aiocr_presentacion.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wEakN4DI/AAAAAAAADK4/RBLRhJ75gVM/s320/aiocr_presentacion.JPG" alt="" id="BLOGGER_PHOTO_ID_5354058753166401586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wD5gcWhI/AAAAAAAADKo/BRKE1-5eVtE/s1600-h/aiocr_escaneando.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wD5gcWhI/AAAAAAAADKo/BRKE1-5eVtE/s320/aiocr_escaneando.JPG" alt="" id="BLOGGER_PHOTO_ID_5354058744292203026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wEGTzuyI/AAAAAAAADKw/sx1cG-m5XoQ/s1600-h/aiocr_por_procesar.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1wEGTzuyI/AAAAAAAADKw/sx1cG-m5XoQ/s320/aiocr_por_procesar.JPG" alt="" id="BLOGGER_PHOTO_ID_5354058747728870178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk12dgb9mYI/AAAAAAAADLg/QsFTRIoOWa8/s1600-h/ocr.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk12dgb9mYI/AAAAAAAADLg/QsFTRIoOWa8/s320/ocr.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5354065781308889474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y para terminar, siguiendo con el tema de los programas de imágenes viejos, un par de imágenes del &lt;a href="http://findarticles.com/p/articles/mi_m1563/is_n10_v9/ai_11407051/"&gt;Newsmaster II&lt;/a&gt;. Un programa con el que se podían hacer documentos muy llamativos, con gráficos y varias columnas muy fácilmente.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1xj51-H4I/AAAAAAAADLA/g67I4LMhXKs/s1600-h/newsmasterII_1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1xj51-H4I/AAAAAAAADLA/g67I4LMhXKs/s320/newsmasterII_1.JPG" alt="" id="BLOGGER_PHOTO_ID_5354060393649938306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1xkDIVxWI/AAAAAAAADLI/Mtu5Jci0Deo/s1600-h/newsmasterII_2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1xkDIVxWI/AAAAAAAADLI/Mtu5Jci0Deo/s320/newsmasterII_2.JPG" alt="" id="BLOGGER_PHOTO_ID_5354060396142904674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y del inolvidable Banner Manía. Con el que las LX-810 pasaban horas chillando para imprimir carteles de varias páginas con las más diversas formas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk13P6dTdJI/AAAAAAAADMY/ywWAL5kZXOM/s1600-h/banner1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk13P6dTdJI/AAAAAAAADMY/ywWAL5kZXOM/s320/banner1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5354066647287297170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk13P0vrriI/AAAAAAAADMQ/yovrlxAbM_A/s1600-h/banner_02.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk13P0vrriI/AAAAAAAADMQ/yovrlxAbM_A/s320/banner_02.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5354066645753769506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk127bBAM4I/AAAAAAAADMI/fsVjDNRpQ8w/s1600-h/banner_03.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk127bBAM4I/AAAAAAAADMI/fsVjDNRpQ8w/s320/banner_03.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5354066295249712002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk127NXvCvI/AAAAAAAADMA/-gFOaZwKWVo/s1600-h/banner_04.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk127NXvCvI/AAAAAAAADMA/-gFOaZwKWVo/s320/banner_04.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5354066291586960114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk126_Zr3RI/AAAAAAAADL4/kCWFXNof9gw/s1600-h/banner_05.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/Sk126_Zr3RI/AAAAAAAADL4/kCWFXNof9gw/s320/banner_05.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5354066287837043986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sk126QGHlKI/AAAAAAAADLw/32lCRAkoz3M/s1600-h/banner_06.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sk126QGHlKI/AAAAAAAADLw/32lCRAkoz3M/s320/banner_06.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5354066275138507938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk126FYZGKI/AAAAAAAADLo/HA_U6VGsLi8/s1600-h/banner_07.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk126FYZGKI/AAAAAAAADLo/HA_U6VGsLi8/s320/banner_07.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5354066272262363298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y los que tuvimos alguna impresora matriz de punto con &lt;a href="http://daermei.diytrade.com/sdp/214474/4/pd-1022054/3408449-1446467/CITIZEN_GSX140.html"&gt;cinta color&lt;/a&gt; tardábamos hasta 4 veces más (subía y bajaba la cinta en cada línea para combinar los colores) pero teníamos unos hermosos carteles en color:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1zmuCBy2I/AAAAAAAADLQ/BCSaLhj5j64/s1600-h/banner_08.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1zmuCBy2I/AAAAAAAADLQ/BCSaLhj5j64/s320/banner_08.jpg" alt="" id="BLOGGER_PHOTO_ID_5354062641042148194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por último, y nada que ver con nada, esta imagen del placón Sound Blaster que tuve que sacar de la máquina que usé, para que no conflictúe con el scanner, y ahora debe ser equivalente a un integrado en una placa madre. Y la calco de Playing Food es un detalle que sólo pueden apreciar los que tuvieron su infancia en los 80's rafaelinos :D&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1zmwxtzkI/AAAAAAAADLY/uvTQ325Fudo/s1600-h/sblaster.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1zmwxtzkI/AAAAAAAADLY/uvTQ325Fudo/s320/sblaster.JPG" alt="" id="BLOGGER_PHOTO_ID_5354062641779035714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;Un video escaneando. Para que Joaco vea que lo usé.&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KY5b4wYZ6e4&amp;hl=es&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/KY5b4wYZ6e4&amp;hl=es&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-187283199167934886?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/187283199167934886/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=187283199167934886' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/187283199167934886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/187283199167934886'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/07/mas-hardware-vintage.html' title='Más hardware vintage'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jFNpgu2oQ7Y/Sk1t4h03P9I/AAAAAAAADJo/gpHQv-THCyA/s72-c/scanner_tapa.JPG' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-3527446491901357621</id><published>2009-06-22T18:14:00.004-03:00</published><updated>2009-06-22T18:52:22.640-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>mtvcgui 0.31</title><content type='html'>Retomé el &lt;a href="http://cervezaconlupines.blogspot.com/2008/11/experimentando-con-qtdesigner-y-pyqt.html"&gt;experimento con PyQT y QTDesigner&lt;/a&gt; que había abandonado hace cerca de 6 meses, motivado por los mails con comentarios y sugerencias (¡y problemas!) de ¡3! personas que lo usaron.  Además noté que aparece en ¡&lt;a href="http://linuxcursosgratis.org/Trucos/trucos.html"&gt;una página&lt;/a&gt; y &lt;a href="http://www.mandrivaclub.pl/forum/post3880093.html"&gt;un foro&lt;/a&gt;!  :P&lt;br /&gt;&lt;br /&gt;Corregí un par de problemas menores y le agregué la funcionalidad de ajustar brillo, contraste, matiz y saturación, y de ver esos cambios en la previsualización del canal a medida que se realizan. También, ahora se puede cambiar de canal y norma mientras se previsualiza.&lt;br /&gt;Esto lo hago usando mplayer en modo esclavo (-slave). De esa manera recibe comandos desde la entrada estándar.&lt;br /&gt;&lt;br /&gt;Por ejemplo, para seleccionar un canal, lo hago con&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;.mplayer_instance.stdin.write(&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;'tv_set_channel &lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;%s&lt;/span&gt;&lt;span style="color: rgb(255, 128, 224);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; % &lt;/span&gt;&lt;span style="color: rgb(0, 87, 174);"&gt;str&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;(channel))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;donde mplayer_instance es un objeto creado con &lt;a href="http://docs.python.org/library/subprocess.html#subprocess.Popen"&gt;subprocess.Popen&lt;/a&gt; y el comando mplayer con sus argumentos.&lt;br /&gt;En la página dice que hay que usar communicate() en lugar de stdin.write(), pero a mi no me sirvió, porque communicate se queda esperando que el proceso termine y leyendo su stdout, y no es lo que necesito hacer.&lt;br /&gt;A lo mejor podría hacerlo desde un thread, pero... ¡bah!&lt;br /&gt;&lt;br /&gt;Igual, no anda demasiado bien y no sé como solucionarlo. El video generado cada tanto se pone más lento y después se arregla solo, sin embargo no se reportan cuadros perdidos. Codifico con lavc(mpeg4) y le aplico los filtros de desentrelazado, etc, todo al vuelo. Podría ser que no da el CPU, pero no supera el 50%... Capaz que mencoder no es la mejor herramienta para capturar TV... :(&lt;br /&gt;La GUI no debería consumir muchos recursos como para molestar en la codificación, salvo que esté haciendo algo muy mal (es posible). En teoría, lo único que se ejecuta mientras se captura es un timer cada 1 segundo, que hace un poll a la instancia de mencoder para ver si sigue viva.&lt;br /&gt;&lt;br /&gt;El programa está en &lt;a href="http://code.google.com/p/mtvcgui/"&gt;google code&lt;/a&gt;, &lt;a href="http://github.com/sbruno/mtvcgui/"&gt;github&lt;/a&gt; y&lt;a href="http://www.kde-apps.org/content/show.php?content=95491"&gt; kde-apps&lt;/a&gt;. ¿Para qué? :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-3527446491901357621?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/3527446491901357621/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=3527446491901357621' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/3527446491901357621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/3527446491901357621'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/06/mtvcgui-031.html' title='mtvcgui 0.31'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-6120500530129492016</id><published>2009-04-22T15:09:00.008-03:00</published><updated>2009-04-22T21:52:47.499-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><title type='text'>Videos recomendados por la gerencia artística II</title><content type='html'>Este video clip de la banda Weezer tiene casi un año pero recién ahora lo descubro. El tema se llama "Pork and beans". Imitan escenas de muchos videos que hicieron furor en internet, algunos por ser muy buenos, otros por ser muy malos. Abajo, una lista con los videos originales. La mayoría los saqué de &lt;a href="http://lahoradenada.blogspot.com/2008/09/weezer-pork-and-beans.html"&gt;acá&lt;/a&gt;, y el resto del &lt;a href="http://en.wikipedia.org/wiki/Pork_and_Beans_%28song%29"&gt;artículo&lt;/a&gt; de la Wikipedia.&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/g2IvXA33nk8&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/g2IvXA33nk8&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Videos:&lt;br /&gt;00:00 - La habitación es de &lt;a href="http://es.youtube.com/watch?v=QjA5faZF1A8"&gt;Canon en D con guitarra eléctrica&lt;/a&gt; de Lim Jeong-hyun. La forma de mostrar las diferentes grabaciones probablemente de &lt;a href="http://www.youtube.com/watch?v=mHwV2JuwZls"&gt;One man band&lt;/a&gt;&lt;br /&gt;00:16 - &lt;a href="http://youtube.com/watch?v=60og9gwKh1o"&gt;Gary Brolsma&lt;/a&gt; (Numa numa)&lt;br /&gt;00:19 - &lt;a href="http://www.youtube.com/watch?v=y8Kyi0WNg40"&gt;Dramatic gopher&lt;/a&gt;&lt;br /&gt;00:23 - &lt;a href="http://youtube.com/watch?v=HFBBh2n2yP0"&gt;El Afro Ninja&lt;/a&gt;&lt;br /&gt;00:31 - &lt;a href="http://www.youtube.com/watch?v=hKoB0MHVBvM"&gt;Eepybird&lt;/a&gt; (Experimentos mezclando Coca Cola y Mentos)&lt;br /&gt;00:38 - &lt;a href="http://www.youtube.com/watch?v=-prfAENSh2k"&gt;Guy catches glasses with face&lt;/a&gt; (Atrapa los lentes con la cara)&lt;br /&gt;00:38 - &lt;a href="http://www.youtube.com/watch?v=atXIKI2XHj4"&gt;GI Joe, al servicio público&lt;/a&gt; (versión gay de GI Joe)&lt;br /&gt;00:48 - &lt;a href="http://youtube.com/watch?v=r6tlw-oPDBM"&gt;El récord de las 155 camisetas&lt;/a&gt;&lt;br /&gt;00:58 - &lt;a href="http://www.youtube.com/watch?v=HPPj6viIBmU"&gt;Star wars kid&lt;/a&gt;&lt;br /&gt;00:59 - &lt;a href="http://www.youtube.com/watch?v=kHmvkRoEowc"&gt;Chris Crocker&lt;/a&gt; (Leave Britney alone)&lt;br /&gt;01:04 - &lt;a href="http://www.youtube.com/watch?v=qItugh-fFgg"&gt;All your base are belong to us&lt;/a&gt;&lt;br /&gt;01:11 - &lt;a href="http://www.youtube.com/watch?v=lj3iNxZ8Dww"&gt;Miss Teen South Carolina&lt;/a&gt; (A la mina le preguntan por qué 1/5 de los norteamericanos no saben marcar su país en el mapa)&lt;br /&gt;01:24 - &lt;a href="http://www.youtube.com/watch?v=7ZE2OzguWHo"&gt;Psychotic Kids&lt;/a&gt; (En Argentina está bloqueado, pero &lt;a href="http://www.smashbeats.com/v2485/psychotic_kids_crank_that_soulja_boy"&gt;acá&lt;/a&gt; lo pude ver)&lt;br /&gt;01:26 - &lt;a href="http://www.youtube.com/watch?v=dMH0bHeiRNg"&gt;Judson Laipply&lt;/a&gt; (Evolution of dance)&lt;br /&gt;01:30 - &lt;a href="http://mx.youtube.com/watch?v=EwTZ2xpQwpA&amp;amp;feature=PlayList&amp;amp;p=6BCAE077AD5715DF&amp;amp;index=7"&gt;Tay Zonday&lt;/a&gt;  (Chocolate rain)&lt;br /&gt;01:39 - &lt;a href="http://www.youtube.com/watch?v=V6RvngAZCcQ"&gt;Kevin Federline&lt;/a&gt;&lt;br /&gt;01:48 - &lt;a href="http://www.youtube.com/watch?v=K2cYWfq--Nw"&gt;Daft Hands&lt;/a&gt; (Unas manos con palabras y letras escritas que se van moviendo para formar la letra de la canción "Harder, better, faster, stronger" de Daft Punk)&lt;br /&gt;01:54 - &lt;a href="http://www.youtube.com/watch?v=lLYD_-A_X5E"&gt;Daft Bodies&lt;/a&gt; (Lo mismo pero lo hacen unas minas con el cuerpo)&lt;br /&gt;02:06 - &lt;a href="http://www.youtube.com/watch?v=embdtwW-sSE"&gt;kicesie&lt;/a&gt;&lt;br /&gt;02:08 - ???&lt;br /&gt;02:29 - &lt;a href="http://www.youtube.com/watch?v=wCF3ywukQYA"&gt;Liam Kyle Sullivan - Shoes&lt;/a&gt;&lt;br /&gt;02:37 - &lt;a href="http://www.youtube.com/watch?v=FzRH3iTQPrk"&gt;Sneezing Panda&lt;/a&gt; (Estornudo de un panda)&lt;br /&gt;02:37 - &lt;a href="http://www.youtube.com/watch?v=up5jmbSjWkw"&gt;UFO Haiti&lt;/a&gt; (hoax)&lt;br /&gt;02:43 - Dancing Banana&lt;br /&gt;02:46 -&lt;a href="http://youtube.com/watch?v=8NE5elL30w4"&gt; Ryan Wieber y Michael “Dorkman” Scott&lt;/a&gt;&lt;br /&gt;02:53 - &lt;a href="http://www.youtube.com/watch?v=B8H29jU8Wrs"&gt;Will It Blend?&lt;/a&gt;&lt;br /&gt;02:57 - &lt;a href="http://www.youtube.com/watch?v=CsGYh8AacgY"&gt;Charlie the unicorn&lt;/a&gt; (buenísimo. ver más abajo)&lt;br /&gt;03:00 - &lt;a href="http://www.youtube.com/watch?v=s8MDNFaGfT4"&gt;It’s Peanut Butter Jelly Time!&lt;/a&gt; (Dancing Banana con música)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Algunos de los videos originales no los conocía. El mejor de los que descubrí fue Charlie the Unicorn. Es genial, jaja, re limado. Acá dejo 4 videos subtitulados en español.&lt;br /&gt;Las versiones subtituladas tienen menos calidad de video así que abajo dejo las originales sin subtítulos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2Yi82jOVut4&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/2Yi82jOVut4&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wtjRnPwY6XI&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/wtjRnPwY6XI&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/571zLCwT6Dk&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/571zLCwT6Dk&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uf_2lPLxYAA&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/uf_2lPLxYAA&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Originales, sin subtítulos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=r_EEUZY1nIM"&gt;Charlie The Unicorn&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=r_EEUZY1nIM"&gt;Charlie The Unicorn 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=r_EEUZY1nIM"&gt;Charlie The Unicorn 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=r_EEUZY1nIM"&gt;Charlie The Unicorn - Youtube Live&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para terminar, la sección tierna del post. Entre los videos relacionados estaba este, Charlie bit me - again. Un pendejito que el hermano lo muerde. Muy gracioso. El acento inglés que tiene es genial "Chorley bit mey. It really hoerts. It's still hoerteing!" Jajaja.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_OBlgSz8sSM&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/_OBlgSz8sSM&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este tambíen, como pronuncia boold-a! jajaja, el mejor.&lt;br /&gt;No lo deja incrustar(?) &lt;a href="http://www.youtube.com/watch?v=-fVDGu82FeQ"&gt;acá el link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por último, el falopero este:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ak9xHCdrIdE&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/ak9xHCdrIdE&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Hasta la próxima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-6120500530129492016?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/6120500530129492016/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=6120500530129492016' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/6120500530129492016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/6120500530129492016'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/04/videos-recomendados-por-la-gerencia.html' title='Videos recomendados por la gerencia artística II'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-187852477139606362</id><published>2009-04-04T04:24:00.003-03:00</published><updated>2009-04-04T06:13:03.032-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><title type='text'>CuñáaaAaAaaaAAaAaa!!!</title><content type='html'>Les dejo una selección de los mejores videos de dos personajes bizarrísimos de Sevilla. Costó armarla porque en general los chistes que cuentan son malísimos pero la gracia está en cómo lo cuentan, cómo se ríen entre ellos, y hay que reconocer que si tuvieran todos los dientes sería menos gracioso.&lt;br /&gt;&lt;br /&gt;Se trata de "El Risitas" y "El Cuñao" (Peíto). Aparecían en los programas &lt;a href="http://es.wikipedia.org/wiki/El_Vagamundo"&gt;El Vagamundo&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/Ratones_Coloraos"&gt;Ratones Coloraos&lt;/a&gt; de &lt;a href="http://www.jesusquintero.com/"&gt;Jesús Quintero&lt;/a&gt; donde contaban chistes y anécdotas que no le causaban mucha gracia al conductor. Risitas era el que contaba los chistes generalmente y cuando el conductor no se reía, le decía cosas como "Esúuu, ¿que no te gustan los chistes?", "¿Tu no te ries?", "Tu no eres de aquí." Y el cuñao se reía de lo que sea mostrando su único diente.&lt;br /&gt;&lt;br /&gt;Este es uno de los mejores (&lt;a href="http://www.frikipedia.es/friki/El_Cu%C3%B1ao"&gt;acá&lt;/a&gt; hay una especie de transcripción):&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XncJyAHmtRE&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/XncJyAHmtRE&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este también está bueno (de paso aprendí los términos &lt;a href="http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA=cateto"&gt;cateto&lt;/a&gt;=(aprox)boludo, &lt;a href="http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA=ji%F1ar"&gt;jiñar&lt;/a&gt;=cagar)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/99qznVi4S9g&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/99qznVi4S9g&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El &lt;a href="http://www.youtube.com/watch?v=cDphUib5iG4"&gt;video de la anécdota de las paelleras&lt;/a&gt; es buenísimo por la manera en se tientan al final Risitas y el conductor. La risa es demasiado contagiosa. Creo que, salvando las astronómicas distancias, lo recomendaría junto con &lt;a href="http://www.youtube.com/watch?v=HFSAffL-nHU"&gt;Always look on the bright side of life&lt;/a&gt; de Monty Python para pasar cualquier momento bajón. Pero es un poco largo para el internauta moderno, así que esta es la parte del final cuando se empiezan a reir. Lo que contaba antes era que estaba trabajando en un restaurant y lo mandaron a limpiar 20 paelleras, entonces las ató en la playa para que se limpien con la sal del agua. Pero a la mañana había subido la marea y encontró solo una paellera, y por ahí sigue:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zVTDKUEmB-0&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/zVTDKUEmB-0&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Otros videos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=ncQU6iBn5Fc"&gt;Anécdota de los sacos de cemento&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=rKHbjmo4yvQ"&gt;Gafas antisolares&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=12Vp2YWiAJQ"&gt;Cámara que no se quiere ir&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-187852477139606362?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/187852477139606362/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=187852477139606362' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/187852477139606362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/187852477139606362'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/04/cunaaaaaaaaaaaaaaa.html' title='CuñáaaAaAaaaAAaAaa!!!'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-5942460749697599205</id><published>2009-04-01T16:12:00.005-03:00</published><updated>2009-04-01T17:14:45.280-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fotos'/><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><title type='text'>Perro, el perro.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SdPIKjRuu1I/AAAAAAAACr8/X8IQ32DgiSg/s1600-h/perro.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SdPIKjRuu1I/AAAAAAAACr8/X8IQ32DgiSg/s320/perro.jpg" alt="Perro en el Patio Olmos" id="BLOGGER_PHOTO_ID_5319815668448541522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Parece salido de un capítulo de &lt;a href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SdPIKdA4WDI/AAAAAAAACr0/KOthnayLXpY/s1600-h/alejo.jpg"&gt;Alejo y Valentina&lt;/a&gt;, jaja. Estaba afuera del Patio Olmos cuando esperábamos con mi hermano a otro amigo para ir al Cosquín Rock.&lt;br /&gt;La otra noche lo encontré por Nueva Córdoba y me pareció que el collar decía 123456789 así que parece que los pibes lo tienen de juguete al pobre animal, jaja.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-5942460749697599205?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/5942460749697599205/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=5942460749697599205' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5942460749697599205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5942460749697599205'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/04/perro-el-perro.html' title='Perro, el perro.'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SdPIKjRuu1I/AAAAAAAACr8/X8IQ32DgiSg/s72-c/perro.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-4504580878746294407</id><published>2009-03-29T06:39:00.005-03:00</published><updated>2009-04-02T22:17:05.843-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fotos'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python is my religion</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sc9CcMmi5UI/AAAAAAAACrs/5rxu8B-Rl-0/s1600-h/pycamp-ultimacena.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 231px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sc9CcMmi5UI/AAAAAAAACrs/5rxu8B-Rl-0/s320/pycamp-ultimacena.jpg" alt="Python Argentina pyar ultima cena" id="BLOGGER_PHOTO_ID_5318542737134511426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Python es una religión: Tremenda reconstrucción de la &lt;a href="http://www.avizora.com/publicaciones/biografias/textos/textos_d/images/0009_leonardo_ultima_cena_15.jpg"&gt;Última Cena&lt;/a&gt; por los chicos de &lt;a href="http://www.python.com.ar/"&gt;PyAr &lt;/a&gt;en el último &lt;a href="http://www.taniquetil.com.ar/plog/post/1/404"&gt;PyCamp&lt;/a&gt;. No los conozco a todos personalmente pero sí a la mayoría. Son co-listeros de Python Argentina. Entre ellos, compañeros de trabajo, de la facu, de fiestas nerd en Córdoba,  etc. Muy muy grossa foto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-4504580878746294407?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/4504580878746294407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=4504580878746294407' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/4504580878746294407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/4504580878746294407'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/03/python-is-my-religion.html' title='Python is my religion'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jFNpgu2oQ7Y/Sc9CcMmi5UI/AAAAAAAACrs/5rxu8B-Rl-0/s72-c/pycamp-ultimacena.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-7375146248081841191</id><published>2009-03-11T23:51:00.005-02:00</published><updated>2009-03-29T06:39:39.675-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fotos'/><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><category scheme='http://www.blogger.com/atom/ns#' term='nerdeadas'/><title type='text'>Admin Van Buuren</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SbhuhLwLT9I/AAAAAAAACqc/eBTl4rA1-ZI/s1600-h/admin_van_buuren.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 258px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SbhuhLwLT9I/AAAAAAAACqc/eBTl4rA1-ZI/s320/admin_van_buuren.jpg" alt="Admin Van Buuren" id="BLOGGER_PHOTO_ID_5312117276853096402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Una pelotudez que se me vino a la cabeza una de las tantas veces que tuve que ingresar user: admin password: admin en el trabajo quedó plasmada en esta imagen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-7375146248081841191?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/7375146248081841191/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=7375146248081841191' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/7375146248081841191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/7375146248081841191'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/03/admin-van-buuren.html' title='Admin Van Buuren'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SbhuhLwLT9I/AAAAAAAACqc/eBTl4rA1-ZI/s72-c/admin_van_buuren.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-5414852408805849508</id><published>2009-03-07T21:08:00.006-02:00</published><updated>2009-03-08T19:24:08.727-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Limiting memory usage of a python script</title><content type='html'>I've been running recently some python and java experiments with important memory requirements on a machine shared with other people, some of them with the same needs on that machine.&lt;br /&gt;There were no restrictions on resources usage by a user or a process, so controlled memory usage was the user's responsibility.&lt;br /&gt;&lt;br /&gt;Java has a parameter to limit the amount of memory the virtual machine can use. If it exceeds that value, the machine exits and the running program fails. It is specified with &lt;span style="font-weight: bold;"&gt;java -Xmx&lt;/span&gt; value.&lt;br /&gt;&lt;br /&gt;I couldn't find something similar for python so I procrastinated a bit writing a bash script to control the processes.&lt;br /&gt;I made a cycle that monitored the values from &lt;span style="font-weight: bold;"&gt;/proc/meminfo&lt;/span&gt; and killed the running process if some limit was reached.&lt;br /&gt;The problem with that solution was that my experiments were not just one program, but many, controlled by a bash script, so this solution would just kill the bash script and not the process doing the important memory usage. So I added some extra code borrowed from the web to kill also the subprocesses. That made the code longer and more complex, leading to this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;control_run.sh:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;PROGRAM=$*&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#Also kills process children, and their children, and so on&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;KILL_CHILDREN=&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#Minimum free memory available (in Kb.)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;MEM_FREE_LIMIT=&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;300000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#Minimum free swap (in Kb.)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;SWAP_FREE_LIMIT=&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;500000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#Run the program in background and get its PID&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$PROGRAM&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;PID=$!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#While the program is alive&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;ps&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$PID&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(34, 51, 136);"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; [&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$?&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;-eq&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"0"&lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; ]&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;; &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;MEM_FREE=$(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;grep&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; MemFree: /proc/meminfo &lt;b&gt;|&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;egrep&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; [0-9]+ -o&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#echo "Free Memory: ${MEM_FREE}"&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;SWAP_FREE=$(&lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;grep&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; SwapFree: /proc/meminfo &lt;b&gt;|&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;egrep&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; [0-9]+ -o&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#echo "Free Swap: ${SWAP_FREE}"&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; [&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;${MEM_FREE}&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;-le&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;${MEM_FREE_LIMIT}&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; ]&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;b&gt;||&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; [&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;${SWAP_FREE}&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;-le&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;${SWAP_FREE_LIMIT}&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; ]&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;; &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    &lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; [&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;${MEM_FREE}&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;-le&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;${MEM_FREE_LIMIT}&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; ]&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;; &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;echo&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"free memory limit reached, exiting..."&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    &lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;echo&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"free swap limit reached, exiting..."&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    &lt;b&gt;fi&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    &lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; [&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;${KILL_CHILDREN}&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;-eq&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; 0 &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; ]&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;; &lt;b&gt;then&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;echo&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"killing process with id &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$PID&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;kill&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$PID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    &lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#code based on http://www.unix.com/unix-dummies-questions-answers/5245-script-kill-all-child-process-given-pid.html&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;KILL_PIDS=$PID&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;CHILDREN=&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;`&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;ps&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; -ef&lt;b&gt;|&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;awk&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;'$3 == '&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$PID&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;' { print $2 }'&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;`&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;b&gt;while&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; [&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$CHILDREN&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt; ]&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;; &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;KILL_PIDS=&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$KILL_PIDS&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$CHILDREN&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;OLD_CHILDREN=$CHILDREN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;CHILDREN=&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;''&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;            &lt;b&gt;for&lt;/b&gt; i &lt;b&gt;in&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$OLD_CHILDREN&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;; &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;CHILDREN=&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$CHILDREN&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt; &lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;`&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;ps&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; -ef&lt;b&gt;|&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;awk&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;'$3 == '&lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;' { print $2 }'&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;`&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;            &lt;b&gt;done&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;b&gt;done&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;echo&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"killing process with id &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$PID&lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt; and its children"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;b&gt;for&lt;/b&gt; i &lt;b&gt;in&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$KILL_PIDS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;            &lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;echo&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; killing &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$i&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;kill&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$i&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;        &lt;b&gt;done&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    &lt;b&gt;fi&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;exit&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;fi&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;sleep&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;&lt;b&gt;ps&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;$PID&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(34, 51, 136);"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; /dev/null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;done&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(136, 0, 136);"&gt;&lt;b&gt;echo&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"program finished"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I tested it with a small python script that just consumes memory:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;memory_consumer.py:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(255, 128, 224);"&gt;import&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt; time&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;a = &lt;/span&gt;&lt;span style="color: rgb(0, 87, 174);"&gt;range&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 128, 0);"&gt;100000&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;&lt;b&gt;while&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 110, 40);"&gt;True&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    a += &lt;/span&gt;&lt;span style="color: rgb(0, 87, 174);"&gt;range&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(176, 128, 0);"&gt;100000&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    &lt;b&gt;print&lt;/b&gt; &lt;/span&gt;&lt;span style="color: rgb(191, 3, 3);"&gt;"printing something"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;    time.sleep(&lt;/span&gt;&lt;span style="color: rgb(176, 128, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and some bash scripts to execute three instances concurrently:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;memory_consumer_main.sh:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#!/bin/sh&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;./memory_consumer_child.sh&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;memory_consumer_child.sh:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(136, 135, 134);"&gt;&lt;i&gt;#!/bin/sh&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;python memory_consumer.py &lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;python memory_consumer.py &lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(20, 19, 18);"&gt;python memory_consumer.py&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;we would run:&lt;br /&gt;&lt;pre&gt;$./control_run.sh ./memory_consumer_main.sh&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;free memory limit reached, exiting...&lt;br /&gt;killing process with id 9348 and its children&lt;br /&gt;killing 9348&lt;br /&gt;killing 9349&lt;br /&gt;killing 9350&lt;br /&gt;killing 9351&lt;br /&gt;killing 9353&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another possibility I found was setting the memory limit with &lt;span style="font-weight: bold;"&gt;ulimit&lt;/span&gt;.&lt;br /&gt;We can set it from the command line and enable it for the bash session, or incluide the statements in the first lines of a bash script.&lt;br /&gt;&lt;br /&gt;That will limit the allowed memory for any process&lt;br /&gt;&lt;br /&gt;for example:&lt;br /&gt;&lt;pre&gt;$ ulimit -v 40000&lt;br /&gt;$ ulimit -H -v 40000&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;There, we limited the available memory for a process to 40Mb.&lt;br /&gt;Then,&lt;br /&gt;&lt;pre&gt;$ python memory_consumer.py&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;printing something&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;File "memory_consumer.py", line 4, in &lt;module&gt;&lt;br /&gt; a += range(100000)&lt;br /&gt;MemoryError&lt;/module&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;While simple, the problem with this approach is that it will only kill the process exceeding the memory usage. If we are running just one isolated process, that's fine. But in my case, the batch would continue in an erroneous state and produce wrong results.&lt;br /&gt;Any comment or suggestion, including "hey stupid, python has the option -blabla to do exactly that" will be appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-5414852408805849508?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/5414852408805849508/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=5414852408805849508' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5414852408805849508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5414852408805849508'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2009/03/limiting-memory-usage-of-python-script.html' title='Limiting memory usage of a python script'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-600257204652968228</id><published>2008-11-26T10:29:00.006-02:00</published><updated>2008-11-26T10:38:21.121-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programación'/><title type='text'>Experimentando con Qtdesigner y PyQt</title><content type='html'>El fin de semana estuve probando hacer algún programita con interfaz gráfica usando python y QT. Para eso usé QTDesigner para editar la UI, y PyQT4 para usar la librería QT desde python.&lt;br /&gt;&lt;br /&gt;Seguí este tutorial: &lt;a href="http://www.cs.usfca.edu/%7Eafedosov/qttut/"&gt;http://www.cs.usfca.edu/~afedosov/qttut/&lt;/a&gt; que aunque está viejo (es para PyQT3) la idea es la misma y se lo puede adaptar con algunos ejemplos para PyQT4 que hay dando vueltas.&lt;br /&gt;&lt;br /&gt;El resultado fue este programita para setear algunos parámetros de mencoder y utilizarlo para capturar TV.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/mtvcgui/"&gt;http://code.google.com/p/mtvcgui/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SS1Cw1AJ9wI/AAAAAAAACNs/WYvb26WOpIk/s1600-h/mtvcgui_screenshot.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 253px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SS1Cw1AJ9wI/AAAAAAAACNs/WYvb26WOpIk/s320/mtvcgui_screenshot.jpg" alt="" id="BLOGGER_PHOTO_ID_5272944145349605122" 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/4326990029691694464-600257204652968228?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/600257204652968228/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=600257204652968228' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/600257204652968228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/600257204652968228'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/11/experimentando-con-qtdesigner-y-pyqt.html' title='Experimentando con Qtdesigner y PyQt'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SS1Cw1AJ9wI/AAAAAAAACNs/WYvb26WOpIk/s72-c/mtvcgui_screenshot.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-3817000724807394077</id><published>2008-10-29T10:32:00.005-02:00</published><updated>2008-10-29T11:58:42.926-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocio'/><category scheme='http://www.blogger.com/atom/ns#' term='nerdeadas'/><title type='text'>Overclockeando la MSX</title><content type='html'>Todavía conservo mi primer computadora, una &lt;a href="http://es.wikipedia.org/wiki/Spectravideo_SVI-728"&gt;MSX Spectravideo SVI-728&lt;/a&gt; que le compré a mi primo cuando se compró su XT.&lt;br /&gt;Tenía solamente un intérprete de BASIC, con el que escribí mis primeras líneas de código (de ahí mis pésimas prácticas :P), y una lectora de cassettes, que usaba para cargar alguno de los cientos de juegos que tenía.&lt;br /&gt;&lt;br /&gt;Cada tanto me agarra la nostalgia y me pongo a jugar juegos de esa epoca en emuladores en mi PC actual. Revisando &lt;a href="http://computeremuzone.com/msx/?id=utils"&gt;una página&lt;/a&gt; encontré una utilidad para pasar a WAV los ROMs usados en los emuladores (los cassettes si se escuchan en un equipo de audio reproducen un sonido similar al de un modem dial up). Grabé un CD de audio con los mejores juegos generando el WAV al doble de bitrate del que se usaba en los cassettes y armé un cable para conectar un discman a la entrada de datos del teclado/motherboard/cpu/etc. A veces falla dando error de input/output, pero ajustando el volumen apropiadamente ahora se puede cargar un juego en la mitad de tiempo :D&lt;br /&gt;&lt;br /&gt;Notar el Microsoft en la pantalla. Gracias Bill! Ahora odio tu Internet Explorer pero esta maquinola me trajo muchas horas de diversión! Todo bien con Stallman, pero por más que el Emacs tenga un tetris y tenga que hacer más o menos las mismas combinaciones de teclas para escribir un caracter que para saltar y patear en el Yie Ar Kung Fu, no se compara :P&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SQhb0QFdVhI/AAAAAAAACL0/KN3Jy9jsehU/s1600-h/img_0176.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SQhb0QFdVhI/AAAAAAAACL0/KN3Jy9jsehU/s320/img_0176.jpg" alt="" id="BLOGGER_PHOTO_ID_5262557117811611154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbffmPBDI/AAAAAAAACLs/W2h4__6qTXw/s1600-h/img_0190.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbffmPBDI/AAAAAAAACLs/W2h4__6qTXw/s320/img_0190.jpg" alt="" id="BLOGGER_PHOTO_ID_5262556761198363698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbfNfNnBI/AAAAAAAACLk/9EsHIIlEpHY/s1600-h/img_0196.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbfNfNnBI/AAAAAAAACLk/9EsHIIlEpHY/s320/img_0196.jpg" alt="" id="BLOGGER_PHOTO_ID_5262556756337073170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbe9Ql99I/AAAAAAAACLc/mNA_OHdFxpY/s1600-h/img_0199.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbe9Ql99I/AAAAAAAACLc/mNA_OHdFxpY/s320/img_0199.jpg" alt="" id="BLOGGER_PHOTO_ID_5262556751980787666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbedgDKsI/AAAAAAAACLU/z0Y3po0uYoA/s1600-h/img_0210.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbedgDKsI/AAAAAAAACLU/z0Y3po0uYoA/s320/img_0210.jpg" alt="" id="BLOGGER_PHOTO_ID_5262556743455681218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbd1cGKXI/AAAAAAAACLM/359BvspTwy0/s1600-h/img_0215.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SQhbd1cGKXI/AAAAAAAACLM/359BvspTwy0/s320/img_0215.jpg" alt="" id="BLOGGER_PHOTO_ID_5262556732701682034" 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/4326990029691694464-3817000724807394077?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/3817000724807394077/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=3817000724807394077' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/3817000724807394077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/3817000724807394077'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/10/overclockeando-la-msx.html' title='Overclockeando la MSX'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SQhb0QFdVhI/AAAAAAAACL0/KN3Jy9jsehU/s72-c/img_0176.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-4319234975689627261</id><published>2008-10-28T00:34:00.004-02:00</published><updated>2008-10-28T11:53:06.402-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>Mis primeros 0 bytes aportados al core de Plone</title><content type='html'>Como parte de las actividades locas de los viernes en menttes, esta vez, como hace ya un par de semanas, estuvimos tratando de resolver tickets para el "&lt;a href="http://plone.org/news/plone-tune-up-rally"&gt;Plone Tune-Up&lt;/a&gt;". En este evento se tratan de solucionar problemas reportados al bug tracker de Plone.&lt;br /&gt;&lt;br /&gt;Estuve trabajando en un problema javascriptoso que para variar, solo ocurría en Internet Explorer.&lt;br /&gt;A un documento de Plone, se le puede activar una tabla de contenidos desde "Editar" -&gt; "Configuración" y activar la TdC. Esto genera con javascript la tabla en base a los headlines del documento.&lt;br /&gt;El problema reportado era que en IE7, los títulos que contenían una @ se transformaban dentro de la tabla en el texto del link hacia el headline. En realidad también ocurre con títulos que comienzan con urls, y en IE6 (lo pude reproducir en linux usando &lt;a href="http://www.tatanka.com.br/ies4linux/page/Es/P%C3%A1gina_Inicial"&gt;IEs4linux&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;El javascript que generaba la tabla usaba &lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt;, en particular las líneas que metían el texto y el enlace eran puramente JQuery. Parecía ser un bug en esta librería, pero &lt;a href="http://groups.google.com/group/jquery-dev/browse_thread/thread/22029e221fe635c6?pli=1"&gt;este thread&lt;/a&gt; en su lista me demostró que en realidad era todo culpa de IE.&lt;br /&gt;La tremenda solución consistió en cambiar el orden de dos líneas del código.&lt;br /&gt;&lt;br /&gt;Screenshot con el problema:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SQZ6v9WaAtI/AAAAAAAACK8/HwZMpBsexGE/s1600-h/plone_at_sign1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SQZ6v9WaAtI/AAAAAAAACK8/HwZMpBsexGE/s320/plone_at_sign1.png" alt="" id="BLOGGER_PHOTO_ID_5262028178969985746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Screenshot con el javascript modificado:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SQZ6wivucWI/AAAAAAAACLE/hz2MWGAggOM/s1600-h/plone_at_sign2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SQZ6wivucWI/AAAAAAAACLE/hz2MWGAggOM/s320/plone_at_sign2.png" alt="" id="BLOGGER_PHOTO_ID_5262028189008294242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El ticket ya fue &lt;a href="https://dev.plone.org/plone/ticket/7949"&gt;cerrado&lt;/a&gt;, "&lt;a href="https://dev.plone.org/plone/changeset/23003"&gt;commiteado&lt;/a&gt;" y "&lt;a href="https://dev.plone.org/plone/changeset/23004"&gt;mergeado&lt;/a&gt;":D&lt;br /&gt;&lt;br /&gt;La verbosidad de este patch va perfecto con mi personalidad, pero igual espero poder aportar para el próximo tuneup algún parche un poco más interesante :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-4319234975689627261?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/4319234975689627261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=4319234975689627261' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/4319234975689627261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/4319234975689627261'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/10/mis-primeros-0-bytes-aportados-al-core.html' title='Mis primeros 0 bytes aportados al core de Plone'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SQZ6v9WaAtI/AAAAAAAACK8/HwZMpBsexGE/s72-c/plone_at_sign1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-5145945972764830244</id><published>2008-08-18T20:02:00.010-03:00</published><updated>2009-01-21T09:59:30.529-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocio'/><title type='text'>Receta milenaria para preparar lupines.</title><content type='html'>El simpático nombre que elegí para este blog hace que mucha gente inocente se encuentre con código Python cuando en realidad está buscando cómo hacer los lupines como los hacía la abuela.&lt;br /&gt;Para orientar a estos internautas, les traigo su pedido al pie de la letra.&lt;br /&gt;&lt;br /&gt;A continuación, mi abuela Titina les explica como preparar lupines (para acompañar con cerveza, como este blog recomienda)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SKoBi9xlOOI/AAAAAAAACJY/Wpe1HwrkCJQ/s1600-h/lupines_01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SKoBi9xlOOI/AAAAAAAACJY/Wpe1HwrkCJQ/s320/lupines_01.jpg" alt="" id="BLOGGER_PHOTO_ID_5235999216981326050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Paso 1: Poner los porotos lupines en una olla con agua y abundante sal gruesa (un pocillito de café, como muestra la foto), y dejarlos remojar por una noche.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SKoCfs0iEdI/AAAAAAAACJk/IkhPZpEtuGw/s1600-h/lupines_02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SKoCfs0iEdI/AAAAAAAACJk/IkhPZpEtuGw/s320/lupines_02.jpg" alt="" id="BLOGGER_PHOTO_ID_5236000260402319826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SKoC72Bja_I/AAAAAAAACJs/_2gQlvPhjxE/s1600-h/lupines_03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/SKoC72Bja_I/AAAAAAAACJs/_2gQlvPhjxE/s320/lupines_03.jpg" alt="" id="BLOGGER_PHOTO_ID_5236000743909190642" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;(la censura era solo para probar el efecto. Muy profesional, jeje)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Paso 2: Poner a hervir y dejar a fuego lento por 2 horas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SKoDVPxxUmI/AAAAAAAACJ0/TEdoRWv4uuQ/s1600-h/lupines_04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_jFNpgu2oQ7Y/SKoDVPxxUmI/AAAAAAAACJ0/TEdoRWv4uuQ/s320/lupines_04.jpg" alt="" id="BLOGGER_PHOTO_ID_5236001180319044194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Paso 3: Esperar a que enfríe, retirar el agua removiéndolos para que se se limpien y agregar nuevamente agua con sal. Esto ya puede hacerse en el envase que se quiera utilizar para almacenarlos en la heladera.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Paso 4: Poner el envase en la heladera, y 2 veces al día renovar el agua y la sal, durante 3 días.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SKoDvfIymHI/AAAAAAAACJ8/rD8T1cBIaMQ/s1600-h/lupines_05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SKoDvfIymHI/AAAAAAAACJ8/rD8T1cBIaMQ/s320/lupines_05.jpg" alt="" id="BLOGGER_PHOTO_ID_5236001631118727282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Luego ya se los puede consumir. Se los puede ir probando para ver si están en el punto justo, y no están amargos.&lt;br /&gt;Si no se los consume, se deben guardar en la heladera y cambiar el agua con sal una vez al día.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SKoD-wu1AsI/AAAAAAAACKE/d1ydLuKXl80/s1600-h/lupines_06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SKoD-wu1AsI/AAAAAAAACKE/d1ydLuKXl80/s320/lupines_06.jpg" alt="" id="BLOGGER_PHOTO_ID_5236001893539709634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Si tienen dudas o quieren comentar cómo les fue, escriban un comentario. Titina lee y agradece todos los mensajes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-5145945972764830244?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/5145945972764830244/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=5145945972764830244' title='18 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5145945972764830244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5145945972764830244'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/08/receta-milenaria-para-preparar-lupines.html' title='Receta milenaria para preparar lupines.'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jFNpgu2oQ7Y/SKoBi9xlOOI/AAAAAAAACJY/Wpe1HwrkCJQ/s72-c/lupines_01.jpg' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-125507004179059907</id><published>2008-08-16T20:17:00.002-03:00</published><updated>2008-08-16T20:28:01.802-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intentos por salvar al mundo'/><title type='text'>tuvo o tubo</title><content type='html'>El &lt;a href="http://cervezaconlupines.blogspot.com/2008/03/presentando-deflog.html"&gt;desfotologueador&lt;/a&gt; fue un buen intento por tratar de salvar a nuestro castellano, pero no está dando resultado. Los servicios de mensajería instantánea nos exigen comunicarnos mediante texto a la misma velocidad a la que lo haríamos hablando y esto lleva a que no pensemos cómo se escribe lo que queremos decir. En estos casos muchas palabras se suelen escribir "como suena", la 'h' no importa, 'b', o 'v', da lo mismo, etc.&lt;br /&gt;&lt;br /&gt;Para intentar cambiar esto, les voy a pasar una regla nemotécnica que me enseñó mi vieja de chiquito y nunca falló.&lt;br /&gt;Me dijo:&lt;br /&gt;&lt;blockquote&gt;Hijo, cuando dudes entre escribir tuvo o tubo, piensa:&lt;br /&gt;Las tuberías, cañerías, etc. son por lo general conductos largos, que sirven para transportar algo desde un lugar a otro, ubicados en sitios geográficamente distantes.&lt;br /&gt;Piensa por ejemplo en las distancias que debe recorrer tu caca para salir del núcleo urbano donde fue concebida.&lt;br /&gt;Ergo, cuando se trate de un tubo como objeto, referido a una cañería por ejemplo, es "b" larga, larga como la cañería, idiota.&lt;br /&gt;En el resto de los casos, es con "v" corta. Y así como se conjuga tuvo, del verbo tener, también es como se escriben los verbos que se conjungan de la misma manera, como obtener, estar, etc. Es obtuvo, y no obtubo, estuvo y no estubo.&lt;br /&gt;También se lo ve mal escrito en conjugaciones donde ni siquiera puede confundirse con el tubo de la cañería. Como estube, en lugar de estuve. Esto puede deberse a la existencia de Youtube, pero en ese caso de nuevo, piensa que está hablando de un tubo. El tubo de rayos catódicos que tiene el tele. O sea que quiere decir "Tu tubo" (de rayos catódicos) o "Tu tele".&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Pensarán que mi vieja era visionaria, pero se refería al service de TV y cassetteras llamado Youtube que estaba a la vuelta de mi casa y que ahora está iniciando un juicio millonario contra el popular sitio de internet.&lt;br /&gt;&lt;br /&gt;En resumen:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;'b', para "tubo" ('b' larga, caño largo)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;para el resto, 'v'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Espero que os haya iluminado.&lt;br /&gt;Gracias, vuelvas prontos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-125507004179059907?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/125507004179059907/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=125507004179059907' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/125507004179059907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/125507004179059907'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/08/tuvo-o-tubo.html' title='tuvo o tubo'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-2127981316488111290</id><published>2008-08-06T16:25:00.004-03:00</published><updated>2008-08-15T17:27:59.242-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Referencias a caracteres en XML de vuelta a unicode</title><content type='html'>Los caracteres que no son son representables en algún encoding pueden representarse con su codificación en XML. Si c es un caracter, la expresión Python para generar esta representación es:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="s"&gt;"&amp;amp;#&lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="s"&gt;;"&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nb"&gt;ord&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Cuando codificamos un texto, podemos especificar qué hacer con los caracteres que no se pueden representar en el encoding usado. Con el argumento 'ignore', simplemente no se incluyen, con 'replace' son reemplazados por un '?' y usando 'xmlcharrefreplace' obtenemos la mencionada codificación. Por ejemplo:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;codificado&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;texto&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"xmlcharrefreplace"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Para recuperar la cadena original, no encontré nada haciendo una simple búsqueda, así que lo solucioné de la siguiente manera, usando una expresión regular y asumiendo que la cadena puede ser representada en el encoding por defecto (en mi caso UTF-8).&lt;br /&gt;&lt;br /&gt;La expresión regular simplemente matchea con la forma de la representación XML, el objeto match es pasado una función que toma la parte que corresponde al número, la convierte a entero y devuelve el resultado de aplicarle unichr a ese valor. La función unichr devuelve el caracter unicode correspondiente a un número.&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;unicodechar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;   &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;unichr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;replace_xmlrefs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;#(\d+);"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;unicodechar&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Nada complejo, y se lo puede ver en funcionamiento:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="n"&gt;&gt;&gt;&gt;&lt;/span&gt; &lt;span class="n"&gt;encoded&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"&amp;amp;#36001;&amp;amp;#22243;      &amp;amp;#22522;&amp;amp;#37329;&amp;amp;#20250;"&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;&gt;&gt;&gt;&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;&gt;&gt;&gt;&lt;/span&gt; &lt;span class="n"&gt;replace_xmlrefs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;encoded&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="s"&gt;u'&lt;/span&gt;&lt;span class="se"&gt;\u8ca1\u56e3&lt;/span&gt;&lt;span class="s"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\u57fa\u91d1\u4f1a&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;&gt;&gt;&gt;&lt;/span&gt; &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;replace_xmlrefs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;encoded&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;財団      基金会&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;La última línea, donde se imprimen los caracteres representados puede fallar si la consola no soporta esos caracteres, o no estamos usando un encoding que cubra todo unicode. Lo recomendable es usar UTF8.&lt;br /&gt;Se puede iniciar el intérprete python especificando que use otro locale (vemos los disponibles con locale -a).&lt;br /&gt;Por ejemplo:&lt;br /&gt;&lt;div&gt;&lt;pre&gt;LC_ALL=es_AR.utf8 python&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Obviamente siempre hay gente que hace mejor las cosas, y &lt;a href="http://www.gossamer-threads.com/lists/python/python/623437"&gt;acá&lt;/a&gt; encontré una forma de hacer esto que considera también los casos en que la referencia tiene un número hexadecimal.&lt;br /&gt;&lt;br /&gt;Update 15-08-2008:&lt;br /&gt;&lt;a href="http://snippets.dzone.com/posts/show/4569"&gt;Este snippet&lt;/a&gt; también reemplaza las entidades HTML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-2127981316488111290?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/2127981316488111290/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=2127981316488111290' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/2127981316488111290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/2127981316488111290'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/08/referencias-caracteres-en-xml-de-vuelta.html' title='Referencias a caracteres en XML de vuelta a unicode'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-87125197163299652</id><published>2008-07-28T19:54:00.007-03:00</published><updated>2009-04-19T16:33:31.986-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><category scheme='http://www.blogger.com/atom/ns#' term='música'/><title type='text'>Mock... yeah!</title><content type='html'>Ayer me surgió una de esas dudas pelotudas que necesitás saber la respuesta como sea, para después decir, "Ah, mirá vos." y nada más.&lt;br /&gt;&lt;br /&gt;Ya me había pasado hace poco, después de darme cuenta que la introducción del tema&lt;a href="http://www.youtube.com/watch?v=Be6jlCuMvVQ"&gt; Relax, Take it easy&lt;/a&gt; de Mika me sonaba mucho a algún tema de los 80's. No me acuerdo si lo bajé para un amigo o se bajó por error dentro de una porno, pero no importa. Lo importante es que tenía que sacarme esa duda y por dos días estuve revisando discos y buscando en google palabras que me sonaban de la canción +80's, +lyrics, etc sin resultados. Hasta que mi hermano de pedo cayó en el video que era, &lt;a href="http://www.youtube.com/watch?v=ZBwVlsa7_gs"&gt;(I Just) Died in your Arms tonight&lt;/a&gt; de Cutting Crew.&lt;br /&gt;Después me di cuenta que nada más entrando en el &lt;a href="http://en.wikipedia.org/wiki/Relax,_Take_It_Easy"&gt;artículo de la Wikipedia&lt;/a&gt; del primer tema, lo decía en el primer párrafo, confirmando que en internet está toda la información que uno necesita pero hay que saber buscarla. Por lo menos hasta que la web semántica y los buscadores capaces de responder preguntas hagan que buscar las respuestas a estas preguntas sea algo rápido y no-divertido.&lt;br /&gt;&lt;br /&gt;En este caso la query era simplemente cual era el tema que cantaban Tonto y Retonto cuando el tipo que levantan en la ruta está a punto de matarlos, y conseguir la versión original. Por suerte existe youtube&lt;br /&gt;&lt;br /&gt;Resulta que la canción se llama "Mockingbird", de Inez y Charles Foxx, que fue interpretada también por nada menos que Carly Simon y James Taylor y su rock pop suave de contenido:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_jFNpgu2oQ7Y/SI5SYgwxiqI/AAAAAAAACI4/9AgsQ1pLCDE/s1600-h/jamestaylor.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_jFNpgu2oQ7Y/SI5SYgwxiqI/AAAAAAAACI4/9AgsQ1pLCDE/s320/jamestaylor.jpg" alt="" id="BLOGGER_PHOTO_ID_5228206798488570530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Este es un video de la canción en vivo:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/EeOqD3uMIRs&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/EeOqD3uMIRs&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esta la escena de la película:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/G5f_gbzo4Q0&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/G5f_gbzo4Q0&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Que pelotudo, nunca le había prestado atención a que con los mexicanos cantan Mock... si, ing... si, bird... si, si... si. Jajaja...&lt;br /&gt;&lt;br /&gt;Nótese que este post lo tenía archivado y lo largo ahora junto con otro donde me hago el interesante escribiendo cosas de programación que no sirven para nada, como para compensar la estupidez del contenido.&lt;br /&gt;&lt;br /&gt;Mátenme.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-87125197163299652?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/87125197163299652/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=87125197163299652' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/87125197163299652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/87125197163299652'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/07/mock-yeah.html' title='Mock... yeah!'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_jFNpgu2oQ7Y/SI5SYgwxiqI/AAAAAAAACI4/9AgsQ1pLCDE/s72-c/jamestaylor.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-253250608137620590</id><published>2008-07-15T20:02:00.005-03:00</published><updated>2008-07-15T22:01:28.591-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><category scheme='http://www.blogger.com/atom/ns#' term='ocio'/><title type='text'>Videos recomendados por la gerencia artística</title><content type='html'>Peter Capusotto y una traducción increíble de "Another Brick in the Wall". Los auspcios, insuperables.&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/yKtNEf-wdiw&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/yKtNEf-wdiw&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Marx Attack. Toda la marxomanía en un grupo pop que es furor. De Todo x 2$. Me hace acordar a unos cuantos de mi facu :P (Está buenísima esa versión de "La hierba de los caminos"!!)&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/t8UmEVXlv6A&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/t8UmEVXlv6A&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Weird Al Yancovic entrevistando a Madonna. Video traido a Cerveza con Lupines por medio del "Antimufa Service", del viejo y querido Lannon.&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7Ft4Ogih2vs&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/7Ft4Ogih2vs&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A Rambo no le gusta la guerra. Lo mejor que exportó la Argentina en mucho tiempo.&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WyA1dzfKywg&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/WyA1dzfKywg&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Where the Hell is Matt? (2008) Video nuevo de &lt;a href="http://www.wherethehellismatt.com/"&gt;este tipo&lt;/a&gt; que se dedica a dar la vuelta al mundo, visitando lugares espectaculares mientra hace una versión menos epiléptica del &lt;a href="http://www.youtube.com/watch?v=-aJ-NH-b920"&gt;pasito flogger&lt;/a&gt;.&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zlfKdbWwruY&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/zlfKdbWwruY&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wear sunscreen (usa protector solar) Un video típico de mina que reenvía cadenas con presentaciones de Power Point. Pero está bueno. Es ideal para verlo "si estás desorientado y no sabés que bondi/trole hay que tomar para seguir" :-|&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YDRId6QmNTA&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/YDRId6QmNTA&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aaaahh!! Siempre me olvido de algo después de postear. Big Buck Bunny. Un corto hecho totalmente con software libre por la gente de &lt;a href="http://www.blender.org/"&gt;Blender&lt;/a&gt;. &lt;a href="http://www.bigbuckbunny.org/index.php/trailer-page/"&gt;Bajable desde internet&lt;/a&gt; en varios formatos incluyendo todo el repositorio de arte, licenciado bajo la &lt;a href="http://en.wikipedia.org/wiki/Creative_Commons_licenses" title="Creative Commons licenses"&gt;Creative Commons Attribution License&lt;/a&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YE7VzlLtp-4&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/YE7VzlLtp-4&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-253250608137620590?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/253250608137620590/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=253250608137620590' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/253250608137620590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/253250608137620590'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/07/videos-recomendados-por-la-gerencia.html' title='Videos recomendados por la gerencia artística'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-7148042752623247353</id><published>2008-07-10T19:24:00.007-03:00</published><updated>2008-07-10T22:45:25.605-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><category scheme='http://www.blogger.com/atom/ns#' term='nerdeadas'/><title type='text'>Kernel de crema americana</title><content type='html'>A veces me pongo a pensar en lo pelotudos que son algunos rótulos del mundo informático, en particular del software libre.&lt;br /&gt;&lt;br /&gt;Cuando escuché por primera vez la palabra Debianita para un usuario de Debian, agradecí ser un Gentoosero (¿?) porque ese calificativo parece que le quita todo el valor al esfuerzo de ser un usuario de Debian. Merecen algo más del tipo Debianero y no algo que suena a nenita, o que parece el diminutivo de algo.&lt;br /&gt;&lt;br /&gt;Ahora escuché a un amigo decir que se compila su propio kernel. Que se baja un "kernel vainilla" y le aplica los parches que quiere. El término &lt;span style="font-style: italic;"&gt;vanilla&lt;/span&gt; ya lo había leído en varios lugares para referirse a un producto sin modificaciones, tal como lo publica el desarrollador. Pero esta fue la primera vez que lo escuchaba castellanizado.&lt;br /&gt;&lt;br /&gt;Supongo que una versión más argentina sería un "kernel pelado", o algo así. Pero me puse a buscar de dónde salía el termino vanilla para este tipo de cosas, y &lt;a href="http://en.wikipedia.org/wiki/Vanilla_%28disambiguation%29"&gt;por lo que leí&lt;/a&gt; viene de que el sabor más popular para los "ice creams" es la vainilla, entones la opción vainilla sería como la estándard.&lt;br /&gt;&lt;br /&gt;Acá no pasa eso, el gusto más neutral es el de crema americana, que viene por default en los pinitos, los pinguinitos, y ciertos postres helados... así que para cerrar este pequeño divague, propongo el siguiente logo para identificar al kernel recién salido de fábrica:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_jFNpgu2oQ7Y/SHaR2mXKIWI/AAAAAAAACIY/CAvm9lzP9Wo/s1600-h/crema_americana.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_jFNpgu2oQ7Y/SHaR2mXKIWI/AAAAAAAACIY/CAvm9lzP9Wo/s320/crema_americana.jpg" alt="" id="BLOGGER_PHOTO_ID_5221521185179312482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Este post claramente está hablando del fasoooo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-7148042752623247353?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/7148042752623247353/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=7148042752623247353' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/7148042752623247353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/7148042752623247353'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/07/kernel-de-crema-americana.html' title='Kernel de crema americana'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_jFNpgu2oQ7Y/SHaR2mXKIWI/AAAAAAAACIY/CAvm9lzP9Wo/s72-c/crema_americana.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-5870571624907901885</id><published>2008-05-19T23:00:00.012-03:00</published><updated>2009-04-19T16:34:35.656-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><category scheme='http://www.blogger.com/atom/ns#' term='música'/><title type='text'>Zambayonny - Las cosas que dejé (Acordes para guitarra)</title><content type='html'>Había escuchado muy poco de este tipo y si bien me había resultado bastante gracioso no me pareció tan genial. Pero este tema la rompe, y la canción final de tres renglones con la que cierran el programa es algo que se puede definir solo con una palabra: jakkajskjaskjdkaskjakjsdakjkjaskjaskjadskjdak.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GgW45BIKBkg&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/GgW45BIKBkg&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La cuestión es que quería los acordes de guitarra para la canción, pero en La cuerda no estaban, así que lo transcribí y lo subí a esa página.&lt;br /&gt;Como tardan cerca de 2 semanas en actualizar, dejo el link a mi página y después actualizo:&lt;br /&gt;&lt;a href="http://www.santiagobruno.com.ar/boludeces/las_cosas_que_deje_tab.txt"&gt;Acordes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si encuentran algún error, avisen. Estuve en duda si el Mi era menor o mayor, porque la secuencia sería como la del recontra usado Canon de Pachelbel si fuese menor, pero parece que es mayor. Y también tengo dudas en&lt;br /&gt;Dm              C              G                 C      G&lt;br /&gt;podría ser&lt;br /&gt;Dm              Am             G                 C      G&lt;br /&gt;en el video no se ve bien...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;De yapa, me parece que así es la cancioncita del final:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;C&lt;br /&gt;No, no me hables de amor&lt;br /&gt;    Dm&lt;br /&gt;mientras me chupas la pija&lt;br /&gt;   F           G     C&lt;br /&gt;porque no se te entiende nada&lt;br /&gt;&lt;br /&gt;F  C&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Es el fragmento de la canción "Una semana de mierda"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update 04/06/2008:&lt;/span&gt;&lt;br /&gt;&lt;span style="text-decoration: line-through ! important;"&gt;Ya está la transcripcion en &lt;a style="text-decoration: line-through ! important;" href="http://lacuerda.net/tabs/z/zambayonny/las_cosas_que_deje.shtml"&gt;La Cuerda&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update 28/07/2008:&lt;/span&gt;&lt;br /&gt;Buuh... que turbio... Reemplazaron mi tab por otro donde le cambiaron de cifrado americano a do re mi fa y mi tab desapareció por completo :' (&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-5870571624907901885?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/5870571624907901885/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=5870571624907901885' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5870571624907901885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5870571624907901885'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/05/zambayonny-las-cosas-que-dej-acordes.html' title='Zambayonny - Las cosas que dejé (Acordes para guitarra)'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-6338569205762551644</id><published>2008-05-03T16:02:00.000-03:00</published><updated>2008-05-03T18:34:36.200-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ocio'/><title type='text'>4 segundos</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SBzXCPFxZ7I/AAAAAAAACAI/hzb8-2JGa4A/s1600-h/4+Segundos.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SBzXCPFxZ7I/AAAAAAAACAI/hzb8-2JGa4A/s320/4+Segundos.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5196264503489161138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No soy un lector de comics. Creo que es una de las pocas cosas del mundo nerdista que me rodea que no se me pegó. El único comic que leí casi completo y que compré casi todos los números fue Cazador.&lt;br /&gt;Ahora (obvio, con 8 años de retraso) descubrí este otro comic argentino, 4 segundos. No es más que la historia de 4 pibes comunes, nada de super héroes ni naves espaciales. Y por eso me gustó. En una noche al pedo leí las 7 historietas y me entretuvo mucho. Lástima que no la hayan seguido.&lt;br /&gt;Está mucho más cerca de los sitcoms que estoy viendo últimamente que de las historietas del gordo de los Simpsons, así que se la recomiendo a todos los que por haber tomado Drink Z con alto contenido de pentaxanol, o algún otro misterio de la vida lleguen a este blog. &lt;br /&gt;&lt;br /&gt;Acá les dejo algunos links que les pueden interesar:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4segundos.4t.com/"&gt;http://4segundos.4t.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.historieteca.com.ar/4segundos/4segundos.htm"&gt;http://www.historieteca.com.ar/4segundos/4segundos.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.taringa.net/posts/125795"&gt;http://www.taringa.net/posts/125795&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.taringa.net/posts/arte/818558/4-Segundos---Coleccion-Completa-(Editado).html"&gt;http://www.taringa.net/posts/arte/818558/4-Segundos---Coleccion-Completa-(Editado).html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Disfrútenlos, tienen más glamour que Chabreleaux.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SBzYyPFxZ8I/AAAAAAAACAQ/yE9aSHfyR0I/s1600-h/4segfoto.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SBzYyPFxZ8I/AAAAAAAACAQ/yE9aSHfyR0I/s320/4segfoto.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5196266427634509762" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-6338569205762551644?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/6338569205762551644/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=6338569205762551644' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/6338569205762551644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/6338569205762551644'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/05/4-segundos.html' title='4 segundos'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jFNpgu2oQ7Y/SBzXCPFxZ7I/AAAAAAAACAI/hzb8-2JGa4A/s72-c/4+Segundos.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-1815746209314274328</id><published>2008-04-26T20:09:00.000-03:00</published><updated>2008-04-26T22:53:05.849-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>BadRequest error running the import steps of a selected profile from a product with several profiles</title><content type='html'>I had to add an action to a content type named "Attachment" for a Plone 3 product. That is just adding the action in the profiles/default/types/Attachment.xml generated by ArchGenXML 2.0. But there is a problem. That file has no special sections for custom code, so it will be overwritten every time we regenerate the product from our model.&lt;br /&gt;&lt;br /&gt;My first attempt was to create another profile, called attachment, where I will put the modifications, and running the step from the Install.py. That is:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;create a profiles/attachment/types/Attachment.xml and include there the action I need to add in a proper xml structure.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;register the profile in the main configure.zcml (archgenxml will create a profiles.zcml for this purpose)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&amp;lt;!-- ##code-section profiles.zcml-top #fill in your manual code here --&amp;gt;&lt;br /&gt;&amp;lt;genericsetup:registerProfile&lt;br /&gt;   name="attachment"&lt;br /&gt;   title="MyProduct-customized-profile"&lt;br /&gt;   directory="profiles/attachment"&lt;br /&gt;   description="Customized extension profile for MyProduct."&lt;br /&gt;   provides="Products.GenericSetup.interfaces.EXTENSION"&lt;br /&gt;   /&gt;&lt;br /&gt;&amp;lt;!-- ##/code-section profiles.zcml-top --&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;put this code in Extensions/Install.py&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;Products.CMFCore.utils&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;getToolByName&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;afterInstall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reinstall&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;portal_setup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getToolByName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'portal_setup'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;portal_setup&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;runAllImportStepsFromProfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'profile-Products.MyProduct:attachment'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;But when I installed the product, I got:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BadRequest: The id "import-all-profile-Products.MyProduct_attachment-20080426230436.log" is invalid - it is already in use.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was importing the steps of a profile that QuickInstaller had already imported. But my product wasn't completely installed yet...&lt;br /&gt;&lt;br /&gt;The problem is that QuickInstaller imported the attachment profile not because it imports every step, but because it imports the first registered profile in alphabetical order. At least, that's what I concluded, because, after moving profiles/attachment to profiles/extra, and renaming attachment for extra in the previous fragments of code, it worked.&lt;br /&gt;&lt;br /&gt;The default profile wasn't imported. And looking at the installable products on QuickInstaller Control Panel page, the attachment product was listed, instead of the MyProduct profile that used to be there.&lt;br /&gt;&lt;br /&gt;So, should I use only names that follows 'default' in lexicograpic order for additional profiles? I would expect that QuickInstaller only executed the default profile. Maybe I missed something... This was the first time I added a second profile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-1815746209314274328?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/1815746209314274328/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=1815746209314274328' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/1815746209314274328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/1815746209314274328'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/04/badrequest-error-running-import-steps.html' title='BadRequest error running the import steps of a selected profile from a product with several profiles'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-5514028061431098674</id><published>2008-04-24T21:21:00.001-03:00</published><updated>2008-05-16T03:17:53.674-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plone'/><title type='text'>How to register a local utility in Plone 3 and not lose its persistent data when the product is reinstalled</title><content type='html'>What you are about to read is not a great solution. There are probably better ways of doing this, but I wanted to share the problems I found and how I solved, because it took me some time to find out what was going on, and perhaps this can be useful for somebody. So, actually this isn't a HOWTO, it's a HOWIDID.&lt;br /&gt;&lt;br /&gt;I was developing a Plone 3 (3.0.6) product, generated with &lt;a href="http://plone.org/products/archgenxml"&gt;ArchGenXML&lt;/a&gt; 2.0, and my objective was to add a local utility to it, which should store a list of items. Those items should be added or removed from a page accessible from the Control Panel, and that list would be the options of a drop down selection field of a content type.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://martinaspeli.net/"&gt;Martin Aspeli's&lt;/a&gt; book "&lt;a href="http://www.packtpub.com/Professional-Plone-web-applications-CMS/book"&gt;Profesional Plone Development&lt;/a&gt;" was of great help. How to create the configuration page in the Control Panel was almost copying and paste one of his examples (declaring the configlet in controlpanel.xml, creating a view that extends ControlPanelForm, declaring the icon in actionicons.xml and registering it as a resource, etc)&lt;br /&gt;&lt;br /&gt;The problem was that he uses the componentregistry import step to register the utility. And that looks really nice, but if you install your product with quickinstaller, quickinstaller runs this step, and somehow it remembers that the utility belongs to that product, and when you remove the product, you will lose all your persisted data.&lt;br /&gt;&lt;br /&gt;I tried some things I found on the web but nothing worked, so I desisted with component registry.&lt;br /&gt;&lt;br /&gt;I just used the good old Extensions/Install.py, to which I was familiar from Plone 2.5, and registered the utility there. Neither the file or the directory existed (I guess because with ArchGenXML 2.0 everything that was done there is now done through GenericSetup)  so I created them.&lt;br /&gt;&lt;br /&gt;The utility must be registered in the afterInstall method. Otherwise QuickInstaller will still remove the data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lets say we have this code in utility.py in our product:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;IMyUtility&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Interface&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="n"&gt;types&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;schema&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;u'My list'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;br /&gt;                        &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;u'A list of items'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;br /&gt;                        &lt;span class="n"&gt;required&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;br /&gt;                        &lt;span class="n"&gt;value_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;schema&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TextLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;u'Item'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyUtility&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Persistent&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;implements&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IMyUtility&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We will write this code en Extensions/Install.py:&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;afterInstall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reinstall&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;Products.MyProduct.utility&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;IMyUtility&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MyUtility&lt;/span&gt;&lt;br /&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;Products.CMFCore.utils&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;getToolByName&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span class="n"&gt;portal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getToolByName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;'portal_url'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getPortalObject&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt; &lt;span class="n"&gt;sm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;portal&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getSiteManager&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;sm&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;queryUtility&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;IMyUtility&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;     &lt;span class="n"&gt;sm&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;registerUtility&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;MyUtility&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;br /&gt;                        &lt;span class="n"&gt;IMyUtility&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;That's it. That works fine if we install our product as an independent product. But there is a problem if we install it as a dependency of a policy product. In that case, Quickinstaller will remember that the utility was created during the installation of the policy product, so the persisted data will survive the reinstallation of the product, but not the reinstallation of the policy product.&lt;br /&gt;&lt;br /&gt;In that case, I don't know how to proceed. What I did was to leave the registration code commented in the product Install.py and copy it to the Install.py of the policy product. That sucks, because that registration shouldn't be done by the policy product, but I couldn't imagine another solution.&lt;br /&gt;&lt;br /&gt;Do you know one? Leave a comment! :)&lt;br /&gt;&lt;br /&gt;UPDATE 16/05/08:&lt;br /&gt;Warning! I don't know exactly why, but after working for a while on my product, I did an update to the whole buildout and I got a:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error Type: AttributeError&lt;/strong&gt;&lt;br /&gt;      &lt;strong&gt;Error Value: type object 'IMyUtility' has no attribute '__iro__'&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;that broke my Plone Site completely, I can't access anything even from the ZMI. There is not much information about this error on Google, and it is not clear if it is because of this method for registering the utility. Probably yes, so use it at your own risk, and always make backups before updating.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-5514028061431098674?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/5514028061431098674/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=5514028061431098674' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5514028061431098674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/5514028061431098674'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/04/how-to-register-local-utility-in-plone.html' title='How to register a local utility in Plone 3 and not lose its persistent data when the product is reinstalled'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-788211367465714469</id><published>2008-03-12T01:54:00.002-02:00</published><updated>2008-07-28T19:33:41.915-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Presentando DeFlog</title><content type='html'>Las tecnologías de la denominada &lt;a href="http://es.wikipedia.org/wiki/Web_2.0"&gt;Web 2.0&lt;/a&gt; trajeron al usuario la posibilidad de formar parte de la web, mediante sitios colaborativos, como wikis, o redes sociales como blogs y fotologs.&lt;br /&gt;En algunos casos, los grupos de usuarios de estos sitios, pasan de ser comunidades virtuales, a tribus urbanas.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/R9decYBw-QI/AAAAAAAABqA/9xaNmQAhpTU/s1600-h/deflog.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_jFNpgu2oQ7Y/R9decYBw-QI/AAAAAAAABqA/9xaNmQAhpTU/s320/deflog.gif" alt="" id="BLOGGER_PHOTO_ID_5176710138264877314" height="62" width="150" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Los &lt;span style="font-style: italic;"&gt;floggers&lt;/span&gt;, como se denomina a los usuarios de &lt;a href="http://es.wikipedia.org/wiki/Fotolog"&gt;fotologs&lt;/a&gt;, llevan a cabo reuniones frecuentes, y como toda tribu urbana, tienen sus códigos. Algunos se concentran en criticar su vestimenta o cortes de pelo. A mi mucho no me calienta, uno también fue adolescente...  pero el lenguaje que usan para comunicarse en la web es algo que me cuesta tolerar. Éste puede resultar críptico para quienes hemos pasado hace algún tiempo nuestra adolescencia y de dolorosa lectura para los que sentimos el equivalente a una patada en los huevos cuando vemos una falta de ortografía en un texto.&lt;br /&gt;&lt;br /&gt;En un intento por salvar a la juventud del flagelo del lenguaje fotolog y SMS, creé DeFlog (o Deflog, porque ya hice así el logo) . Un traductor Fotolog -&gt; Español.&lt;br /&gt;&lt;br /&gt;Bueno, basta de boludez. Nada más estaba al pedo y quería experimentar con algún framework para desarrollo web diferente al &lt;a href="http://es.wikipedia.org/wiki/Zope"&gt;Zope&lt;/a&gt;/&lt;a href="http://es.wikipedia.org/wiki/Plone"&gt;Plone&lt;/a&gt; que vengo usando en el trabajo. Un amigo me mostró algo de &lt;a href="http://es.wikipedia.org/wiki/Django_web_framework"&gt;Django&lt;/a&gt;. También estuve leyendo un poco de &lt;a href="http://pylonshq.com/"&gt;Pylons&lt;/a&gt;, y en el camino me crucé con &lt;a href="http://www.cherrypy.org/"&gt;CherryPy&lt;/a&gt;, que era más que suficiente para lo que quería hacer. Llegué a tener algo bastante completo, pero cuando empecé a tener problemas para tratar palabras con caracteres acentuados y demás (no era la primera vez que me traían dolores de cabeza), decidí dejar &lt;a href="http://es.wikipedia.org/wiki/Python"&gt;Python&lt;/a&gt; y hacer lo que hace la mayoría. Usar &lt;a href="http://es.wikipedia.org/wiki/Php"&gt;PHP&lt;/a&gt;.&lt;br /&gt;La traducción fue bastante directa y rápida, ya que el código era simple (expresiones regulares, que tienen casi la misma notación, o simples reemplazos de subcadenas por cadenas de algún arreglo)&lt;br /&gt;&lt;br /&gt;El traductor puede corregir con bastante éxito los siguientes features del lenguaje flogger&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Contaminación con abreviaturas típicas del &lt;a href="http://es.wikipedia.org/wiki/Servicio_de_mensajes_cortos"&gt;SMS&lt;/a&gt;. (xq, tkm, bss, dsp,...)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Alternación de mayúsculas y minúsuclas (AlGuNa LeTrA dE uNa CaNcIoN)&lt;/li&gt;&lt;li&gt;Repetición de letras (hoooolllaaaaaa!!!!)&lt;/li&gt;&lt;li&gt;Omisión de la letra u en la subpalabra 'qu' , o bien, reemplazo de la subpalabra por 'k'  (qiero, kiero)&lt;/li&gt;&lt;li&gt;Pero a veces la k reemplaza a 'ca' y otras veces, simplemente reemplaza a la letra c (kompré kafé komo loko y me agarró kgadera, ke kgada k me mandé) (este es uno de los puntos con más probabilidad de falla)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Faltas ortográficas intencionales como soi, voi, i en lugar de y, etc.&lt;/li&gt;&lt;li&gt;Porteñización (vistes, fuistes) (este viene de yapa porque no es particular del vocabulario flogger)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;El traductor no contempla los siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Vocabulario aniñado (?) (te kelo muto, pobde Lodemzo, etc)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Zezeozizmo (tiene la opción desactivada porque no es mucho más inteligente que reemplazar todas las 'z' por 's')&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Faltas ortográficas, salvo algunas muy comunes como llendo (¡Es yendo! ¡Hay gente que lo agrega al diccionario del celular porque piensa que no trae la palabra!)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Está desarrollado para dialecto flogger argentino. Su efectividad decaerá en fotologs de otros países.&lt;br /&gt;&lt;br /&gt;Pueden probarlo aquí: &lt;a href="http://www.santiagobruno.com.ar/php/desfotologuear.php"&gt;http://www.santiagobruno.com.ar/php/desfotologuear.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.santiagobruno.com.ar/javascript/desfotologuear.html?text=LocURaAAaaA%21%21%21%0D%0Ake+loko+estoooo+mIeRdA%21%21%21%0D%0A%0D%0AAaAaAAAaaAiiiii++firmeeennnn+leeemmmddoooo%21%21%21%0D%0A%0D%0Anuc+k+pasa+ak.+t+voi+a+ver+dsp.%0D%0Aqe+andes+d+mil%21%21%0D%0AbesOtte%0D%0A%0D%0Aesto+q+m+dijistes+ta+groxo+maallll+grax+xq+m+dijistessss+cdo+lo+vistessssss%0D%0A%0D%0Atoy+reeee+lokooo+blds%21%21%0D%0Aaahhrrreee%0D%0At+qiero%2C+we%2C+chauuuu%21%21%21%0D%0Abss.%0D%0Aazi+ez+ezto%2C+nos+vems%2C+stamos.+dspu%E9s+dcime.+4gu4n73+a77aqu3+jkajkajkaajkajk"&gt;Este es un ejemplo especialmente seleccionado para ver sus características&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Es muy básico, en muchos casos va a andar mal, pero esto fue un juego, lo posteo nada más porque a alguien le puede resultar chistoso o simpático. Me gustaría hacer que se traduzca una página, pero ni daaaaa!!! aahrrreeee!!&lt;br /&gt;&lt;br /&gt;Ah, y en conclusión, no aprendí nada de ninguno de los frameworks mencionados, porque fue un programa muy pelotudo, pero ¿qué querés? Me divierte hacer estas huevadas...&lt;br /&gt;&lt;br /&gt;Chau, blds!!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update 07/04/2008:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.santiagobruno.com.ar/javascript/desfotologuear.html"&gt;DeFlog portado a Javascript&lt;/a&gt;: Ahora el procesamiento se puede realizar del lado del cliente, de manera offline, y con el código facilmente accesible y modificable.&lt;/li&gt;&lt;li&gt;DeFlog como &lt;a href="http://www.msgpluslive.net/scripts/view/404-DeFlog/"&gt;script para Messenger Live! Plus&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Código liberado y &lt;a href="http://code.google.com/p/deflog/"&gt;disponible en google code&lt;/a&gt; para las tres versiones.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.santiagobruno.com.ar/programas.html#deflog"&gt;Link en mi sitio web&lt;/a&gt;. &lt;a href="http://www.santiagobruno.com.ar/programas.html#deflog"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;¿No será mucho?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update 31/05/2008:&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Claro que no es mucho. Aún hay más. Solucioné los problemas que tenía inicialmente con Python, y agregué esa versión. (ver en &lt;a href="http://code.google.com/p/deflog/"&gt;google code&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update 28/07/2008:&lt;/span&gt;&lt;br /&gt;Ahora estuve haciendo un parser re pedorro para traducir una página web. Anda bastante bien para los fotologs, pero el problema es obtener la página externa.&lt;br /&gt;La versión en javascript solo me anduvo en Konqueror, porque por cuestiones de seguridad los requests con javascript están limitados al mismo dominio de la página. Aparentemente a Konqueror no le importa, pero en los otros navegadores no me anda.&lt;br /&gt;Para la versión en php es necesario tener el servidor configurado con algunas excepciones, y no es el caso del proveedor donde tengo la página, así que tengo como resultado &lt;/span&gt;file_get_contents(): URL file-access is disabled in the server configuration&lt;br /&gt;Solo subí la versión en Python ya que esa solo se ejecuta localmente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-788211367465714469?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/788211367465714469/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=788211367465714469' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/788211367465714469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/788211367465714469'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/03/presentando-deflog.html' title='Presentando DeFlog'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_jFNpgu2oQ7Y/R9decYBw-QI/AAAAAAAABqA/9xaNmQAhpTU/s72-c/deflog.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-8685850934055121551</id><published>2008-03-08T05:22:00.000-02:00</published><updated>2008-03-09T16:38:10.377-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>MobiGM "ported" to Python</title><content type='html'>Reciently, a friend told  me about &lt;a href="http://os-fun.blogspot.com/2006/04/mobigm-first-edition.html"&gt;MobiGM&lt;/a&gt;, a simple Perl script that parses a rss feed from a gmail account, and sends notifications about new mails to an email account. Ideally, to the one corresponding to your cell phone.&lt;br /&gt;&lt;br /&gt;He was having troubles trying to run the script. The problem was simple: The link to the code was dead, and copying and pasting the fragments of code didn't work, because some html special characters were bothering. A few replacements made the script go.&lt;br /&gt;&lt;br /&gt;It worked fine sending mails through my ISP SMTP server, since it doesn't require authentication, but I couldn't send mails from my gmail account.&lt;br /&gt;I tried modifying the script, using the module &lt;span style="font-size:100%;"&gt;Net::SMTP::SSL, but I had no luck, so I decided to write it in Python.&lt;br /&gt;&lt;br /&gt;It works. It has the same functionality as MobiGM and can authenticate against a SMTP server with TLS. But it uses minidom to parse the rss feed, and access to its data in a very direct way, assuming that the feed has always the correct format.&lt;br /&gt;I recommend reading the original post of MobiGM from its author's blog, because it is a nice tutorial on how to build a small application to solve a problem, using various open source tools.&lt;br /&gt;The program itself is not very useful, since you can do the same thing with gmail's filters. But the author remarks the posibility of customizing it, to make it react dinamically to what appears in your mailbox.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Having said that, here is the code:&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/usr/bin/python&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;xml.dom.minidom&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="n"&gt;parse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;SMTP_SERVER&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;smtp.yourisp.com:port&amp;quot;&lt;/span&gt; &lt;span class="c"&gt;#port not needed on servers&lt;/span&gt;&lt;br /&gt;                                      &lt;span class="c"&gt;#that listen to on port 25&lt;/span&gt;&lt;br /&gt;                                      &lt;span class="c"&gt;#for gmail use 587,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;REQUIRES_AUTHENTICATION&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;REQUIRES_TLS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;SMTP_USERNAME&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;username&amp;#39;&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;SMTP_PASSWORD&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;password&amp;#39;&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;FROM_EMAIL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;email@isp.com&amp;#39;&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;TO_EMAIL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;cellphone@phonecompany.com&amp;#39;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sendMail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;smtplib&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;smtplib&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SMTP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SMTP_SERVER&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="c"&gt;#s.debuglevel = 5&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ehlo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;REQUIRES_TLS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;starttls&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ehlo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;REQUIRES_AUTHENTICATION&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;esmtp_features&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;auth&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;LOGIN PLAIN&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SMTP_USERNAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SMTP_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sendmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FROM_EMAIL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TO_EMAIL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;quit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;oldIDs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;newIDs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;OLDID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;ids.old&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;rw&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="k"&gt;except&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;OLDID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;newfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;ids.old&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;newfile&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;OLDID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;OLDID&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;readlines&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;oldIDs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="n"&gt;xmldoc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;atomfeed&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;IOError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="n"&gt;quit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Error opening file &amp;#39;atomfeed&amp;#39;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="k"&gt;except&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;   &lt;span class="n"&gt;quit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Problem parsing file &amp;#39;atomfeed&amp;#39;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;entries&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;xmldoc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;entry&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;entry&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;curID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;firstChild&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nodeValue&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;newIDs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;curID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;curID&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;oldIDs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;curTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;title&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;firstChild&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nodeValue&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;curContents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;summary&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;firstChild&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nodeValue&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;curAuthorEmail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;email&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;firstChild&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nodeValue&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;curAuthor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;entry&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;firstChild&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nodeValue&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;sendMail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Subject:&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;curTitle&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s"&gt;From:&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;curAuthorEmail&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#39; [&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;curAuthor&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;]&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;curContents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;OLDID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;ids.old&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;newid&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;newIDs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;OLDID&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;newid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;OLDID&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;As Perl's version, this script needs to be added to a shell script, where wget will be executed before it to receive the feed. And that script should be executed periodically by cron.&lt;br /&gt;If we saved this script as mail.py, the shell script would be something like this:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;#!/bin/sh&lt;br /&gt;wget -O atomfeed https://mail.google.com/gmail/feed/atom         --http-user=gmail.user@gmail.com --http-password=gmailPassword&lt;br /&gt;./mail.py&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;Read the original post on MobiGM author blog for more details.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-8685850934055121551?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/8685850934055121551/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=8685850934055121551' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/8685850934055121551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/8685850934055121551'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/03/mobigm-ported-to-python.html' title='MobiGM &quot;ported&quot; to Python'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4326990029691694464.post-8082925559716936613</id><published>2008-02-27T01:52:00.000-02:00</published><updated>2008-02-27T02:08:43.181-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pelotudeces'/><title type='text'>Primer post :-|</title><content type='html'>Bueno, tengo que escribir algo porque hace ya un tiempo que creé este blog y no quiero cerrarlo sin haber escrito nada antes.&lt;br /&gt;Si, esta onda van a tener todos los posts.&lt;br /&gt;Lo que pasa es que esto es casi por obligación. No podía no tener un blog.&lt;br /&gt;Ahora seguro que pasan de moda y desaparecen.&lt;br /&gt;Siempre pasa, llego tarde a todo.&lt;br /&gt;Arranqué con Lost terminando la 3er temporada.&lt;br /&gt;¿Dónde estuve todo ese tiempo? Ahora tuve que pasar tardes (y noches) enteras viendo capítulo tras capítulo para ponerme al día... No puede ser tan adictiva esa cosa.&lt;br /&gt;Bueno, así con todo... ¿Cuándo fue el boom de los blogs? ¿En el 2004, o antes? Yo seguro que todavía estaba con el icq en ese entonces...&lt;br /&gt;En fin, ya está, cumplí, este fue el primer post. Escribí para que lea ¿quien? ¿vos? ¿sos una persona o un bot que me está indexando en un buscador? Ahorrate el trabajo y pasate al siguiente blog... (Le digo al bot. Si sos una persona, dejá un comentario confirmando tu humanidad (espero que el OCR sea suficiente para eso :P))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4326990029691694464-8082925559716936613?l=cervezaconlupines.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cervezaconlupines.blogspot.com/feeds/8082925559716936613/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4326990029691694464&amp;postID=8082925559716936613' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/8082925559716936613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4326990029691694464/posts/default/8082925559716936613'/><link rel='alternate' type='text/html' href='http://cervezaconlupines.blogspot.com/2008/02/primer-post.html' title='Primer post :-|'/><author><name>Santiago</name><uri>http://www.blogger.com/profile/06151637295033355940</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
