<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Código atado con alambre</title>
	<atom:link href="http://conalambre.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://conalambre.wordpress.com</link>
	<description>¡Otro programador amateur!</description>
	<lastBuildDate>Sat, 03 Sep 2011 15:07:44 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='conalambre.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Código atado con alambre</title>
		<link>http://conalambre.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://conalambre.wordpress.com/osd.xml" title="Código atado con alambre" />
	<atom:link rel='hub' href='http://conalambre.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Linux en Tablet</title>
		<link>http://conalambre.wordpress.com/2011/09/03/linux-en-tablet/</link>
		<comments>http://conalambre.wordpress.com/2011/09/03/linux-en-tablet/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 13:34:31 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=79</guid>
		<description><![CDATA[Con el empuje de Mariana (la mujer que todo geek querría tener) compré una tablet (Acer W500). Compré la que viene con Windows porque quería instalar Linux. Luego de mirar varias revisiones de ese tablet, me dí cuenta que la principal crítica que tenía era por Windows, no por el equipo en si. Probé ubuntu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=79&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Con el empuje de Mariana (la mujer que todo geek querría tener) compré una tablet (Acer W500). Compré la que viene con Windows porque quería instalar Linux. Luego de mirar varias revisiones de ese tablet, me dí cuenta que la principal crítica que tenía era por Windows, no por el equipo en si.<br />
Probé ubuntu con diferentes escritorios: xfce, kde y unity. Me quedé con XFCE (Kde consume recursos, mas lento, experiencia menos &#8220;tablet&#8221;, Unity: es detestable y no hay modo que me acostumbre a eso).<br />
Casi todo funciona &#8220;out of the box&#8221; (WiFi, BT, pantalla) excepto un par de molestias: la emulación del botón secundario con el tacto y la rotación de la pantalla.<br />
Todavía no encuentro solución para el tema de la rotación.<br />
Emulación de botones: instalen <a href="http://sourceforge.net/apps/trac/easystroke/">easystroke</a> que funciona de maravilla. En este <a href="http://old.nabble.com/Touchscreen-right-click-emulation-td21821882.html">foro</a> explican como configurarlo (es sencillo).<br />
Los navegadores que uso no soportan gestos multitáctiles, así que POR AHORA no puedo hacer el clásico zoom con dos dedos. Ya vendrá.<br />
Agregado:<br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/grab-and-drag/">Scrolling en Firefox</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/79/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/79/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/79/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=79&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2011/09/03/linux-en-tablet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>Separación silábica en español con Lyx</title>
		<link>http://conalambre.wordpress.com/2011/03/28/separacion-silabica-en-espanol-con-lyx/</link>
		<comments>http://conalambre.wordpress.com/2011/03/28/separacion-silabica-en-espanol-con-lyx/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 11:02:03 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/2011/03/28/separacion-silabica-en-espanol-con-lyx/</guid>
		<description><![CDATA[Estoy usando cada vez más Lyx para escibir cualquier cosa que requiera de referencias bibliográficas. Lo combino con KBibTex para manejo de citas y Mendeley para manejo de PDFs de artículos científicos. A la hora de hacer separación silábica, la instalación por defecto (en Ubuntu/Kubuntu) no genera una separación correcta. Después de buscar un rato, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=76&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Estoy usando cada vez más <a href="http://es.wikipedia.org/wiki/LyX">Lyx</a> para escibir cualquier cosa que requiera de referencias bibliográficas. Lo combino con <a href="http://en.wikipedia.org/wiki/KBibTeX">KBibTex</a> para manejo de citas y <a href="www.mendeley.com">Mendeley</a> para manejo de PDFs de artículos científicos.</p>
<p>A la hora de hacer separación silábica, la instalación por defecto (en Ubuntu/Kubuntu) no genera una separación correcta.</p>
<p>Después de buscar un rato, encontré en <a href="http://bioinformatiquillo.wordpress.com/2009/01/15/hifenacion-o-silabacion-con-reglas-del-castellano-u-otro-idioma-en-lyx/">otro blog</a> que la instalación del paquete <em>texlive-lang-spanish</em> soluciona el problema.</p>
<p>&gt;&gt; sudo apt-get install textlive-lang-spanish</p>
<p>El problema no es de Lyx sino de LaTex (sobre el que se apoya Lyx).</p></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=76&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2011/03/28/separacion-silabica-en-espanol-con-lyx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>Administración remota de MySQL</title>
		<link>http://conalambre.wordpress.com/2011/03/09/administracion-remota-de-mysql/</link>
		<comments>http://conalambre.wordpress.com/2011/03/09/administracion-remota-de-mysql/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 12:30:16 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=72</guid>
		<description><![CDATA[Para un setup rápido y sucio de mysql con administración remota, entrar con ssh al sitio remoto y mediante: mysql -u root -p acceder a la cuenta root y luego teclear: GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'password' Si se cambia &#8220;root&#8221; por otro usuario, también funciona. Lo de siempre: lo pongo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=72&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para un setup rápido y sucio de mysql con administración remota, entrar con ssh al sitio remoto y mediante:<br />
<code><br />
mysql -u root -p<br />
</code><br />
acceder a la cuenta root y luego teclear:<br />
<code><br />
GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'password'<br />
</code><br />
Si se cambia &#8220;root&#8221; por otro usuario, también funciona.<br />
Lo de siempre: lo pongo acá porque se que después lo voy a necesitar.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=72&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2011/03/09/administracion-remota-de-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>Moneda, decimales y redondeo en Python</title>
		<link>http://conalambre.wordpress.com/2011/03/08/moneda-decimales-y-redondeo-en-python/</link>
		<comments>http://conalambre.wordpress.com/2011/03/08/moneda-decimales-y-redondeo-en-python/#comments</comments>
		<pubDate>Tue, 08 Mar 2011 05:28:38 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=68</guid>
		<description><![CDATA[A pesar de lo obvio que parece después, trabajar con el tipo Float, cuando uno quiere trabajar con moneda &#38; contabilidad en Python, NO es lo mismo. El módulo decimal, está diseñado específicamente para manejar números que requieran de una representación exacta, como se suele requerir en contabilidad. El tipo float no cumple ese cometido [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=68&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A pesar de lo obvio que parece después, trabajar con el tipo Float, cuando uno quiere trabajar con moneda &amp; contabilidad en Python, NO es lo mismo.</p>
<p>El <a href="http://docs.python.org/library/decimal.html">módulo decimal,</a> está diseñado específicamente para manejar números que requieran de una representación exacta, como se suele requerir en contabilidad. El tipo float no cumple ese cometido (leer la descripción para ver porqué).</p>
<p>Cuando entramos al modo &#8220;decimal&#8221;, no siempre Python maneja las conversiones de modo inteligente, por eso nos podemos topar con varias dificultades.</p>
<p>Una es el <a href="http://en.wikipedia.org/wiki/Rounding">redondeo</a>. La clase decimal tiene varios tipos de redondeos, pero con fines prácticos, para programas vinculados a contabilidad, modifiqué una <a href="http://pyxx.org/2007/10/28/how-to-round-decimal-numbers-in-python/">rutina que encontré en otro blog.</a> Como siempre lo pongo acá porque se que en algún momento lo voy a precisar.</p>
<pre>def redondeo(cifra, digitos=0):
  """Rutina par redondeo de cifras decimales como para uso en contabilidad"""
  # Symmetric Arithmetic Rounding for decimal numbers
  if type(cifra) != decimal.Decimal:
    cifra = decimal.Decimal(str(cifra))
  return cifra.quantize(decimal.Decimal("1") / (decimal.Decimal('10') ** digitos), decimal.ROUND_HALF_UP)
</pre>
<p>Como siempre, es mejorable, pero da una idea del asunto.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=68&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2011/03/08/moneda-decimales-y-redondeo-en-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>Gmail crackeado o &#8220;al carajo en un segundo&#8221;</title>
		<link>http://conalambre.wordpress.com/2010/06/20/gmail-crackeado-o-al-carajo-en-un-segundo/</link>
		<comments>http://conalambre.wordpress.com/2010/06/20/gmail-crackeado-o-al-carajo-en-un-segundo/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 23:29:42 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=61</guid>
		<description><![CDATA[Hoy de mañana me llaman por teléfono y me dicen: &#8220;Si no estás en Londres necesitando plata, entonces te entraron a tu cuenta de GMail&#8221;. A eso siguieron varias horas de recuperación de la cuenta, contestar llamadas telefónicas solidarias y mandar mails de disculpas. Más de uno, alarmado, me pregunta qué pasó, cómo pasó, como [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=61&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hoy de mañana me llaman por teléfono y me dicen: &#8220;Si no estás en Londres necesitando plata, entonces te entraron a tu cuenta de GMail&#8221;.</p>
<p>A eso siguieron varias horas de recuperación de la cuenta, contestar llamadas telefónicas solidarias y mandar mails de disculpas.</p>
<p>Más de uno, alarmado, me pregunta qué pasó, cómo pasó, como hago para que no me pase y qué hago si me pasa.</p>
<p>1. Qué pasó</p>
<p>Alguien se adueñó de mi cuenta de GMail con la finalidad de fingir que me encontraba en apuros económicos y que necesitaba dinero. El objetivo era que la gente se ofreciera a ayudar y de ahí rastrillar algunos dólares.</p>
<p>2. Cómo pasó:</p>
<p>Mediante técnicas <a href="http://sectools.org/crackers.html">fuerza bruta</a>, <a href="http://sectools.org/sniffers.html">&#8220;olfateo&#8221; de datos</a> en la red o explotación de<a href="http://sectools.org/web-scanners.html"> vulnerabilidades</a>, alguien obtuvo mi clave de acceso a GMail. Una vez ahí mandaron un correo masivo a todos mis contactos, borraron todos mis contactos y setearon GMail para derivar los correos a una cuenta en Yahoo. A los que saben que soy Linuxero: las técnicas son independientes del SO (Win, Mac o Lin).</p>
<p>3. Como hago para que no me pase:</p>
<p>Lo mejor es usar una<a href="http://mail.google.com/support/bin/answer.py?hl=es&amp;answer=29409"> clave lo más segura posible</a>. La mayor seguridad está en las claves más largas, con mezcla de mayúsculas, minúsculas, números y símbolos. Es inversamente proporcional a la comodidad. Con aproximadamente 10 caracteres que mezclen Min Masc y Numeros, andamos mas o menos bien (mi clave era de 8, solo con Min y Num). Pero lo más importante: nadie está libre. Lo mínimo que uno puede hacer es no tener una cuenta &#8220;juan&#8221; (usuario &#8220;juan&#8221;, clave &#8220;juan&#8221;) porque eso es lo primero que prueba cualquier programa crackeador. Si tienen la info de nuestro cumpleaños o similar, también: evitar claves con fechas clave. <a href="http://www.google.com/help/security/">Aquí hay otros tips de seguridad.</a></p>
<p>4. Qué hago si me pasa:</p>
<p>GMail tiene un sistema para recuperar la clave. El tema es que si entraron, pueden haber cambiado la dirección secundaria a donde mandar la clave, con lo cual son boleta. Entonces hay que entrar a la recuperación, marcar que alguien se adueño de la dirección y luego elegir la opción de llenar un formulario. En el formulario nos piden varias cosas pero lo más importante:</p>
<p>* 5 direcciones de correo de uso frecuente</p>
<p>* la fecha (lo más exacta posible) de creación de nuestra cuenta de gmail</p>
<p>* la última clave</p>
<p>* una dirección de correo alternativa</p>
<p>Con eso, llegan los datos para recuperar la cuenta.</p>
<p>Pero la historia no termina ahí: nuestra cuenta está alterada para reenviar los correos que llegan, con lo cual, sin que se den cuenta, los correos de nuestros amigos van a parar a la dirección de estos muchachos. Hay que entrar a  las opciones de configuración POP y cambiar el redireccionamiento (o inhabilitar POP).</p>
<p>Cambien las claves de todos aquellos servicios fuera de google que tengan la misma clave que la que fue crackeada.</p>
<p>Después de eso: la penosa tarea de avisar a nuestros contactos de a uno (porque se borraron las listas).</p>
<p>5. Otros</p>
<p>No reenviar cadenas (suelen traer en la &#8220;cola&#8221; todas las direcciones de mail por las que pasó). Son usadas para recolectar datos de posibles blancos.</p>
<p>No poner direcciones de correo en las firmas (se suele poner marcelo_en_dominio_punto_com como equivalente de marcelo@dominio.com).</p>
<p>Recuerden que &#8220;la nube&#8221; (concepción que nos empuja a guardar nuestros datos en la red en lugar de nuestras computadoras) todavía es una nube. Basta un crackeo para perder (como en mi caso y gracias al oligopolio de google):</p>
<p>* blogs (blogger.com)</p>
<p>* correos (gmail.com), attachments y contactos</p>
<p>* grupos (google groups),</p>
<p>* fotos (flickr),</p>
<p>* videos (youtube, pertenece a google)</p>
<p>* calendarios (google calendars)</p>
<p>* documentos (google docs)</p>
<p>Otros (notas, paginas web, etc) (uso casi todos los servicios de google).</p>
<p>Quizás es mejor no poner todos los huevos en la misma canasta.</p>
<p>Lo que espero es no ser asaltado en Londres, porque soy boleta: nadie me va a ayudar porque van a pensar que es joda.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/61/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/61/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/61/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=61&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2010/06/20/gmail-crackeado-o-al-carajo-en-un-segundo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>Bienvenidos a GNU/Linux &#8211; Ubuntu</title>
		<link>http://conalambre.wordpress.com/2010/06/09/bienvenidos-a-gnulinux-ubuntu/</link>
		<comments>http://conalambre.wordpress.com/2010/06/09/bienvenidos-a-gnulinux-ubuntu/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 13:33:15 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=58</guid>
		<description><![CDATA[Como varios compañeros están dándole una oportunidad a Linux y como Ubuntu suele ser la puerta de entrada, pongo acá unos links que pueden servir (algunos son específicos de Uruguay): Nivel Básico (precontemplación) Qué es GNU/Linux Qué es Ubuntu Antes o después de instalar La comunidad es un elemento fundamental para Linux. Todo es trabajo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=58&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Como varios compañeros están dándole una oportunidad a Linux y como Ubuntu suele ser la puerta de entrada, pongo acá unos links que pueden servir (algunos son específicos de Uruguay):</p>
<p><strong>Nivel Básico (precontemplación)</strong><br />
<a href="http://es.wikipedia.org/wiki/GNU/Linux">Qué es GNU/Linux</a><br />
<a href="http://es.wikipedia.org/wiki/Ubuntu">Qué es Ubuntu</a></p>
<p><strong>Antes o después de instalar</strong></p>
<p>La<a href="http://www.ubuntu-es.org/"> comunidad</a> es un elemento fundamental para Linux. Todo es trabajo colectivo.</p>
<p>Comunidad<a href="http://www.linux.net.uy/tiki-index.php"> Linuxera uruguaya</a>, comunidad <a href="http://www.ubuntu.org.uy/main/">Ubuntera uruguaya</a>.<br />
<a href="http://doc.ubuntu-es.org/Documentaci%C3%B3n">Documentación básica</a><br />
<a href="http://www.ubuntu.org.uy/main/forum">Foros para novatos</a>. Si buscaron la información que necesitan (si realmente buscaron) y no la encontraron, puedo responder acá alguna pregunta.</p>
<p><strong>Nivel avanzado (crackear el PC de la abuela con Windows 98)</strong></p>
<p><a href="http://ubuntu.chapinware.com/">Tuneadores del sistema</a> / <a href="http://www.esubuntu.com/">Otro blog</a></p>
<p><a href="http://es.ubuntu-blog.com/">Surfers del sistema</a><br />
Potros de la consola: no necesitan links.</p>
<p>Nota: &#8220;conalambre&#8221; no es un blog sobre ubuntu ni contiene información util para gente que recién empieza. Hay cientos de blogs más útile para eso.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=58&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2010/06/09/bienvenidos-a-gnulinux-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>Administración remota de servidor MySql</title>
		<link>http://conalambre.wordpress.com/2010/04/20/administracion-remota-de-servidor-mysql/</link>
		<comments>http://conalambre.wordpress.com/2010/04/20/administracion-remota-de-servidor-mysql/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 13:26:57 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=56</guid>
		<description><![CDATA[Varias veces tropiezo con la búsqueda del mismo dato: Cómo hago para administrar remotamente un servidor MySQL. Hay varios formas de hacerlo en diferentes páginas, pero la forma más sucia y simple es: 1. Entrar al servidor en modo consola con SSH ssh mi.servidor.com 2. Editar el archivo de configuración de mysql (Ejemplo: sudo sudo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=56&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Varias veces tropiezo con la búsqueda del mismo dato:<br />
Cómo hago para administrar remotamente un servidor MySQL.<br />
Hay varios formas de hacerlo en diferentes páginas, pero la forma más sucia y simple es:</p>
<p>1. Entrar al servidor en modo consola con SSH<br />
<code>ssh mi.servidor.com</code><br />
2. Editar el archivo de configuración de mysql (Ejemplo: sudo<br />
<code>sudo nano /etc/mysql/my.cnf</code><br />
3. Comentar la línea que dice &#8220;bind-address = 127.0.0.1&#8243;<br />
<code># bind-address = 127.0.0.1</code><br />
4. Reiniciar el servidor mysql:<br />
<code>sudo /etc/init.d/mysql restart</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=56&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2010/04/20/administracion-remota-de-servidor-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>CGI con Python y flush() en Apache 2</title>
		<link>http://conalambre.wordpress.com/2010/02/05/cgi-con-python-y-flush-en-apache-2/</link>
		<comments>http://conalambre.wordpress.com/2010/02/05/cgi-con-python-y-flush-en-apache-2/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 19:13:29 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=52</guid>
		<description><![CDATA[Para mi sorpresa, un script &#8220;correctamente&#8221; hecho con python, que procesaba gran cantidad de información, no mandaba su salida en formato HTML hasta que completaba. El usuario debía tener alguna pista visual de qué era lo que estaba haciendo la máquina. A pesar de usar: import sys ... sys.stdout.flush() &#8230; no cambiaba el comportamiento de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=52&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para mi sorpresa, un script &#8220;correctamente&#8221; hecho con python, que procesaba gran cantidad de información, no mandaba su salida en formato HTML hasta que completaba. El usuario debía tener alguna pista visual de qué era lo que estaba haciendo la máquina.</p>
<p>A pesar de usar:<br />
<code><br />
import sys<br />
...<br />
sys.stdout.flush()<br />
</code><br />
&#8230; no cambiaba el comportamiento de la página.<br />
Después de googlear un poco, me encuentro con que Apache 2 tiene habilitado por defecto el módulo de compresión (deflate), con lo cual, el sistema espera que termine de renderizar la página, comprime y manda.<br />
Basta con deshabilitar este módulo con:<br />
<code><br />
sudo a2dismod deflate<br />
sudo /etc/init.d/apache2 restart<br />
</code><br />
Con lo que quedó solucionado el problema&#8230;<br />
Lo pongo porque se que después me va a pasar lo mismo y voy a terminar&#8230; acá.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=52&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2010/02/05/cgi-con-python-y-flush-en-apache-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>Sistemas de control de versiones distribuidos</title>
		<link>http://conalambre.wordpress.com/2010/01/28/sistemas-de-control-de-versiones-distribuidos/</link>
		<comments>http://conalambre.wordpress.com/2010/01/28/sistemas-de-control-de-versiones-distribuidos/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 17:50:31 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Desarrollo]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=50</guid>
		<description><![CDATA[Para quienes no provienen del área informática, un sistema de control de versiones (en español)  es un sistema que tienen los desarrolladores de software para trabajar de forma distribuida en un mismo proyecto. El sistema se encarga de llevar las versiones, analizar diferencias entre códigos, evaluar conflictos, etc. En los sistemas clásicos hay un servidor [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=50&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para quienes no provienen del área informática, un <a href="http://en.wikipedia.org/wiki/Revision_control">sistema de control de versiones</a> (<a href="http://es.wikipedia.org/wiki/Control_de_versiones">en español</a>)  es un sistema que tienen los desarrolladores de software para trabajar de forma distribuida en un mismo proyecto. El sistema se encarga de llevar las versiones, analizar diferencias entre códigos, evaluar conflictos, etc. En los sistemas clásicos hay un servidor que almacena una versión &#8220;oficial&#8221;. En los sistemas descentralizados cada computadora es un servidor y un repositorio. No hay centro: cada quien desarrolla y va posteando, todo lleva un &#8220;merge&#8221; en una &#8220;branch&#8221; transformándose en una &#8220;release&#8221;.<br />
Hay toda una jerga desarrollada por desarrolladores para poder manejar proyectos descentralizados (la enorme mayoría del software libre se desarrolla con sistemas de control de versiones [que pueden o no  ser distrubuidos], los distribuidos son cada vez más frecuentes). Esa jerga podría ser útil para manejo de cualquier tipo de producción intelectual colectiva que deba tener un &#8220;output&#8221; o &#8220;deliverable&#8221; único.</p>
<p>Los sistemas clásicos son CVS, Subversion y otros. Los más actuales: <a href="http://bazaar.canonical.com/en/">Bazaar</a>, <a href="http://git-scm.com/">Git</a>, <a href="http://mercurial.selenic.com/">Mercurial</a> y otros.</p>
<p>Desarrollando un proyecto de sistema de gestión basado en web (python + php + ruby) surgió la necesidad de controlar los cambios que se van produciendo y a la vez dejar una puerta abierta para poder el día de mañana liberar el código (y que se puedan sumar otros desarrolladores).</p>
<p>Después de evaluar unos cuantos me decidí por Bazaar (muy tentado por Git y asombrado por la elección del equipo de Python de usar Mercurial por un tema de &#8220;antipatía&#8221; por Git). Git fue inicialmente desarrollado por el mismísimo Linus Torvalds y es el sistema que actualmente se usa para muchos de los proyectos más grandes y complejos: Linux Kernel, Gnome, Qt, X, etc). La elección de Bazaar tiene más que ver con la facilidad que proporcionan las interfases gráficas para una tarea que recién estoy aprendiendo. Si fuese un poco más experimentado, quizás usaría Git.</p>
<p>En realidad este post era para poner un link a <a href="http://excess.org/article/2008/07/ogre-git-tutorial/">una presentación sobre Git</a> que me pareció interesante en varios aspectos:</p>
<ul>
<li>Ilustra de forma muy gráfica el proceso de desarrollo descentralizado.</li>
<li>Enseña a manejar Git y a conceptualizar un poco más allá</li>
<li>Es interesante como técnica de presentación (alternativa al clásico &#8220;Powerpoint&#8221;): una guía al costado y un uso adecuado de los espacios, gráficos y texto.</li>
</ul>
<p>El desafío para los &#8220;no desarrolladores&#8221; es poder aprender de estas herramientas que se mostraron más que eficaces para manejo de proyectos enormes y pequeños (escalabilidad), de forma centralizada o distrubuida (flexibilidad) con un esquema de trabajo que trasciende la <a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n">programación</a> y entra más en la <a href="http://es.wikipedia.org/wiki/Inform%C3%A1tica">informática</a> (por ejemplo: es usado por desarrolladores gráficos [íconos, señalizaciones, etc]).</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=50&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2010/01/28/sistemas-de-control-de-versiones-distribuidos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
		<item>
		<title>Buscar y reemplazar desde Ruby</title>
		<link>http://conalambre.wordpress.com/2009/11/08/buscar-y-reemplazar-desde-ruby/</link>
		<comments>http://conalambre.wordpress.com/2009/11/08/buscar-y-reemplazar-desde-ruby/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 12:37:53 +0000</pubDate>
		<dc:creator>mescobal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://conalambre.wordpress.com/?p=46</guid>
		<description><![CDATA[Dado que la línea de comando es un chorizo de caracteres que no siempre es fácil recordar, pensé en hacer un script en ruby que hiciera lo mismo pero con una sintaxis de tipo: srchreplace cadena_a_buscar cadena_nueva *.php Básicamente lo que quería hacer era, por ejemplo, encontrar todos los archivos de php que hacen  referencia [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=46&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dado que la línea de comando es un chorizo de caracteres que no siempre es fácil recordar, pensé en hacer un script en ruby que hiciera lo mismo pero con una sintaxis de tipo:</p>
<pre>srchreplace cadena_a_buscar cadena_nueva *.php</pre>
<p>Básicamente lo que quería hacer era, por ejemplo, encontrar todos los archivos de php que hacen  referencia a &#8220;contabilidad.php&#8221; y cambiarlos por &#8220;contabilidad.py&#8221; .</p>
<p>Lo primero, para no reinventar la rueda fue buscar un script similar. Lo más parecido que encontré fue en la página &#8220;<a href="http://erikonrails.snowedin.net/?p=107">Erik on Rails</a>&#8220;. Si bien no era exactamente lo mismo, tenía una clase que se podía aprovechar. Gracias Erik.</p>
<p>Lo segundo fue crear el script que haga uso de esa clase.</p>
<p>Acá va el script:</p>
<pre>#!/usr/bin/env ruby
class File
def replace(pattern, string)
full_path = File.expand_path path
return if !File.file?(full_path)

reopen(full_path, 'r')
lines = readlines

changes = false
lines.each do |line|
changes = true if line.gsub!(pattern, string)
end

if changes
reopen(full_path, 'w')
lines.each do |line|
write(line)
end
close
end
end
end

if ARGV.count != 3
puts "Error: argumentos incorrectos"
puts "Uso: srchrep.rb cadena_buscar cadena_reemplazar archivos"
puts "Donde 'archivos' es una lista de archivos en formato *.* entre comillas "
else
# ver si existe archivo
# hacer una lista de archivos que tengan la cadena buscada
files = Dir.glob(ARGV[2])
numarch = files.count
# por cada archivo de la lista
for filename in files
arch = File.open(filename)
arch.replace(/#{ARGV[0]}/,ARGV[1])
end
end
</pre>
<p>El principal problema es que el shell convierte la línea de comandos expandiendo los comodines, por lo cual la sintaxis pasa a ser:</p>
<pre>./srchreplace.rb cadena_buscar cadena_reemplazar "*.php"</pre>
<p>No encontré manera más elegante de hacerlo. Pero me resulta práctico.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/conalambre.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/conalambre.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/conalambre.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/conalambre.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/conalambre.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/conalambre.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/conalambre.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/conalambre.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/conalambre.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/conalambre.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/conalambre.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/conalambre.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/conalambre.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/conalambre.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=conalambre.wordpress.com&amp;blog=2494482&amp;post=46&amp;subd=conalambre&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://conalambre.wordpress.com/2009/11/08/buscar-y-reemplazar-desde-ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9cb65bdce78d677b6bf34e57cc52f265?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mescobal</media:title>
		</media:content>
	</item>
	</channel>
</rss>
