<?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 &#187; Aprendiendo Python</title>
	<atom:link href="http://www.juanjoconti.com.ar/categoria/aprendiendo-python/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>Sun, 05 Feb 2012 04:27:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Lighting talks en PyConAr 2011 &#8211; día 2</title>
		<link>http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lighting-talks-en-pyconar-2011-dia-2</link>
		<comments>http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 21:45:36 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Junín]]></category>
		<category><![CDATA[Lighting Talks]]></category>
		<category><![CDATA[PyConAr]]></category>
		<category><![CDATA[PyConAr2011]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=3423</guid>
		<description><![CDATA[Ayer publiqué el resumen de las lighting talks del primer día. Estas son las del segundo. 24 de septiembre de 2011 Mariano Reingart – gui2py http://code.google.com/p/gui2py/ Una idea: usar web2py para hacer aplicaciones de escritorio usando wx.html.HtmlWindow. Gabriel – Tornado &#8230; <a href="http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ayer publiqué el <a href="http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/" target="_blank">resumen de las lighting talks del primer día</a>. Estas son las del segundo.</p>
<p>24 de septiembre de 2011</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --><strong>Mariano Reingart – gui2py</strong></p>
<p><a href="http://code.google.com/p/gui2py/" target="_blank"> http://code.google.com/p/gui2py/</a></p>
<p>Una idea: usar web2py para hacer aplicaciones de escritorio usando wx.html.HtmlWindow.</p>
<p><strong>Gabriel – Tornado y Hadoop, integración en el mundo real – Mercadolibre</strong></p>
<p>Tornado: servidor web Python asincrónico<br />
Redis: sort of memcache<br />
Apache Hadoop</p>
<p><strong>Gonzalo – SugarLabs Argentina</strong></p>
<p><a href="http://ar.sugarlabs.org/">http://ar.sugarlabs.org</a></p>
<p>Sugar es un entorno de actividades que corren en las OLPC. 95% Python. Mañana y pasado se juntan a programar y a enseñar en Junín.</p>
<p><strong>Alan Etkin – math2py</strong></p>
<p><a href="http://sourceforge.net/projects/math2py/" target="_blank">http://sourceforge.net/projects/math2py/</a></p>
<p>Aplicación web para matemáticas sobre web2py. Entre las herramientas incluye: resolver sistemas lineales, funciones matemáticas, gráficos con resultados.</p>
<p><strong>TeMiro?</strong></p>
<p><a href="http://temiro.tv/">http://temiro.tv</a></p>
<p>Hagamos un Cuevana que no necesite ni flash ni extensiones. Usan videoJS, que permite que los navegadores sin soporte para HTML 5 puedan ver videos igualmente. <a href="mailto:info@devecoop">info@devecoop</a></p>
<p><strong>Nico César – El futuro de Python</strong></p>
<p>Nos contó sobre la biblioteca mindread. (un poco de humor, si no vinieron a verlo, se lo perdieron).</p>
<p><strong>Sorteo</strong></p>
<p>Se sorteó un un Cuchillo de PyConAr entre las personas que viajaron más de 1000 kms para participar. Adolfo de Santiago de Chile, Manuel de España, uno de Rusia, Ezequiel de Tucumán, Guillermo de La Rioja, Pablo de Montevideo (casi 1000), y otros mas&#8230;</p>
<p>random.choice(lista_con_los_nombre)</p>
<p><strong>Damián Avila – Tradeo de pares con Python</strong></p>
<p>Python para resolver problemas de finanzas. Modelos matemáticos con base probabilística. 2 series financieras y cointegración.</p>
<p><strong>Diego Mascialino</strong><strong> – </strong><strong>CDPedia</strong></p>
<p><a href="http://python.org.ar/pyar/Proyectos/CDPedia">http://python.org.ar/pyar/Proyectos/CDPedia</a></p>
<p>Un proyecto que busca que Wikipedia pueda ser visto en lugardes sin acceso a Internet. Este año se resolvió el problema de tener dumps actualizados de la enciclopedia. Salió la versión 0.7 que es distribuida por Educ.ar.</p>
<p><strong>Guillermo Narvaja – ISO 9001 menos burocrática</strong></p>
<p>Implementaron ISO 9001 en la empresa Fierro. En lugar de documentos impresos usaron documentos de texto, rst, con revisión de versiones y otras herramientas de Software Libre.</p>
<p><strong>Juan Pablo y Pedro – Onapsis Bizploit</strong></p>
<p><a href="http://www.onapsis.com/">http://www.onapsis.com/</a></p>
<p>Una startup orientada a la seguridad en aplicaciones críticas de negocios. Fork de sapyto, primer framework para hacer penetration tests de SAP. Está desarrollado como prueba de concepto para demostrar la existencia de riesgos.</p>
<p>La arquitectura consiste en un core con plugins: discoveres, exploiters.</p>
<p><strong>Ricardo Kirkner – ConfigGlue</strong></p>
<p><a href="https://launchpad.net/configglue">https://launchpad.net/configglue</a></p>
<p>Es una librería para mantener la configuración de un programa. Código Python, por lo que permite validar tipos, heredar, standares xdg. Integra ConfigParser y OptionParser.</p>
<p><strong>Manuel Quiñones &#8211;  Fork de MyPaint</strong></p>
<p>Le agrega a MyPaint la posibilidad de editar animación.</p>
<p><strong>Fotos por <a href="http://www.ceportela.com.ar/" target="_blank">César Portela</a>:</strong></p>

<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020121/' title='P1020121'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020121-150x150.jpg" class="attachment-thumbnail" alt="P1020121" title="P1020121" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020124/' title='P1020124'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020124-150x150.jpg" class="attachment-thumbnail" alt="P1020124" title="P1020124" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020125/' title='P1020125'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020125-150x150.jpg" class="attachment-thumbnail" alt="P1020125" title="P1020125" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020127/' title='P1020127'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020127-150x150.jpg" class="attachment-thumbnail" alt="P1020127" title="P1020127" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020128/' title='P1020128'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020128-150x150.jpg" class="attachment-thumbnail" alt="P1020128" title="P1020128" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020135/' title='P1020135'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020135-150x150.jpg" class="attachment-thumbnail" alt="P1020135" title="P1020135" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020139/' title='P1020139'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020139-150x150.jpg" class="attachment-thumbnail" alt="P1020139" title="P1020139" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020141/' title='P1020141'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020141-150x150.jpg" class="attachment-thumbnail" alt="P1020141" title="P1020141" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020142/' title='P1020142'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020142-150x150.jpg" class="attachment-thumbnail" alt="P1020142" title="P1020142" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020143/' title='P1020143'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020143-150x150.jpg" class="attachment-thumbnail" alt="P1020143" title="P1020143" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020144/' title='P1020144'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020144-150x150.jpg" class="attachment-thumbnail" alt="P1020144" title="P1020144" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020146/' title='P1020146'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020146-150x150.jpg" class="attachment-thumbnail" alt="P1020146" title="P1020146" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020148/' title='P1020148'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020148-150x150.jpg" class="attachment-thumbnail" alt="P1020148" title="P1020148" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020153/' title='P1020153'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020153-150x150.jpg" class="attachment-thumbnail" alt="P1020153" title="P1020153" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020155/' title='P1020155'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020155-150x150.jpg" class="attachment-thumbnail" alt="P1020155" title="P1020155" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020157/' title='P1020157'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020157-150x150.jpg" class="attachment-thumbnail" alt="P1020157" title="P1020157" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020158/' title='P1020158'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020158-150x150.jpg" class="attachment-thumbnail" alt="P1020158" title="P1020158" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020159/' title='P1020159'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020159-150x150.jpg" class="attachment-thumbnail" alt="P1020159" title="P1020159" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020164/' title='P1020164'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020164-150x150.jpg" class="attachment-thumbnail" alt="P1020164" title="P1020164" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020168/' title='P1020168'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020168-150x150.jpg" class="attachment-thumbnail" alt="P1020168" title="P1020168" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/p1020169/' title='P1020169'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020169-150x150.jpg" class="attachment-thumbnail" alt="P1020169" title="P1020169" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2011/09/24/lighting-talks-en-pyconar-2011-dia-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lighting talks en PyConAr 2011 &#8211; día 1</title>
		<link>http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lighting-talks-en-pyconar-2011</link>
		<comments>http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 21:51:45 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Junín]]></category>
		<category><![CDATA[Lighting Talks]]></category>
		<category><![CDATA[PyConAr]]></category>
		<category><![CDATA[PyConAr2011]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=3384</guid>
		<description><![CDATA[Las lighting talks, ya clásica en las conferencias de Python, son charlas de 5 minutos. Los disertantes se anotan en un papal fuera del aula unos minutos antes del comienzo. Lo bueno de la modalidad es lo siguiente: en 5 &#8230; <a href="http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Las lighting talks, ya clásica en las conferencias de Python, son charlas de 5 minutos. Los disertantes se anotan en un papal fuera del aula unos minutos antes del comienzo. Lo bueno de la modalidad es lo siguiente: en 5 minutos podés enterarte de algo muy interesante, ¿y que pasa si que el que habla es un plomo? No importa, en menos de 5 minutos se va.</p>
<p>Estas son notas rápidas tomadas mientras los disertantes hablaban.</p>
<p>23 de septiembre de 2011</p>
<p><strong>Natalia Bidart – Ubuntu One en el desktop</strong></p>
<p><a href="https://launchpad.net/ubuntuone" target="_blank">https://launchpad.net/ubuntuone</a></p>
<p>Ubuntu one tiene UI en GTK (la distribuida hoy en los Cds de Ubuntu) y en QT (reemplazará a la versión actual). En el código fuente se puede ver como tener en el mismo repositorio el soporte para ambos toolkits.</p>
<p><strong>Diego Sarmentero – Ninja IDE</strong></p>
<p><a href="http://ninja-ide.org/" target="_blank">http://ninja-ide.org/</a></p>
<p>A partir del 22 de octubre estará abierto el primer concurso de plug-ins para Ninja IDE. Primer premio 250 u$s.</p>
<p><strong>Facundo Batista – Cómo generar un ejecutable con sistema Python</strong></p>
<p>Tenemos un paquete con un módulo con una función. 3 líneas de código sirven como prueba de concepto, es lo mismo si tuviésemos un sistema muy grande. Se necesita un __main__.py que ejecute el sistema. Hacemos un zip con todo.</p>
<p>( echo &#8216;#!/usr/bin/env python&#8217; ; cat foo.zip) &gt; saludo<br />
chmod +x saludo</p>
<p>Y listo! Podemos ejecutarlo con:</p>
<p>./foo</p>
<p>Idea original de John Lenton.</p>
<p><strong>Joaquin Sorelliano – Cooperativismo</strong></p>
<p>Hay varias cooperativas que producen Software Libre en el país: Elvex, Devecoop, Unixono, Gcoop y otras.</p>
<p><strong>Juan Bautista Cabral – Revista PET</strong></p>
<p><a href="http://revista.python.org.ar/" target="_blank">http://revista.python.org.ar/</a></p>
<p>La revista pretende documentar los eventos La revista tiene ISSN, lo cual la hace <em>citable</em>.</p>
<p><strong>Margarita Manterola – Por qué no usar OpenERP</strong></p>
<p>Es un ERP o un framework para desarrollar sistemas de gestión. Se presenta como una tentación, multi todo, muchos módulos, usado por muchas empresas, hecho en Python y es Software Libre.</p>
<p>La verdad: es chico, usa un ORM horrible, no se pueden hacer búsquedas por JOIN, los objetos no se actualizan y hay que releerlos de la BD, la herencia está mal implementada. Muchos dolores de cabeza. El cliente GTK tiene que estar todo el tiempo conectado al servidor para redibujarse. La interfaz de usuario está mal diseñada. El equipo de desarrollo elimina características de una versión a otra, con documentación desactualizada, “comunidad” poco amigable (no acepta parches) y el código es lo peor.</p>
<p>Tryton, fork de OpenERP. No segura de que sea una alternativa. Empezar uno desde cero? Si, pero no cada uno el propio, juntémosnos.</p>
<p><strong>Manuel Quiñones &#8211; Animación Quebracho<br />
</strong></p>
<p><a href="http://animacionquebracho.org.ar/" target="_blank">http://animacionquebracho.org.ar/</a></p>
<p>Un dibujo animado que se está desarrollando con financiamiento de la provincia de Santa Fe. Cuenta la historia de la provincia, será CC y está hecho con Software Libre.</p>
<p><strong>Evgeny Fadeev (from Russia) – Python @ StartupChile</strong></p>
<p><a href="http://www.startupchile.org" target="_blank">http://www.startupchile.org</a></p>
<p>Programa del gobierno chileno. Le da a cada equipo 40000 u$s. Le da Visa a extranjeros. Les presenta empresarios chilenos y otros beneficios. Les dan oficinas gratis en Santiago.</p>
<p>Primero hubo 110 proyectos. Luego 154 nuevos proyectos de 33 países. Muchos de los proyectos están hechos en Python. Hay empresas contratando.</p>
<p>El proyecto de Evgeny es AskBot, un sitio de Q&amp;A.</p>
<p>Apply. La próxima ronda empieza en octubre.</p>
<p><strong>Martín Gaitán – PyQuery</strong></p>
<p><a href="http://pypi.python.org/pypi/pyquery" target="_blank">http://pypi.python.org/pypi/pyquery</a></p>
<p>jquery-like library. Más simple y potente que BeautifulSoup para scrappear la web.</p>
<p><strong>Martín y Juan Catalano – Streema</strong></p>
<p><a href="http://streema.com/" target="_blank">http://streema.com/</a></p>
<p>Es una startup, un sitio web, una red social para escuchar radios de todo el mundo. Hecho con Django y Eventlet. La empresa tiene 4 años y hace poquito se hizo rentable.</p>
<p><strong>Kragen Javier Sitager</strong></p>
<p>Presentación de la charla del día siguiente: Utilizando PyGame para instalaciones artísticas interactivas. No se pudo hacer por problemas técnicos.</p>
<p><strong>Ale Cura – PyCamp</strong></p>
<p><a href="http://python.org.ar/pyar/PyCamp/" target="_blank">http://python.org.ar/pyar/PyCamp/</a></p>
<p>Un “campamento&#8221; en dónde los Pythonistas argentinos se juntan a trabajar en el medio de la naturaleza.</p>
<p><strong>Fotos por <a href="http://www.ceportela.com.ar/" target="_blank">César Portela</a>:</strong></p>

<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020041/' title='P1020041'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020041-150x150.jpg" class="attachment-thumbnail" alt="P1020041" title="P1020041" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020044/' title='P1020044'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020044-150x150.jpg" class="attachment-thumbnail" alt="P1020044" title="P1020044" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020045/' title='P1020045'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020045-150x150.jpg" class="attachment-thumbnail" alt="P1020045" title="P1020045" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020062/' title='P1020062'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020062-150x150.jpg" class="attachment-thumbnail" alt="P1020062" title="P1020062" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020063/' title='P1020063'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020063-150x150.jpg" class="attachment-thumbnail" alt="P1020063" title="P1020063" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020064/' title='P1020064'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020064-150x150.jpg" class="attachment-thumbnail" alt="P1020064" title="P1020064" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020065/' title='P1020065'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020065-150x150.jpg" class="attachment-thumbnail" alt="P1020065" title="P1020065" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020066/' title='P1020066'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020066-150x150.jpg" class="attachment-thumbnail" alt="P1020066" title="P1020066" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020067/' title='P1020067'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020067-150x150.jpg" class="attachment-thumbnail" alt="P1020067" title="P1020067" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020069/' title='P1020069'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020069-150x150.jpg" class="attachment-thumbnail" alt="P1020069" title="P1020069" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020070/' title='P1020070'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020070-150x150.jpg" class="attachment-thumbnail" alt="P1020070" title="P1020070" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020071/' title='P1020071'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020071-150x150.jpg" class="attachment-thumbnail" alt="P1020071" title="P1020071" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020072/' title='P1020072'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020072-150x150.jpg" class="attachment-thumbnail" alt="P1020072" title="P1020072" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020077/' title='P1020077'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020077-150x150.jpg" class="attachment-thumbnail" alt="P1020077" title="P1020077" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020078/' title='P1020078'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020078-150x150.jpg" class="attachment-thumbnail" alt="P1020078" title="P1020078" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020080/' title='P1020080'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020080-150x150.jpg" class="attachment-thumbnail" alt="P1020080" title="P1020080" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020081/' title='P1020081'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020081-150x150.jpg" class="attachment-thumbnail" alt="P1020081" title="P1020081" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020082/' title='P1020082'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020082-150x150.jpg" class="attachment-thumbnail" alt="P1020082" title="P1020082" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020083/' title='P1020083'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020083-150x150.jpg" class="attachment-thumbnail" alt="P1020083" title="P1020083" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020085/' title='P1020085'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020085-150x150.jpg" class="attachment-thumbnail" alt="P1020085" title="P1020085" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020086/' title='P1020086'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020086-150x150.jpg" class="attachment-thumbnail" alt="P1020086" title="P1020086" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020087/' title='P1020087'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020087-150x150.jpg" class="attachment-thumbnail" alt="P1020087" title="P1020087" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020093/' title='P1020093'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020093-150x150.jpg" class="attachment-thumbnail" alt="P1020093" title="P1020093" /></a>
<a href='http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/p1020094/' title='P1020094'><img width="150" height="150" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/P1020094-150x150.jpg" class="attachment-thumbnail" alt="P1020094" title="P1020094" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2011/09/23/lighting-talks-en-pyconar-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Razones para ir a PyConAr 2011</title>
		<link>http://www.juanjoconti.com.ar/2011/09/18/razones-para-ir-a-pyconar-2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=razones-para-ir-a-pyconar-2011</link>
		<comments>http://www.juanjoconti.com.ar/2011/09/18/razones-para-ir-a-pyconar-2011/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 12:09:45 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[PyConAr]]></category>
		<category><![CDATA[PyConAr2011]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=3363</guid>
		<description><![CDATA[PyConAr es la conferencia de Python en habla hispana más grande del mundo y la edición 2011 se va a llevar a cabo en Junín, Buenos Aires, el próximo viernes y sábado. Vas? Para convencerse a ir, además de mirar &#8230; <a href="http://www.juanjoconti.com.ar/2011/09/18/razones-para-ir-a-pyconar-2011/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ar.pycon.org/" target="_blank">PyConAr</a> es la conferencia de Python en habla hispana más grande del mundo y la edición 2011 se va a llevar a cabo en Junín, Buenos Aires, el próximo viernes y sábado. Vas?</p>
<p><a href="http://ar.pycon.org/2011/"><img class="aligncenter size-full wp-image-3373" title="pyconar2011" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/09/pyconar2011.png" alt="" width="760" height="134" /></a>Para convencerse a ir, además de mirar en el sitio oficial el <a href="http://ar.pycon.org/2011/activity/accepted" target="_blank">listado de charlas</a> (que incluye 5 <em>speakers</em> internacionales) y el <a href="http://ar.pycon.org/2011/stats/maps" target="_blank">mapa donde se ve de todos los lugares que vamos</a>, no dejes de pasar por el <a href="http://pyconar.blogspot.com/" target="_blank">blog oficial de la organización</a>: en especial los posts en los que cada verso del <a href="http://www.juanjoconti.com.ar/2006/06/04/el-zen-de-python/" target="_blank">Zen de Python</a>.</p>
<p>En este detalle se refleja todo lo que han trabajado para organizar este evento. No dudo que va a estar muy bueno.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2011/09/18/razones-para-ir-a-pyconar-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charla: Entendiendo Decoradores en Python [actualizada]</title>
		<link>http://www.juanjoconti.com.ar/2011/05/06/charla-entendiendo-decoradores-en-python-actualizada/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=charla-entendiendo-decoradores-en-python-actualizada</link>
		<comments>http://www.juanjoconti.com.ar/2011/05/06/charla-entendiendo-decoradores-en-python-actualizada/#comments</comments>
		<pubDate>Fri, 06 May 2011 22:59:08 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[charlas]]></category>
		<category><![CDATA[decoradores]]></category>
		<category><![CDATA[pyday]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=3193</guid>
		<description><![CDATA[La primer vez que di esta charla fue en el PyDay de Rafala en 2010. De las charlas que tengo en la gatera, es la que más me gusta de momento. Está bien armada y es muy útil para quienes &#8230; <a href="http://www.juanjoconti.com.ar/2011/05/06/charla-entendiendo-decoradores-en-python-actualizada/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>La primer vez que di esta charla fue en el <a href="http://www.juanjoconti.com.ar/2010/05/09/charla-entendiendo-decoradores-en-python/" target="_blank">PyDay de Rafala en 2010</a>. De las charlas que tengo en la gatera, es la que más me gusta de momento. Está bien armada y es muy útil para quienes empiezan con Python. Por eso cuando me invitaron a dar una charla en el <a href="http://www.pyday.com.ar/cordoba2011/" target="_blank">PyDay de Córdoba</a>, no dude en presentarla.</p>
<p>Dejo on line la <a href="http://www.juanjoconti.com.ar/files/charlas/entendiendo_decoradores_python_jjconti-2.pdf" target="_blank">versión actualizada</a> (y <a href="http://www.juanjoconti.com.ar/files/charlas/entendiendo_decoradores_python_jjconti.txt" target="_blank">sus fuentes</a>) ya que los estuve buscando antes de dar la charla y me costó encontrarlos en mi computadora. Subiéndolas a Internet aumento su disponibilidad.</p>
<p>Esta charla también fue dada en PyCon Argentina 2010.</p>
<p style="text-align: center;"><img class="aligncenter" title="Entendiendo decoradores en Python - Córdoba 2011" src="http://juanjoconti.com.ar/wp-content/uploads/2011/05/juanjoEnPyDayCba2011.jpg" alt="" width="640" height="480" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2011/05/06/charla-entendiendo-decoradores-en-python-actualizada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyDay en Córdoba</title>
		<link>http://www.juanjoconti.com.ar/2011/04/11/pyday-en-cordoba/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pyday-en-cordoba</link>
		<comments>http://www.juanjoconti.com.ar/2011/04/11/pyday-en-cordoba/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 23:26:25 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[PyAr]]></category>
		<category><![CDATA[pyday]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=3179</guid>
		<description><![CDATA[El próximo sábado 30 de abril, en la ciudad de Córdoba, se desarrollará un nuevo PyDay del Grupo de Usuarios de Python de Argentina. Un día entero de charlas sobre el lenguaje de programación Python.]]></description>
			<content:encoded><![CDATA[<p>El próximo sábado 30 de abril, en la ciudad de Córdoba, se desarrollará <a href="http://www.pyday.com.ar/cordoba2011/" target="_blank">un nuevo PyDay</a> del <a href="http://www.python.org.ar/" target="_blank">Grupo de Usuarios de Python de Argentina</a>. Un <a href="http://www.pyday.com.ar/cordoba2011/conference/schedule" target="_blank">día entero de charlas</a> sobre el lenguaje de programación Python.</p>
<p><a href="http://www.juanjoconti.com.ar/wp-content/uploads/2011/04/AfichePyDayCordoba.png"><img class="aligncenter size-full wp-image-3187" title="30 de abril, PyDay en Córdoba" src="http://www.juanjoconti.com.ar/wp-content/uploads/2011/04/AfichePyDayCordoba.png" alt="30 de abril, PyDay en Córdoba" width="352" height="498" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2011/04/11/pyday-en-cordoba/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python: guardar imagenes en una base de datos Sqlite</title>
		<link>http://www.juanjoconti.com.ar/2011/03/15/python-guardar-imagenes-en-una-base-de-datos-sqlite/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=python-guardar-imagenes-en-una-base-de-datos-sqlite</link>
		<comments>http://www.juanjoconti.com.ar/2011/03/15/python-guardar-imagenes-en-una-base-de-datos-sqlite/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 11:49:36 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[stdlib]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=3141</guid>
		<description><![CDATA[Hace un par de días Walter de Nicaragua me consultaba: Estoy trabajando en una aplicacion para niños en las xo´s , estoy usando sqlite3 para guardar la informacion, y tambien necesito guardar fotos dentro de la base de datos. Como &#8230; <a href="http://www.juanjoconti.com.ar/2011/03/15/python-guardar-imagenes-en-una-base-de-datos-sqlite/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace un par de días Walter de Nicaragua me consultaba:</p>
<blockquote><p>Estoy trabajando en una aplicacion para niños en las xo´s , estoy usando sqlite3 para guardar la informacion, y tambien necesito guardar fotos dentro de la base de datos.</p>
<p>Como la fotos seran tomadas con la camara de las propias XO&#8217;s, asumo no son tan grande en resolucion y tamaño.</p>
<p>Tambien, estuve revizando la lista de correo, pero no hay nada concreto, y  a decir verdad recomiendan que guarde una referencia de la imagen en la base de datos, y luego haga una consulta, para recuperarla, pero tambien he visto que tiene sus pro y sus contras.</p></blockquote>
<p>Esta es la respuesta. Primero necesitamos una tabla con un campo de tipo BLOB donde guardar la imagen:</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: #ff7700;font-weight:bold;">import</span> sqlite3
<span style="color: #66cc66;">&gt;&gt;&gt;</span> conn = sqlite3.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/tmp/example'</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> c = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">''</span><span style="color: #483d8b;">'create table imagenes (imagen BLOB);'</span><span style="color: #483d8b;">''</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Abro una imagen que tengo en disco, mismo directorio que donde ejecute<br />
el intérprete de Python, la cargo en memoria y la guardo en la base.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> imgdata = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'tomyNarnia.jpg'</span>, <span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>imgdata<span style="color: black;">&#41;</span>
<span style="color: #ff4500;">1613949</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> buff = sqlite3.<span style="color: black;">Binary</span><span style="color: black;">&#40;</span>imgdata<span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'insert into imagenes values(?);'</span>, <span style="color: black;">&#40;</span>buff,<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> conn.<span style="color: black;">commit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> conn.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Luego podemos cerrar el intérprete. Con sqlite3 importado, recuperamos<br />
la imagen.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> conn = sqlite3.<span style="color: black;">connect</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/tmp/example'</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> c = conn.<span style="color: black;">cursor</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> a = c.<span style="color: black;">execute</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'select imagen from imagenes'</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> img = a.<span style="color: black;">fetchone</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>img<span style="color: black;">&#41;</span>
<span style="color: #ff4500;">1</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> img
<span style="color: black;">&#40;</span><span style="color: #66cc66;">&lt;</span>read-write buffer ptr 0x1c75d60, size <span style="color: #ff4500;">1613949</span> at 0x1c75d20<span style="color: #66cc66;">&gt;</span>,<span style="color: black;">&#41;</span></pre></div></div>

<p>El resultado es una tupla, pero como seleccionamos un solo campo de la<br />
tabla, hay un solo elemento.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> img = img<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>img<span style="color: black;">&#41;</span>
<span style="color: #ff4500;">1613949</span></pre></div></div>

<p>Finalmente lo escribimos en una imagen.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> f = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'newimage.jpg'</span>, <span style="color: #483d8b;">'w'</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> f.<span style="color: black;">write</span><span style="color: black;">&#40;</span>img<span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> f.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2011/03/15/python-guardar-imagenes-en-una-base-de-datos-sqlite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unicode en el código fuente</title>
		<link>http://www.juanjoconti.com.ar/2011/02/08/unicode-en-el-codigo-fuente/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=unicode-en-el-codigo-fuente</link>
		<comments>http://www.juanjoconti.com.ar/2011/02/08/unicode-en-el-codigo-fuente/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 13:46:45 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Python3]]></category>
		<category><![CDATA[unicode]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=3122</guid>
		<description><![CDATA[Hoy Pedro preguntó en Twitter &#8220;Que lenguajes de programación permiten a día de hoy soporte full unicode para codear?&#8221;. Algunos contestaron que Java o C#. No los conozco, pero creo que no. Creo que respondieron que el lenguaje puede trabajar &#8230; <a href="http://www.juanjoconti.com.ar/2011/02/08/unicode-en-el-codigo-fuente/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hoy <a href="http://twitter.com/pedroprez/status/34967078767169536" target="_blank">Pedro preguntó en Twitter</a> &#8220;Que lenguajes de programación permiten a día de hoy soporte full unicode para codear?&#8221;. Algunos contestaron que Java o C#. No los conozco, <span style="text-decoration: line-through;">pero creo que no</span>. Creo que respondieron que el lenguaje puede trabajar con strings unicode, lo cual es bastante común hoy en día. Mi respuesta fue: Python 3. Con Python 3 podemos tener caracteres unicode en el código fuente, en el nombre de las variables por ejemplo:</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;">1</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>á<span style="color: black;">&#41;</span>
<span style="color: #ff4500;">1</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> 大家好 = <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">10</span><span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">for</span> ä <span style="color: #ff7700;font-weight:bold;">in</span> 大家好:
...     <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>ä<span style="color: black;">&#41;</span>
...
<span style="color: #ff4500;">0</span>
<span style="color: #ff4500;">1</span>
<span style="color: #ff4500;">2</span>
<span style="color: #ff4500;">3</span>
<span style="color: #ff4500;">4</span>
<span style="color: #ff4500;">5</span>
<span style="color: #ff4500;">6</span>
<span style="color: #ff4500;">7</span>
<span style="color: #ff4500;">8</span>
<span style="color: #ff4500;">9</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> año = <span style="color: #ff4500;">2027</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> año += <span style="color: #ff4500;">1</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>año<span style="color: black;">&#41;</span>
<span style="color: #ff4500;">2028</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2011/02/08/unicode-en-el-codigo-fuente/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Videos de las charlas en Junín</title>
		<link>http://www.juanjoconti.com.ar/2010/12/01/videos-de-las-charlas-en-junin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=videos-de-las-charlas-en-junin</link>
		<comments>http://www.juanjoconti.com.ar/2010/12/01/videos-de-las-charlas-en-junin/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 23:07:49 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Prolog]]></category>
		<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Twisted]]></category>
		<category><![CDATA[twisted]]></category>
		<category><![CDATA[videos]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2972</guid>
		<description><![CDATA[Los amigos del LugJU han publicado los videos de todas las charlas realizadas en su último evento de Software Libre. Se pasaron! Este es el video de mi charla Desarrollando aplicaciones de red con Twisted: Y también están el resto &#8230; <a href="http://www.juanjoconti.com.ar/2010/12/01/videos-de-las-charlas-en-junin/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Los amigos del LugJU han publicado los videos de todas las charlas realizadas en su último evento de Software Libre. Se pasaron!</p>
<p>Este es el video de mi charla <a href="http://www.juanjoconti.com.ar/2010/11/06/charla-desarrollando-aplicaciones-de-red-con-twisted/" target="_blank">Desarrollando aplicaciones de red con Twisted</a>:</p>
<p><center><br />
<embed src="http://blip.tv/play/AYKQ%2BksC" type="application/x-shockwave-flash" width="480" height="414" allowscriptaccess="always" allowfullscreen="true"></embed><br />
</center><br />
Y también están <a href="http://unnoba.blip.tv/posts?view=archive&amp;nsfw=dc" target="_blank">el resto de las charlas</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/12/01/videos-de-las-charlas-en-junin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video de la charla Entendiendo decoradores en Python</title>
		<link>http://www.juanjoconti.com.ar/2010/11/22/video-de-la-charla-entendiendo-decoradores-en-python/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=video-de-la-charla-entendiendo-decoradores-en-python</link>
		<comments>http://www.juanjoconti.com.ar/2010/11/22/video-de-la-charla-entendiendo-decoradores-en-python/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 05:59:30 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[decoradores]]></category>
		<category><![CDATA[pyday]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2935</guid>
		<description><![CDATA[Orfi se tomó el trabajo de editar una filmación de mi charla en el PyDay de Rafaela con mis slides para armar este video. Muchas gracias! entendiendo decoradores from Orfx Sch on Vimeo. Al final, durante las preguntas, escribo algo &#8230; <a href="http://www.juanjoconti.com.ar/2010/11/22/video-de-la-charla-entendiendo-decoradores-en-python/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/Orfx" target="_blank">Orfi</a> se tomó el trabajo de editar una filmación de mi charla en el <a href="http://www.juanjoconti.com.ar/2010/05/09/charla-entendiendo-decoradores-en-python/" target="_blank">PyDay de Rafaela</a> con mis slides para armar este video. Muchas gracias!</p>
<p><center><br />
<iframe src="http://player.vimeo.com/video/16976108" width="400" height="300" frameborder="0"></iframe>
<p><a href="http://vimeo.com/16976108">entendiendo decoradores</a> from <a href="http://vimeo.com/user5262473">Orfx Sch</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p></center><br />
Al final, durante las preguntas, escribo algo de código Python en la terminal. Lo siguiente es una reproducción:</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: #ff7700;font-weight:bold;">def</span> f<span style="color: black;">&#40;</span>a, b<span style="color: black;">&#41;</span>:
...     <span style="color: #ff7700;font-weight:bold;">print</span> a, b
...
<span style="color: #66cc66;">&gt;&gt;&gt;</span> f<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, <span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
<span style="color: #ff4500;">1</span> <span style="color: #ff4500;">2</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">def</span> f<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>:
...     <span style="color: #ff7700;font-weight:bold;">print</span> a
...     <span style="color: #ff7700;font-weight:bold;">print</span> kw
...
<span style="color: #66cc66;">&gt;&gt;&gt;</span> f<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>,<span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> f<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, parametro=<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>,<span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span><span style="color: #483d8b;">'parametro'</span>: <span style="color: #ff4500;">2</span><span style="color: black;">&#125;</span></pre></div></div>


<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: #ff7700;font-weight:bold;">def</span> f<span style="color: black;">&#40;</span>p1, <span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>:
...     <span style="color: #ff7700;font-weight:bold;">print</span> kw<span style="color: black;">&#91;</span><span style="color: #483d8b;">'param'</span><span style="color: black;">&#93;</span>
...
<span style="color: #66cc66;">&gt;&gt;&gt;</span> f<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
Traceback <span style="color: black;">&#40;</span>most recent call last<span style="color: black;">&#41;</span>:
  File <span style="color: #483d8b;">&quot;&quot;</span>, line <span style="color: #ff4500;">1</span>, <span style="color: #ff7700;font-weight:bold;">in</span>
<span style="color: #008000;">TypeError</span>: f<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> takes at least <span style="color: #ff4500;">1</span> argument <span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span> given<span style="color: black;">&#41;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> f<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, <span style="color: #ff4500;">2</span>, <span style="color: #ff4500;">3</span>, param=<span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
<span style="color: #ff4500;">0</span></pre></div></div>


<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: #ff7700;font-weight:bold;">def</span> deco<span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span>:
...     <span style="color: #ff7700;font-weight:bold;">def</span> _deco<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>:
...             <span style="color: #ff7700;font-weight:bold;">if</span> kw.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'p'</span><span style="color: black;">&#41;</span>:
...                     <span style="color: #ff7700;font-weight:bold;">return</span> f<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>
...             <span style="color: #ff7700;font-weight:bold;">else</span>:
...                     <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;No ejecuto.&quot;</span>
...     <span style="color: #ff7700;font-weight:bold;">return</span> _deco
...
<span style="color: #66cc66;">&gt;&gt;&gt;</span> @deco
... <span style="color: #ff7700;font-weight:bold;">def</span> saludo<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>:
...     <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;hola&quot;</span>
...
<span style="color: #66cc66;">&gt;&gt;&gt;</span> saludo<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
No ejecuto.
<span style="color: #66cc66;">&gt;&gt;&gt;</span> saludo<span style="color: black;">&#40;</span>p=<span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
No ejecuto.
<span style="color: #66cc66;">&gt;&gt;&gt;</span> saludo<span style="color: black;">&#40;</span>p=<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
hola</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/11/22/video-de-la-charla-entendiendo-decoradores-en-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Decorando decoradores</title>
		<link>http://www.juanjoconti.com.ar/2010/11/12/decorando-decoradores/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=decorando-decoradores</link>
		<comments>http://www.juanjoconti.com.ar/2010/11/12/decorando-decoradores/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 22:47:38 +0000</pubDate>
		<dc:creator>Juanjo</dc:creator>
				<category><![CDATA[Aprendiendo Python]]></category>
		<category><![CDATA[decoradores]]></category>
		<category><![CDATA[taint mode]]></category>

		<guid isPermaLink="false">http://www.juanjoconti.com.ar/?p=2883</guid>
		<description><![CDATA[Una de las preguntas que aveces me hacen luego de hablar sobre Taint Mode es: una vez que la aplicación pasa de desarrollo a producción, ¿hay alguna forma de deshabilitar los decoradores? La biblioteca usa decoradores para marcar entradas no &#8230; <a href="http://www.juanjoconti.com.ar/2010/11/12/decorando-decoradores/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Una de las preguntas que aveces me hacen luego de hablar sobre <a href="http://www.juanjoconti.com.ar/taint/" target="_blank">Taint Mode</a> es: una vez que la aplicación pasa de desarrollo a producción, <strong>¿hay alguna forma de deshabilitar los decoradores?</strong></p>
<p>La biblioteca usa decoradores para marcar entradas no confiables, sumideros sensibles y funciones limpiadoras con la idea de encontrar posibles vulnerabilidades en tiempo de desarrollo. Si en producción no los requerimos más, esos decoradores producen overhead.</p>
<p>Entonces&#8230; qué se puede hacer? <strong>Editar el código comentando los decoradores no escala</strong>[0]. Una alternativa es utilizar un nuevo decorador: llamemoslo @apply_decorator y vamos a utilizarlo para controlar mediante alguna condición (por ejemplo una variable en el archivo de configuración) si se debe usar o no el decorador.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">COND = <span style="color: #008000;">True</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> apply_decorator<span style="color: black;">&#40;</span>d<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> COND:
        <span style="color: #ff7700;font-weight:bold;">return</span> d
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #ff7700;font-weight:bold;">lambda</span> f: f</pre></div></div>

<p>Si la condición es verdadera, se retorna el decorador original, sino una función <em>fake</em> (implementada utilizando <code>lambda</code>) que recibe una función y retorna la misma función: un decorador que no hace nada.</p>
<p>Un ejemplo de su uso en el REPL de Python:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #66cc66;">&gt;&gt;&gt;</span> @apply_decorator
... <span style="color: #ff7700;font-weight:bold;">def</span> mydeco<span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span>:
...     <span style="color: #ff7700;font-weight:bold;">def</span> inner<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>:
...             <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;decorado&quot;</span>
...             <span style="color: #ff7700;font-weight:bold;">return</span> f<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>
...     <span style="color: #ff7700;font-weight:bold;">return</span> inner
... 
<span style="color: #66cc66;">&gt;&gt;&gt;</span> mydeco
<span style="color: #66cc66;">&lt;</span>function mydeco at 0xb7753aac<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> COND = <span style="color: #008000;">False</span>
<span style="color: #66cc66;">&gt;&gt;&gt;</span> @apply_decorator
... <span style="color: #ff7700;font-weight:bold;">def</span> mydeco<span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span>:
...     <span style="color: #ff7700;font-weight:bold;">def</span> inner<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>:
...             <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;decorado&quot;</span>
...             <span style="color: #ff7700;font-weight:bold;">return</span> f<span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>a, <span style="color: #66cc66;">**</span>kw<span style="color: black;">&#41;</span>
...     <span style="color: #ff7700;font-weight:bold;">return</span> inner
... 
<span style="color: #66cc66;">&gt;&gt;&gt;</span> mydeco
<span style="color: #66cc66;">&lt;</span>function <span style="color: #66cc66;">&lt;</span>lambda<span style="color: #66cc66;">&gt;</span> at 0xb7753dbc<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p>Podemos aplicarlo directamente a la definición de nuestros decoradores</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">@apply_decorator
<span style="color: #ff7700;font-weight:bold;">def</span> mi_decorador<span style="color: black;">&#40;</span>f<span style="color: black;">&#41;</span>:
    ...</pre></div></div>

<p>o al principio de nuestro programa.</p>

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

<p>[0] nessita trademark.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.juanjoconti.com.ar/2010/11/12/decorando-decoradores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

