<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1800461261730007882</id><updated>2012-01-15T17:51:23.328-08:00</updated><category term='linux'/><category term='reflexiones'/><category term='xkcd'/><category term='laboratorio'/><category term='visual basic'/><category term='python'/><category term='php'/><category term='bug'/><category term='windows'/><category term='matemáticas'/><category term='mozilla'/><category term='offtopic'/><category term='proyectos personales'/><title type='text'>"Steal This Software"</title><subtitle type='html'>descripcion = ["Programación","Tests","G33k Hum0r"]</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-5893692396308967505</id><published>2012-01-15T17:41:00.000-08:00</published><updated>2012-01-15T17:51:23.430-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>SOPA</title><content type='html'>Codigo js: &lt;br /&gt;&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=w6GX0AzM"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript" src="//js.sopablackout.org/sopablackout.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-5893692396308967505?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/5893692396308967505/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2012/01/sopa.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5893692396308967505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5893692396308967505'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2012/01/sopa.html' title='SOPA'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8023266954759364351</id><published>2011-12-11T15:42:00.000-08:00</published><updated>2011-12-11T15:42:03.809-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django-IDE: Ahora en GitHub!</title><content type='html'>Ya está subido el código de lo que hay hasta ahora, de la IDE que estoy cocinando: &lt;br /&gt;&lt;br /&gt;&lt;a href="https://github.com/mcerdeira/django-ide" rel="nofollow"&gt;Introducing: Django-IDE&lt;/a&gt;&lt;span class="comhead"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hay mucho por hacer y mucho por mejorarle, por lo que, colaboradores bienvenidos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8023266954759364351?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8023266954759364351/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/12/django-ide-ahora-en-github.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8023266954759364351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8023266954759364351'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/12/django-ide-ahora-en-github.html' title='Django-IDE: Ahora en GitHub!'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-5686136138872673014</id><published>2011-10-25T16:36:00.000-07:00</published><updated>2011-10-25T18:17:34.193-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Django-IDE: Video preview</title><content type='html'>Luego de escribir este post &lt;a href="http://stealthissoftware.blogspot.com/2011/10/ipnaf-ide-la-ide-definitiva-para-python.html"&gt;IPnaf IDE - La IDE definitiva para python&lt;/a&gt;, y recibir algunos comentarios que me hicieron pensar (y ver que, estaba un poco equivocado en mis comentatios), me dije "y por qué no puedo ser yo quién arme una IDE?"&lt;br /&gt;&lt;br /&gt;Y así fue que, pensando un poco, me puse a intentar llenar un hueco que, creo que está lo suficientemente vacío como para que un esfuerzo allí, valga la pena.&lt;br /&gt;Entonces, empezó a nacer Django-IDE.&lt;br /&gt;&lt;br /&gt;Les dejo un video con una preview muy muy muuuuy temprana (no tiene para nada todos los features que va a tener), en fin, acá va:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="315" src="http://www.youtube.com/embed/ddQDgp4XrJ4" width="420"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;h1&gt;&lt;a href="http://www.youtube.com/watch?v=ddQDgp4XrJ4"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; font-size: small; font-weight: normal;"&gt;Ver en youtube &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;h1&gt;What is Django-IDE good for?&lt;/h1&gt;Django-IDE&lt;span style="font-family: inherit;"&gt; helps you to:&lt;/span&gt;&lt;br /&gt;&lt;ul class="simple"&gt;&lt;li&gt;Easily create Django projects.&lt;/li&gt;&lt;li&gt;Manage and edit existing project&lt;/li&gt;&lt;li&gt;Edit and Save your code, with a editor based on &lt;a href="http://ace.ajax.org/"&gt;Ace.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Run and debug.&lt;/li&gt;&lt;/ul&gt;La estoy armando a pulmón, esto es, codeo un poco los findes, y cuando puedo...&lt;br /&gt;Espero comments!!! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-5686136138872673014?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/5686136138872673014/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/10/django-ide-video-preview.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5686136138872673014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5686136138872673014'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/10/django-ide-video-preview.html' title='Django-IDE: Video preview'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/ddQDgp4XrJ4/default.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-3466970062401952332</id><published>2011-10-11T19:58:00.000-07:00</published><updated>2011-10-11T20:03:40.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>It Sucks! (parte 2)</title><content type='html'>&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Ejemplo: WebService SOAP doloroso:&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Producto: MSCRM 2011 &lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;"&gt;Accion: Login con Live + retrieve de una cuenta&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;s:envelope 05="" 2003="" http:="" soap-envelope""&lt;br="" www.w3.org="" xmlns:s=""&gt;&lt;/s:envelope&gt;&lt;s:envelope 05="" 2003="" http:="" soap-envelope""&lt;br="" www.w3.org="" xmlns:s=""&gt;&lt;s:body&gt;&lt;retrieve 2011="" contracts="" http:="" schemas.microsoft.com="" services""="" xmlns="" xrm=""&gt;&lt;/retrieve&gt;&lt;br /&gt;&amp;nbsp; &lt;/s:body&gt;&lt;/s:envelope&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=sP2fw3zF"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Es necesario? Realmente tiene que ser tan mugroso?&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Para mí, es un&lt;b&gt; Epic Fail.&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-3466970062401952332?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/3466970062401952332/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/10/it-sucks-parte-2.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/3466970062401952332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/3466970062401952332'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/10/it-sucks-parte-2.html' title='It Sucks! (parte 2)'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-1489287754002685791</id><published>2011-10-07T20:08:00.000-07:00</published><updated>2011-10-07T20:08:46.124-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>IPnaf IDE - La IDE definitiva para python</title><content type='html'>Dentro del titulo mentiroso, que usé para atraer la atención (el plan B era poner "cerveza gratis!") encierro un pensamiento mío, pero que creo que muchos compartimos. Pero, primero lo primero:&lt;br /&gt;&lt;br /&gt;IPnaf IDE quiere decir: &lt;b&gt;I&lt;/b&gt;Pnaf &lt;b&gt;P&lt;/b&gt;lease &lt;b&gt;N&lt;/b&gt;ot &lt;b&gt;A&lt;/b&gt;nother &lt;b&gt;F&lt;/b&gt;ucking &lt;b&gt;IDE&lt;/b&gt;!!&lt;br /&gt;&lt;br /&gt;Aunque, debería ser "not another fucking python IDE!" Y a qué me refiero con esta misteriosa frase?? He visto, y ultimamente mucho mas, una proliferacion de lo que hacen llamar IDEs. Pero, me voy a centrar en IDEs para el lenguaje pythyon: cito, spyder, Ninja, entre otros, que aparecieron como "somos la IDE definitiva".&lt;br /&gt;&lt;br /&gt;Hay &lt;a href="http://xkcd.com/927/"&gt;un chiste de Xkcd&lt;/a&gt; donde, la idea más o menos es que, alguien dice "uh, hay n maneras de hacer x! No puede ser, hay que generar un standard. Horas luego hay n+1 maneras de hacer x"&lt;br /&gt;&lt;br /&gt;Y es así. Siempre. Siempre?? Bueno, no siempre, pero en el 99.9% de los casos. Otras veces, ese pensamiento da lugar a innovaciones. Pero, es lo común?? Diríamos que no.&lt;br /&gt;&lt;br /&gt;Vuelvo a los ejemplos que cité: Spyder y Ninja. Ambas las bajé, instalé y probé. Aclaro que no tengo nada en contra de quienes la desarrollan (ni los conozco) ni me parece que su trabajo y esfuerzo sea malo. Al contrario. Pero, veo que está desperdiciado. Gente con talento claro, pone esfuerzo en cosas que ya existen y, sin innovaciones reales. A qué me refiero??&lt;br /&gt;&lt;br /&gt;&lt;a href="http://packages.python.org/spyder/"&gt;Spyder &lt;/a&gt;y &lt;a href="http://code.google.com/p/ninja-ide/"&gt;Ninja&lt;/a&gt; [0] son, sin duda esfuerzos de desarrollo y diseño. Pero, que son? Editores de texto lindos y python friendly. Nada más. Ah, y que ejecutan código. Nada que no puede hacer con Emacs y un poco de tiempo + macros.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Debugger? No, gracias.&lt;/b&gt; [1]&lt;br /&gt;&lt;br /&gt;Ojo, no es que sea fácil hacer un debugger como la gente, que corrar el código paso a paso y podamos inspeccionar varibles, ejecutar código en el contexto de ejecución, editar código on the fly, hacer remote debugging etc. [2] &lt;br /&gt;Pero, es lo que falta!! (en general) Y si, es más lindo ponerse a escribir la IDE desde cero [3], y luego agregarle esas funcionalidades superstar, pero, primero hay que hacer el editor, el highlighter, el buscador de código, el generador de plugins, el pseudo intellisense, etc. Y, para cuando llegamos a las funcionalidades breakers, rockstar, "la papa", quizá el proyecto ya murió.&lt;br /&gt;&lt;br /&gt;"No necesitamos esos features de maricones". Diría el macho programmer. (y esto me hizo acordar a &lt;a href="http://xkcd.com/378/"&gt;otro chiste de Xkcd&lt;/a&gt;) pero, la realidad es que, cuando más cómodo esté uno, mejor trabaja y más se puede concentrar en el problema puntual que esté resolviendo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Por qué no tomar una IDE existente y opensource y mejorarla en vez de arrancer una from scratch? &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Entonces, si se van a poner a programar, aviso, no necesitamos más IDEs =)&amp;nbsp; &lt;br /&gt;&lt;br /&gt;EOF &lt;br /&gt;&lt;br /&gt;&lt;b&gt;[0]&lt;/b&gt; Elegí Spyder y Ninja porque son 2 que recuerdo haber visto últimamente, y que además las instalé y probé.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[1]&lt;/b&gt;&amp;nbsp; Creo que Spyder estaba implementando pdb y winpdb. De todos modos, mi punto sigue en pie.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[2]&lt;/b&gt; Acá es cuando alguien me va a decir, "vos, porque estás acosbumbrado a visual basic" Puedo asegurar que he programado en editores de texto plano como en Visual Studio, Eclipse o Netbeans. Uno puede usar un debugger o usar prints, pero, las funcionalidades rock star en las IDEs, son geniales!! No es que uno no pueda vivir sin ellas, pero, si existen, mucho mejor!! &lt;br /&gt;&lt;br /&gt;&lt;b&gt;[3]&lt;/b&gt; Es como el caso de las n distribuciones de Linux. Ya hay suficientes en variedad como para parar un poco, si tenés tantas ganas de laburar en una distro, contribuí con una que exista!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-1489287754002685791?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/1489287754002685791/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/10/ipnaf-ide-la-ide-definitiva-para-python.html#comment-form' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1489287754002685791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1489287754002685791'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/10/ipnaf-ide-la-ide-definitiva-para-python.html' title='IPnaf IDE - La IDE definitiva para python'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-2046970631333849485</id><published>2011-10-06T15:40:00.000-07:00</published><updated>2011-10-06T15:40:24.593-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>It Sucks!</title><content type='html'>Ultimamente he tenido que interactuar con varios productos de una empresa "muy conocida" (que tienen, entre otros productos un CRM y un ERP) y, me he topado con un viejo amigo: los webservices.&lt;br /&gt;&lt;br /&gt;Y, claro, no es que no los conociera pero, hacía mucho que no me topaba y, ya había olvidado lo feo que son, lo lentos, lo roto que está el modelo en general (SOAP, REST o POX, da igual)&lt;br /&gt;&lt;br /&gt;O lidias con librerias horrendas, o parseas xmls.&lt;br /&gt;&lt;br /&gt;Y me pregunto: Por qué? No deberíamos (los informáticos) facilitar el acceso a los datos?? No debería ser todo, cada vez más fácil y lindo?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.odata.org/"&gt;OData&lt;/a&gt;, ya es algo, pero, como todo, hasta que sea realmente un standard, vamos a seguir sufriendo con, mixturas de tecnologias (y tampoco se si es la solución al problema)&lt;br /&gt;&lt;br /&gt;En fin, mi opinón es que, en lo que es acceso a datos abierto y fácil para todos, &lt;b&gt;We Suck!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Lecturas relacionadas:&lt;br /&gt;&lt;a href="http://www.somebits.com/weblog/tech/bad/whySoapSucks.html"&gt;SOAP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.trachtenberg.com/blog/2006/11/06/rest-vs-httppox-vs-soap/"&gt;REST SOAP POX&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-2046970631333849485?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/2046970631333849485/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/10/it-sucks.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2046970631333849485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2046970631333849485'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/10/it-sucks.html' title='It Sucks!'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-892653524347992192</id><published>2011-08-23T16:20:00.000-07:00</published><updated>2011-08-23T16:20:40.521-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offtopic'/><title type='text'>O' Really Maker</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uGV_DbjKU_0/TlQ0wM-kbdI/AAAAAAAAAE0/eJl0vFROymw/s1600/animal1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-yymYG3k4lOs/TlQ1Tb89dBI/AAAAAAAAAE4/WI49aEN_in8/s1600/coding+beer.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-yymYG3k4lOs/TlQ1Tb89dBI/AAAAAAAAAE4/WI49aEN_in8/s400/coding+beer.bmp" width="332" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-892653524347992192?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/892653524347992192/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/08/o-really-maker.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/892653524347992192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/892653524347992192'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/08/o-really-maker.html' title='O&apos; Really Maker'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-yymYG3k4lOs/TlQ1Tb89dBI/AAAAAAAAAE4/WI49aEN_in8/s72-c/coding+beer.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8809301868846962801</id><published>2011-08-01T19:11:00.000-07:00</published><updated>2011-08-01T19:11:36.235-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>La frase del día...</title><content type='html'>&lt;i&gt;"Google+ isn’t about sharing cat pictures, it’s about serving ads.  Twitter’s massive network of 140-character bits of information isn’t  about connecting people across the globe or to view current trends in  worldwide thinking, it’s about serving ads. Facebook isn’t about  entertaining yourself with games or sharing interesting links, it’s  about serving ads.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;No es que no lo sepamos, pero... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.naildrivin5.com/blog/2011/08/01/why-i-wont-work-for-google-twitter-facebook.html"&gt;Fuente.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=vKmQW_Nkfk8"&gt;Info relacionada.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8809301868846962801?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8809301868846962801/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/08/la-frase-del-dia.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8809301868846962801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8809301868846962801'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/08/la-frase-del-dia.html' title='La frase del día...'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-6600979801757640798</id><published>2011-07-27T18:24:00.000-07:00</published><updated>2011-07-27T18:27:21.188-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Otra idea loca: MyGoogle</title><content type='html'>Lamentablemente, esto no puedo, ni siquiera soñar con llevarlo a la práctica (ni siquiera sé si lo puede hacer google) y, aunque la idea es simple, su implementación no lo es tanto.&lt;br /&gt;&lt;br /&gt;Google, como buscador es un servicio, personalizado (hasta cierto punto) pero... Qué pasa si yo quiero mi buscador? Y no me refiero un buscador de mis archivitos en mi pc, no.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Yo quiero mi google. &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Quiero decirle a mi "googlito" que indexe, por ejemplo, datos sobre fútbol, porque quiero una base de datos del tema, o que indexe info sobre la bolsa, porque soy un corredor de bolsa y quiero datos estadísticos. &lt;br /&gt;Es decir, quiero que mi "googlito" me genere una base de datos, que yo pueda consultar (como hoy se consulta el google normal) pero, "saborizada" con mi forma particular de indexar.&lt;br /&gt;&lt;br /&gt;Así, tendría una cuenta de google index (como hoy tengo de Gmail, por ejemplo)&amp;nbsp; donde customizo "mi google", diciendole (de alguna forma) como quiero que indexe, con qué criterios, qué relaciones, etc, etc.&lt;br /&gt;&lt;br /&gt;Así mismo, puedo publicar esos "googles" customizados para que los usen otras personas.&lt;br /&gt;De esta forma, no sé, Bonadeo capaz tiene su google (como hoy tenés tu twitter) donde, vas a www.google.com/#bonadeo y buscás data sobre, que se yo, tennis de forma más personalizada y enfocada en el tema tennis, y no tan general como hoy buscaríamos sobre tennis en el google normal.&lt;br /&gt;&lt;br /&gt;Es medio porrera la idea, pero, ojalá papa noel me traiga algo así para navidad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-6600979801757640798?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/6600979801757640798/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/07/otra-idea-loca-mygoogle.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6600979801757640798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6600979801757640798'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/07/otra-idea-loca-mygoogle.html' title='Otra idea loca: MyGoogle'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-570388749170079488</id><published>2011-07-19T19:38:00.000-07:00</published><updated>2011-07-19T19:38:45.275-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offtopic'/><title type='text'>Led fucking Zeppelin</title><content type='html'>No hay mucho que agregar, Black Dog + muchos fans toncandola + muy buena edición = este video :)&lt;br /&gt;&lt;br /&gt;&lt;object style="height: 390px; width: 640px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wkMm-WVpE7k?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/wkMm-WVpE7k?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-570388749170079488?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/570388749170079488/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/07/led-fucking-zeppelin.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/570388749170079488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/570388749170079488'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/07/led-fucking-zeppelin.html' title='Led fucking Zeppelin'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-9107391940846945702</id><published>2011-07-14T16:19:00.000-07:00</published><updated>2011-07-14T16:19:30.004-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Volvi a programar en mi "spare time": web_alert - Parte 2</title><content type='html'>En un &lt;a href="http://stealthissoftware.blogspot.com/2011/06/volvi-programar-en-mi-spare-time.html"&gt;post anterior&lt;/a&gt;, estuve contando sobre un proyectito que arranqué, por puro hobbie pero, esperando que sea útil a la vez.&lt;br /&gt;&lt;br /&gt;La cosa es que me encontré con algo que me desaminó un poco: &lt;a href="http://www.webalertpro.com/"&gt;http://www.webalertpro.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Primero, es casi exactamente la misma idea.&lt;br /&gt;Segundo, tiene casi el mismo nombre!&lt;br /&gt;&lt;br /&gt;Obviamente, esto es culpa de mi, evidente, &lt;a href="http://stealthissoftware.blogspot.com/2011/05/todo-inventado-o.html"&gt;falta de inventiva.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por ahora sigue el proyecto, pero lamentablemente, perdió un poco de empuje.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-9107391940846945702?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/9107391940846945702/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/07/volvi-programar-en-mi-spare-time.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/9107391940846945702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/9107391940846945702'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/07/volvi-programar-en-mi-spare-time.html' title='Volvi a programar en mi &quot;spare time&quot;: web_alert - Parte 2'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-4894131472113634807</id><published>2011-06-28T17:16:00.000-07:00</published><updated>2011-06-29T18:05:40.995-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Volvi a programar en mi "spare time": web_alert</title><content type='html'>&lt;b&gt;Proyecto:&lt;/b&gt; web_alert&lt;br /&gt;&lt;b&gt;Objetivos:&lt;/b&gt; Divertirme, aprender y, en una de esas, sale algo útil.&lt;br /&gt;&lt;b&gt;Lenguajes:&lt;/b&gt; Python, obvio!&lt;br /&gt;&lt;br /&gt;Queriendo meterme un poco con python+web, empecé un proyectito al que nombré "web_alert".&lt;br /&gt;&lt;br /&gt;Primero lo armé versión consola y "on demand", luego la idea es que sea una especie de servicio web.&lt;br /&gt;&lt;br /&gt;Qué haría? Fácil, toma como input urls que el usuario suministra y tags de interés que el usuario suministra, por ejemplo:&lt;br /&gt;&lt;br /&gt;urls: http://barrapunto.com, http://www.lanacion.com.ar&lt;br /&gt;tags: panchos, celulares, perros&lt;br /&gt;&lt;br /&gt;La aplicación 'mira' esas urls, y genera como output links relacionados con los tags que le pasas como input y, te lo presenta donde vos le digas, por ejemplo:&lt;br /&gt;&lt;br /&gt;mail, twitter, facebook.&lt;br /&gt;&lt;br /&gt;Sirve? No se, pero que me voy a divertir, seguro. =)&lt;br /&gt;&lt;br /&gt;P.D: Previews y el código en google, coming soon...&lt;br /&gt;&lt;br /&gt;EDITADO: Este post estaba en planeta python y desapareció, jua! =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-4894131472113634807?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/4894131472113634807/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/06/volvi-programar-en-mi-spare-time.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4894131472113634807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4894131472113634807'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/06/volvi-programar-en-mi-spare-time.html' title='Volvi a programar en mi &quot;spare time&quot;: web_alert'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-2920399436882179324</id><published>2011-06-16T16:04:00.000-07:00</published><updated>2011-06-16T16:04:25.970-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Advide from an old programmer</title><content type='html'>&lt;div class="documentwrapper"&gt;           &lt;div class="body"&gt;                &lt;div class="section" id="advice-from-an-old-programmer"&gt; &lt;h1&gt;Advice From An Old Programmer&lt;/h1&gt;You have finished this book and have decided to continue with programming. Maybe it will be a career for you, or maybe it will be a hobby.  You will need some advice to make sure you continue on the right path, and get the most enjoyment out of your newly chosen hobby.&lt;br /&gt;I have been programming for a very long time.  So long that it is incredibly boring to me.  At the time that I wrote this book I knew about 20 programming languages and could learn new ones in about a day to a week depending on how weird they were.  Eventually though this just became boring and couldn't hold my interest.&lt;br /&gt;What I discovered after this journey of learning is that the languages did not matter, it's what you do with them.  Actually, I always knew that, but I'd get distracted by the languages and forget it periodically.  Now I never forget it, and neither should you.&lt;br /&gt;Which programming language you learn and use does not matter.  Do &lt;em&gt;not&lt;/em&gt; get sucked into the religion surrounding programing languages as that will only blind you to their true purpose of being your tool for doing interesting things.&lt;br /&gt;Programming as an intellectual activity is the &lt;em&gt;only&lt;/em&gt; art form that allows you to create interactive art.  You can create projects that other people can play with, and you can talk to them indirectly.  No other art form is quite this interactive.  Movies flow to the audience in one direction.  Paintings do not move.  Code goes both ways.&lt;br /&gt;Programming as a profession is only moderately interesting.  It can be a good job, but if you want to make about the same money and be happier, you could actually just go run a fast food joint.  You are much better off using code as your secret weapon in another profession.&lt;br /&gt;People who can code in the world of technology companies are a dime a dozen and get no respect.  People who can code in biology, medicine, government, sociology, physics, history, and mathematics are respected and can do amazing things to advance those disciplines.&lt;br /&gt;Of course, all of this advice is pointless.  If you liked learning to write software with this book, you should try to use it to improve your life any way you can.  Go out and explore this weird wonderful new intellectual pursuit that barely anyone in the last 50 years has been able to explore.  Might as well enjoy it while you can.&lt;br /&gt;Finally, I will say that learning to create software changes you and makes you different.  Not better or worse, just different.  You may find that people treat you harshly because you can create software, maybe using words like "nerd".  Maybe you will find that because you can dissect their logic that they hate arguing with you.  You may even find that simply knowing how a computer works makes you annoying and weird to them.&lt;br /&gt;To this I have one just piece of advice: they can go to hell.  The world needs more weird people who know how things work and who love to figure it all out. When they treat you like this, just remember that this is &lt;em&gt;your&lt;/em&gt; journey, not theirs.  Being different is not a crime, and people who tell you it is are just jealous that you have picked up a skill they never in their wildest dreams could acquire.&lt;br /&gt;You can code. They cannot.  That is pretty damn cool.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://learnpythonthehardway.org/book/advice.html"&gt;Fuente &lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-2920399436882179324?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/2920399436882179324/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/06/advide-from-old-programmer.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2920399436882179324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2920399436882179324'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/06/advide-from-old-programmer.html' title='Advide from an old programmer'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-1188447353343184342</id><published>2011-06-01T17:14:00.000-07:00</published><updated>2011-06-01T17:14:08.081-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>El programador pesimista</title><content type='html'>Esto es algo que, si bien suena obvio, parece que no lo es porque, una y otra vez me encuentro con gente del "ambiente" que parece ignorarlo o, por lo menos, lo pasa por alto.&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;Todo el mundo&lt;/strike&gt; Muchos programamos como si el mundo fuera de colores y los duendes con sombreros divertidos bailaran a nuestro alrededor.&lt;br /&gt;Es decir, como si todo fuera a &lt;b&gt;salir bien&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Y es por programar de esta forma, optimista que, uno se sobresalta y se rompe la cabeza cuando algo sale mal[0].&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://desmotivaciones.es/demots/201010/homer_8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://farm4.static.flickr.com/3243/2390091633_359e04f0e8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="83" src="http://farm4.static.flickr.com/3243/2390091633_359e04f0e8.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp; &amp;nbsp; &lt;i&gt;posible duendes divertidos &lt;/i&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;a href="http://desmotivaciones.es/demots/201010/homer_8.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://desmotivaciones.es/demots/201010/homer_8.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;i&gt;&amp;nbsp; es sarcasmo Marge&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;El programador pesimista&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Lo que propongo (o más bien, resalto porque estoy seguro de que esto no se me ocurrió a mi) es, programemos como si todo fuera a fallar.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Si lo que estoy escribiendo se rompe&lt;/b&gt;, cómo evito datos incongruentes? como le doy la posibilidad al usuario de arreglarlo él mismo? o cancelarlo? o volver a hacerlo?&lt;br /&gt;&lt;br /&gt;Cómo escribo el código/comentarios de manera que, &lt;b&gt;si falla o se rompe&lt;/b&gt; pueda arreglarlo fácil sin tener que volver a pensar todo de nuevo?&lt;br /&gt;&lt;br /&gt;Cómo escribo ese mismo código para que, &lt;b&gt;si hay un problema y lo tiene que arreglar un compañero&lt;/b&gt; (porque yo no estoy) lo pueda hacer sin problemas y entienda todo como si fuera yo?&lt;br /&gt;&lt;br /&gt;Es decir, pensar en &lt;b&gt;el peor escenario posible&lt;/b&gt; y, anticiparse con medias preventivas que, en el momento son hasta triviales, pero nos pueden ahorrar horas.&lt;br /&gt;&lt;br /&gt;Posibles programadores pesimistas:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_ypKi2wiKvfQ/S79wqFwHwqI/AAAAAAAAAmw/BYJfzw6UQhk/s400/disgusted+face.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ypKi2wiKvfQ/S79wqFwHwqI/AAAAAAAAAmw/BYJfzw6UQhk/s400/disgusted+face.jpg" /&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://panthercs.ibeatyou.com/164029_pet_1249483084.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://panthercs.ibeatyou.com/164029_pet_1249483084.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_AcTsS3r4zY4/SLvMnBJ0ebI/AAAAAAAABAA/i5NptoGXdD0/s400/disgusted+face.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_AcTsS3r4zY4/SLvMnBJ0ebI/AAAAAAAABAA/i5NptoGXdD0/s200/disgusted+face.jpg" width="183" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://media.makeadare.com/img/57fac2944/image_04c1ae8242.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://media.makeadare.com/img/57fac2944/image_04c1ae8242.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-1188447353343184342?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/1188447353343184342/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/06/el-programador-pesimista.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1188447353343184342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1188447353343184342'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/06/el-programador-pesimista.html' title='El programador pesimista'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3243/2390091633_359e04f0e8_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-7073507604513565314</id><published>2011-06-01T16:45:00.000-07:00</published><updated>2011-06-01T16:47:16.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Framework web minimo</title><content type='html'>Estaba buscando algún framework web, chiquito y sencillo. Quería tirar código y que salga andando algo, fácil, sin instalar mucho ni configurar.&lt;br /&gt;Se me ocurrió preguntar en la lista de python argentina[0].&lt;br /&gt;Al instante, muchas respuestas y, una de ellas me nombraba web.py (que lo conocía) y otro más[1], que es el motivo de este post:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://bottlepy.org/docs/dev/index.html"&gt;&lt;img border="0" src="http://bottlepy.org/docs/dev/_static/logo_nav.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Muy zarpado. Lo primero que me cautivó:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Bottle does not depend on any external libraries. You can just download &lt;a class="reference external" href="http://bottlepy.org/bottle.py"&gt;bottle.py&lt;/a&gt; into your project directory and start coding."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Un solo archivo! Lo importo y, habemus web. Eso es lo que quería!&lt;br /&gt;&lt;br /&gt;Luego, el hello world:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;bottle&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="nd"&gt;@route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'/hello'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&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="s"&gt;"Hello World!"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/pre&gt;Cada vez se ponía mejor. Sintaxis clara y, una linda manera de resolver la relación url-código: Decoradores.&lt;br /&gt;&lt;br /&gt;Creó que me enamoré =)&lt;br /&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://python.org.ar/pyar/"&gt;[0] PyAr&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bottlepy.org/docs/dev/"&gt;[1] Bottle&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-7073507604513565314?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/7073507604513565314/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/06/framework-web-minimo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7073507604513565314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7073507604513565314'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/06/framework-web-minimo.html' title='Framework web minimo'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8415176186966968949</id><published>2011-05-30T18:50:00.000-07:00</published><updated>2011-05-30T18:52:19.821-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Todo Inventado, o...</title><content type='html'>Un poco para paliar el famoso &lt;a href="http://en.wikipedia.org/wiki/Burnout_%28psychology%29"&gt;burnout &lt;/a&gt;de, nosotros, los programadores, me decidí a ponerme a programar algo que me guste, en un lenguaje que no use para el trabajo (python, probablemente) y, de paso, si es útil, mejor!&lt;br /&gt;&lt;br /&gt;Pero, o bien estoy escaso de ideas o bien, todo está inventado pero, cada cosa que se me """ocurre""" ya existe.&lt;br /&gt;Dos ejemplos:&lt;br /&gt;&lt;br /&gt;1) Un buscador de imagenes inverso. Esto es, en vez de poner una palabra y que tire imagenes, poder subir una imagen y que te tire que palabras tiene asociadas.&lt;br /&gt;&lt;a href="http://www.tineye.com/"&gt;Ya existe.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) Un visitador de páginas. Esto es, un servicio que, entre a una web y que, cuando hay cambios en la misma (según keywords) me genere un mail, feed o postee en algun lado o, whatever.&lt;br /&gt;&lt;a href="http://feedity.com/"&gt;Ya hay algo parecido.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.feedyes.com/"&gt;Otro.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Estos son 2 ejemplos cercanos, me viene pasando hace mucho. Será que estoy viejo y falto de creatividad?? O será que, realmente, la frase poco feliz "ya está todo inventado" es cierta?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acepto donadores de ideas.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Nota: Probablemente exista un post así, en otro blog. :)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8415176186966968949?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8415176186966968949/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/05/todo-inventado-o.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8415176186966968949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8415176186966968949'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/05/todo-inventado-o.html' title='Todo Inventado, o...'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-5503667178916176882</id><published>2011-05-21T07:29:00.000-07:00</published><updated>2011-05-21T07:29:15.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Ubuntu: Hasta los grandes deben aprender sobre interfaces</title><content type='html'>Ayer, no me andaba el teclado numérico en Ubuntu.&amp;nbsp; &lt;br /&gt;Me extrañó mucho dado que hacía poco estaba funcionando y, que todo ese sector del teclado se haya roto me parecía raro.&lt;br /&gt;&lt;br /&gt;Busqué en google.&lt;br /&gt;Me encontré con que, a varios les había pasado lo mismo, en algún momento.&lt;br /&gt;No se si fue al actualizarse una versión, o si hay algún atajo raro que hace esto, o que tipo de bug raro lo ocasionó.&lt;br /&gt;&lt;br /&gt;Al parecer, existe una opción de manejar el mouse con el teclado que, se activó mágicamente.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-b8dZBg5bHeg/TdfLjc4QhCI/AAAAAAAAAEs/JLaSXVrVW9A/s1600/accesibilidad-teclado-ubuntu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="169" src="http://1.bp.blogspot.com/-b8dZBg5bHeg/TdfLjc4QhCI/AAAAAAAAAEs/JLaSXVrVW9A/s320/accesibilidad-teclado-ubuntu.png" width="320" /&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/-cyqqZTFFRK0/TdfLlYHMwNI/AAAAAAAAAEw/wRJADG0fdVw/s1600/teclas-del-raton-ubuntu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://4.bp.blogspot.com/-cyqqZTFFRK0/TdfLlYHMwNI/AAAAAAAAAEw/wRJADG0fdVw/s320/teclas-del-raton-ubuntu.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Claro, si uno conoce que existe la opción, es probable que se de cuenta rápido de cuál es el problema.&lt;br /&gt;El tema es que, yo no conocía que existía esa opción y, como al querer teclear los números, uno pasa rápidamente por las teclas, no percibía que había un movimiento en el puntero del mouse (que sí es obvio cuando uno deja apretada una de las teclas)&lt;br /&gt;&lt;br /&gt;Entonces, para qué toda esta historieta? &lt;br /&gt;&lt;br /&gt;Cuando hay una opción activada y esta es poco convencional y además produce un resultado confuso (en este caso, uno piensa que no funciona el teclado numérico) se debe indicar en pantalla, con un icono o algo que dicha opción está activada.&lt;br /&gt;&lt;br /&gt;Sorry Ubuntu, pero en esta le pifiaron.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-5503667178916176882?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/5503667178916176882/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/05/ubuntu-hasta-los-grandes-deben-aprender.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5503667178916176882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5503667178916176882'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/05/ubuntu-hasta-los-grandes-deben-aprender.html' title='Ubuntu: Hasta los grandes deben aprender sobre interfaces'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-b8dZBg5bHeg/TdfLjc4QhCI/AAAAAAAAAEs/JLaSXVrVW9A/s72-c/accesibilidad-teclado-ubuntu.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-6920150317275858816</id><published>2011-04-23T14:09:00.001-07:00</published><updated>2011-04-23T14:09:19.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><category scheme='http://www.blogger.com/atom/ns#' term='offtopic'/><title type='text'>Clap, clap, clap</title><content type='html'>“If &lt;em&gt;Java&lt;/em&gt; had true garbage collection, most programs would delete themselves upon execution.”&lt;br /&gt;&lt;br /&gt;(&lt;em&gt;Robert Sewell&lt;/em&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-6920150317275858816?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/6920150317275858816/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/04/clap-clap-clap.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6920150317275858816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6920150317275858816'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/04/clap-clap-clap.html' title='Clap, clap, clap'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-4950697211318544903</id><published>2011-04-21T08:01:00.000-07:00</published><updated>2011-04-21T08:01:05.842-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Escribir codigo que, simplemente funcione</title><content type='html'>&lt;pre&gt;No hay mucho para explicar o agregar: &lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;gt; can you try following change ? it will push gart to 0x80000000&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;gt; diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c&lt;br /&gt;&amp;gt; index 86d1ad4..3b6a9d5 100644&lt;br /&gt;&amp;gt; --- a/arch/x86/kernel/aperture_64.c&lt;br /&gt;&amp;gt; +++ b/arch/x86/kernel/aperture_64.c&lt;br /&gt;&amp;gt; @@ -83,7 +83,7 @@ static u32 __init allocate_aperture(void)&lt;br /&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * so don't use 512M below as gart iommu, leave the space for kernel&lt;br /&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * code for safe&lt;br /&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;gt; - &amp;nbsp; &amp;nbsp; &amp;nbsp; addr = memblock_find_in_range(0, 1ULL&amp;lt;&amp;lt;32, aper_size, 512ULL&amp;lt;&amp;lt;20);&lt;br /&gt;&amp;gt; + &amp;nbsp; &amp;nbsp; &amp;nbsp; addr = memblock_find_in_range(0, 1ULL&amp;lt;&amp;lt;32, aper_size, 512ULL&amp;lt;&amp;lt;21);&lt;br /&gt;&lt;br /&gt;What are all the magic numbers, and why would 0x80000000 be special?&lt;br /&gt;&lt;br /&gt;Why don't we write code that just works?&lt;br /&gt;&lt;br /&gt;Or absent a "just works" set of patches, why don't we revert to code&lt;br /&gt;that has years of testing?&lt;br /&gt;&lt;br /&gt;This kind of "I broke things, so now I will jiggle things randomly&lt;br /&gt;until they unbreak" is not acceptable.&lt;br /&gt;&lt;br /&gt;Either explain why that fixes a real BUG (and why the magic constants&lt;br /&gt;need to be what they are), or just revert the patch that caused the&lt;br /&gt;problem, and go back to the allocation patters that have years of&lt;br /&gt;experience.&lt;br /&gt;&lt;br /&gt;Guys, we've had this discussion before, in PCI allocation. We don't do&lt;br /&gt;this. We tried switching the PCI region allocations to top-down, and&lt;br /&gt;IT WAS A FAILURE. We reverted it to what we had years of testing with.&lt;br /&gt;&lt;br /&gt;Don't just make random changes. There really are only two acceptable&lt;br /&gt;models of development: "think and analyze" or "years and years of&lt;br /&gt;testing on thousands of machines". Those two really do work.&lt;br /&gt;&lt;br /&gt;                   Linus&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-4950697211318544903?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/4950697211318544903/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/04/escribir-codigo-que-simplemente.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4950697211318544903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4950697211318544903'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/04/escribir-codigo-que-simplemente.html' title='Escribir codigo que, simplemente funcione'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-545331460384607224</id><published>2011-03-23T16:16:00.000-07:00</published><updated>2011-03-23T16:17:31.570-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Intención del código (o, me descargo un poco)</title><content type='html'>Este post, probablemente, parezca una pelotudez. Probablemente alguien diga "esto es obvio"o "no me digas", pero, es que lo he visto tantas veces, me he topado con esto tanto, que empiezo a creer que no es &lt;b&gt;tan &lt;/b&gt;obvio.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Me ha tocado leer/mantener código que no fue escrito por mi. Es decir, meterme a tocar, mejorar, fixear, código ajeno en vez de escribirlo desde cero. En esos casos, me he topado con cosas como esta (*):&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Function Foobar(n){&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; n = n * 3 &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return n&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El tema es el siguiente, dada una función escrita en algún lenguaje de programación, puedo saber si está bien?&lt;br /&gt;&lt;br /&gt;Esa función, es correcta o no es correcta?? Digamos, desde el punto de vista de la sintaxis (suponiendo que eso es la sintaxis de algún lenguaje) puede no fallar. Pero, está bien? Cómo se que intención tenía? Qué se supone que hace? O que esperar? Por qué nos cuesta tanto documentar eso en comentarios? &lt;br /&gt;&lt;br /&gt;En casos peores, he visto cosas como:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Function Foobar(n){ //Devuelve n multiplicado por 3&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; n = n * 3 &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return n&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Donde, no solo sigo teniendo el problema de no saber si está bien o no, sino que, además, me dice algo que es obvio.&lt;br /&gt;&lt;br /&gt;Entonces, queridos amigos programadores, cuando comentemos procuremos poner la intención de ese cacho de código. NO quiero que me digan lo que puedo ver leyendo el código, sino, justamente, lo que se les pasó por la cabecita cuando lo escribieron. Por qué? Porque es mucho más sencillo arreglarla (si fuera necesario) sabiendo que se supone que hace, que tener que deducirlo teniendo en cuenta quien la llama, por ejemplo. Además, si la función estuviera mal, es más complejo deducir que en realidad, quisieron poner, no se, n = n + 3, por decir algo, aumentando mis posibilidades de romper algo que estaba bien, pero que parecía mal.&lt;br /&gt;&lt;br /&gt;Gracias&lt;br /&gt;&lt;br /&gt;(*) Aclaración para los despistados, esa función es solo ilustrativa, no es un caso real =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-545331460384607224?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/545331460384607224/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/03/intencion-del-codigo-o-me-descargo-un.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/545331460384607224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/545331460384607224'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/03/intencion-del-codigo-o-me-descargo-un.html' title='Intención del código (o, me descargo un poco)'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-6696790455410103911</id><published>2011-03-10T15:44:00.000-08:00</published><updated>2011-05-30T18:54:23.612-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Magia Negra: Un ActiveRecord en pytnon</title><content type='html'>&lt;strike&gt;Pensando &lt;a href="http://code.google.com/p/codmacs/"&gt;en un proyecto cuasi muerto&lt;/a&gt; que tengo, me vino a la mente que, aprovechando el código ya escrito y con muy poco esfuerzo/código más, puedo armar un framework que implemente &lt;a href="http://en.wikipedia.org/wiki/Active_record_pattern"&gt;ActiveRecord&lt;/a&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;Y &lt;a href="http://code.google.com/p/blackmagic/"&gt;acá&lt;/a&gt; está (solo está creado el espacio y subido un commit inicial) pero promete.&lt;/strike&gt;&lt;br /&gt;&lt;strike&gt;El nombre, inspirado en el efecto mágico y, un tributo a las viejas bandas del metal quizá?&lt;/strike&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Status: Muerto por falta de interés. &lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-6696790455410103911?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/6696790455410103911/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/03/magia-negra-un-activerecord-en-pytnon.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6696790455410103911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6696790455410103911'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/03/magia-negra-un-activerecord-en-pytnon.html' title='Magia Negra: Un ActiveRecord en pytnon'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-2160824726939415420</id><published>2011-01-31T13:06:00.001-08:00</published><updated>2011-01-31T13:09:18.140-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Quick Hack</title><content type='html'>Tenia que resolver lo siguiente:&lt;br /&gt;&lt;br /&gt;Una macbook que baja mails desde un servidor propio (con un Kerio en la empresa)&lt;br /&gt;&lt;br /&gt;Un router que no soporta loopback&lt;br /&gt;&lt;br /&gt;Entonces, cuando la mac esta fuera de la empresa, se podia hacer referencia, en el cliente de mail, al DNS, que llamaremos empresa.dyndns.ws (para no revelar datos reales)&lt;br /&gt;Pero, dentro de la empresa, el DNS empresa.dyndns.ws, simplemente no funciona.&lt;br /&gt;Habia que resolverlo, y rapido[0].&lt;br /&gt;&lt;br /&gt;Python al rescate!&lt;br /&gt;&lt;title&gt;Colorized Source Code&lt;/title&gt;&lt;br /&gt;&lt;style&gt;&lt;!-- .cch1{background:#FFFFCC;} --&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;He aquí el script (es feo, muy feo, pero salio rapidisimo y con fritas!)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: red;"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; os&lt;br /&gt;from subprocess &lt;span style="color: red;"&gt;&lt;b&gt;import&lt;/b&gt;&lt;/span&gt; Popen&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; PIPE&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; STDOUT&lt;br /&gt;esta &lt;span style="color: blue;"&gt;=&lt;/span&gt; False&lt;br /&gt;p &lt;span style="color: blue;"&gt;=&lt;/span&gt; Popen&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;[&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'ping'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'-c'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'1'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'server'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;]&lt;/b&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; stdout &lt;span style="color: blue;"&gt;=&lt;/span&gt; PIPE&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;output &lt;span style="color: blue;"&gt;=&lt;/span&gt; p&lt;span style="color: blue;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;stdout&lt;span style="color: blue;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;read&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;p&lt;span style="color: blue;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;wait&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; &lt;span style="color: purple;"&gt;'bytes from'&lt;/span&gt; &lt;span style="color: red;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; output&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;br /&gt;    ok &lt;span style="color: blue;"&gt;=&lt;/span&gt; True&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;br /&gt;    ok &lt;span style="color: blue;"&gt;=&lt;/span&gt; False&lt;br /&gt;&lt;br /&gt;f &lt;span style="color: blue;"&gt;=&lt;/span&gt; open&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'/etc/hosts'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: purple;"&gt;'r'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;f2 &lt;span style="color: blue;"&gt;=&lt;/span&gt; open&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'/etc/hosts2'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt; &lt;span style="color: purple;"&gt;'w'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; i &lt;span style="color: red;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; f&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: red;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; &lt;span style="color: purple;"&gt;'empresa.dyndns'&lt;/span&gt; &lt;span style="color: red;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; i&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;br /&gt;        esta &lt;span style="color: blue;"&gt;=&lt;/span&gt; True&lt;br /&gt;        &lt;span style="color: red;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; ok&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;br /&gt;            f2.write&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;i&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;   &lt;br /&gt;    &lt;span style="color: red;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;br /&gt;        f2.write&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;i&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;      &lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; not esta and ok&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;br /&gt;    f2.write&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'192.168.0.1    empresa.dyndns.ws \n'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;	&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;f&lt;span style="color: blue;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;close&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;f2.close&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;os&lt;span style="color: blue;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;remove&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'/etc/hosts'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;os&lt;span style="color: blue;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;rename&lt;span style="color: blue;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'/etc/hosts2'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;,&lt;/b&gt;&lt;/span&gt;&lt;span style="color: purple;"&gt;'/etc/hosts'&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Basicamente, hace un ping al nombre del servidor donde esta el servidor de mail (el Kerio) con el nombre local, 'server'. Si esta, estoy en le empresa, sino, no.&lt;br /&gt;Entonces, basado en eso, toco el archivo hots (gracias Apple por hacer su OS un UNIX) y listo[1]. Se agrego al inicio y se corre con permisos de root y logramos lo que esta persona queria, una solucion rapida y magica.&lt;br /&gt;&lt;br /&gt;No estoy orgulloso del script en si, sino, del poder de python para hacer estos quick hacks, que te salvan la papas. =)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[0] Dicen que rapido y bien, es imposible.&lt;br /&gt;[1] Pero, como decia TuSam, puede fallar. Por ejemplo, si justo hay otro 'server', donde esta esta persona (shit happens)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-2160824726939415420?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/2160824726939415420/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/01/quick-hack.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2160824726939415420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2160824726939415420'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/01/quick-hack.html' title='Quick Hack'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-7776889442981632195</id><published>2011-01-17T14:26:00.000-08:00</published><updated>2011-01-17T14:26:06.121-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Status: RESOLVED FIXED</title><content type='html'>Mi primer bug en mozilla! (si, es trivial pero, me pone contento igual!)&lt;br /&gt;&lt;br /&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=606824"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=606824&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hg.mozilla.org/mozilla-central/rev/a5092e4ae324"&gt;http://hg.mozilla.org/mozilla-central/rev/a5092e4ae324&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Solo puedo agregar lo siguiente:&lt;br /&gt;&lt;br /&gt;=)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-7776889442981632195?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/7776889442981632195/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2011/01/status-resolved-fixed.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7776889442981632195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7776889442981632195'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2011/01/status-resolved-fixed.html' title='Status: RESOLVED FIXED'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-4007600983618397054</id><published>2010-12-06T16:16:00.000-08:00</published><updated>2010-12-06T16:20:50.655-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Simplemente Firefox...</title><content type='html'>Por &lt;a href="http://firefoxlive.mozilla.org/"&gt;este&lt;/a&gt; tipo de cosas (y por muchisimas otras) es que me gusta firefox.&lt;br /&gt;&lt;br /&gt;No hay mucho más que comentar, hay que ver el link =)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/f/fe/Ailurus_fulgens_RoterPanda_LesserPanda.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://upload.wikimedia.org/wikipedia/commons/f/fe/Ailurus_fulgens_RoterPanda_LesserPanda.jpg" width="262" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-4007600983618397054?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/4007600983618397054/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2010/12/simplemente-firefox.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4007600983618397054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4007600983618397054'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2010/12/simplemente-firefox.html' title='Simplemente Firefox...'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8551182749734280697</id><published>2010-11-06T15:01:00.000-07:00</published><updated>2010-11-06T15:06:37.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Programar: Ensuciarse hace bien</title><content type='html'>A quienes hayan podido ver en &lt;a href="http://en.wikipedia.org/wiki/Television"&gt;"la caja boba"&lt;/a&gt; la publicidad de una conocida marca de productos para lavar la ropa, les sonará esta frase con la que titulo esta entrada:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Ensuciarse hace bien"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Lo que quizá no se entienda es por qué la adopto, o qué puede tener que ver con la programación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;La historia &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Brevemente, y para no aburrir a quienes ya conocen el aviso, trata de unos niños jugando, ensuciandose y de cómo eso es beneficioso para estos chiquitos. Obviamente, el ensuciarse beneficia a la marca, pero ese es un tema aparte. Lo que me interesa es el concepto:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #cccccc;"&gt;jugar + ensuciarse + cansarse + ensuciarse de nuevo = beneficio&lt;/div&gt;&lt;br /&gt;Esto es muy cierto y, creo que se aplica a la programación. No es que me haya dado cuenta de golpe, pero, algo que experimenté hace unas horas, hizo que me inspire y escriba esta entrada. &lt;br /&gt;&lt;br /&gt;Estaba (y estoy) escribiendo una mini-nano-&lt;a href="http://en.wikipedia.org/wiki/Integrated_development_environment"&gt;IDE&lt;/a&gt; en &lt;a href="http://www.python.org/"&gt;python&lt;/a&gt;+&lt;a href="http://www.riverbankcomputing.co.uk/software/pyqt/download"&gt;pyqt4&lt;/a&gt;. Lo que hace es levantar una ventanita gráfica muy simple con un editor de texto con highlighter de sintaxis de python y, lo más interesante, quería que tuviera un &lt;a href="http://en.wikipedia.org/wiki/Debugger"&gt;debugger&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Entonces, me puse a leer. ¿Cómo demonios hago un debugger? Obviamente, nunca pensé escribirlo desde cero, no es la idea reinventar la rueda (más allá de que sería interesante) por lo que, caí en lo más básico que se me ocurrió, &lt;a href="http://docs.python.org/library/pdb.html"&gt;Pdb&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Y acá empieza todo el tema del juego: comencé a jugar con la clase, probé como funcionaba (hacía mucho que no la usaba y no recordaba los comandos) y estuve así un rato. Después, leí un poco de la documentación como para ser un poco más prolijo.&lt;br /&gt;&lt;br /&gt;Luego, empecé a escribir códigos de prueba, donde heredé la clase, y seguí jugando un poco más.&lt;br /&gt;&lt;br /&gt;Luego, usando mi editor de texto favorito (¿cuál será?) abrí el módulo pdb.py, y me lo puse a mirar. Ahi noté que, la clase Pdb heredaba otras dos clases: cmd y, la más interesante, &lt;a href="http://docs.python.org/library/bdb.html"&gt;Bdb&lt;/a&gt; que, no era otra cosa que un framework para implementar debuggers!! Así que abrí también el módulo bdb.py y me puse a leerlo, junto con un poco de la documentación.&lt;br /&gt;&lt;br /&gt;Pero, estaba avanzando lento, quería realmente zambullirme de lleno, quería experimentar con el código un poco más, involucrarma más, en fin, quería &lt;i&gt;ensuciarme.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Así que: ¿que hice? Cómo tampoco la idea es romper (sobre todo, bibliotecas estandard) me copié el módulo como pdd.py a la carpeta de mis scripts y, ahi, con una copia del pdb.py original, me arremangué y metí los dos brazos de lleno en el barro y la mugre.&lt;br /&gt;Y me puse a chapotear: Agregué prints con estados (que forma moderna de debuggear, ¿no?) cambié cosas, saqué otras cosas más, agregué atributos y métodos nuevos a la clase, sobreescribí algunos métodos originales, en fin, toqué el código como si fuese mío y, en cierto sentido, lo hice mío, me sumergí y salí, tiempo después, escupiendo código python (es sólo una metáfora) y, lo más importante, terminé de definir cómo voy a hacer el debugger usando, la clase original pdb (y no su versión diezmada por mí)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Moraleja&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y, luego de todo esto, ¿cuál es la moraleja?&lt;br /&gt;La moraleja es que, cuando uno quiere entender algo que, como en este caso, es código ajeno y es un tema nuevo para uno, no alcanza con leer el código y la documentación. &lt;br /&gt;Uno tiene que, apropiarse del código, meterle mano, cambiarle cosas, &lt;i&gt;ensuciarse&lt;/i&gt; de él. Haciendo esto, uno logra entender de forma más profunda, e incluso, más rápida, el código ajeno.&lt;br /&gt;&lt;br /&gt;Así que, la próxima vez que quieran entender código ajeno, ya se una biblioteca estandar, una biblioteca de terceros o, simplemente, el módulo que escribió tu compañero de trabajo, no tengas miedo de mirar el código, ejecutarlo, tocarlo (haciendo una copia, claro) porque, como dije al principio:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=SxUUXFE9cEU"&gt;&lt;i&gt;"Ensuciarse hace bien"&lt;/i&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8551182749734280697?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8551182749734280697/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2010/11/programar-ensuciarse-hace-bien.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8551182749734280697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8551182749734280697'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2010/11/programar-ensuciarse-hace-bien.html' title='Programar: Ensuciarse hace bien'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-550421024285387600</id><published>2010-09-20T18:42:00.000-07:00</published><updated>2010-09-20T18:42:25.851-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Client side Python</title><content type='html'>El pasado sábado 18-09, estuve en la &lt;a href="http://www.mozilla-ar.org/2010/09/sfd-mozilla-%E2%80%93-argentina/"&gt;Mozilla SFD &lt;/a&gt;y, en una de las charlas me enteré de un proyecto llamado DrumBeat.&lt;br /&gt;&lt;br /&gt;Es realmente interesante: Basandose en el objetivo de Mozilla de mantener y ayudar a que la web sea cada vez más abierta, lo que proponen es un sitio donde se agrupan proyectos, ideas, sobre cosas que ayuden a que esto pase, es decir, a que la web sea cada vez más abierta.&lt;br /&gt;Pueden ser proyectos de todo tipo, no tiene que ser necesariamente relacionado con programación. &lt;br /&gt;La idea detrás de DrumBeat es conseguir apoyo y financiación de estos proyectos, con el fin de, claro está, concretarlos.&lt;br /&gt;&lt;br /&gt;En fin, el día de la charla hubo un &lt;a href="http://en.wikipedia.org/wiki/Brainstorming"&gt;brainstorming&lt;/a&gt; y, me quedó el tema dando vueltas en la cabeza. En el camino de vuelta, se me ocurrió algo:&lt;br /&gt;&lt;br /&gt;Un Python, Client-Side. =)&lt;br /&gt;&lt;br /&gt;La idea es, para el desarrollo web, lo que es Server-Side, uno tiene alternativas, entre ellas, python, php, perl, ruby, etc. Pero, para el lado del cliente no hay tantas. Basicamente, javascript y, luego empezar a dar vueltas por soluciones oscuras, plugin-dependientes, etc. &lt;br /&gt;&lt;br /&gt;Qué bueno sería tener más lenguajes disponibles para los scripts del lado del cliente, no? Y no sería genial arrancar por (a mi entender) el lenguaje más cómodo, amigable, divertido y, a la vez, poderoso del universo???&lt;br /&gt;Así que armé el proyectito: &lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.drumbeat.org/project/client-side-python"&gt;Client-Side Python en DrumBeat&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Creo que la idea en si, no es mala... Obviamente, lo que necesita es notoriedad!! Por lo que, unos votos no le vendrían nada mal!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-550421024285387600?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/550421024285387600/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2010/09/client-side-python.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/550421024285387600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/550421024285387600'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2010/09/client-side-python.html' title='Client side Python'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-4949269760671629903</id><published>2010-09-13T19:33:00.000-07:00</published><updated>2010-09-13T19:41:24.230-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Por qué la gente no usa Linux?</title><content type='html'>Detrás de la pregunta que es, más que nada, "marketinera", hay algo que me hizo meditar un poco (milagro!)&lt;br /&gt;&lt;br /&gt;Cuantas veces hemos oído o leído a los típicos &lt;i&gt;linux-fan-boys&lt;/i&gt; decir&lt;br /&gt;&lt;b&gt;&lt;i&gt;"Usen linux! El que no lo hace es estúpido!"&lt;/i&gt;&lt;/b&gt; y, por otro lado, los &lt;i&gt;windows-fan-boys&lt;/i&gt; responden &lt;i&gt;&lt;b&gt;"Linux es dificil, queremos que todo sea amigable"&lt;/b&gt;&lt;/i&gt; y millares de explicaciones similares. Líneas y líneas de mails, foros, etc.&lt;br /&gt;&lt;br /&gt;Lo que nadie dice, o al menos, nunca leí ni oí es algo más simple. Algo, tan evidente, que parece escapar a la vista de hasta los más despabilados. Y es lo siguiente:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;La gente (toda) es un animal de costumbre.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Parece una frase hecha, es verdad. Pues lo es. Y es cierta, lamentablemente o no.&lt;br /&gt;&lt;br /&gt;Windows, se malo o bueno, es lo que se mantuvo. Es lo que hay.&lt;br /&gt;No voy a hacer de esto una clase de historia, pero, más o menos, es sabido como prevaleció por sobre otros sistemas operativos. Cómo lo hizo? En su momento fue una suma de suerte, olfato para los negocios, manejos oscuros y oportunismo. Así fue que, para bien o para mal, cuando mucha gente vió por vez primera una computadora (me incluyo) ya venía con windows. Windows era lo que no se cuestionaba. &lt;b&gt;Ya estaba ahí.&amp;nbsp; &lt;/b&gt;&lt;br /&gt;Al desconocer uno no cuestiona.&lt;br /&gt;&lt;br /&gt;Hardware + Windows = Computadora.&lt;br /&gt;&lt;br /&gt;Así me lo presentaron, a mi y a millones. Como un televisor, una radio o una video casettera. Casi nadie se anda preguntando qué sistema operativo tiene una TV, o basado en qué está. Simplemente está ahi y es el medio para que usemos el aparato en sí. Así ve a windows el usuario normal.&lt;br /&gt;&lt;br /&gt;Desde que fui al colegio (en mi casa no tuve computadora sino hasta ser maś grande) nunca me pregunté: Por qué windows? Ni siquiera me puse a pensar si existiría algo más. En ese momento, Linux, por ejemplo, era mucho menos popular que hoy en día. Nunca nadie me lo comentó tampoco (mis profesoras de computación eran casi amebas). Pensemos en que, en esa época, la computadora era, un lujo que no todos podían darse. Internet era solo para nerds raros que conectaban el teléfono para navegar entre las BBS. La gente no sabía que es Linux (hoy, un alto % por lo menos sabe qué es)&lt;br /&gt;No fue hasta tener una pc que me interesó el tema y, leyendo mucho y interesandome por temas de seguridad y, los mal llamados &lt;i&gt;hackers[0]&lt;/i&gt;, fue leí que existía algo llamado Linux y decidí instalarlo.&lt;br /&gt;&lt;br /&gt;Ahora bien, el usuario normal, es curioso por los temas de computación? &lt;b&gt;NO&lt;/b&gt;. Rotundamente, no. El usuario común usa la pc porque le sirve para algo. O para trabajar, o para entretenerse, o para estudiar. Pero nada más. Esto es algo que, la gente que estamos en computación, a veces olvidamos. Al usuario estandar &lt;b&gt;NO&lt;/b&gt; le interesa como funcionan las cosas. Sólo que funcionen. Al usuario normal no le gusta pasar horas en la pc y resolver problemas. Si fuera por él, usaria 2 o 3 programas y nunca cambiaría nada. Y acá aparece la resistencia el cambio.&lt;br /&gt;&lt;br /&gt;El usuario normal no es como nosotros (los informáticos) no les importa instalar la nueva versión de XXYY, ni configurarla para que haga N, ni entender como funciona, ni los detrás de escena, ni si hay tal o cuál distro de linux, nada.&lt;br /&gt;Mientras cualquiera de nosotros pasaría (y con gusto) horas configurando nuestro sistema, instalando X dependencia, compilando, programando, etc, al usuario esto le parecería, simplemente, un problema, una molestia.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ya adivinan por qué la gente no usa Linux?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;La gente (usuario estandar) no usa Linux porque no quiere algo distinto a lo que está acostumbrada. No le importa que funcione mejor o si es gratis. Quiere que sea como se acostumbró a usar. Quiere que el messenger tenga al tipito verde y el office sea el office y no el OpenOffice, por más que haga exactamente lo mismo o mejor, no le interesa. Y no es que sea idiota. No. Es que quiere el mismo paradigma, desea la sensación de "esto lo conozco". El, "esto es nuevo" lo aterra, y repito, &lt;b&gt;NO&lt;/b&gt; es que sea un idiota, es la naturaleza humana!! Todos somos así.&lt;br /&gt;&lt;br /&gt;Muchos creen que la gente usa windows porque windows hace algo mejor que Linux. Esto es, cuando menos una opinión desinformada. Alguien que haya usado (y use) ambos sistemas operativos, no puede &lt;b&gt;NUNCA&lt;/b&gt; pensar algo así. Es naive, cuando menos. Lo único que le brinda windows a la gente es la sensación de seguridad. Seguridad, no porque sea más "inviolable" sino, la seguridad de la familiaridad.&amp;nbsp; &lt;b&gt;Más vale malo conocido&lt;/b&gt;, dicen, no?&lt;br /&gt;Otros dicen que la gente no usa Linux porque es dificil. Lo mismo que lo anterior, nadie que haya usado o instalado una distro moderna, puede opinar eso. Dicho argumento es de, por lo menos, 10 años atrás cuando, debo reconocer, Linux era un poco para usuario más avanzados. &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Hoy en día esto no es así[1]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Yo soy un usuario de Linux, no soy un fanático pero, estoy de acuerdo con la filosofía del OpenSource[2]. La principal razón por la cuál yo instalé Linux fue debido a mi curiosidad. Luego, al instalarlo noté mejoras en ciertos aspecto como, más comodidad y rendimiento en herramientas que yo uso como programador. Luego vi que ya no necesitaba un antivirus y que, todo lo que pasaba en el sistema podía ser tan transparente o tan "verboso" como yo quisiera. Pero eso ya es mi historia personal...&lt;br /&gt;&lt;br /&gt;No estoy exponiendo razones de por qué Linux es o no mejor. Sino que, no hay razones (reales técnicas) para no usarlo más que el simple miedo al cambio.&lt;br /&gt;-----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;[0] hackers, entendido como "piratas informáticos" y sólo eso, es algo que hay que agradecerle al periodismo, mayormente. Obviamente, esto no es correcto, hay &lt;a href="http://en.wikipedia.org/wiki/Hacker"&gt;mejores definiciones.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://www.youtube.com/watch?v=zVmpTQW_fP8"&gt;http://www.youtube.com/watch?v=zVmpTQW_fP8&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.guia-ubuntu.org/index.php?title=Instalaci%C3%B3n_est%C3%A1ndar"&gt;http://www.guia-ubuntu.org/index.php?title=Instalaci%C3%B3n_est%C3%A1ndar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[2] &lt;a href="http://en.wikipedia.org/wiki/Open_source"&gt;&lt;span id="search" style="visibility: visible;"&gt;&lt;span class="f"&gt;&lt;cite&gt;en.wikipedia.org/wiki/&lt;b&gt;Open&lt;/b&gt;_&lt;b&gt;source&lt;/b&gt;&lt;/cite&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-4949269760671629903?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/4949269760671629903/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2010/09/por-que-la-gente-no-usa-linux.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4949269760671629903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4949269760671629903'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2010/09/por-que-la-gente-no-usa-linux.html' title='Por qué la gente no usa Linux?'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-5402000378154093604</id><published>2010-08-21T15:48:00.000-07:00</published><updated>2010-08-21T15:48:33.590-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='visual basic'/><title type='text'>VbAutodoc: Auto documentando VB</title><content type='html'>Qué lindo sería contar con una herramienta que, lea el código fuente (en este caso en VB) y me arme un archivo de documentación sobre las funciones y sub rutinas (preferentemente en html). &lt;br /&gt;Cómo soy programador y me gusta python =) decidí hacerla. La bautizé vbautodoc (muy original) y está disponible una muy &lt;strike&gt;precoz&lt;/strike&gt; temprana versión. &lt;br /&gt;&lt;br /&gt;Próximamente, voy a mejorar aspectos en cómo se construyó, por ejemplo, el pedazo de html que uso como base, lo metí dentro del código, y sólo funciona para documentar VB, cuando, si se parametriza podría servir para cualquie lenguaje.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/vbautodoc/"&gt;Web del proyecto&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/vbautodoc/downloads/list"&gt;Descargas&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-5402000378154093604?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/5402000378154093604/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2010/08/vbautodoc-auto-documentando-vb.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5402000378154093604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5402000378154093604'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2010/08/vbautodoc-auto-documentando-vb.html' title='VbAutodoc: Auto documentando VB'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-2561025274811783926</id><published>2010-06-19T14:24:00.000-07:00</published><updated>2010-06-19T14:25:10.764-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Top 5 tips para desarrollar mejores aplicaciones</title><content type='html'>&amp;nbsp;Muchas veces me pongo a pensar en retrospectiva, acerca de cosas que se han hecho bien y cosas que se han hecho mal. Aquí escribo un resumen de las principales cosas que recomiendo hacer para ser un programador más feliz.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1- El usuario no tiene tiempo, ni quiere leer.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Olvidense del RTFM. Nadie lo lee. Hay que imaginarse que el usuario está inmerso en un caos tremendo, teléfonos sonando, gente, alarmas, etc. Lo que menos quisiera es estar lidiando con carteles del tipo "está seguro que desea cerrar etc", o, con aplicaciones oscuras que, si bien hace lo que se debe, tienen muchos botones, radio button y demás, y que, ni el mismo desarrollador entiende sin mirar el código.&lt;br /&gt;Por eso, las aplicaciones tienen que ser intuitivas, se tienen que "auto-explicar". Lo mismo se aplica para los carteles y pop-ups que requieren una decisión del usuario. Si no hay más remedio que poner un cartel, que sea corto y puntal. Por ejemplo:&lt;br /&gt;&lt;br /&gt;¿Está seguro que desea cerrar la aplicación? &lt;br /&gt;[si]  [no] &lt;br /&gt;&lt;br /&gt;Cuando se podría:&lt;br /&gt;&lt;br /&gt;¿Salir? &lt;br /&gt;[si]  [no] &lt;br /&gt;&lt;br /&gt;Mucho más corto y al pie. &lt;br /&gt;&lt;br /&gt;Por último, recuerden la página de Google, un cuadro de texto y un botón. ¿Qué mas?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2- Refactorizar vs From Scratch.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;No siempre es bueno reescribir todo, ni tampoco siempre lo es reusar. Hay que usar esto de forma inteligente. Por un lado el código viejo no es necesariamente malo o confuso. Hay que tener en cuenta que, por un lado, leer código es más dificil que escribirlo (por eso siempre es tentador el reescribir todo) y por otro, el código viejo es, muchas veces, un código ya testeado, con bugs correjidos, en fin, es tiempo de trabajo. Reescribir todo desde cero significaría, tirar todo eso a la basura.&lt;br /&gt;Lo ideal es un balance entre, reescribir las partes "mal escritas" tratando de reusar lo más posible. Es significativamente menos tiempo que escribir todo desde cero, sobre todo, si tenemos en cuenta que, el código desde cero va a tener bugs nuevos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3- Pensar en grande.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Todo buen programa tiene que empezar cómo algo simple, pero, pensado a lo grande. Esto es, pensar que en un futuro, el programa puede crecer. Por eso, hay que escribir todo de forma flexible, aunque lleve más tiempo ahora, en un futuro va a ser más facil expandir y mantener. Mucho se ha hablado de la &lt;a href="http://en.wikipedia.org/wiki/Technical_debt"&gt;deuda técnica&lt;/a&gt;.Esto es un poco lo que trato de comunicar aquí: El tiempo que se ahorra escribiendo código chapucero ahora, lo pagás mañana.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4- Keep it simple.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Muchas aplicaciones tienen varias faces de desarrollo. Esto es, se reune con el cliente, se diseña, se programa, se vuelve a ver con el cliente, se corrijen cosas, se agregan otras. Entonces, es de esperar que el cliente no sea muy lógico, que haga cambios sobre la marcha y que no tenga en cuenta el diseño general del sistema. Para eso nos paga a nosotros ¿Verdad? Por eso, siempre hay que hacer limpieza del código y del programa. Lo que no se usa, fuera (por lo menos, de la vista) Esto ayuda mucho a que se cumpla el punto 1.&lt;br /&gt;Si la aplicación en si, estaba pensada con otro espiritu y luego, se modificó, tratar de quitar todo lo que sobre. A veces más es menos. Muchos botones y radio button, checks, etc, para mantener un poco la idea anterior y que conviva con la idea nueva genera más problemas que soluciones. Use it or lose it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5- Testing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Esto es obvio, pero, no se respeta mucho. El cliente no es un beta tester. Si se programa con la idea "que tenga bugs, total lo corrijo rápido" se arriesga, primero, problemas en datos que haya que resolver (esto es tiempo) y, segundo, da la idea de que el programa anda mal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-2561025274811783926?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/2561025274811783926/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2010/06/top-n-tips-para-desarrollar-mejores.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2561025274811783926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2561025274811783926'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2010/06/top-n-tips-para-desarrollar-mejores.html' title='Top 5 tips para desarrollar mejores aplicaciones'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-2533812973871200515</id><published>2009-12-13T18:17:00.000-08:00</published><updated>2009-12-13T18:17:59.578-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Octopys: Octopus para linux</title><content type='html'>Algún día prometí que iba a hacer una versión de &lt;a href="http://www.octopusproject.tk/"&gt;octopus&lt;/a&gt; para linux, y &lt;a href="http://code.google.com/p/octopys/"&gt;cumplí&lt;/a&gt;. Por lo menos, ya hace algo, habrá que pulirlo un poco, lógicamente.&lt;br /&gt;&lt;br /&gt;Está escrito en Python, con una GUI en Qt y lo pueden descargar desde &lt;a href="http://octopys.googlecode.com/files/octopys.zip"&gt;acá.&lt;/a&gt;&lt;br /&gt;O, pueden mirar el código directamente gracias a pastebin:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/f21db77f"&gt;main.py&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/f69f8b152"&gt;oct.ui&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/f7e629b16"&gt;octo.py&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-2533812973871200515?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/2533812973871200515/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/12/octopys-octopus-para-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2533812973871200515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2533812973871200515'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/12/octopys-octopus-para-linux.html' title='Octopys: Octopus para linux'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-5314593356493775053</id><published>2009-12-12T08:01:00.000-08:00</published><updated>2009-12-12T08:06:37.277-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>El funesto caso de Is y ==</title><content type='html'>Hace varios días (creo que pasaron meses) inicié una discusión en la lista de mail (creo yo, más famosa y con más gente que sabe en serio) de python. &lt;a href="http://python.org.ar/pyar/"&gt;PyAr&lt;/a&gt;.&lt;br /&gt;La cosa empezó por un artículo que leo, donde se mostraba lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; a = 10&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; b = 10&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; a == b&lt;br /&gt;True&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; a is b &lt;br /&gt;True&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Luego&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;gt;&amp;gt; a = 500&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; b = 500&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; a == b&lt;br /&gt;True&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; a is b&lt;br /&gt;False&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Claro. Al ser relativamente nuevo en python, ver esto me sorprendió, por lo que decido preguntar de que se trataba en la lista.&lt;br /&gt;Mi pregunta no fue del todo clara, (y acepto 100% la culpa) por lo que se entendió que mi sorpresa venia por una confusión de conceptos y que, lo que no sabía era la diferencia entre "is" y "==". &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lo que pasó:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;En realidad, yo posteo todo el ejemplo (que incluye "is" y "==") para dar un contexto, pero, en si, mi sorpresa venía SOLAMENTE por ver como el operador "is" se comportaba &lt;b&gt;aparentemente&lt;/b&gt; distinto en dos situaciones &lt;b&gt;aparentemente&lt;/b&gt; iguales.&lt;br /&gt;Noten el uso de &lt;b&gt;aparentemente&lt;/b&gt;. Esto es:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;entero_valor_x&gt; [entero_valor_x] is &lt;/entero_valor_x&gt; [entero_valor_x]&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;True&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;entero_valor_x&gt; [entero_valor_Y] is &lt;/entero_valor_x&gt; [entero_valor_Y]&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Olvidemos que comparar enteros con "is" es una chanchada, es incorrecto y no tiene mucho sentido. Más allá de eso, no me parecía (noten que uso el tiempo pasado) que comparar enteros (del mismo valor numérico) con "is" resultara True en algunos casos y False en otros. No veia el por qué, y me parecía feo (noten que sigo usando el pasado).&lt;br /&gt;&lt;br /&gt;Pero claro, como se interpretó mal mi pregunta, todo se enfocó a explicarme que "is" no era "==", lo cuál, no era &lt;b&gt;PARA NADA&lt;/b&gt; el punto del topic.&lt;br /&gt;Claro, fue mi culpa por no ser claro en una primera instancia. Luego, traté de remediarlo, pero ya era tarde y... el resto es &lt;a href="http://mx.grulic.org.ar/lurker/thread/20091105.152338.41a67519.es.html#20091105.152338.41a67519"&gt;historia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;La explicación:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;La explicación la había encontrado muy al comienzo del thread. Posteo una que me gustó y es sencilla:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;Autor: Facundo Batista&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;Fecha: 2009-11-04 12:192009-11-04 15:19 -300UTC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;A: pyar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;Asunto: Re: [pyar] WTF?&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #666666;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #666666;"&gt;a apunta a un 3 en memoria, y b apunta al mismo 3 en memoria. Python &lt;br /&gt;no creó dos objetos "3", sino que usó el mismo para los nombres a y b. &lt;br /&gt;&lt;/div&gt;&lt;div style="color: #666666;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #666666;"&gt;a apunta a un 500 en memoria, y b apunta a otro 500 en memoria. Python &lt;br /&gt;sí creó dos objetos "500". &lt;br /&gt;&lt;br /&gt;La pregunta es... ¿por qué la diferencia de comportamiento?  Como bien &lt;br /&gt;dijo Nati arriba, Python precachea (o tiene internalizado) algunos &lt;br /&gt;enteros chicos, porque sabe que siempre se van a usar. &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Esa es sólo una, varios usuarios lo explicaron muy bien también. =)&lt;br /&gt;Y eso era todo lo que quería escuchar. Una explicación sobre el funcionamiento, en apariencia, raro del "is" comparando enteros. No que me digan que usar "is" en ese caso estaba mal (cosa que sabía) ni que "is" no es "==" (cosa que sabía), y un largo etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-5314593356493775053?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/5314593356493775053/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/12/el-funesto-caso-de-is-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5314593356493775053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5314593356493775053'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/12/el-funesto-caso-de-is-y.html' title='El funesto caso de Is y =='/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8786712899450425392</id><published>2009-11-18T15:17:00.000-08:00</published><updated>2009-11-18T15:17:53.442-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xkcd'/><title type='text'>P = NP?? So what????</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://imgs.xkcd.com/comics/academia_vs_business.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://imgs.xkcd.com/comics/academia_vs_business.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8786712899450425392?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8786712899450425392/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/11/p-np-so-what.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8786712899450425392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8786712899450425392'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/11/p-np-so-what.html' title='P = NP?? So what????'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-445462152791284776</id><published>2009-11-14T07:49:00.000-08:00</published><updated>2009-11-14T07:54:02.728-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Mi Filosofía de la Programación</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.cs.cmu.edu/%7Edst/DeCSS/Gallery/page3.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://www.cs.cmu.edu/%7Edst/DeCSS/Gallery/page3.gif" width="264" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;a) Los nombres de variables y procedimientos deben ser descriptivos, pero, lo más breves posibles. Lo mismo se aplica a nombres de tablas y campos de las mismas.&lt;br /&gt;&lt;br /&gt;b) Los nombres de variables auxiliares deben ser más cortos aún. Si es una sola letra, mejor.&lt;br /&gt;&lt;br /&gt;c) Todo código que se puede reutilizar se debe reutilizar. &lt;br /&gt;&lt;br /&gt;d) Si vas a escribir 2 veces algo similar, es probable que tengas que separar ese trozo en un procedimiento aparte.&lt;br /&gt;&lt;br /&gt;e) Es preferible que el código se explique a si mismo que escribir código ofuscado y necesitar n líneas de comentarios (salvo que genere una alta considerable en el rendimiento)&lt;br /&gt;&lt;br /&gt;f) El CamelCase da legibilidad, pero no hay que abusar. Lo mismo se aplica al underscore.&lt;br /&gt;&lt;br /&gt;g) Una pequeña línea de comentarios a veces ayuda mucho, pero, no abusar, si quisieramos escribir tanto seríamos escritores.&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;Esa es mi filosofía en cuanto a la programación. Se puede estar de acuerdo o no. Paso a explicar cada punto:&lt;br /&gt;&lt;br /&gt;a) Esto es, no usar nombre del tipo xuiud, xxsw, x45, n45. Pero tampoco utilizar nombres como NrodeCuentaBancariadelCliente. clie, nomb, arti son óptimas para variables o campos, Articulos, Clientes, VeriDeuda para tablas o procedimientos. Sentido común, yo puedo llamar a una funcion VerificarDeudaCliente, pero podría abreviarla con VeriDeuda y se seguiría entendiendo de qué se trata. &lt;br /&gt;&lt;br /&gt;b) Si se va a usar una varible que, por ejemplo, se incrementa en una iteración el nombre tiene que se más corto aún que en a), por ejemplo: i, e, r.&lt;br /&gt;&lt;br /&gt;c) Este punto es bastante obvio. Si ya lo pensaste ayer, reciclalo.&lt;br /&gt;&lt;br /&gt;d) No dudar en separar código en común en una subturina o función pasandoles argumentos.&lt;br /&gt;&lt;br /&gt;e) Eso es algo que siempre discuto. Es preferible escribir código un poco más largo en líneas pero que se entienda fácil a escribir algo ofuscado y necesitar varias líneas de comentarios para explicarlo. Esto es más obvio cuando se escribe algo hoy y se tiene que modificar en 2 o 3 meses. Ese sería el filtro.&lt;br /&gt;La única excepción sería si escribirlo así me diera un rendimiento mayor y notorio.&lt;br /&gt;&lt;br /&gt;f) Usarlos con sentido común. VeriClie o veri_clie, son aceptables. VeRiClIe o ve_ri_cli_e, es abusar.&lt;br /&gt;&lt;br /&gt;g) Relacionado con el punto e). Agregar una línea de comentario para aclarar un poco el panorama está bien. Ahora, líneas y líneas por todos lados demuestra que algo no anda bien, por qué tu código necesita tanta explicación??&lt;br /&gt;Además, si tanto te gusta escribir, capaz deberías considerar la literatura =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-445462152791284776?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/445462152791284776/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/11/mi-filosofia-de-la-programacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/445462152791284776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/445462152791284776'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/11/mi-filosofia-de-la-programacion.html' title='Mi Filosofía de la Programación'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-3253289506219791390</id><published>2009-11-14T07:11:00.000-08:00</published><updated>2009-11-14T07:11:51.843-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xkcd'/><title type='text'>Lego</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://imgs.xkcd.com/comics/lego.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="345" src="http://imgs.xkcd.com/comics/lego.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-3253289506219791390?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/3253289506219791390/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/11/lego.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/3253289506219791390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/3253289506219791390'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/11/lego.html' title='Lego'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-9149681035942757946</id><published>2009-10-15T18:49:00.000-07:00</published><updated>2009-10-22T15:18:07.436-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>CodMACs/Python</title><content type='html'>Finalmente, subí a code.google la primera versión de CodMACs (implementación escrita en python) la pueden bajar desde &lt;a href="http://code.google.com/p/codmacs/"&gt;acá.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El zip tiene clave. La idea es tener un poco de control sobre quién bajó el script. Todavía no estoy utilizando el sistema de control de versiones que provee google.&lt;br /&gt;&lt;br /&gt;Quién desee la clave, me puede enviar un mail a mi dirección hosteada en gmail: martincerdeira.&lt;br /&gt;&lt;br /&gt;Edito:&lt;br /&gt;&lt;br /&gt;Nuevo blog dedicado: &lt;a href="http://www.codmacs.blogspot.com/"&gt;http://www.codmacs.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_4kgjazFo0gM/StzfwnExykI/AAAAAAAAADU/FaNGUNXOrkY/S1600-R/logo2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="84" src="http://2.bp.blogspot.com/_4kgjazFo0gM/StzfwnExykI/AAAAAAAAADU/FaNGUNXOrkY/S1600-R/logo2.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-9149681035942757946?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/9149681035942757946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/10/codmacspython.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/9149681035942757946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/9149681035942757946'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/10/codmacspython.html' title='CodMACs/Python'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4kgjazFo0gM/StzfwnExykI/AAAAAAAAADU/FaNGUNXOrkY/s72-Rc/logo2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-6470267475607841725</id><published>2009-10-08T11:54:00.000-07:00</published><updated>2009-10-08T11:59:22.824-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offtopic'/><title type='text'>Microsoft Security Essentials</title><content type='html'>Principalmente, no uso antivirus por motivos &lt;a href="http://www.wikilearning.com/tutorial/manual_faq_debian-porque_en_linux_no_hay_virus/6515-8"&gt;obvios&lt;/a&gt;, pero lo que más me llamó la atención es (no se si el producto es bueno o no) la foto de la página principal, la cuál, no tiene que ver con nada.&lt;br /&gt;&lt;br /&gt;La pueden ver &lt;a href="http://www.microsoft.com/Security_essentials/"&gt;acá&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y, les dejo una que propongo yo y que, a mi entender, es mucho mejor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4kgjazFo0gM/Ss42NwBAewI/AAAAAAAAACk/Ug00vGncWik/s1600-h/sshot-1.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 158px;" src="http://4.bp.blogspot.com/_4kgjazFo0gM/Ss42NwBAewI/AAAAAAAAACk/Ug00vGncWik/s320/sshot-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5390305413864389378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(click en la imagen para agrandarla)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-6470267475607841725?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/6470267475607841725/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/10/microsoft-security-essentials.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6470267475607841725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6470267475607841725'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/10/microsoft-security-essentials.html' title='Microsoft Security Essentials'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_4kgjazFo0gM/Ss42NwBAewI/AAAAAAAAACk/Ug00vGncWik/s72-c/sshot-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-7624103580590811614</id><published>2009-09-27T17:23:00.001-07:00</published><updated>2009-09-27T17:31:10.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offtopic'/><title type='text'>10 Razones para dejarse una barba gigante.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/header.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 299px;" src="http://www.biggerbetterbeards.org/img/header.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/badass.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/badass.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/women.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/women.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/sledding.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/sledding.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/smarter.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/smarter.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/crisis.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/crisis.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/disguise.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/disguise.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/warm.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/warm.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/sailing.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/sailing.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/hide_stuff.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/hide_stuff.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.biggerbetterbeards.org/img/smoke_signals.jpg"&gt;&lt;img style="cursor: pointer; width: 578px; height: 300px;" src="http://www.biggerbetterbeards.org/img/smoke_signals.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-7624103580590811614?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/7624103580590811614/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/09/10-razones-para-dejarse-una-barba.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7624103580590811614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7624103580590811614'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/09/10-razones-para-dejarse-una-barba.html' title='10 Razones para dejarse una barba gigante.'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-5826972144467358884</id><published>2009-09-23T12:51:00.001-07:00</published><updated>2009-09-23T16:19:04.214-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><category scheme='http://www.blogger.com/atom/ns#' term='offtopic'/><title type='text'>Welcome to HELL</title><content type='html'>&lt;span style="color: rgb(102, 102, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Esto es un mail que me envió la gente de la empresa C****** con respecto a una implementación de un sistema de mensajes mediante xml con una Clínica.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Más abajo, mi respuesta&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;&lt;br /&gt;From: ***&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;To: 'Martín Cerdeira'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Sent: Wednesday, September 23, 2009 11:57 AM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Subject: RV: Implementacion Integracion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Martin, como estas?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Un temita que observo, la fecha origen, que me mandan en los mensajes siempre es unos minutos ANTES de la fecha diferida (que seria la fecha de atención)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Se supone que deberia ser posterior….ya que no se cargan atenciones futuras, se cargan las que se realizaron pasadas de la fecha actual (origen)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Esto lo podrás controlar?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Siempre deberia ser posterior la fecha diferida que la fecha origen.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;Gracias martin!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;De: Martín Cerdeira &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Enviado el: miércoles, 23 de septiembre de 2009 13:00&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Para: *********&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Asunto: Re: Implementacion Integracion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;En el mail me decis que la Fecha Origen la mandan anterior a la Fecha Diferida:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;"Un temita que observo, la fecha origen, que me mandan en los mensajes siempre es unos minutos ANTES de la fecha diferida (que seria la fecha de atención)"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O sea, FechaOrigen &lt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Fecha Diferida.&lt;br /&gt;Después me decís que la FechaDiferida debería ser posterior a la FechaOrigen:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 204);"&gt;"Siempre deberia ser posterior la fecha diferida que la fecha origen"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;O sea, FechaDiferida &gt; FechaOrigen&lt;br /&gt;&lt;br /&gt;Luego, (FechaDiferida &gt; FechaOrigen) = (FechaOrigen &lt; FechaDiferida)&lt;br /&gt;&lt;br /&gt;Esto es exactamente lo mismo pero dicho de distintas formas. Cómo es entonces?&lt;br /&gt;&lt;br /&gt;1) &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;FechaDiferida &gt; FechaOrigen&lt;br /&gt;2) &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;FechaDiferida &lt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;FechaOrigen&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;1 o 2?&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-5826972144467358884?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/5826972144467358884/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/09/welcome-to-hell.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5826972144467358884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/5826972144467358884'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/09/welcome-to-hell.html' title='Welcome to HELL'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-4720843814934803968</id><published>2009-09-14T15:01:00.000-07:00</published><updated>2009-09-16T19:09:03.667-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>AFIP: Chorros Inmundos</title><content type='html'>Dando vueltas en foros y demás me encuentro con que, &lt;a href="http://www.afip.gob.ar/"&gt;AFIP&lt;/a&gt; (conocerán los horripilantes aplicativos de estos muchachos) no contentos con el proveer ese software tan pedorro y solamente disponible para plataformas privativas (windows), además, VIOLAN la licencia GPL.&lt;br /&gt;En las fuentes que cito al pie se puede ver lo que comento.&lt;br /&gt;Reproduzco un mail que se les envió y su posterior respuesta:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;De mi mayor consideración: Me dirijo a Ud., a los efectos de informarle que he tomado conocimiento que en la librería: “filewin.dll en la posición de&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;memoria 18F70 / filewin2.dll en la posición de memoria 19480/ fil14.dll “ en la posición de memoria 18F70, figura el texto: “Copyright (C) 1992-1993 Jean-loup Gailly This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambrid”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;En consecuencia, y en el entendimiento de que se trata de una licencia GPL v2, la que obliga a mantener dentro del ámbito publico, distribuir con código fuente y Texto por separado de esta licencia, entre otras cosas; es que vengo por la presente a solicitarle a Ud. tenga a bien facilitarme un link para la descarga del fuente del aplicativo S.I.Ap y todos sus módulos para el uso y mantenimiento del mismo, así como para la realización de la documentación pertinente.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;A tales efectos, solicito se sirva indicarme los pasos a seguir para poder acceder a dicha información.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;Asimismo, solicito que en los paquetes de descarga del aplicativo y sus módulos introduzca el texto de la Licencia original para el conocimiento de la comunidad.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;Sin más saludo a Ud. muy atentamente.-&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);font-family:arial;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;EDITADO:&lt;br /&gt;Cuando se les pregunta por soporte para linux o por el código fuente responden:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;font-family:arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;A quien corresponda:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;Le informo que los aplicativos de la AFIP están homologados&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;únicamente para funcionar con las plataformas Windows 95. 98 y NT. Y&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;en cuanto al código fuente nos es imposible suministrarselo por razones&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;de seguridad.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;Muchas Gracias&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;Saluda Atte. Mesa de Ayuda&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(153, 153, 153); font-weight: bold;font-family:arial;" &gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;FUENTES:&lt;br /&gt;&lt;a href="http://www.vialibre.org.ar/2008/01/28/objeciones-a-siap/" target="_blank"&gt;http://www.vialibre.org.ar/&lt;wbr&gt;2008/01/28/objeciones-a-siap/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.trucholand.com.ar/blog/?p=108" target="_blank"&gt;http://www.trucholand.com.ar/&lt;wbr&gt;blog/?p=108&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-4720843814934803968?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/4720843814934803968/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/09/afip-chorros-inmundos.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4720843814934803968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4720843814934803968'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/09/afip-chorros-inmundos.html' title='AFIP: Chorros Inmundos'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-1647533506021216105</id><published>2009-09-04T14:18:00.000-07:00</published><updated>2009-09-16T19:08:20.065-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><title type='text'>CodMACs: Una aplicación que programa por vos (Parte 2)</title><content type='html'>&lt;a href="http://stealthissoftware.blogspot.com/2009/04/codmacs-una-aplicacion-que-programa-por.html"&gt;CodMACs&lt;/a&gt; era una "buena" idea. Ahora, el tiempo que me llevaban programar el parser del lenguaje de macros que desarrollé sumado a un comentario que me hicieron en un foro[1] me llevó a pensar en una alternativa:&lt;br /&gt;&lt;br /&gt;Qué tal si en vez de usar un lenguaje especial de macros utilizo uno más potente, ya desarrollado y que funciona? Por ejemplo, Python o PHP.&lt;br /&gt;Entonces, la idea sigue siendo la misma pero, en vez de usar un lenguaje propio, utilizo un lenguaje de script mucho más poderoso y, lo más importante, conocido por muchos y totalmente funcional (al mío le faltaba muchísimo debug).&lt;br /&gt;&lt;br /&gt;Entonces, combinandolo con lo que sería una especie de tags:&lt;br /&gt;&lt;br /&gt;...code...code...code...code...code...code...&lt;br /&gt;code...code...code...code...code...code...&lt;br /&gt;code...code...code...code...code...code...&lt;br /&gt;&lt;pre&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;&lt;/span&gt;script_template_python&lt;span style=";font-size:78%;color:BLUE;"  &gt;&gt;&lt;/span&gt;&lt;span class="cch1"&gt;&lt;span style="color:gray;"&gt;&lt;br /&gt;  if(a==1):&lt;br /&gt;      print &lt;/span&gt;&lt;/span&gt;&lt;span style="color:PURPLE;"&gt;"hola"&lt;/span&gt;&lt;span class="cch1"&gt;&lt;span style="color:gray;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;/&lt;/span&gt;script_template_python&lt;span style=";font-size:78%;color:BLUE;"  &gt;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;style&gt;&lt;!--  .cch1{background:#F&lt;/style&gt;...code...code...code...code...code...code...&lt;br /&gt;code...code...code...code...code...code...&lt;br /&gt;code...code...code...code...code...code...&lt;br /&gt;&lt;br /&gt;Donde, "...code" es el código fuente que sea. Esto generaría una salida con el código de "...code" y el resultado de evaluar el código de python entre los tags.&lt;br /&gt;&lt;br /&gt;La idea es algo similar a lo que hace php.&lt;br /&gt;&lt;br /&gt;Veremos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1] El comentario fue:&lt;br /&gt;"Si yo uso eso, paso de una tarea engorrosa (programar) a tener que hacer otra aún más engorrosa (escribir las macros)"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-1647533506021216105?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/1647533506021216105/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/09/codmacs-codmacs-una-aplicacion-que.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1647533506021216105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1647533506021216105'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/09/codmacs-codmacs-una-aplicacion-que.html' title='CodMACs: Una aplicación que programa por vos (Parte 2)'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8380396722223702734</id><published>2009-08-31T18:57:00.001-07:00</published><updated>2009-09-16T19:07:59.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xkcd'/><title type='text'>Buenas costumbres de programación</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgs.xkcd.com/comics/goto.png"&gt;&lt;img style="cursor: pointer; width: 740px; height: 201px;" src="http://imgs.xkcd.com/comics/goto.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por algo era...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8380396722223702734?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8380396722223702734/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/08/buenas-costumbres-de-programacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8380396722223702734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8380396722223702734'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/08/buenas-costumbres-de-programacion.html' title='Buenas costumbres de programación'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-3978395330724340574</id><published>2009-08-22T09:41:00.000-07:00</published><updated>2009-09-16T19:07:46.591-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matemáticas'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Problemas Abiertos de la Informática</title><content type='html'>Pensando en los famosos "problemas abiertos de las matemáticas", me puse a buscar un paralelo informático y, aquí está:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maven.smith.edu/%7Eorourke/TOPP/Welcome.html"&gt;Problemas Abiertos&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-3978395330724340574?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/3978395330724340574/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/08/problemas-abiertos-de-la-informatica.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/3978395330724340574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/3978395330724340574'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/08/problemas-abiertos-de-la-informatica.html' title='Problemas Abiertos de la Informática'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-1327348355781089591</id><published>2009-08-18T19:06:00.000-07:00</published><updated>2009-09-16T19:07:06.334-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xkcd'/><title type='text'>Estimando mejor que Vista... (2x1)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgs.xkcd.com/comics/estimation.png"&gt;&lt;img style="cursor: pointer; width: 297px; height: 335px;" src="http://imgs.xkcd.com/comics/estimation.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgs.xkcd.com/comics/windows_7.png"&gt;&lt;img style="cursor: pointer; width: 740px; height: 269px;" src="http://imgs.xkcd.com/comics/windows_7.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href="http://xkcd.com/"&gt;http://xkcd.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-1327348355781089591?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/1327348355781089591/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/08/mejor-que-vista.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1327348355781089591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1327348355781089591'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/08/mejor-que-vista.html' title='Estimando mejor que Vista... (2x1)'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-1299016509050510498</id><published>2009-08-10T17:28:00.001-07:00</published><updated>2009-09-16T19:06:49.698-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Porqué Python?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/en/thumb/0/06/Python_logo.svg/475px-Python_logo.svg.png"&gt;&lt;img style="cursor: pointer; width: 475px; height: 114px;" src="http://upload.wikimedia.org/wikipedia/en/thumb/0/06/Python_logo.svg/475px-Python_logo.svg.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Python es un lenguaje sencillo y versátil que todo el mundo (inclusive quienes no trabajen directamente en programación) debería conocer.&lt;br /&gt;Posee:&lt;br /&gt;&lt;br /&gt;- Sintaxis limpia y sencilla. Esto hace que sea rápido desarrollar reduciendo los tiempos y la cantidad necesaria de programadores. Es ideal para escritura de scripts rápidos.&lt;br /&gt;&lt;br /&gt;- Baterías incluidas: Tiene una enorme biblioteca estándar lo que hace que el trabajo sea más veloz y sencillo.&lt;br /&gt;&lt;br /&gt;- Multiparadigma.&lt;br /&gt;&lt;br /&gt;- Poderoso y robusto.&lt;br /&gt;&lt;br /&gt;- Su identación obligatoria hace que la claridad de los programas resalte.&lt;br /&gt;&lt;br /&gt;- Usado en conjunto con bibliotecas gráficas (como GTK+ o Qt) es posible armar proyectos grandes que incluyan GUIs.&lt;br /&gt;&lt;br /&gt;- Portable. Es posible ejecutarlo en, por ejemplo, Linux, windows y Mac, Windows Mobile, y Google Android (gracias Fisa)&lt;br /&gt;&lt;br /&gt;- Documentación altamente disponible: 1) En internet (muchas páginas y wikis incluyendo oficiales y no oficiales) 2) Listas de correo (como pyar) donde hay un feedback constante. 3) En el mismo modo interactivo.&lt;br /&gt;&lt;br /&gt;- Una comunidad excelente en Argentina (gracias Facundo)  &lt;a href="http://www.python.org.ar/"&gt;http://www.python.org.ar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Creo que esas son las principales.&lt;br /&gt;La pregunta es, todavía no probaste python?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-1299016509050510498?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/1299016509050510498/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/08/porque-python.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1299016509050510498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/1299016509050510498'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/08/porque-python.html' title='Porqué Python?'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-7877829670994604062</id><published>2009-07-29T15:29:00.000-07:00</published><updated>2009-09-16T19:06:29.282-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='matemáticas'/><title type='text'>Conjetura de Collatz:: 3n+1</title><content type='html'>&lt;a href="http://es.wikipedia.org/wiki/Conjetura_de_Collatz"&gt;Explicación&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Por si no les dió ganas de leer, basicamente lo que expone es que dado un numero entero positivo cualquiera (n), si se le realizan una serie operaciones sucesivas (si el nro es par, se lo divide por 2, caso contrario, se lo multiplica por 3 y se le suma 1) el resultado siempre es 1.&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;{7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1}&lt;br /&gt;&lt;br /&gt;Una vez alcanzado el 1, no se continúa ya que quedaríamos en un &lt;span style="font-style: italic;"&gt;loop&lt;/span&gt; ya que 1 es impar y:&lt;br /&gt;&lt;br /&gt;1 * 3 + 1 = 4&lt;br /&gt;4 / 2 = 2&lt;br /&gt;2 / 2 = 1&lt;br /&gt;1 * 3 + 1 = 4&lt;br /&gt;etc&lt;br /&gt;etc&lt;br /&gt;&lt;br /&gt;Hasta la fecha no se ha demostrado.&lt;br /&gt;&lt;br /&gt;Dejo un script en python que (si bien no lo demuestra) sirve para jugar un rato probando con distintos números.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def syracusse&lt;span style="font-size:+1;color:BLUE;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;init&lt;span style="font-size:+1;color:BLUE;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:+1;color:BLUE;"&gt;:&lt;/span&gt;&lt;br /&gt;   print &lt;span style="color:PURPLE;"&gt;"&amp;lt;--START ("&lt;/span&gt; &lt;span style="font-size:+1;color:BLUE;"&gt;+&lt;/span&gt; &lt;span style="color:RED;"&gt;&lt;b&gt;str&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:+1;color:BLUE;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;init&lt;span style="font-size:+1;color:BLUE;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size:+1;color:BLUE;"&gt;+&lt;/span&gt; &lt;span style="color:PURPLE;"&gt;")"&lt;/span&gt;&lt;br /&gt;   syr &lt;span style="font-size:+1;color:BLUE;"&gt;=&lt;/span&gt; init&lt;br /&gt;   &lt;span style="color:RED;"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt; syr &lt;span style="font-size:+1;color:BLUE;"&gt;!&lt;/span&gt;&lt;span style="font-size:+1;color:BLUE;"&gt;=&lt;/span&gt; &lt;span style="color:BROWN;"&gt;1&lt;/span&gt;&lt;span style="font-size:+1;color:BLUE;"&gt;:&lt;/span&gt;   &lt;br /&gt;       &lt;span style="color:RED;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; syr &lt;span style="font-size:+1;color:BLUE;"&gt;%&lt;/span&gt; &lt;span style="color:BROWN;"&gt;2&lt;/span&gt; &lt;span style="font-size:+1;color:BLUE;"&gt;=&lt;/span&gt;&lt;span style="font-size:+1;color:BLUE;"&gt;=&lt;/span&gt; &lt;span style="color:BROWN;"&gt;0&lt;/span&gt;&lt;span style="font-size:+1;color:BLUE;"&gt;:&lt;/span&gt;&lt;br /&gt;           syr &lt;span style="font-size:+1;color:BLUE;"&gt;=&lt;/span&gt; syr &lt;span style="font-size:+1;color:BLUE;"&gt;/&lt;/span&gt; &lt;span style="color:BROWN;"&gt;2&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:RED;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:+1;color:BLUE;"&gt;:&lt;/span&gt;&lt;br /&gt;           syr &lt;span style="font-size:+1;color:BLUE;"&gt;=&lt;/span&gt; &lt;span style="font-size:+1;color:BLUE;"&gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;syr &lt;span style="font-size:+1;color:BLUE;"&gt;*&lt;/span&gt; &lt;span style="color:BROWN;"&gt;3&lt;/span&gt;&lt;span style="font-size:+1;color:BLUE;"&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size:+1;color:BLUE;"&gt;+&lt;/span&gt; &lt;span style="color:BROWN;"&gt;1&lt;/span&gt;       &lt;br /&gt;       print syr&lt;br /&gt;   print &lt;span style="color:PURPLE;"&gt;"&amp;lt;--END"&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-7877829670994604062?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/7877829670994604062/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/conjetura-de-collatz-3n1.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7877829670994604062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7877829670994604062'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/conjetura-de-collatz-3n1.html' title='Conjetura de Collatz:: 3n+1'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-4677487136790817577</id><published>2009-07-27T14:29:00.000-07:00</published><updated>2009-09-16T19:06:06.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laboratorio'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Autodocumentación</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.etianen.com/media/img/about/technology/python-logo.png"&gt;&lt;img style="cursor: pointer; width: 50px; height: 50px;" src="http://www.etianen.com/media/img/about/technology/python-logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Algo muy bueno y que realmente puede ser muy útil en python es la autodocumentación.&lt;br /&gt;&lt;br /&gt;Realmente no requiere demasiada explicación, solamente es necesario ingresar un comentario del tipo (""") al comienzo de nuestra function (debe estar identada) y luego, invocando el comando help() pasandole el nombre la función veremos ese texto. Ejemplo:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def autodoc&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;msj&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:PURPLE;"&gt;""&lt;/span&gt;&lt;span style="color:PURPLE;"&gt;"Ejemplo de autodocumentacion&lt;br /&gt;      parametros: msj = Mensaje a mostrar"&lt;/span&gt;&lt;span style="color:PURPLE;"&gt;""&lt;/span&gt;&lt;br /&gt;  print msj&lt;br /&gt;help&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;autodoc&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Vamos a ver algo asi:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;Help on function autodoc in module __main__:&lt;br /&gt;&lt;br /&gt;autodoc(msj)&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;····&lt;/span&gt;Ejemplo de autodocumentacion&lt;br /&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;····&lt;/span&gt;parametros: msj = Mensaje a mostrar&lt;br /&gt;(END) &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-4677487136790817577?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/4677487136790817577/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/autodocumentacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4677487136790817577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4677487136790817577'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/autodocumentacion.html' title='Autodocumentación'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-9066330557128610865</id><published>2009-07-25T12:41:00.000-07:00</published><updated>2009-09-16T19:05:46.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laboratorio'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Crawling</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gtk.php.net/gifs/php-logo.gif"&gt;&lt;img style="cursor: pointer; width: 69px; height: 36px;" src="http://gtk.php.net/gifs/php-logo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quería compartir una function de mi autoría escrita en php. Lo que hace es recorrer directorios recursivamente a partir de un path inicial.&lt;br /&gt;Se llama crawleo por una particular obsesión con la palabra "jaleo". Jaleo, Crawleo... etc.&lt;br /&gt;&lt;br /&gt;Yo uso llamo a una function (mia también) que se llama indexme. Lo que hace es indexar el contenido de los archivos en MySQL. No es relevante para el ejemplo asi que no la inclui.&lt;br /&gt;Donde dice indexme pueden poner otra cosa :P&lt;br /&gt;&lt;pre&gt;&lt;span style="color:RED;"&gt;&lt;b&gt;function&lt;/b&gt;&lt;/span&gt; crawleo&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$spath&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:RED;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;file_exists&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$spath&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    $ptr &lt;span style=";font-size:78%;color:BLUE;"  &gt;=&lt;/span&gt; opendir&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$spath&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:RED;"&gt;&lt;b&gt;while&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$buf &lt;span style=";font-size:78%;color:BLUE;"  &gt;=&lt;/span&gt; readdir&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$ptr&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;!&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;=&lt;/span&gt;null&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:RED;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color:RED;"&gt;&lt;b&gt;trim&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$buf&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;!&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;=&lt;/span&gt;&lt;span style="color:PURPLE;"&gt;"."&lt;/span&gt; &lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&amp;amp;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&amp;amp;&lt;/span&gt;&lt;/span&gt; &lt;span style="color:RED;"&gt;&lt;b&gt;trim&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$buf&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;!&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;=&lt;/span&gt;&lt;span style="color:PURPLE;"&gt;".."&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:RED;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;is_file&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$spath.&lt;span style="color:PURPLE;"&gt;"\\"&lt;/span&gt;.$buf&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;               $currf &lt;span style=";font-size:78%;color:BLUE;"  &gt;=&lt;/span&gt; $spath.&lt;span style="color:PURPLE;"&gt;"\\"&lt;/span&gt;.$buf&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;               indexme&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$currf&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span style="color:RED;"&gt;&lt;b&gt;elseif&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;is_dir&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$spath.&lt;span style="color:PURPLE;"&gt;"\\"&lt;/span&gt;.$buf&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;               $currf &lt;span style=";font-size:78%;color:BLUE;"  &gt;=&lt;/span&gt; $spath.&lt;span style="color:PURPLE;"&gt;"\\"&lt;/span&gt;.$buf&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;               crawleo&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$currf&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    closedir&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;$ptr&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span style="color:RED;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    echo &lt;span style="color:PURPLE;"&gt;"Search Path: $spath not found"&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-9066330557128610865?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/9066330557128610865/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/crawling.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/9066330557128610865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/9066330557128610865'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/crawling.html' title='Crawling'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-3804207290216185947</id><published>2009-07-25T12:36:00.000-07:00</published><updated>2009-09-16T19:04:52.517-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><title type='text'>Octopus Project</title><content type='html'>Esta entrada es sólo para decir que mi proyecto &lt;a href="http://octopusproject.tk/"&gt;Octopus project&lt;/a&gt; se está pasando a linux de la mano de python.&lt;br /&gt;&lt;br /&gt;Code name Octopys??? Pyctopus?? En fin...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-3804207290216185947?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/3804207290216185947/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/octopus-project.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/3804207290216185947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/3804207290216185947'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/octopus-project.html' title='Octopus Project'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-7275138099327517555</id><published>2009-07-25T12:28:00.000-07:00</published><updated>2009-09-16T19:04:30.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xkcd'/><title type='text'>Regular Expressions</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgs.xkcd.com/comics/regular_expressions.png"&gt;&lt;img style="cursor: pointer; width: 600px; height: 607px;" src="http://imgs.xkcd.com/comics/regular_expressions.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xkcd.com/"&gt;Fuente: http://xkcd.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-7275138099327517555?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/7275138099327517555/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/regular-expressions.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7275138099327517555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7275138099327517555'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/regular-expressions.html' title='Regular Expressions'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-6448391614864380460</id><published>2009-07-22T11:19:00.001-07:00</published><updated>2009-09-16T19:04:14.102-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offtopic'/><title type='text'>User Hostile</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.stripgenerator.com/generated/anonymous/strip/2009/07/22/user-hostile.png"&gt;&lt;img style="cursor: pointer; width: 367px; height: 206px;" src="http://static.stripgenerator.com/generated/anonymous/strip/2009/07/22/user-hostile.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-6448391614864380460?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/6448391614864380460/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/user-hostile.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6448391614864380460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6448391614864380460'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/user-hostile.html' title='User Hostile'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-7021411186804326455</id><published>2009-07-17T14:19:00.000-07:00</published><updated>2009-09-16T19:03:57.074-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Teorema que demuestra que está todo inventado</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sofocracia.org/wp-content/uploaded/2008/06/monos_burns.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 308px;" src="http://www.sofocracia.org/wp-content/uploaded/2008/06/monos_burns.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Cuando pensé en publicar esto no supe si ponerle como título "La máquina cuantica" o "Teorema que demuestra que está todo inventado" Me decidí por el segundo porque me pareció mas gracioso.&lt;br /&gt;&lt;br /&gt;Estaba pensando (cosa rara) acerca de las combinaciones posibles y se me vino a la mente cierto experimento mental:&lt;br /&gt;&lt;br /&gt;Supongamos que tengo un programa que genera todas las combinaciones posibles (de todos los valores ASCII posibles) y de todos los tamaños posibles, es decir, 0 hasta X.&lt;br /&gt;&lt;br /&gt;Antes de seguir, propongo que lean esto:&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Teorema_de_los_infinitos_monos"&gt;Infinitos Monos con Maquinas de Escribir&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bien, entonces, pensemos de nuevo en lo que escribí más arriba.&lt;br /&gt;Tenemos un programa corriendo que genera un archivo con todas las combinaciones posibles de caracteres ASCII iniciando en un tamaño de archivo y progresando el tamaño de 1 en 1 hasta agotar las combinaciones.&lt;br /&gt;&lt;br /&gt;Sería logico pensar que, en algún momento, algunas de las combinaciones resultantes van a resultar en un archivo de texto legible o en imagenes o en videos o en programas ejecutables, etc.&lt;br /&gt;&lt;br /&gt;La cantidad de combinaciones es monstruosa y que seria casi imposible separar que archivo es "algo" y que es "basura". Ademas, la velocidad de procesamiento hace que sea casi interminable, faltarían vidas enteras para analizar toda la data generada y, la mayoría será "basura"&lt;br /&gt;&lt;br /&gt;Pero, olvidemos por un momento estos pormenores, suponiendo que logré todas las combinaciones posibles desde 0 a 1GB. Y supongamos que, con algun metodo, separé lo que es basura de lo que es "algo" y lo clasifiqué en:&lt;br /&gt;&lt;br /&gt;- Imagenes (jpg, bmp, gif, etc)&lt;br /&gt;- Peliculas (avi, mov, mpeg, etc)&lt;br /&gt;- Musica (mp3, wav, etc)&lt;br /&gt;- Texto&lt;br /&gt;&lt;br /&gt;Esto quiere decir que, si tengo todas las combinaciones posibles tendré, todo lo que esté en el rango de 0 a 1GB. O sea, si el tema "Welcome to the Jungle" en formato mp3 pesara 5MB, estaría allí! Lo mismo, si la película "Sin City" en formato avi pesara 780MB, también estaría allí! Loco?&lt;br /&gt;&lt;br /&gt;Más loco: también estarían las fotos (si están en el rango de 0 a 1GB) de mis vacaciones y de las tuyas (lector)&lt;br /&gt;&lt;br /&gt;Más escalofriante: también encontraríamos música que nunca fue escrita, peliculas que nunca fueron filmadas, textos y programas jamás escritos! De hecho, habría fotos de nosotros en situaciones que jamás pasaron con gente que ni conocemos!! De hecho, si estuviera en el rango 0 a 1GB, el código fuente del windows vista también estaría allí...&lt;br /&gt;&lt;br /&gt;De hecho, este artículo también estaría allí.&lt;br /&gt;&lt;br /&gt;Entonces, será que todo en realidad ya existe? O sea, ya existe en cuanto al abanico de lo potencial. No será que cuando sacamos una foto, escribimos algo, filmamos un video, etc, no estamos "creando" sino que estamos "descubriendo", "eligiendo" de una lista casi infinita de posibilidades?&lt;br /&gt;&lt;br /&gt;Que pasaría si se pudiera llevar a cabo algo así? Supongamos que tuvieramos computadoras muchisimo mas potentes, capaces de analizar y manejar esa tremenda cantidad de datos. Que pasaría? Estaría, realmente, todo "inventado"?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.milmonos.net/images/4.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 308px;" src="http://www.milmonos.net/images/4.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-7021411186804326455?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/7021411186804326455/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/teorema-que-demuestra-que-esta-todo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7021411186804326455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7021411186804326455'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/teorema-que-demuestra-que-esta-todo.html' title='Teorema que demuestra que está todo inventado'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-963006837391785443</id><published>2009-07-07T07:37:00.000-07:00</published><updated>2009-09-16T19:03:38.784-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='offtopic'/><title type='text'>Kit Anti Zombies</title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;KIT ANTI-ZOMBIE 2000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4kgjazFo0gM/SlNd6HJUTXI/AAAAAAAAACc/qhuPMeZYyCU/s1600-h/zombies-no.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_4kgjazFo0gM/SlNd6HJUTXI/AAAAAAAAACc/qhuPMeZYyCU/s320/zombies-no.jpg" alt="" id="BLOGGER_PHOTO_ID_5355727634805575026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nadie es ajeno a los tiempos que corren: pandemias, virus, etc. Nunca se sabe cuando todo puede degenerar en zombies atacandonos y deseando nuestros cerebros. Es por eso que desarrollé el kit anti zombie para estar preparados.&lt;br /&gt;El mismo incluye:&lt;br /&gt;&lt;br /&gt;- Máscara de gas. Especial para mantenerse a salvo del contagio&lt;br /&gt;- Escopeta recortada. Ideal para volar cabezas zombies, muy portable y comoda. (municiones no incluidas)&lt;br /&gt;- 150 latas de conserva con alimentos varios. Necesario si se tiene que estar días sin salir a la calle.&lt;br /&gt;- 2 walkie-talkies para comunicarte con tu compañero/a sobreviviente.&lt;br /&gt;- 500 historietas de Mafalda. Es necesario un poco de humor para pasar el rato. Ademas, reir, levanta la moral.&lt;br /&gt;- 1 botella de Vodka. Por su composicion quimica es ideal para fabricar cocteles Molotov y arrojarselo a los reanimados. O en su defecto, empedarse para olvidar. Tambien es util para cauterizar heridas (pero es mejor empedarse).&lt;br /&gt;- Peine o peineta. Porque, vamos, habrá zombies, será el apocalipsis pero no hay razón por la cuál no verse bien.&lt;br /&gt;- Soga. Los usos posibles son miles. Muy útil para colgarse en caso de desesperación.&lt;br /&gt;- Cuchillo de combate (onda rambo). Idem anterior. Además es vital para traicionar a tu compañero/a sobreviviente en caso de escasez de alimentos.&lt;br /&gt;- Cd y reproductor de Cds con el tema thriller de MJ (r.i.p.). Sirve para generar ambiente, además, a los zombies parece gustarles y quizá sea un buen medio de distracción.&lt;br /&gt;- 2 granadas de manos. La utilidad es obvia. También es útil para suicidios masivos.&lt;br /&gt;&lt;br /&gt;El kit es personalizable a gusto del cliente. Los precios varían según el combo elegido y se puede encagar por teléfono al 444-5584&lt;br /&gt;&lt;br /&gt;EDITADO: Vodka agregado a pedido de Gustavox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-963006837391785443?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/963006837391785443/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/kit-anti-zombies.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/963006837391785443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/963006837391785443'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/07/kit-anti-zombies.html' title='Kit Anti Zombies'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4kgjazFo0gM/SlNd6HJUTXI/AAAAAAAAACc/qhuPMeZYyCU/s72-c/zombies-no.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8382500472779340073</id><published>2009-06-03T20:47:00.000-07:00</published><updated>2009-09-16T19:03:02.694-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laboratorio'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Inicio "lento" en Debian 5 (Lenny)</title><content type='html'>Tengo Debian Lenny y me encontré con un problemita (no es grave para nada, pero me gustaría compartir la solución)&lt;br /&gt;&lt;br /&gt;Resulta que cuando iniciaba tardaba un poco. Quedaba como frizado en dos lugares, que son:&lt;br /&gt;&lt;br /&gt; &lt;div style="margin: 5px 20px 20px;"&gt; &lt;div class="smallfont" style="margin-bottom: 2px;"&gt;Código:&lt;/div&gt; &lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; height: 34px; text-align: left;"&gt;Starting Common Unix Printing System: cupsd.&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;    Y después en:&lt;br /&gt;&lt;br /&gt; &lt;div style="margin: 5px 20px 20px;"&gt; &lt;div class="smallfont" style="margin-bottom: 2px;"&gt;Código:&lt;/div&gt; &lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; height: 34px; text-align: left;"&gt;Starting MTA&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;Buscando (googleando) encontré como deshabilitar esos (y otros) servicios que quizá no usemos. En mi caso, cupsd (es un servicio de impresión) no tenia uso. El MTA (un servicio relacionado con el mail) tampoco.&lt;br /&gt;Más info:&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/MTA"&gt;MTA&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;a href="http://linux.about.com/library/cmd/blcmdl8_cupsd.htm"&gt;cupsd&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;El procedimiento es simple:&lt;br /&gt;&lt;br /&gt;1) cd a /etc/rc2.d&lt;br /&gt;2) Hacer un mv Snombre Knombre.&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: 5px 20px 20px;"&gt; &lt;div class="smallfont" style="margin-bottom: 2px;"&gt;Código:&lt;/div&gt; &lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; height: 34px; text-align: left;"&gt;mv S50exim4 K50exim4&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt; Ahora Lenny inicia en segundos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8382500472779340073?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8382500472779340073/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/06/inicio-lento-en-debian-5-lenny.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8382500472779340073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8382500472779340073'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/06/inicio-lento-en-debian-5-lenny.html' title='Inicio &quot;lento&quot; en Debian 5 (Lenny)'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-9187262244538390063</id><published>2009-06-03T20:46:00.000-07:00</published><updated>2009-09-16T19:02:45.915-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laboratorio'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Cómo usar PHP como lenguaje de script de consola?</title><content type='html'>El otro día programando una aplicación web (en PHP) que tenía, por un lado, una búsqueda hecha en PHP con MySQL y por otro lado necesitaba de un daemon. Éste es quién recolectaría la info y la guardaría en MySQL.&lt;br /&gt;Me dispuse a escribirlo y pensé en Perl o Python (por tener algo de portabilidad windows/linux) , pero luego, lo pensé y me pregunté:&lt;br /&gt;Ya que tengo php, no lo puedo usar como lenguaje de script de consola??? La respuesta es SI.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En Linux:&lt;br /&gt;&lt;br /&gt;Instalar el intérprete&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; height: 34px; text-align: left;"&gt;apt-get install php5-cli&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Luego armamos el archivo con un hashbang al comienzo como cualquier otro script (#!)&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; height: 82px; text-align: left;"&gt;#! /usr/bin/php5&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Listo. Al ejecutarlo nos devolverá la salida "Esto es una prueba".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En Windows:&lt;br /&gt;&lt;br /&gt;En mi caso uso phptriad y el path al php está en:&lt;br /&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; height: 50px; text-align: left;"&gt;C:\apache\php\&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Entonces, puedo armar un bat (por ejemplo) y llamar a mi script así:&lt;br /&gt;&lt;br /&gt;&lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; height: 50px; text-align: left;"&gt;cd C:\apache\php\&lt;br /&gt;php -f C:\PHP\pru.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Es decir, con cd me paré en el directorio del php.exe. Con php -f le pasé como parámetro el script que está en pru.sh. -f es para decirle que queremos parsear un file.&lt;br /&gt;Hay otro métodos (por ejemplo, agregar el path del PHP a la variable de entorno path)&lt;br /&gt;&lt;br /&gt;Agrego un link interesante:&lt;br /&gt;&lt;a href="http://wiki.debian.org/LaMp"&gt;Instalación y configuración básica de LAMP en Debian&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;LAMP = Linux Apache MySQL PHP (o perl o python)&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29"&gt;Qué es LAMP?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-9187262244538390063?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/9187262244538390063/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/06/como-usar-php-como-lenguaje-de-script.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/9187262244538390063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/9187262244538390063'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/06/como-usar-php-como-lenguaje-de-script.html' title='Cómo usar PHP como lenguaje de script de consola?'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-287320205985975448</id><published>2009-04-07T12:55:00.000-07:00</published><updated>2009-09-16T19:02:27.083-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><title type='text'>CodMACs: Video Demo</title><content type='html'>Un video:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dc123.4shared.com/download/97300228/32efeba0/1_online.swf?tsid=20090407-155020-42f8fdd4"&gt;http://dc123.4shared.com/download/97300228/32efeba0/1_online.swf?tsid=20090407-155020-42f8fdd4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;embed src="http://dc123.4shared.com/download/97300228/32efeba0/1_online.swf?tsid=20090407-155020-42f8fdd4" quality="high" type="application/x-shockwave-flash" allownetworking="internal" allowscriptaccess="never" width="425" height="350"&gt;&lt;/embed&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-287320205985975448?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/287320205985975448/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/04/codmacs-video-demo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/287320205985975448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/287320205985975448'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/04/codmacs-video-demo.html' title='CodMACs: Video Demo'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-6969923540446304622</id><published>2009-04-02T17:22:00.000-07:00</published><updated>2009-09-16T19:02:04.526-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><title type='text'>CodMACs: Una aplicación que programa por vos</title><content type='html'>&lt;a href="http://codmacs.tk/"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;CodMACs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Creating an application, easily           in 4 steps:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4kgjazFo0gM/Se0Zx2KuegI/AAAAAAAAACU/dVRgtQ-RqxE/s1600-h/steps.bmp"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_4kgjazFo0gM/Se0Zx2KuegI/AAAAAAAAACU/dVRgtQ-RqxE/s320/steps.bmp" alt="" id="BLOGGER_PHOTO_ID_5326942278393952770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1 - Reads your database and builds the XML file (containing DataBases Structure) .&lt;br /&gt;The XML file is editable. You can use plain xml or "Treeview-Like" edition.&lt;br /&gt;2 - Using the Editor +  Highlighter, create .COD file which contains your own source code (in any language) + the CodMAC code embedded .&lt;br /&gt;3 - Based on the .COD and XML Structure files,  generates               automatically all the source code your application will need.&lt;br /&gt;4 - Finally, you can edit the result source code.&lt;br /&gt;&lt;br /&gt;Simple menus will allow you to accomplish all these actions easily,         very quickly, increasing your productivity.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si, parece una mentira. Pero no. Es cierto. O casi. No es que la aplicación "programe" por si sola sino que, basandose en un código fuente básico (que es la base de tus programas) + un sistema de tags y marcas embebidos dentro del mismo, se logra generar código fuente en segundos.&lt;br /&gt;Por ejemplo, si uno programa en Java, el template tendría la base en dicho lenguaje y, además, el código CodMAC embebido. El programa genera un resultado que es, sencillamente código fuente en Java. Se reemplaza el código escrito en CodMAC. (así como PHP genera puro HTML, por poner un ejemplo paralelo)  por el resultado en el lenguaje deseado (en este caso, Java)&lt;br /&gt;&lt;br /&gt;Cómo funciona?? Acá es donde puedo explicarlo bien debido a que soy el desarrollador.&lt;br /&gt;Muchas veces en los sistemas o programas comerciales, las aplicaciones (tipo ingresos en grid, ABMs, etc) son similares. Esto es lo que aprovecha CodMACs.&lt;br /&gt;La aplicación posee tres elementos:&lt;br /&gt;&lt;br /&gt;1- Editor de texto para templates con iluminador. Ejemplo, un programa tuyo en C con los "tags" o marcas propios de CodeMACs.&lt;br /&gt;2- Información acerca de las bases de datos. Esto es necesario tenerlo en formato XML. El programa posee además un módulo de conexión (por ahora sólo con SQL server) que toma las bases de datos deseadas y genera la documentación necesaria en el formato XML.&lt;br /&gt;El mismo se puede editar y visualizar de forma plana y con un editor tipo TreeView.&lt;br /&gt;3- Editor de texto para "Funciones" o MACROS si se las quiere llamar así. También tiene iluminador.&lt;br /&gt;&lt;br /&gt;Entonces, primero tomamos un pedazo de un programa nuestro. La base, digamos. Entonces, tomamos el código fuente base y, donde haya referencias a una tabla, o campos se lo reemplaza por marcas de propias de CodMACs, ya sean marcas simples, funciones o Loops. Todo eso posee CodMACs.&lt;br /&gt;&lt;br /&gt;Detallo algunas:&lt;br /&gt;@@!FileName     : El nombre del archivo&lt;br /&gt;@@!TableName : El nombre de la tabla&lt;br /&gt;@@!Index           : Un índice, sirve como contador dentro de un LOOP&lt;br /&gt;@@LOOP      : Marca de inicio de loop. Loopea una vez por cada campo de la tabla.&lt;br /&gt;&lt;!--@@LOOP--&gt;    @@/LOOP: Marca de fin de loop.&lt;br /&gt;&lt;br /&gt;Entonces, dentro de nuestro código fuente metemos estas marcas. Sería un pseudo lenguaje embebido.&lt;br /&gt;Es decir que si una tabla se llama Clientes, y tiene los campos clie, nomb, cuit, en todos lados donde aparezca la marca @@!TableName se reemplazará por el nombre de la tabla, en este caso Clientes. Y si ponemos un loop así:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;@@LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Const C@@!Identifier as integer = @@!Index&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;!--@@LOOP--&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;@@/LOOP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nos quedaría:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Const Cclie as integer = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Const Cnomb as integer = 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Const Ccuit as integer = 2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Además, puede pasar que &lt;/span&gt;&lt;/span&gt;deseemos hacer algo en un caso, por ejemplo, si el campo es numérico o si el campo es de texto. Eso se resuelve con las funciones. Un ejemplo de una función:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BEGIN Function Defitipo2(Value)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    CASE 'nvarchar['+* || tString&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    CASE 'datetime' || tsFecha&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    CASE 'smalldatetime' || tsFecha&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    CASE 'money' || tNumeric&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    CASE 'real' || tNumeric&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    CASE 'int' || tNumeric&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;END Defitipo2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si el campo es int, vemos que pone tNumeric. Entonces, poniendo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;@@CASE(@@!Format,Defitipo2)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Estas funciones son totalmente editables por el usuario. Es decir, pueden haber tantas como se desee y se creen en un apartado especial. Sería igual que crear funciones en cualquier lenguaje de programación.&lt;br /&gt;En el ejemplo, le estamos diciendo con @@CASE que se trata de una función. Con @@!Format es que le estoy pasando ese valor a la función, y Defitipo2 es el nombre de la función. En ese caso le estaría pasando a la función DefiTipo2 el formato del campo en el que estoy. Y ya vimos lo que hace, si el campo fuera int, todo el texto&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;@@CASE(@@!Format,Defitipo2)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sería reemplazado por:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;tNumeric&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez que tenemos el "template" lo guardamos como extensión cod. Luego, generamos la documentación sobre la/s tabla/s de nuestra/s base/s de datos (en un XML). Ahora, podemos si se desea guardar el proyecto (un archivo con extensión mrt) esto nos permite en un futuro, abriendo el *.mrt, tener el xml y el cod que queramos.&lt;br /&gt;Una vez que tenemos el XML y el cod, le tememos que decir al programa que nos genere un codigo fuente. Basicamente, se elige las tablas que queremos, la extensión que deseamos y listo.&lt;br /&gt;&lt;br /&gt;La estructura que usé en el XML es muy simple. &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Postearé un video y, cuando esté más maduro, la primera beta. Ahora, dejo unos screenshots del CodeMAcs&lt;/span&gt;&lt;span style="font-family:arial;"&gt; trabajando. En este caso se puede ver código fuente en VB6 con código de CodMACs embebido.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Saludos&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ScreenShots:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4kgjazFo0gM/SdVf-oUbaqI/AAAAAAAAACE/9afNYTUYnlU/s1600-h/7.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 254px;" src="http://1.bp.blogspot.com/_4kgjazFo0gM/SdVf-oUbaqI/AAAAAAAAACE/9afNYTUYnlU/s320/7.JPG" alt="" id="BLOGGER_PHOTO_ID_5320264064387738274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Comparación de código fuente generado(visto en notepad) contra el código que lo generó dentro de CodMACs.&lt;br /&gt;Se puede ver como un loop cambió por una lista grande de los campos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4kgjazFo0gM/SdVf-So2iVI/AAAAAAAAAB8/FwspKLwOGDA/s1600-h/6.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_4kgjazFo0gM/SdVf-So2iVI/AAAAAAAAAB8/FwspKLwOGDA/s320/6.JPG" alt="" id="BLOGGER_PHOTO_ID_5320264058567821650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;CodeMACs guardando un archivo frm generado desde un template.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_4kgjazFo0gM/SdVf9_6nWkI/AAAAAAAAAB0/dDa26-V5j3I/s1600-h/5.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 238px;" src="http://2.bp.blogspot.com/_4kgjazFo0gM/SdVf9_6nWkI/AAAAAAAAAB0/dDa26-V5j3I/s320/5.JPG" alt="" id="BLOGGER_PHOTO_ID_5320264053542050370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Selector de tablas. En este caso hay una sola.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4kgjazFo0gM/SdVf9TbT0nI/AAAAAAAAABs/4RzKJn-j424/s1600-h/4.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 239px;" src="http://4.bp.blogspot.com/_4kgjazFo0gM/SdVf9TbT0nI/AAAAAAAAABs/4RzKJn-j424/s320/4.JPG" alt="" id="BLOGGER_PHOTO_ID_5320264041599586930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Editor de Funciones.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4kgjazFo0gM/SdVepw8OXGI/AAAAAAAAABk/1a61IR-b_oM/s1600-h/3.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 238px;" src="http://1.bp.blogspot.com/_4kgjazFo0gM/SdVepw8OXGI/AAAAAAAAABk/1a61IR-b_oM/s320/3.JPG" alt="" id="BLOGGER_PHOTO_ID_5320262606413257826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Vista de XML&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4kgjazFo0gM/SdVep0VtfAI/AAAAAAAAABc/mVjxB7zyvn4/s1600-h/2.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 237px;" src="http://4.bp.blogspot.com/_4kgjazFo0gM/SdVep0VtfAI/AAAAAAAAABc/mVjxB7zyvn4/s320/2.JPG" alt="" id="BLOGGER_PHOTO_ID_5320262607325461506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Editor de templates con menu de ayuda(insertando tags)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_4kgjazFo0gM/SdVeps5V38I/AAAAAAAAABU/EN5H-V51Wg0/s1600-h/1.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 241px;" src="http://3.bp.blogspot.com/_4kgjazFo0gM/SdVeps5V38I/AAAAAAAAABU/EN5H-V51Wg0/s320/1.JPG" alt="" id="BLOGGER_PHOTO_ID_5320262605327425474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Icono principal de la aplicación.&lt;br /&gt;&lt;br /&gt;Web Oficial:&lt;a href="http://codmacs.tk/"&gt; http://codmacs.tk&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-6969923540446304622?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/6969923540446304622/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/04/codmacs-una-aplicacion-que-programa-por.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6969923540446304622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/6969923540446304622'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/04/codmacs-una-aplicacion-que-programa-por.html' title='CodMACs: Una aplicación que programa por vos'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4kgjazFo0gM/Se0Zx2KuegI/AAAAAAAAACU/dVRgtQ-RqxE/s72-c/steps.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-2036987537584558546</id><published>2009-03-30T19:15:00.000-07:00</published><updated>2009-09-16T19:01:44.629-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Sobre el IQ</title><content type='html'>Hace rato que tenia ganas de escribir sobre esto. Cuantas veces uno ha oído "tal persona tiene tanto de IQ" o "determinado personaje posee un coeficiente intelectual de X"&lt;br /&gt;Ahora, alguna vez uno se planteó qué es un IQ??&lt;br /&gt;Según wikipedia el IQ es un resultado de un test:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;    El cociente intelectual o coeficiente intelectual,[1] abreviado CI (en inglés IQ) es un número que resulta de la realización de un test estandarizado para medir las habilidades cognitivas de una persona, "inteligencia", en relación con su grupo de edad&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;La primera vez que me enteré de la existencia de esto (tendría unos 15 años) me pareció interesante, anque simplista voy a reconocer. Simplista para ser algo que "define" la inteligencia. O sea, vendría a ser, X individuo hace un test que consiste en N numero de preguntas (de logica, reconocimiento de series, patrones) y dependendiendo de como le vaya, es cuan inteligente es esa persona. Muy chato para mi gusto. Sin envargo realicé varios tests por curiosidad. No recuerdo los resultados (seguramente me salió que estoy en la media) pero lo que si recuerdo es que, siendo distintos los tests, hacer el primero me fue mas dificil que el segundo. Esto es, el hacer el primero me "entrenó" de alguna forma. Hizo que hacer el segundo fuera más sencillo, además de que sabía que esperar (a pesar de que los tests no eran iguales) me había mostrado una forma encarar ciertos problemas. Entonces, hice algunos más y noté que era como si justamente fuera un entrenamiento, practicar el tipo de ejercicios hacía que los posteriores costaran un poco menos.&lt;br /&gt;De todo esto se desprende mi conclusión. Los tests de IQ dan un número a la habilidad/experiencia de una persona para resolver un tipo de problema. La inteligencia no es algo "medible" y mucho menos por completar unas series de cuadraditos o de números. Estos tests sólo dividen, y estancan. Le dicen a alguien "vos sos la media" como que no hubiera más remedio.&lt;br /&gt;&lt;br /&gt;No me hubiera atrevido a publicar esta entradad (hubiera considerado que estos son disparates míos) si no fuera por un comentario que leí en un libro de Paenza (de las serie "matematica, estás ahí?") donde él mismo opinaba algo similar a mi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-2036987537584558546?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/2036987537584558546/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/sobre-el-iq.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2036987537584558546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/2036987537584558546'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/sobre-el-iq.html' title='Sobre el IQ'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8229702031315486496</id><published>2009-03-25T06:44:00.000-07:00</published><updated>2009-09-16T19:01:26.498-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflexiones'/><title type='text'>Estudiar Programación</title><content type='html'>Esta entrada no tiene ningún test. Sólo es para plasmar una opinión acerca de cómo se enseña (mayormente) programación en, por lo menos, Argentina.&lt;br /&gt;Mejor dicho, voy a exponer como creo que se debería enseñar haciendo referencia por momentos a cómo se enseña o a aquellos aspectos que considero erróneos.&lt;br /&gt;&lt;br /&gt;Primero, considero que los métodos tradicionales de enseñanza no son aplicables. Con esto me refiero al esquema:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Pizarrón --&gt; Profesor --&gt; Alumnos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Éste esquema lineal es, o puede ser, muy útil en otros ámbitos. En programación no sirve de nada. No existe tal cosa como "teóricas"(o, al menos, no debería).&lt;br /&gt;El esquema que propongo es:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;|----&gt; Profesor (si se requiere)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;| &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;alumno &lt;--&gt; PC&lt;/span&gt;&lt;br /&gt;|&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;|-------&gt; Google, manuales y/o pdf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Explico:&lt;br /&gt;El alumno tiene una pc (una por alumno)&lt;br /&gt;Al alumno se le dan tareas de programación. Es decir, se lo hace programar, subiendo en dificultad claro, pero estando en contacto con el código, debugger, y compilador (si lo hubiera) desde la primer clase.&lt;br /&gt;El alumno debería tener acceso a bibliografía (puede ser impresa o material en la pc) sobre el lenguaje en cuestión. Además de google y cualquier otro medio que el profesor (o incluso el alumno) proponga.&lt;br /&gt;Ante cualquier tipo de duda, el profesor debe tener el conocimiento para acercarse a la pc del alumno y ver el problema con éste.&lt;br /&gt;Cada clase tiene un mini TP que hay que entregar.&lt;br /&gt;&lt;br /&gt;Con esto logramos varias cosas:&lt;br /&gt;1) Por un lado que la clase sea entretenida. Nadie quiere escuchar a un tipo hablar más de media hora.&lt;br /&gt;2) El alumno comienza a programar desde la primera clase con problemas lo más reales posibles.&lt;br /&gt;3) Si un alumno avanza más rápido que otro no se aburre porque va a su ritmo. Lo mismo para uno que sea más lento, no se pierde.&lt;br /&gt;4) Es fácil monitorear el avance antes de un parcial o prueba.&lt;br /&gt;5) El alumno se entrena en "pensar". El foco está en resolver problemas, aplicar lógicas. Memorizar la sintaxis (saber si es print, printf, sprint, etc) no sirve de mucho. Es mejor aprender a pensar lógicas, sin importar la sintaxis (para eso están las referencias del lenguaje) En todo caso, es mejor saber pensar, memorizar la sintaxis va a venir sólo con el uso mismo del lenguaje.&lt;br /&gt;&lt;br /&gt;Cómo una excepción a lo que serían las teóricas, se podrían dedicar unas clase si es que los alumnos no poseen conocimientos de programación (es decir, si están de cero) a explicar conceptos básicos como: qué es un loop, un condicional, etc&lt;br /&gt;Pero esto sólo si es necesario.&lt;br /&gt;&lt;br /&gt;Para la evaluación, con los TP se va viendo si el alumno progresa o no (ya que son individuales)&lt;br /&gt;Como final, se podría hacer un TP grande o un parcial.&lt;br /&gt;En el caso de un parcial, obviamente, escrito en papel no tiene sentido (si, en algunos lados toman asi) . Mucho menos creo que haya que hacerle memorizar las sintaxis, o preguntas del tipo:&lt;br /&gt;Cuántos parámetros lleva el bucle For?&lt;br /&gt;Los manuales que el alumno tiene en los TP, debería tenerlos en el final o parcial. Lo importante es que sepa pensar y resolver los problemas. El memorizar la sintaxis no es, NI DEBERIA SER, la finalidad.&lt;br /&gt;&lt;br /&gt;Para finalizar, solo quiero agregar que este esquema respondería a lo que un autodidacta haría en su casa:&lt;br /&gt;- Instalar una Ide o interprete (o lo que se necesite de un lenguaje)&lt;br /&gt;- Probar algo sencillo&lt;br /&gt;- Programar algo mas real.&lt;br /&gt;- Consultar un manual, manual online, google, etc&lt;br /&gt;- Programar&lt;br /&gt;- Consultar un manual, manual online, google, etc&lt;br /&gt;- Programar&lt;br /&gt;- Consultar un manual, manual online, google, etc&lt;br /&gt;- Programar&lt;br /&gt;- Consultar un manual, manual online, google, etc&lt;br /&gt;- Programar&lt;br /&gt;- Consultar un manual, manual online, google, etc&lt;br /&gt;- Programar&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;Esta es la forma de aprender de verdad. Entonces, porqué no aplicarla (de manera más controlada si se quiere) a las cátedras y/o cursos de programación?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8229702031315486496?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8229702031315486496/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/estudiar-programacion.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8229702031315486496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8229702031315486496'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/estudiar-programacion.html' title='Estudiar Programación'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-823201501863078088</id><published>2009-03-21T08:37:00.000-07:00</published><updated>2009-09-16T19:00:33.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='proyectos personales'/><title type='text'>Octopus Project: Software Multiclipboard</title><content type='html'>Esto es sólo para darle un lugar a un soft mío.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://octopusproject.tk/"&gt;http://octopusproject.tk/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En la página está todo explicado pero, basicamente, es un software que permite manejar hasta 8 clipboards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-823201501863078088?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/823201501863078088/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/octopus-project-software-multiclipboard.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/823201501863078088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/823201501863078088'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/octopus-project-software-multiclipboard.html' title='Octopus Project: Software Multiclipboard'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-4091508553614111214</id><published>2009-03-20T14:02:00.000-07:00</published><updated>2009-09-16T19:00:08.052-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Black Hole: Un link que apunta a otro</title><content type='html'>Pensando el otro día se me ocurrió probar que pasaba si un acceso directo de windows (archivo .lnk) apuntaba a otro y a su vez, ese otro apuntaba al primero.&lt;br /&gt;Es decir:&lt;br /&gt;&lt;br /&gt;A.lnk  --&gt; Apunta a B.lnk&lt;br /&gt;B.lnk --&gt; Apunta a A.lnk&lt;br /&gt;&lt;br /&gt;Formando asi una especie de ciclo sin fin.&lt;br /&gt;Obviamente, esto no se puede hacer con el sistema operativo en si, es decir, tecnicamente hablando: "el windo' no te deja, che"&lt;br /&gt;Pero, con la ayuda de un editor hexa se puede lograr. El efecto (y por el cual lo nombré blackhole) es que el explorer crashea. No podés ver que hay dentro de la carpeta que los contiene.&lt;br /&gt;Esto fue testeado en windows2000 y windowsXP.&lt;br /&gt;En windows98... NO FALLA!!!&lt;br /&gt;Aparentemente en windows Vista está corregido. La prueba que hice no falló. Quedaría ver que sucede con accesos creados en Vista, pero me imagino que es lo mismo, no va a fallar.&lt;br /&gt;&lt;br /&gt;Procedimiento:&lt;br /&gt;Antes que nada, no lo pongan en el escritorio ya que crasheará el explorer y no lo podrán arreglar mas que entrando en modo consola.&lt;br /&gt;&lt;br /&gt;1) Crear un archivo. Digamos: C:\Prueba\A.txt&lt;br /&gt;2) Generar un acceso directo al mismo. Digamos C:\Prueba\A.lnk&lt;br /&gt;3) Borrar A.txt&lt;br /&gt;4) Editar A.lnk con un editor HEXA. Es sencillo, van a ver varios caracteres ilegibles y, en medio de todo eso, por varios lados aparece el nombre del archivo&lt;br /&gt;"C:\Prueba\A.txt" eso lo cambiamos por C:\Prueba\B.lnk&lt;br /&gt;5) Copiar el A.lnk editado y pegarlo. Renombrarlo a B.lnk.&lt;br /&gt;6) Abrir B.lnk. Vamos a encontrarnos que dentro apunta a B.lnk (ya que es el A.lnk editado) Reemplazamos C:\Prueba\B.lnk por   C:\Prueba\A.lnk&lt;br /&gt;7) Nos quedó A.lnk apuntando a B.lnk y viceversa.&lt;br /&gt;8) Al entrar en la carpeta prueba usando el explorador de windows, veran como crashea.&lt;br /&gt;&lt;br /&gt;NO me hago responsable si se les cuelga windows o algo mas desagradable pasa. En todas las pruebas que realice solo moria el explorer (y levantaba de nuevo por si solo)&lt;br /&gt;&lt;br /&gt;Happy Testing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-4091508553614111214?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/4091508553614111214/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/black-hole-un-link-que-apunta-otro.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4091508553614111214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/4091508553614111214'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/black-hole-un-link-que-apunta-otro.html' title='Black Hole: Un link que apunta a otro'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-8532407908477119664</id><published>2009-03-20T13:07:00.000-07:00</published><updated>2009-09-16T18:59:45.123-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laboratorio'/><category scheme='http://www.blogger.com/atom/ns#' term='visual basic'/><title type='text'>Visual Basic 6 (testeo de compilación)</title><content type='html'>Queriendo compilar en visual basic 6 de la misma forma que en C (generando objects por separado y luego linkeandolos) encontré lo siguiente:&lt;br /&gt;&lt;br /&gt;El tema es, el VB6 compila con un exe C2.exe y linkea con el LINK.exe&lt;br /&gt;Lo que hice fue, reemplazar el C2.EXE por un exe mio, mi exe loguea los parametros que le pasa el vb6. Luego hice lo mismo con el link.exe y listo, tenia los parametros que le tengo que pasar a los dos exes.&lt;br /&gt;El C2.exe crea los OBJ, el link, linkea.&lt;br /&gt;&lt;strong style="font-weight: normal;"&gt;&lt;/strong&gt;&lt;blockquote style="font-weight: bold;"&gt;&lt;strong style="font-weight: normal;"&gt;log del C2.exe&lt;/strong&gt;  &lt;div&gt;-il "C:\DOCUME~1\Martin\CONFIG~1\Temp\VB375862" -f "Class1" -W 3 -Gy -G5 -Gs4096 -dos -Zl -Fo"C:\Documents and Settings\Martin\Escritorio\frmLala.OBJ" -QIfdiv -ML -basic&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt; &lt;div style="text-align: left; font-family: courier new; font-style: italic;"&gt;&lt;strong style="font-weight: normal;"&gt;&lt;/strong&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: left; font-family: courier new; font-style: italic;"&gt;&lt;strong style="font-weight: normal;"&gt;log del link.exe&lt;/strong&gt;  &lt;/div&gt;  &lt;div style="text-align: left; font-style: italic; font-family: courier new;"&gt;"C:\Documents and Settings\Martin\Escritorio\frmLala.OBJ" "C:\Documents and Settings\Martin\Escritorio\Proyecto.OBJ" "C:\Archivos de programa\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /OUT:"C:\Documents and Settings\Martin\Escritorio\Proyecto.exe" /BASE:0x400000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: left; font-style: italic; font-family: courier new;"&gt;&lt;/div&gt;&lt;br /&gt;Queda corregir un problema más. El vb6 genera un archivo por cada frm en un "lenguage intermedio". Se supone que es ese archivo que guarda en temporales y que genera usando el comando iL (intermediate language) Esto es una suposición mía.&lt;br /&gt;&lt;div style="font-style: italic;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-8532407908477119664?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/8532407908477119664/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/visual-basic-6-testeo-de-compilacion.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8532407908477119664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/8532407908477119664'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/visual-basic-6-testeo-de-compilacion.html' title='Visual Basic 6 (testeo de compilación)'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1800461261730007882.post-7263824212752236156</id><published>2009-03-20T12:50:00.000-07:00</published><updated>2009-09-16T18:59:14.806-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laboratorio'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Extensión XPI: Zips camuflados</title><content type='html'>Asi que eran zips camuflados nomás.&lt;br /&gt;Viendo el xpi (extensión de firefox) de piratesoftheamazon con un editor HEXA veo la marca&lt;br /&gt;PK&lt;br /&gt;Al comienzo del file. "Es un zip" pienso. Le cambio la extensión y ahi lo tenía. Todos los files que usa, js, archivos de imagen, etc.&lt;br /&gt;Interesante para hacer xpi propios.&lt;br /&gt;Luego busqué en google, cosa que debería haber hecho antes :)&lt;br /&gt;&lt;cite&gt;&lt;br /&gt;&lt;a href="http://filext.com/file-extension/XPI"&gt;http://filext.com/file-&lt;b&gt;extension&lt;/b&gt;/&lt;b&gt;XPI&lt;/b&gt; &lt;/a&gt;&lt;/cite&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1800461261730007882-7263824212752236156?l=stealthissoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stealthissoftware.blogspot.com/feeds/7263824212752236156/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/xpi-zips-camuflados.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7263824212752236156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1800461261730007882/posts/default/7263824212752236156'/><link rel='alternate' type='text/html' href='http://stealthissoftware.blogspot.com/2009/03/xpi-zips-camuflados.html' title='Extensión XPI: Zips camuflados'/><author><name>mRt</name><uri>http://www.blogger.com/profile/11096123777484326185</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://3.bp.blogspot.com/_4kgjazFo0gM/StfTOk4z_oI/AAAAAAAAACw/8VkHrlRlcXI/S220/ghjgjgh.jpg'/></author><thr:total>0</thr:total></entry></feed>
