<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>En borrador permanente</title>
	<atom:link href="http://www.juanjoconti.com.ar/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.juanjoconti.com.ar</link>
	<description>el blog de Juanjo Conti - abstracto, lúdico y digital</description>
	<lastBuildDate>Mon, 30 Aug 2010 02:11:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Fotos en el campo</title>
		<link>http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 02:11:17 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Fotos]]></category>
		<category><![CDATA[campo]]></category>
		<category><![CDATA[UPG]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2770</guid>
		<description><![CDATA[Hoy a la tarde fuimos con Padre al campo a buscar verdura para la semana. Aproveché para sacar algunas fotos y probar los &#8220;efectos&#8221; que vienen con la cámara del celular desde que le actualicé el sistema operativo. Se dieron &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hoy a la tarde fuimos con Padre al campo a buscar verdura para la semana. Aproveché para sacar algunas fotos y probar los &#8220;efectos&#8221; que vienen con la cámara del celular desde que le actualicé el sistema operativo.</p>
<p><a href="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-05-01_912.jpg"><img class="aligncenter size-large wp-image-2794" title="2010-08-29_17-05-01_912" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-05-01_912-1024x575.jpg" alt="" width="640" height="359" /></a></p>

<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-02-11_28/' title='2010-08-29_17-02-11_28'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-02-11_28-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-02-11_28" title="2010-08-29_17-02-11_28" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-04-32_950/' title='2010-08-29_17-04-32_950'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-04-32_950-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-04-32_950" title="2010-08-29_17-04-32_950" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-04-45_817/' title='2010-08-29_17-04-45_817'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-04-45_817-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-04-45_817" title="2010-08-29_17-04-45_817" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-05-01_912/' title='2010-08-29_17-05-01_912'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-05-01_912-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-05-01_912" title="2010-08-29_17-05-01_912" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-06-01_607/' title='2010-08-29_17-06-01_607'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-06-01_607-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-06-01_607" title="2010-08-29_17-06-01_607" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-06-40_896/' title='2010-08-29_17-06-40_896'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-06-40_896-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-06-40_896" title="2010-08-29_17-06-40_896" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-07-05_130/' title='2010-08-29_17-07-05_130'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-07-05_130-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-07-05_130" title="2010-08-29_17-07-05_130" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-07-24_552/' title='2010-08-29_17-07-24_552'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-07-24_552-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-07-24_552" title="2010-08-29_17-07-24_552" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-07-48_60/' title='2010-08-29_17-07-48_60'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-07-48_60-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-07-48_60" title="2010-08-29_17-07-48_60" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-08-19_564/' title='2010-08-29_17-08-19_564'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-08-19_564-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-08-19_564" title="2010-08-29_17-08-19_564" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-10-40_238/' title='2010-08-29_17-10-40_238'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-10-40_238-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-10-40_238" title="2010-08-29_17-10-40_238" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-11-54_476/' title='2010-08-29_17-11-54_476'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-11-54_476-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-11-54_476" title="2010-08-29_17-11-54_476" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-14-12_1/' title='2010-08-29_17-14-12_1'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-14-12_1-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-14-12_1" title="2010-08-29_17-14-12_1" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-16-55_283/' title='2010-08-29_17-16-55_283'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-16-55_283-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-16-55_283" title="2010-08-29_17-16-55_283" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-18-33_791/' title='2010-08-29_17-18-33_791'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-18-33_791-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-18-33_791" title="2010-08-29_17-18-33_791" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-18-46_863/' title='2010-08-29_17-18-46_863'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-18-46_863-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-18-46_863" title="2010-08-29_17-18-46_863" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-19-36_465/' title='2010-08-29_17-19-36_465'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-19-36_465-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-19-36_465" title="2010-08-29_17-19-36_465" /></a>
<a href='http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/2010-08-29_17-19-44_949/' title='2010-08-29_17-19-44_949'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/2010-08-29_17-19-44_949-150x150.jpg" class="attachment-thumbnail" alt="2010-08-29_17-19-44_949" title="2010-08-29_17-19-44_949" /></a>

<p>Se dieron cuenta que poniendo la cámara en modo sepia, fotos normales se convierte en casi artísticas? Nice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/30/fotos-en-el-campo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dejar de revisionar un archivo sin borrarlo en svn</title>
		<link>http://www.juanjoconti.com.ar/2010/08/29/dejar-de-revisionar-un-archivo-sin-borrarlo-en-svn/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/29/dejar-de-revisionar-un-archivo-sin-borrarlo-en-svn/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 15:20:24 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Siempre se aprende algo]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2764</guid>
		<description><![CDATA[A veces me pasa que en un proyecto tengo un archivo X que empezó siendo un archivo común, pero en un momento dado, cada desarrollador necesita taner su propia copia y no revisionarlo más. Cómo dejar de revisionarlo sin borrarlo? &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/29/dejar-de-revisionar-un-archivo-sin-borrarlo-en-svn/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A veces me pasa que en un proyecto tengo un archivo X que empezó siendo un archivo común, pero en un momento dado, cada desarrollador necesita taner su propia copia y no revisionarlo más.</p>
<p>Cómo dejar de revisionarlo sin borrarlo?</p>
<p>La primer vez que me topé con el problema hice:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> X Y
<span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> X
<span style="color: #c20cb9; font-weight: bold;">svn</span> ci <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;chau X&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> Y X</pre></div></div>

<p>Ugly.</p>
<p>La forma correcta de hacerlo es:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">--keep-local</span> X</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/29/dejar-de-revisionar-un-archivo-sin-borrarlo-en-svn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo unir videos en GNU/Linux</title>
		<link>http://www.juanjoconti.com.ar/2010/08/29/como-unir-videos-en-gnulinux/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/29/como-unir-videos-en-gnulinux/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 14:45:59 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Siempre se aprende algo]]></category>
		<category><![CDATA[mp4 mpeg ffmpeg]]></category>
		<category><![CDATA[videos]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2757</guid>
		<description><![CDATA[Ayer en Carlos Pellegrini fue el Día del Pueblo. Una de las actividades que hubo fue una carrera de autos con obstáculos. Aproveché para filmar un poco y probar mi nuevo celular, por lo que terminé con varios archivos mp4. &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/29/como-unir-videos-en-gnulinux/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ayer en <a href="http://es.wikipedia.org/wiki/Carlos_Pellegrini_%28Santa_Fe%29" target="_blank">Carlos Pellegrini</a> fue el <a href="http://es.wikipedia.org/wiki/Agust%C3%ADn_de_Hipona" target="_blank">Día del Pueblo</a>. Una de las actividades que hubo fue una <strong>carrera de autos con obstáculos</strong>. Aproveché para filmar un poco y probar <a href="http://es.wikipedia.org/wiki/Motorola_Milestone" target="_blank">mi nuevo celular</a>, por lo que terminé con varios archivos <strong>mp4</strong>. Para subirlos a Internet quería unirlos: ¿cómo hacerlo de forma fácil? Si tenés varios archivos de texto y querés unirlos, o expresándome de forma más correcta, <strong>contactenarlos</strong>, usás el comando <strong>cat</strong>. ¿Se puede hacer lo mismo con videos? Suena algo loco cuando se escucha por primera vez, pero hay algunos formatos que SI lo soportan, como <a href="http://es.wikipedia.org/wiki/MPEG-1" target="_blank">mpeg 1</a> y <a href="http://es.wikipedia.org/wiki/MPEG-2" target="_blank">2</a>.</p>
<p>Usando <strong>ffmpeg</strong> podemos convertir los archivos mp4 a mpeg. Parados en el directorio donde estén los videos:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #000000; font-weight: bold;">*</span>.mp4<span style="color: #000000; font-weight: bold;">`</span>; <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #c20cb9; font-weight: bold;">ffmpeg</span> <span style="color: #660033;">-i</span> <span style="color: #007800;">$i</span> <span style="color: #660033;">-sameq</span> <span style="color: #007800;">$i</span>.mpeg; <span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>Ahora simplemente los <strong>concatenamos y redirigimos la salida de cat</strong> a un nuevo archivo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">*</span>.mpeg <span style="color: #000000; font-weight: bold;">&amp;</span>gt; video.mpeg</pre></div></div>

<p>Notemos que el orden <em>lexicográfico</em> de los videos coincide con el orden en que fueron tomados; por eso puedo usar el * y obtener un resultado ordenado en el tiempo.</p>
<p>Listo, <a href="http://www.youtube.com/watch?v=8Txgi8mFy6w" target="_blank">subí el resultado a YouTube</a>.</p>
<p>Me hubiese gustado una transición más suave entre video y video, pero investigarlo y hacerlo excedía la ecuación costo beneficio. Se escuchan ideas!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/29/como-unir-videos-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Un servidor web con pocas líneas de Python</title>
		<link>http://www.juanjoconti.com.ar/2010/08/24/un-servidor-web-con-pocas-lineas-de-python/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/24/un-servidor-web-con-pocas-lineas-de-python/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 01:00:39 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[stdlib]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2747</guid>
		<description><![CDATA[Hoy un amigo necesitaba un servidor web para engañar a un programa. Cada vez que el programa iniciaba, se conectaba con un servidor web para verificar si había actualizaciones disponibles. El nombre del host a dónde se hacía la petición &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/24/un-servidor-web-con-pocas-lineas-de-python/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hoy un amigo necesitaba un servidor web para engañar a un programa. Cada vez que el programa iniciaba, se conectaba con un servidor web para verificar si había actualizaciones disponibles.</p>
<p>El nombre del host a dónde se hacía la petición era leído de un archivo de configuración, por lo que lo podíamos cambiar. El resto solo era levantar un servidor web que responda con la información apropiada.</p>
<p>En la librería estándar de <strong>Python</strong> tenemos todos los elementos necesarios para realizar la tarea. Luego de probar un poco, el resultado final fue algo como esto:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">PORT = <span style="color: #ff4500;">8090</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">BaseHTTPServer</span> <span style="color: #ff7700;font-weight:bold;">import</span> BaseHTTPRequestHandler
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">SocketServer</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">cgi</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> MyHandler<span style="color: black;">&#40;</span>BaseHTTPRequestHandler<span style="color: black;">&#41;</span>:
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> do_GET<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		<span style="color: #008000;">self</span>.<span style="color: black;">send_response</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">200</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">end_headers</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        	<span style="color: #008000;">self</span>.<span style="color: black;">wfile</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'1.9.1'</span><span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> do_POST<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		form = <span style="color: #dc143c;">cgi</span>.<span style="color: black;">FieldStorage</span><span style="color: black;">&#40;</span>
			fp=<span style="color: #008000;">self</span>.<span style="color: black;">rfile</span>, 
			headers=<span style="color: #008000;">self</span>.<span style="color: black;">headers</span>,
			environ=<span style="color: black;">&#123;</span><span style="color: #483d8b;">'REQUEST_METHOD'</span>:<span style="color: #483d8b;">'POST'</span>,
			<span style="color: #483d8b;">'CONTENT_TYPE'</span>:<span style="color: #008000;">self</span>.<span style="color: black;">headers</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'Content-Type'</span><span style="color: black;">&#93;</span>,
			<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">print</span> form
		<span style="color: #008000;">self</span>.<span style="color: black;">send_response</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">200</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">end_headers</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">wfile</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'1.9.1'</span><span style="color: black;">&#41;</span>
&nbsp;
httpd = <span style="color: #dc143c;">SocketServer</span>.<span style="color: black;">TCPServer</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&quot;</span>, PORT<span style="color: black;">&#41;</span>, MyHandler<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;serving at port&quot;</span>, PORT
httpd.<span style="color: black;">serve_forever</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Levanta en <strong>localhost</strong> y responde la cadena &#8217;1.9.1&#8242; al ser consultado tanto por <strong>GET</strong> como por <strong>POST</strong> y en el caso de POST, también imprime los valores recibidos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/24/un-servidor-web-con-pocas-lineas-de-python/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter updates desde Twisted</title>
		<link>http://www.juanjoconti.com.ar/2010/08/24/twitter-updates-desde-twisted/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/24/twitter-updates-desde-twisted/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 15:48:47 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Twisted]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[twisted]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2724</guid>
		<description><![CDATA[Tenés un servidor escrito en Twisted? Tenés eventos críticos o importantes que mandás por mail o a celulares? Qué tal publicarlos en Twitter? Usando Twitty Twister podemos implementar este feature de forma muy sencilla. Dentro de tu servidor Twisted: from &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/24/twitter-updates-desde-twisted/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tenés un servidor escrito en <a href="http://twistedmatrix.com" target="_blank">Twisted</a>? Tenés eventos críticos o importantes que mandás por mail o a celulares? Qué tal publicarlos en <a href="http://www.twitter.com" target="_blank">Twitter</a>?</p>
<p>Usando <a href="http://github.com/dustin/twitty-twister" target="_blank">Twitty Twister</a> podemos implementar este <em>feature</em> de forma muy sencilla.</p>
<p>Dentro de tu servidor Twisted:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> twittytwister <span style="color: #ff7700;font-weight:bold;">import</span> twitter
twitclient = twitter.<span style="color: black;">Twitter</span><span style="color: black;">&#40;</span>username, password<span style="color: black;">&#41;</span></pre></div></div>

<p>y donde se produzca un evento:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">twitclient.<span style="color: black;">update</span><span style="color: black;">&#40;</span>mensaje<span style="color: black;">&#41;</span></pre></div></div>

<p>Cual es la diferencia con hacerlo a mano o usar una de las tantas librerías que vienen para Twitter/Python? Postear una actualización en Twitter o cualquier otra petición a un servidor externo tiene una naturaleza bloqueante y en un framework de concurrencia colaborativa, como es Twisted, no podemos darnos ese lujo. Las llamadas a update y otros métodos de este objeto retornan un objeto <a href="http://twistedmatrix.com/documents/current/core/howto/defer.html" target="_blank">Deferred</a> al cual se le pueden añadir callbacks o errbacks.</p>
<p>Muy cheto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/24/twitter-updates-desde-twisted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>En borrador permanente</title>
		<link>http://www.juanjoconti.com.ar/2010/08/21/en-borrador-permanente/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/21/en-borrador-permanente/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 16:57:00 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Blogósfera]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2503</guid>
		<description><![CDATA[Le acabo de cambiar el nombre a mi blog. Pasó de &#8220;Vientos de Libertad&#8221; a &#8220;En borrador permanente&#8221;. El nombre original hacía alusión al Software Libre; pensaba escribir principalmente sobre eso. No pasó. Este nuevo nombre hace referencia a un &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/21/en-borrador-permanente/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Le acabo de cambiar el nombre a mi blog. Pasó de &#8220;Vientos de Libertad&#8221; a &#8220;En borrador permanente&#8221;. El nombre original hacía alusión al Software Libre; pensaba escribir principalmente sobre eso. No pasó.</p>
<p>Este nuevo nombre hace referencia a un sentimiento que me invade cada vez que le doy al botón &#8220;publicar&#8221;: esto es basura. Me cuesta mucho estar conforme con lo que publico; es por eso que siempre está &#8220;En borrador permanente&#8221;. <em>Be my guest</em>.</p>
<p style="text-align: right;"><a href="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/460px-Vuilnis.jpg"><img class="aligncenter size-full wp-image-2600" title="460px-Vuilnis" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/460px-Vuilnis.jpg" alt="" width="460" height="599" /></a>Imagen de <a href="http://commons.wikimedia.org/wiki/File:Vuilnis.JPG" target="_blank">Wikemedia Commons</a>.</p>
<p style="text-align: left;"><strong>Si esperara a que estén listos, muchos de los posts de este blog nunca hubiesen sido publicados.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/21/en-borrador-permanente/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La última lección (libro)</title>
		<link>http://www.juanjoconti.com.ar/2010/08/20/la-ultima-leccion-libro/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/20/la-ultima-leccion-libro/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 00:00:51 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Cosas que leo]]></category>
		<category><![CDATA[Historias]]></category>
		<category><![CDATA[La última lección]]></category>
		<category><![CDATA[libros]]></category>
		<category><![CDATA[Randy Pausch]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2452</guid>
		<description><![CDATA[Esta semana terminé de leer La última lección. Si bien suelo leer libros técnicos o ficciones, este libro no es ninguno de ambos. No es ficción, pero cuenta una historia; y está escrito por un científico, pero no es un &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/20/la-ultima-leccion-libro/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-2474" title="La-ultima-leccion-cover" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/07/La-ultima-leccion-cover.png" alt="" width="244" height="341" />Esta semana terminé de leer La última lección. Si bien suelo leer libros técnicos o ficciones, este libro no es ninguno de ambos. No es ficción, pero cuenta una historia; y está escrito por un científico, pero no es un libro técnico.</p>
<p>El libro te sacude desde el arranque:</p>
<blockquote><p>Tengo un problema de ingeniería.</p>
<p>A pesar de que, en su mayor parte, estoy en excelente condición física, tengo diez tumores en el hígado y me restan unos cuantos meses de vida.</p></blockquote>
<p>El autor, <a href="http://es.wikipedia.org/wiki/Randy_Pausch" target="_blank">Randy Pausch</a>, profesor de Canegie Mellon, fue un científico de la computación especializado en interacción hombre-máquina, uno de los creadores del lenguaje de programación <a href="http://www.alice.org/" target="_blank">Alice</a>, a quien en el año 2006 le diagnosticaron cáncer de páncreas. A partir de ahí empezó a <em>ordernar sus cosas</em> para irse tranquilo (tenía una mujer y 3 hijos). En eso lo invitan a dar una clase o charla llamada La última lección en su universidad; en esta les plantean a los profesores <strong>qué enseñarían si estuvieran muriendo y podrían dar una última lección.</strong> Para Randy era de verdad.</p>
<p>Su última lección se llamó algo así como Cumple los sueños de tu infancia, y causó bastante conmoción. Puede <a href="http://www.cmu.edu/uls/journeys/randy-pausch/index.html" target="_blank">verse on line</a>. Uno de los asistentes fue el periodista Jeffrey Zaslow junto con quien escribió el libro basado en La última lección. La forma de escribirlo fue bastante peculiar, Randy tenía que hacer ejercicio todas las mañanas (como un paliativo para su enfermedad) y mientras ejercitaba, se comunicaba con un teléfono celular manos libres con Jeffrey contándole las historias que se convirtieron en los capítulos del libro.</p>
<p>El libro está muy bueno y vale la pena leerlo; lo recomiendo. Cuando lo compré, no sabía que el autor era informático, por lo que cuando lo leía encontré algunos giros y menciones que me divirtieron de formas que no-informáticos no entendería; como <em>gancho</em> para mis amigos <strong>nerds</strong>: a lo largo de los capítulos se menciona a Wikipedia, Google y <strong>Python</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/20/la-ultima-leccion-libro/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>El hosting para Django más barato</title>
		<link>http://www.juanjoconti.com.ar/2010/08/20/el-hosting-para-django-mas-barato/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/20/el-hosting-para-django-mas-barato/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 15:40:23 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[AlwaysData.com]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2690</guid>
		<description><![CDATA[Hace un tiempo recomendé Webfaction como el mejor hosting para Django (debe aún serlo). Pero algunas veces no queremos el mejor, con el más barato nos alcanza Tal vez son un adolecente aprendiendo a programar, o simplemente rata. Para un &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/20/el-hosting-para-django-mas-barato/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo <a href="http://www.juanjoconti.com.ar/2008/11/24/el-mejor-hosting-para-django/" target="_blank">recomendé Webfaction</a> como el mejor hosting para Django (debe aún serlo). Pero algunas veces no queremos el mejor, con el más barato nos alcanza <img src='http://www.juanjoconti.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Tal vez son un adolecente aprendiendo a programar, o simplemente rata. Para un programador PHP es bastante fácil encontrar un hosting en Internet que le de un servicio gratuito, subir sus cosas y mostrarlas al mundo. Cuando programás en Django&#8230; es más difícil.</p>
<p>Hasta hoy; les paso el dato: <a href="http://www.alwaysdata.com/" target="_blank">AlwaysData.com</a></p>
<p><em><strong>Hosting Django gratuito. </strong></em></p>
<p>Tengo 2 cuentas funcionando muy bien. Y no se asusten por que está en francés (eso me detuvo la primer vez que lo vi); luego de sacar la cuenta tenés acceso al panel de administración que está en muchos idiomas; incluyendo español. Tenés para elegir distintas versiones de Python y Djando, MySQL o PosgreSQL, acceso SHELL, FTP y WebDAV. Qué más querés?</p>
<p>También podés tener PHP o Ruby on Rails.</p>
<p>Espero les sirva.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/20/el-hosting-para-django-mas-barato/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Borges hacker</title>
		<link>http://www.juanjoconti.com.ar/2010/08/16/borges-hacker/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/16/borges-hacker/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 01:01:19 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Borges]]></category>
		<category><![CDATA[citas]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[programación]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2681</guid>
		<description><![CDATA[Dijo nuestro escritor por excelencia: &#8220;Uno llega a ser grande por lo que lee y no por lo que escribe.&#8221; BORGES, Jorge Luis Escritor argentino. Años más tarde, desde los más oscuros rincones de la web 2.0 y las redes &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/16/borges-hacker/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dijo nuestro escritor por excelencia:<br />
<a href="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/Jorgeluisborges2.jpg"><img class="alignright size-medium wp-image-2691" title="Jorgeluisborges2" src="http://www.juanjoconti.com.ar/wp-content/uploads/2010/08/Jorgeluisborges2-192x300.jpg" alt="" width="192" height="300" /></a></p>
<blockquote><p>&#8220;Uno llega a ser grande por lo que lee y no por lo que escribe.&#8221;<br />
<a href="http://es.wikipedia.org/wiki/Jorge_Luis_Borges" target="_blank">BORGES, Jorge Luis</a><br />
Escritor argentino.</p></blockquote>
<p>Años más tarde, desde los más oscuros rincones de la web 2.0 y las redes sociales, el espíritu del poeta infunde a la juventud. Distinto oficio, misma verdad:</p>
<blockquote><p>Los mejores programadores no son los que más código escriben, sino los que más código leen.</p>
<p><a href="http://twitter.com/alejolp/status/21351513522" target="_blank">@alejolp</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/16/borges-hacker/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lo que todo programdor debería saber sobre&#8230;</title>
		<link>http://www.juanjoconti.com.ar/2010/08/15/lo-que-todo-programdor-deberia-saber-sobre/</link>
		<comments>http://www.juanjoconti.com.ar/2010/08/15/lo-que-todo-programdor-deberia-saber-sobre/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 23:46:54 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Cosas que leo]]></category>
		<category><![CDATA[decimal]]></category>
		<category><![CDATA[float]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[URLs]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2672</guid>
		<description><![CDATA[Hace un par de días hablábamos con una compañera sobre NO USAR el tipo de datos float para manejar dinero: &#62;&#62;&#62; 0.1 + 0.3 0.40000000000000002 A no alarmarse, lo anterior sucede en todos los lenguajes de programación; aunque algunos lo &#8230; <a href="http://www.juanjoconti.com.ar/2010/08/15/lo-que-todo-programdor-deberia-saber-sobre/">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace un par de días hablábamos con una compañera sobre NO USAR el tipo de datos float para manejar dinero:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff4500;">0.1</span> + <span style="color: #ff4500;">0.3</span>
<span style="color: #ff4500;">0.40000000000000002</span></pre></div></div>

<p>A no alarmarse, lo anterior sucede en todos los lenguajes de programación; aunque algunos lo ocultan más que otros. La charla terminó con la recomendación de revisar un sitio web que explica el tema de forma muy consisa:</p>
<p><a href="http://floating-point-gui.de/" target="_blank"><strong>What Every Programmer Should Know About Floating-Point Arithmetic</strong></a></p>
<p>Además de explicar <a href="http://floating-point-gui.de/formats/fp/" target="_blank">cómo funciona el tipo de datos float</a> y <a href="http://floating-point-gui.de/formats/exact/" target="_blank">cómo solucionar el problema</a>, da machetes para varios lenguajes de programación (C#, Java, JavaScript, PHP y SQL).</p>
<p>Me sorprendió que no haya una para Python, por lo que seguí el mandato del autor del sitio web, <a href="http://github.com/brazzy/floating-point-gui.de" target="_blank">fork me on github</a>, y envié mis cambios. <strong>update:</strong> <a href="http://floating-point-gui.de/languages/python/" target="_blank">ya está disponible</a> en el sitio web.</p>
<p>Siguiendo con el título del posts, me puse a buscar otros artículos con el formato: <em>Lo que todo programador debería saber sobre&#8230;</em> y encontré estos:</p>
<ul>
<li><a href="http://www.joelonsoftware.com/articles/Unicode.html" target="_blank">The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)</a></li>
<li><a href="http://lwn.net/Articles/250967/" target="_blank">What every programmer should know about memory</a></li>
<li><a href="http://www.skorks.com/2010/05/what-every-developer-should-know-about-urls/" target="_blank">What Every Developer Should Know About URLs</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/08/15/lo-que-todo-programdor-deberia-saber-sobre/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
