<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5309403273623549307</id><updated>2013-09-16T10:43:57.456-03:00</updated><category term='linux'/><category term='modbus'/><category term='cooling'/><category term='xml'/><category term='router'/><category term='diy'/><category term='cafelug'/><category term='javascript'/><category term='programacion'/><category term='bariloche'/><category term='micros'/><category term='tryton'/><category term='dell'/><category term='blogger'/><category term='proyectos'/><category term='joac'/><category term='python'/><category term='guitarra'/><category term='creatividad'/><category term='windows'/><category term='gcoop'/><category term='escritos'/><category term='conferencias'/><category term='arte electronico'/><category term='OPC'/><category term='gmail'/><category term='laptop'/><category term='buenos aires'/><category term='pyconar2009'/><title type='text'>.:::Joaclandia:::.</title><subtitle type='html'>Peleando con el Samborondrolo</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/-/gcoop'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/search/label/gcoop'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Joac</name><uri>http://www.blogger.com/profile/02027757346242312656</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5309403273623549307.post-7860028040453419332</id><published>2013-06-05T14:23:00.001-03:00</published><updated>2013-06-05T14:23:22.379-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcoop'/><category scheme='http://www.blogger.com/atom/ns#' term='tryton'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programacion'/><title type='text'>Zafá del xml con Tryton Builder!</title><content type='html'>Hay cosas que no me gustan, y hay cosas que detesto. En esa escala de valores, en el primer lugar está PHP y en el segundo los XMLs. Como &lt;a href="http://www.joaclandia.com.ar/2013/06/monkey-patcheando-element-tree-para.html" target="_blank"&gt;conté en el post anterior&lt;/a&gt;, estoy desarrollando algunos&amp;nbsp;módulos&amp;nbsp;para&amp;nbsp;&lt;a href="http://www.tryton.org/" target="_blank"&gt;Tryton&lt;/a&gt;, que define sus vistas, y elementos de&amp;nbsp;interacción&amp;nbsp;usando ese lenguaje de markup.&lt;br /&gt;&lt;br /&gt;Hay varios&amp;nbsp;artículos&amp;nbsp;que hablan que uno tiene que&lt;a href="http://blogoscoped.com/archive/2005-08-24-n14.html" target="_blank"&gt; ser un programador vago&lt;/a&gt;, yo estoy totalmente de acuerdo con que hay que ser un programador que automatiza al&amp;nbsp;máximo&amp;nbsp;el trabajo que no le gusta hacer, para poder dedicar el tiempo a problemas mas complicados o atractivos, o a mirar por la ventana.&lt;br /&gt;&lt;br /&gt;En mi intento por zafar de escribir varios cientos de &amp;nbsp;'&amp;lt;',' /', y '&amp;gt;' a mano nació &lt;a href="https://github.com/joac/tryton_builder" target="_blank"&gt;Tryton Builder &lt;/a&gt;(Que tiene logo y todo!)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://raw.github.com/joac/tryton_builder/master/data/logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://raw.github.com/joac/tryton_builder/master/data/logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Por el momento, para generar un módulo, hay que escribir un pequeño archivo de&amp;nbsp;código&amp;nbsp;(Si, es código python, porque me gusta programar, no parametrizar, yamls, csv, y ese tipo de cosas) de este estilo:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;script src="https://gist.github.com/joac/5715573.js"&gt;&lt;/script&gt;  En el ejemplo, estoy realizando todos los pasos para generar el modulo de ejemplo del &lt;a href="http://code.google.com/p/tryton/wiki/HelloWorld" target="_blank"&gt;wiki de tryton&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Solo para comparar la diferencia de caracteres escritos versus generados:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;script src="https://gist.github.com/joac/5715603.js"&gt;&lt;/script&gt; &lt;div class="separator" style="clear: both; text-align: left;"&gt;El proximo paso, es armar una interfaz de consola como la de los scaffolders de Ruby On Rails&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="https://raw.github.com/joac/tryton_builder/master/data/logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="https://raw.github.com/joac/tryton_builder/master/data/logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/"&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/7860028040453419332/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5309403273623549307&amp;postID=7860028040453419332' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/7860028040453419332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/7860028040453419332'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/2013/06/zafa-del-xml-con-tryton-builder.html' title='Zafá del xml con Tryton Builder!'/><author><name>Joaquín Sorianello</name><uri>https://plus.google.com/113288886837539699792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-ogt-kME7EYc/AAAAAAAAAAI/AAAAAAAAABQ/kOlaCvsLPAI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5309403273623549307.post-9164636317193787622</id><published>2013-06-04T14:04:00.000-03:00</published><updated>2013-06-04T14:04:06.557-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcoop'/><category scheme='http://www.blogger.com/atom/ns#' term='tryton'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programacion'/><title type='text'>Monkey Patcheando Element tree para soportar cdata</title><content type='html'>Hace un tiempo que estoy trabajando con Tryton, el ERP libre, escrito en python, y como me gustan los scaffolders de Rails,&amp;nbsp;decidí&amp;nbsp;escribir uno para armar los esqueletos de los&amp;nbsp;módulos.  Tryton, no se bien por que motivo, utiliza mucho xml, para definir vistas, y fixtures de datos. Como me gusta programar en python, me empezé a escribir una especie de DSL para definirlos de una manera mas amigable:&lt;br /&gt;&lt;a href="https://github.com/joac/tryton_builder" target="_blank"&gt;https://github.com/joac/tryton_builder&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Python permite trabajar con xml con un&amp;nbsp;montón&amp;nbsp;de bibliotecas distintas, pero las mas amigable de usar, para mi es ElementTree&lt;br /&gt;&lt;br /&gt;Cuando empece a escribir el codigo, y hacer pruebas, me&amp;nbsp;encontré&amp;nbsp;con varios problemas, el primero, ElementTree no tiene "Pritty Print"&lt;br /&gt;para que el xml generado sea mas&amp;nbsp;cómodo&amp;nbsp;de leer, por suerte&amp;nbsp;encontré&amp;nbsp;esta receta: &lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/joac/5707530.js"&gt;&lt;/script&gt;&lt;br /&gt;en&amp;nbsp;&lt;a href="http://effbot.org/zone/element-lib.htm#prettyprint"&gt;http://effbot.org/zone/element-lib.htm#prettyprint&lt;/a&gt;&amp;nbsp;que resolvió correctamente el problema&lt;br /&gt;&lt;br /&gt;Avanzando en el diseño de los scaffolders me encontré con otra&amp;nbsp;limitación&amp;nbsp; ElementTree no soporta el tag CDATA. Usted podria preguntarse "&lt;a href="http://en.wikipedia.org/wiki/CDATA" target="_blank"&gt;¿Que es el tag CDATA?&lt;/a&gt;",&amp;nbsp;Básicamente&amp;nbsp;un tag que le dice al parser "Lo que esta aca adentro es un conjunto de caracteres, no lo parsees"&lt;br /&gt;Si bien se puede evitar el uso del tag, ingresando el texto escapado (por ejemplo, en lugar de '&amp;gt;' escribir '&amp;amp;gt' ) el objetivo es que el XML no deje de ser legible,&amp;nbsp;encontré&amp;nbsp;otras recetas en StackOverflow:&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/174890/how-to-output-cdata-using-elementtree"&gt;http://stackoverflow.com/questions/174890/how-to-output-cdata-using-elementtree&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pero finalmente,&amp;nbsp;decidí&amp;nbsp;escribir mi propia&amp;nbsp;versión&amp;nbsp;basada en algunos de los comentarios (la receta con mas votos no funciona en python 2.7+) &lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/joac/5707442.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/"&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/9164636317193787622/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5309403273623549307&amp;postID=9164636317193787622' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/9164636317193787622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/9164636317193787622'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/2013/06/monkey-patcheando-element-tree-para.html' title='Monkey Patcheando Element tree para soportar cdata'/><author><name>Joaquín Sorianello</name><uri>https://plus.google.com/113288886837539699792</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-ogt-kME7EYc/AAAAAAAAAAI/AAAAAAAAABQ/kOlaCvsLPAI/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5309403273623549307.post-455014781117265359</id><published>2011-09-30T16:09:00.000-03:00</published><updated>2011-09-30T16:09:03.455-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcoop'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='arte electronico'/><title type='text'>Up things</title><content type='html'>Después de la charla de&lt;a href="http://www.canonical.org/%7Ekragen/"&gt; Kragen Javier Sitaker&lt;/a&gt; en &lt;a href="http://ar.pycon.org/2011"&gt;Pyconar 2011&lt;/a&gt; me puse a trabajar en algunas obras de arte electrónico. &lt;br /&gt;&lt;br /&gt;Así nació &lt;a href="https://github.com/joac/Up_Things"&gt;Up things&lt;/a&gt; (no pregunten el porque del nombre ), un repositorio en github&amp;nbsp; donde voy poniendo las cosas que se me ocurren.&lt;br /&gt;&lt;br /&gt;El primer proyecto es el lanzador de partículas. Les dejo unos screenshots:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-OQAtPZf-AwU/ToYS_HeagMI/AAAAAAAAAVk/rlYX7J-JyiA/s1600/2011-09-30-160732_1600x900_scrot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://4.bp.blogspot.com/-OQAtPZf-AwU/ToYS_HeagMI/AAAAAAAAAVk/rlYX7J-JyiA/s640/2011-09-30-160732_1600x900_scrot.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-GAgGiu-Wpi0/ToYTBqLhLHI/AAAAAAAAAVo/_JeMrSsV7sk/s1600/2011-09-30-160750_1600x900_scrot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://4.bp.blogspot.com/-GAgGiu-Wpi0/ToYTBqLhLHI/AAAAAAAAAVo/_JeMrSsV7sk/s640/2011-09-30-160750_1600x900_scrot.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ZaaMVd9xs8Q/ToYTD8zZ8PI/AAAAAAAAAVs/Z2LUVlygbio/s1600/2011-09-30-160815_1600x900_scrot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://4.bp.blogspot.com/-ZaaMVd9xs8Q/ToYTD8zZ8PI/AAAAAAAAAVs/Z2LUVlygbio/s640/2011-09-30-160815_1600x900_scrot.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/"&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/455014781117265359/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5309403273623549307&amp;postID=455014781117265359' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/455014781117265359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/455014781117265359'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/2011/09/up-things.html' title='Up things'/><author><name>Joac</name><uri>http://www.blogger.com/profile/02027757346242312656</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-OQAtPZf-AwU/ToYS_HeagMI/AAAAAAAAAVk/rlYX7J-JyiA/s72-c/2011-09-30-160732_1600x900_scrot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5309403273623549307.post-5902858627866451275</id><published>2010-10-03T20:12:00.000-03:00</published><updated>2010-10-03T20:12:41.729-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcoop'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programacion'/><title type='text'>Puertos Serie Virtuales en Gnu/Linux</title><content type='html'>Hoy estaba preparando mi charla para la PyCon2010 y me vi con la  necesidad de crear puertos serie virtuales, para unos ejemplos que  quiero dar...&lt;br /&gt;&lt;br /&gt;La solución fue utilizar socat:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Socat&amp;nbsp; is a command line based utility that establishes two bidirectional byte streams and transfers data between them. Because the streams can be constructed from&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a large set of different types of data sinks and sources (see address types), and because lots of address options may be applied to the streams, socat can be&amp;nbsp; used&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for many different purposes."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;La linea en cuestión:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;joac@pepino ~ $ socat PTY,link=vserial1 PTY,link=vserial2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Despues, desde pyserial, por ejemplo nos conectamos con:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;import serial&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ser = serial.Serial("/home/joac/vserial1")&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/"&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/5902858627866451275/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5309403273623549307&amp;postID=5902858627866451275' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/5902858627866451275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/5902858627866451275'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/2010/10/puertos-serie-virtuales-en-gnulinux.html' title='Puertos Serie Virtuales en Gnu/Linux'/><author><name>Joac</name><uri>http://www.blogger.com/profile/02027757346242312656</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5309403273623549307.post-1424850715206580691</id><published>2010-09-23T08:45:00.000-03:00</published><updated>2010-09-23T08:45:19.419-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcoop'/><category scheme='http://www.blogger.com/atom/ns#' term='programacion'/><title type='text'>Grupos vs Individuos</title><content type='html'>&lt;!-- -*- mode: rst -*- --&gt;&lt;br /&gt;&lt;p&gt;Ahora que empezó la primavera, y el sol pega directo en la ventana de mi pieza, ayudándome notablemente a despertar, voy a tratar de resucitar mi blog.&lt;/p&gt;&lt;div class="section" id="salvando-proyectos"&gt;&lt;h1&gt;Grupos vs Individuos&lt;/h1&gt;&lt;p&gt;Me gusta programar, me gustan los desafíos, y me gusta aprender cosas nuevas. Tengo una especie de lema que dice &lt;em&gt;&amp;quot;Si lo hizo un ser humano entonces puedo entender como esta  echo&amp;quot;&lt;/em&gt;, quizás demasiado abarcativo (notar que dije &lt;em&gt;puedo entender&lt;/em&gt;). Esto es un arma de doble filo, por un lado, porque aprendo cosas nuevas, pero por el otro, desvaloriza los conocimientos de los demás.&lt;/p&gt;&lt;p&gt;Desde que trabajo en gcoop (&lt;em&gt;ver posts anteriores&lt;/em&gt;) no trabajo mas solo, trabajo con un grupo. Este es un fuerte cambio en el paradigma que traigo desde (el autor no logra recordar, quizás se remonte a estados fetales pre-parto), y me hizo reflexionar bastante sobre esta forma de encarar los problemas.&lt;/p&gt;&lt;p&gt;Cuando uno trabaja solo, la comunicación sobre las tareas es básicamente con uno mismo. Pero cuando uno trabaja en grupo, la comunicación es distinta (Pensaba hacer una analogía con una Red pero es muy &lt;em&gt;de ñoño&lt;/em&gt;), la toma de decisiones tiene mas posturas, y es ahí donde esta la verdadera riqueza.&lt;/p&gt;&lt;p&gt;Creo, que no existen dos personas que piensen parecido, todos tenemos nuestras propias estructuras mentales, y reaccionamos de distintas formas, a veces muy sutiles, frente a los estímulos externos. Es común que se encuentren diferentes formas de resolver un mismo problema.&lt;/p&gt;&lt;p&gt;Pero no todo es color de rosa...&lt;/p&gt;&lt;p&gt;Creo que uno de los principales problemas mundiales, después de los realmente importantes (como que miles de niños muren de hambre día a día), es la falta de comunicación.&lt;/p&gt;&lt;p&gt;Y en los grupos pequeños también pasa.&lt;/p&gt;&lt;p&gt;Quizás la cuestión importante es que desarrollar software no es solamente uno con las manos sobre el teclado, sino, que requiere de comunicación en su mayor parte.&lt;/p&gt;&lt;p&gt;(Este post va a ser editado, es un boceto)&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/"&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/1424850715206580691/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5309403273623549307&amp;postID=1424850715206580691' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/1424850715206580691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/1424850715206580691'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/2010/09/grupos-vs-individuos.html' title='Grupos vs Individuos'/><author><name>Joac</name><uri>http://www.blogger.com/profile/02027757346242312656</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5309403273623549307.post-7172692726855469100</id><published>2010-07-17T13:01:00.003-03:00</published><updated>2010-07-17T15:27:00.032-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcoop'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programacion'/><title type='text'>Jueguito v2</title><content type='html'>Ayer empecé el proyecto de un minijuego, clón de uno de blackberry.&lt;br /&gt;Me di cuenta que sin colores era injugable, así que me puse a investigar como agregar colores a los prints de python, y me encontré con [1] en Stack Overflow, que explica como hacerlo.&lt;br /&gt;&lt;br /&gt;Es muy fácil, con la salvedad que yo aproveche y cambié el color de fondo, en lugar del color del texto.&lt;br /&gt;&lt;br /&gt;Ahora es mas cómodo de jugar. &lt;br /&gt;&lt;br /&gt;La ultima versión (Provisoria) la encuentran en [2] &lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://stackoverflow.com/questions/287871/print-in-terminal-with-colors-using-python"&gt;http://stackoverflow.com/questions/287871/print-in-terminal-with-colors-using-python&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[2]&lt;a href="http://github.com/joac/joac-python/blob/master/minigame/minigame.py"&gt; http://github.com/joac/joac-python/blob/master/minigame/minigame.py&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Dejo unas capturas que hice:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_chPCPdSVRNw/TEHzmHlUJvI/AAAAAAAAAQo/PYOwqfUUnW0/s1600/captura1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="317" src="http://4.bp.blogspot.com/_chPCPdSVRNw/TEHzmHlUJvI/AAAAAAAAAQo/PYOwqfUUnW0/s320/captura1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;i&gt;El inicio del juego&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_chPCPdSVRNw/TEHz8KupYXI/AAAAAAAAAQw/C9ssPxLSbEI/s1600/captura2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_chPCPdSVRNw/TEHz8KupYXI/AAAAAAAAAQw/C9ssPxLSbEI/s320/captura2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Un par de jugadas despues&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_chPCPdSVRNw/TEH0JPrStbI/AAAAAAAAAQ4/qdBYBI2PnTU/s1600/captura3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_chPCPdSVRNw/TEH0JPrStbI/AAAAAAAAAQ4/qdBYBI2PnTU/s320/captura3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Ganamos!&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_chPCPdSVRNw/TEH0VdXu4pI/AAAAAAAAARA/ziswS19uT9U/s1600/captura4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_chPCPdSVRNw/TEH0VdXu4pI/AAAAAAAAARA/ziswS19uT9U/s320/captura4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Si no alcanzan los movimientos... Nos espera la derrota&lt;/i&gt;&lt;/div&gt;&lt;a href="http://github.com/joac/joac-python/blob/master/minigame.py"&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/"&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/7172692726855469100/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5309403273623549307&amp;postID=7172692726855469100' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/7172692726855469100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/7172692726855469100'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/2010/07/jueguito-v2.html' title='Jueguito v2'/><author><name>Joac</name><uri>http://www.blogger.com/profile/02027757346242312656</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_chPCPdSVRNw/TEHzmHlUJvI/AAAAAAAAAQo/PYOwqfUUnW0/s72-c/captura1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5309403273623549307.post-78659823185813234</id><published>2010-07-16T22:12:00.002-03:00</published><updated>2010-07-17T13:04:41.162-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcoop'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programacion'/><title type='text'>Jueguito</title><content type='html'>El otro día, me prestaron un blackberry que tenia un jueguito que me gusto, asi que hice una versión, para la consola, del juego, he aquí el código:&lt;br /&gt;&lt;br /&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;random&lt;/span&gt;&lt;br /&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Square&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="sd"&gt;"""This is the abstraction of one Square"""&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attrib&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;attrib&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;attrib&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rep&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;attrib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Screen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="sd"&gt;"""The Screen Array of the game"""&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x_size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x_size&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;y_size&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tokens&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokens&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;childs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;squares&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;populate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;squares&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;br /&gt;        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rep&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'#'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_near_to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;vecinos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class="n"&gt;vecinos&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class="n"&gt;vecinos&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x_size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class="n"&gt;vecinos&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y_size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class="n"&gt;vecinos&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;vecino&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;vecino&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;vecinos&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;vecino&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;squares&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;populate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;xrange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y_size&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;            &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;squares&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random_square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;xrange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x_size&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;random_square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span class="n"&gt;attrib&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tokens&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;square&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attrib&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;square&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;check_arround&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="sd"&gt;"""We check the attrib of the near squares"""&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;vecinos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_near_to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;vecinos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;vecino&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;vecinos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vecino&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;attrib&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;attrib&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;                    &lt;span class="n"&gt;vecino&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rep&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'#'&lt;/span&gt;&lt;br /&gt;                    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vecino&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__repr__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;''&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;squares&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s"&gt;''&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s"&gt; '&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rep&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;br /&gt;            &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attrib&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;child&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;attrib&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;attrib&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br /&gt;            &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;check_arround&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;child&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;            &lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;'__main__'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;screen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Screen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'5'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;screen&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;screen&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;attrib&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;#dirty Hack&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;limit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;br /&gt;    &lt;span class="n"&gt;win&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;xrange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;raw_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'_ '&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;screen&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'clear'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="si"&gt;%4d&lt;/span&gt;&lt;span class="s"&gt; moves of &lt;/span&gt;&lt;span class="si"&gt;%4d&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;screen&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;screen&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;x_size&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;screen&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;y_size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;            &lt;span class="n"&gt;win&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;br /&gt;            &lt;span class="k"&gt;break&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;win&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;"You Win"&lt;/span&gt;&lt;br /&gt;    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br /&gt;        &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;"You loose"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/"&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/78659823185813234/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5309403273623549307&amp;postID=78659823185813234' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/78659823185813234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/78659823185813234'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/2010/07/jueguito.html' title='Jueguito'/><author><name>Joac</name><uri>http://www.blogger.com/profile/02027757346242312656</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5309403273623549307.post-7401691819613153586</id><published>2009-12-01T17:03:00.007-03:00</published><updated>2010-06-04T13:13:49.893-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gcoop'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programacion'/><title type='text'>Mandando el contenido de un directorio como archivos adjuntos</title><content type='html'>Hoy necesitaba mandar un archivo dividido en 18 partes de 400kB, debido a las limitaciones del proveedor de correo de un colega cubano. La opción de hacerlo a mano es realmente engorrosa, asi que con la ayuda de la documentación de python me mande este script:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:python"&gt;import smtplib&lt;br /&gt;import os&lt;br /&gt;from email.mime.text import MIMEText&lt;br /&gt;from email.mime.base import MIMEBase&lt;br /&gt;from email.mime.multipart import MIMEMultipart&lt;br /&gt;from email import encoders&lt;br /&gt;import getpass&lt;br /&gt;directorio = 'Directorio de donde Sacamos los Archivos'&lt;br /&gt;asunto = 'Aca va el asunto'&lt;br /&gt;destinatarios = ['complete aqui con sus destinatarios',]&lt;br /&gt;sender = 'Aca va Nuestra Direccion'&lt;br /&gt;contenido = 'Texto que queremos que se lea en los mensajes'&lt;br /&gt;host = 'servidor SMTP que vamos a usar'&lt;br /&gt;login = 'nuestro usuario'&lt;br /&gt;#creamos el contenedor&lt;br /&gt;listademails = []&lt;br /&gt;numeroParte = 1&lt;br /&gt;listadoArchivos = os.listdir(directorio)&lt;br /&gt;listadoArchivos.sort()&lt;br /&gt;for archivo in listadoArchivos:&lt;br /&gt;    path = os.path.join(directorio, archivo)&lt;br /&gt;    msg = MIMEMultipart()&lt;br /&gt;    msg['Subject'] = asunto + ' %d de %d' % (numeroParte, len(listadoArchivos)))&lt;br /&gt;    numeroParte += 1&lt;br /&gt;    msg['From']= sender&lt;br /&gt;    msg['To']=', '.join(destinatarios)&lt;br /&gt;    #msg.preamble = ''&lt;br /&gt;    texto = MIMEText(contenido, 'plain')&lt;br /&gt;    msg.attach(texto)&lt;br /&gt;    #Adjuntamos el Archivo&lt;br /&gt;    fp = open(path, 'rb')&lt;br /&gt;    adjunto = MIMEBase('application', 'octet-stream')&lt;br /&gt;    adjunto.set_payload(fp.read())&lt;br /&gt;    fp.close()&lt;br /&gt;    encoders.encode_base64(adjunto)&lt;br /&gt;    adjunto.add_header('Content-Disposition', 'attachment', filename = archivo)&lt;br /&gt;    msg.attach(adjunto)&lt;br /&gt;    listademails.append(msg.as_string())&lt;br /&gt;&lt;br /&gt;server = smtplib.SMTP(host)&lt;br /&gt;server.login(login, getpass.getpass())&lt;br /&gt;for mail in listademails:&lt;br /&gt;    server.sendmail(sender, destinatarios, mail)&lt;br /&gt;server.quit()&lt;br /&gt;&lt;/pre&gt;Dejo en el lector las criticas pertinentes a esta 'Belleza'(ironicmode =True) que sorprende por su extrema pythonicidad :P&lt;div class="blogger-post-footer"&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/ar/"&gt;Contenido bajo licencia Creative Commons by-nc-sa&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.joaclandia.com.ar/feeds/7401691819613153586/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5309403273623549307&amp;postID=7401691819613153586' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/7401691819613153586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5309403273623549307/posts/default/7401691819613153586'/><link rel='alternate' type='text/html' href='http://www.joaclandia.com.ar/2009/12/mandando-el-contenido-de-un-directorio.html' title='Mandando el contenido de un directorio como archivos adjuntos'/><author><name>Joac</name><uri>http://www.blogger.com/profile/02027757346242312656</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>