<?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>Cjenkins blog</title>
	<atom:link href="http://cjenkins.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cjenkins.wordpress.com</link>
	<description>Programación, Software Libre</description>
	<lastBuildDate>Thu, 29 Dec 2011 20:36:56 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='cjenkins.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Cjenkins blog</title>
		<link>http://cjenkins.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://cjenkins.wordpress.com/osd.xml" title="Cjenkins blog" />
	<atom:link rel='hub' href='http://cjenkins.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Python: Retorno en bloque try-except-finally</title>
		<link>http://cjenkins.wordpress.com/2011/11/19/318/</link>
		<comments>http://cjenkins.wordpress.com/2011/11/19/318/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 23:39:23 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[try-except-finally]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=318</guid>
		<description><![CDATA[Bueno saberlo: En Python se puede tener un bloque try-except-finally, retornar en except y aún así el código finally es ejecutado. Genial! &#62;&#62;&#62; def function(): ... try: ... raise Exception() ... except: ... return True ... finally: ... print 'Finally executed' ... &#62;&#62;&#62; function() Finally executed True<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=318&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bueno saberlo:</p>
<p>En Python se puede tener un bloque try-except-finally, retornar en except y aún así el código finally es ejecutado. Genial!</p>
<pre>
&gt;&gt;&gt; def function():
...     try:
...         raise Exception()
...     except:
...         return True
...     finally:
...         print 'Finally executed'
...
&gt;&gt;&gt; function()
Finally executed
True
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/318/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/318/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/318/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=318&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2011/11/19/318/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Kölbi datacard en Ubuntu</title>
		<link>http://cjenkins.wordpress.com/2011/10/11/kolbi-datacard-en-ubuntu/</link>
		<comments>http://cjenkins.wordpress.com/2011/10/11/kolbi-datacard-en-ubuntu/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 01:25:42 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[ice]]></category>
		<category><![CDATA[kolbi]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=312</guid>
		<description><![CDATA[El ICE ofrece desde hace meses paquetes de Internet por red 3G. Los paquetes incluyen un modem 3G de marca Huawei. El servicio de Internet por 3G es compartido, es decir, que si hay mucha gente en la red la conexión va a decaer sobremanera. Personalmente lo adquirí para emergencias, viajes, reuniones, etc, en la <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=312&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El ICE ofrece desde hace meses paquetes de Internet por red 3G. Los paquetes incluyen un modem 3G de marca Huawei.</p>
<p>El servicio de Internet por 3G es compartido, es decir, que si hay mucha gente en la red la conexión va a decaer sobremanera. Personalmente lo adquirí para emergencias, viajes, reuniones, etc, en la que no hay una red WiFi decente cerca o esté cerrada.</p>
<p>Configurar el Huawei es sumamente fácil en Ubuntu. Primero es verificar que los paquetes modeswitch estén instalados:</p>
<p><code>sudo apt-get install usb-modeswitch usb-modeswitch-data</code></p>
<p>Ahora conectamos el modem, ingresamos el PIN. Click derecho sobre el icono de conexión en la barra superior derecha -&gt; Editar las conexiones&#8230; -&gt; Banda ancha móvil -&gt; Añadir</p>
<p>Seleccionamos Costa Rica, siguiente, Mi proveedor no está mostrado, escribimos &#8220;kolbi&#8221;, siguiente, APN es kolbi3g, siguiente, siguiente.</p>
<p>Bien, esa parte no era muy importante, si se equivocaron no importa, lo importante es seleccionar la nueva conexión hacer click en &#8220;Editar&#8221;.</p>
<p>Ahora, la conexión debe estar exactamente igual a las siguientes imágenes:</p>
<p>&nbsp;</p>
<p><a href="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_1.png"><img class="aligncenter size-medium wp-image-313" title="kolbi_datacard_ubuntu_1" src="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_1.png?w=300&#038;h=295" alt="" width="300" height="295" /></a></p>
<p><a href="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_2.png"><img class="aligncenter size-medium wp-image-314" title="kolbi_datacard_ubuntu_2" src="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_2.png?w=300&#038;h=295" alt="" width="300" height="295" /></a></p>
<p><a href="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_3.png"><img class="aligncenter size-medium wp-image-315" title="kolbi_datacard_ubuntu_3" src="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_3.png?w=300&#038;h=295" alt="" width="300" height="295" /></a></p>
<p>Recuerden poner el PIN del modem en la primera pantalla. Cuando conecten el modem se les pedirá el PIN, pueden hacer click en cancelar y seleccionar la conexión de banda ancha y este se encarga de desbloquearlo con el PIN que pusieron en configuración.</p>
<p>Saludos</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/312/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=312&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2011/10/11/kolbi-datacard-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>

		<media:content url="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_1.png?w=300" medium="image">
			<media:title type="html">kolbi_datacard_ubuntu_1</media:title>
		</media:content>

		<media:content url="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_2.png?w=300" medium="image">
			<media:title type="html">kolbi_datacard_ubuntu_2</media:title>
		</media:content>

		<media:content url="http://cjenkins.files.wordpress.com/2011/10/kolbi_datacard_ubuntu_3.png?w=300" medium="image">
			<media:title type="html">kolbi_datacard_ubuntu_3</media:title>
		</media:content>
	</item>
		<item>
		<title>Yo y el Humble Indie Bundle 3 en Linux</title>
		<link>http://cjenkins.wordpress.com/2011/07/28/yo-y-el-humble-indie-bundle/</link>
		<comments>http://cjenkins.wordpress.com/2011/07/28/yo-y-el-humble-indie-bundle/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 05:13:23 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=297</guid>
		<description><![CDATA[El Humble Indie Bundle 3 está activo en este momento, puede conocer más sobre el mismo en http://www.humblebundle.com Después de comprar el paquete me decidí a ejecutarlo en mi Ubuntu 10.10. Aquí mi experiencia: 1. Crayon Physics Deluxe Viene en un tar.gz, se extrae y se ejecuta el ejecutable &#8216;launcher&#8217;. En mi caso: ./launcher ./launcher: error <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=297&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El Humble Indie Bundle 3 está activo en este momento, puede conocer más sobre el mismo en <a href="http://www.humblebundle.com/">http://www.humblebundle.com</a></p>
<p>Después de comprar el paquete me decidí a ejecutarlo en mi Ubuntu 10.10. Aquí mi experiencia:</p>
<h3>1. Crayon Physics Deluxe</h3>
<p>Viene en un tar.gz, se extrae y se ejecuta el ejecutable &#8216;launcher&#8217;. En mi caso:</p>
<p><code>./launcher<br />
./launcher: error while loading shared libraries: libmikmod.so.2: cannot open shared object file: No such file or directory</code></p>
<p>Un rápido &#8216;apt-cache search libmikmod&#8217; arrojó:</p>
<p><code>libmikmod2 - A portable sound library<br />
libmikmod2-dev - A portable sound library - development files</code></p>
<p>Seguido de:</p>
<p><code>sudo apt-get install libmikmod2</code></p>
<p>Listo&#8230; otra vez:</p>
<p><code>./launcher<br />
./launcher: error while loading shared libraries: libsmpeg-0.4.so.0: cannot open shared object file: No such file or directory</code></p>
<p>mmm&#8230;.</p>
<p><code>sudo apt-get install libsmpeg0</code></p>
<p>Ahora si, se vuelve a ejecutar y ya funciona. Jugué un rato, es divertido. Al salir, este es el output:</p>
<p><code>./launcher: /usr/lib/libjpeg.so.62: no version information available (required by /home/havok/Programas/CrayonPhysicsDeluxe/lib32/libSDL_image-1.2.so.0)<br />
./crayon: /usr/lib/libjpeg.so.62: no version information available (required by /home/havok/Programas/CrayonPhysicsDeluxe/lib32/libSDL_image-1.2.so.0)<br />
warning: failed to open directory 'My Solutions'<br />
warning: failed to open directory 'My Solutions'</code></p>
<p>Tiene varios warnings, pero nada que le impida funcionar.</p>
<h3>2. Cogs</h3>
<p>Viene en un archivo ejecutable. Entonces le damos permisos de ejecución:</p>
<p><code>chmod +x cogs-linux-bin<br />
./cogs-linux-bin</code></p>
<p>Con eso sale un dialogo de instalación&#8230; siguiente siguiente y listo. Vas a la carpeta donde se instaló y ejecutas el archivo &#8216;Cogs&#8217;:</p>
<p><code>./Cogs</code></p>
<p>Sólo que en mi caso:</p>
<p><code>Warning: It appears that your hardware doesn't meet the minimum requirements necessary to run Cogs.  The following OpenGL extensions are unsupported: GL_EXT_texture_compression_s3tc</code></p>
<p> <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Hasta ahí llegué con Cogs, no pude jugarlo.</p>
<p><strong>ACTUALIZACIÓN</strong>: Probé en mi otra computadora con una mejor tarjeta de vídeo y funcionó sin problemas, muy bueno el juego <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>3. VVVVVV</h3>
<p>Viene en un tar.gz, se extrae y se ejecuta el archivo &#8216;VVVVVV&#8217;:</p>
<p><code>./VVVVVV<br />
./VVVVVV_32: error while loading shared libraries: libSDL_mixer-1.2.so.0: cannot open shared object file: No such file or directory</code></p>
<p>Mmmm&#8230;.</p>
<p><code>sudo apt-get install libsdl-mixer1.2</code></p>
<p>Ahora si, ya funciona. El output es bastante largo, pero ningún warning, sólo datos de información. Buenísimo este juego!!</p>
<h3>4. Hammerfight</h3>
<p>Este juego viene en un archivo ejecutable.</p>
<p><code>chmod +x hf-linux-07172011<br />
./hf-linux-07172011</code></p>
<p>Con eso sale un dialogo de instalación&#8230; siguiente siguiente y listo. Vas a la carpeta donde se instaló y ejecutas el archivo &#8216;Hammerfight&#8217;:</p>
<p><code>./Hammerfight</code></p>
<p>Listo. Ahhh!! No puedo jugar esto :S</p>
<h3>5. And Yet It Moves</h3>
<p>Este viene en un paquete Debian, dependiendo de la arquitectura. Yo, de 32bits. Se instala con doble click y el Centro de Software de Ubuntu se encarga del resto. Una vez instalado se encuentra en el menú de Juegos o se puede ejecutar el comando &#8216;AndYetItMoves&#8217;.</p>
<p>Que juego más loco! <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Eso sería todo <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Que buen Bundle.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/297/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/297/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/297/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=297&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2011/07/28/yo-y-el-humble-indie-bundle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Cómo migrar los módulos de Drupal</title>
		<link>http://cjenkins.wordpress.com/2011/07/23/como-migrar-los-modulos-de-drupal/</link>
		<comments>http://cjenkins.wordpress.com/2011/07/23/como-migrar-los-modulos-de-drupal/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 02:47:21 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programas]]></category>
		<category><![CDATA[Servidor]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=294</guid>
		<description><![CDATA[Cuando empecé en el mundo de Drupal colocaba todos los módulos en sites/all/modules/ Varios de los sitios que hice tienen esa estructura. Más adelante, cuando conocí drush y luego gracias a la excelente guía de Felix Delattre conocí una buena práctica para organizar los módulos que probaría ser indispensable una vez que me metí a <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=294&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Cuando empecé en el mundo de Drupal colocaba todos los módulos en <strong>sites/all/modules/</strong></p>
<p>Varios de los sitios que hice tienen esa estructura. Más adelante, cuando conocí drush y luego gracias a la excelente guía de <a href="http://aprende.drupal-centroamerica.org/sites/default/files/007-programar.odp">Felix Delattre</a> conocí una buena práctica para organizar los módulos que probaría ser indispensable una vez que me metí a programar y parchear módulos:</p>
<ul>
<li><strong>sites/all/modules/contrib</strong> :: Todos los módulos contribuidos por la comunidad.</li>
<li><strong>sites/all/modules/custom</strong> :: Los módulos propios creados para el sitio web.</li>
<li><strong>sites/all/modules/features</strong> :: Almacena las <a href="http://drupal.org/project/features">características</a> exportadas del sitio.</li>
<li><strong>sites/all/modules/patched</strong> :: Almacena los módulos contribuidos que fueron parcheados por uno mismo.</li>
</ul>
<p>Lo genial de esta estructura es que <a href="http://drupal.org/project/drush">Drush</a> la reconoce sin problemas, entonces descarga los módulos bajo contrib y no actualiza los que están bajo patched <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Como mencioné anteriormente un par de sitios que había hecho no tenían esa estructura y quería mover los módulos, como 40 de ellos. Resultó ser muy simple, sólo es necesario mover los módulos, luego recrear la tabla del sistema y borrar las tablas de caché. En comandos:</p>
<p><code><br />
cd [...]/sites/all/modules/<br />
mkdir contrib<br />
mv * contrib/<br />
mkdir patched features custom<br />
mv contrib/alguno /carpeta (Se organizan los que eran custom, patched, etc)<br />
drush sm -q<br />
drush cc all<br />
</code></p>
<p>Listo! Lo bueno de esto es que también puede arreglar los típico error de principiante de colocar los módulos contribuidos en /modules/ junto a los módulos del core.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/294/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/294/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/294/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=294&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2011/07/23/como-migrar-los-modulos-de-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Pathauto idioma neutral</title>
		<link>http://cjenkins.wordpress.com/2011/07/22/pathauto-idioma-neutral/</link>
		<comments>http://cjenkins.wordpress.com/2011/07/22/pathauto-idioma-neutral/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 23:16:33 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=290</guid>
		<description><![CDATA[(En inglés &#8216;Language Neutral Pathauto&#8217;) La versión para Drupal 6 de pathauto tiene un problema con la gestión de los paths en sitios con varios idiomas. El problema es que todos los nodos que cree cualquier usuario se crearán con el path automático en el idioma del usuario, independientemente si el tipo de contenido en <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=290&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>(En inglés &#8216;Language Neutral Pathauto&#8217;)</p>
<p>La versión para Drupal 6 de pathauto tiene un problema con la gestión de los paths en sitios con varios idiomas. El problema es que todos los nodos que cree cualquier usuario se crearán con el path automático en el idioma del usuario, independientemente si el tipo de contenido en particular acepta o no traducción del contenido o contenido en diferente idioma (modula &#8220;Content Translate&#8221; del core). Esto es un problema porque los usuarios que visiten ese URL que tengan otro idioma no podrán ver el nodo (404) porque no existe ese path para su idioma&#8230; de nuevo, es un tipo de contenido que no acepta traducción!!</p>
<p>La problema fue reportado pero los autores justifican que es una característica (yo insisto que es un error, porque es para tipos de contenido que no tengan traducción) y la solución propuesta, agregar una opción en la página de administración no les gustó porque indican que no quieren agregar más opciones al panel de administración (Así? Sin más? Sin proponer otra cosa :S). Al final el error no fue arreglado :S</p>
<p>La solución acá propuesta sigue sin ser perfecta, porque aplicará para todos los nodos nuevos, no por tipo de contenido:</p>
<p><code><br />
************************************************************************<br />
File: pathauto/pathauto.admin.inc<br />
Line: 29<br />
Function: pathauto_admin_settings()<br />
Hack:</p>
<p>// HACK: Pathauto ignore language setting<br />
$form['general']['pathauto_ignore_language'] = array(<br />
'#type' =&gt; 'checkbox',<br />
'#title' =&gt; t('Force Language Neutral'),<br />
'#default_value' =&gt; variable_get('pathauto_ignore_language', FALSE),<br />
'#description' =&gt; t('Create path in language neutral mode'),<br />
);</p>
<p>************************************************************************</p>
<p>************************************************************************<br />
File: pathauto/pathauto.inc<br />
Line: 427<br />
Function: _pathauto_set_alias($path, $existing_alias = NULL, $op = NULL)<br />
Hack:</p>
<p>// HACK: Should we ignore language setting<br />
if ((bool) variable_get('pathauto_ignore_language', FALSE)) {<br />
// _pathauto_verbose('pathauto_ignore_language is TRUE. Current language: ' . $path['language']);<br />
$path['language'] = '';<br />
}</p>
<p>************************************************************************<br />
</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=290&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2011/07/22/pathauto-idioma-neutral/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Heredar grupo con setgid</title>
		<link>http://cjenkins.wordpress.com/2011/02/21/heredar-grupo-con-setgid/</link>
		<comments>http://cjenkins.wordpress.com/2011/02/21/heredar-grupo-con-setgid/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 19:03:20 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[setgid]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=283</guid>
		<description><![CDATA[Muchas veces nos interesa que todos los archivos nuevos en una carpeta hereden el grupo al que pertenece la carpeta. Son muchos los casos, los más comunes son que se tiene, por ejemplo, un servidor web, y se desea que todos los archivos que vas creando (p.e, instalando módulos de Drupal) estén accesibles para el <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=283&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Muchas veces nos interesa que todos los archivos nuevos en una carpeta hereden el grupo al que pertenece la carpeta. Son muchos los casos, los más comunes son que se tiene, por ejemplo, un servidor web, y se desea que todos los archivos que vas creando (p.e, instalando módulos de Drupal) estén accesibles para el usuario del web server, claro, sin tener que estar haciendo un <em>chgrp</em> recursivo a cada rato. Otra es si se tiene un volumen o carpeta compartida, cuando un usuario crea un archivo en dicha carpeta por defecto el archivo tiene el dueño y el grupo mapeados al usuario que creó el archivo, y no al grupo donde se encuentra, por ende no es visible a los demás usuarios que usan la carpeta. </p>
<p>Esto es muy fácil de solucionar, solo hay que activar el bit/flag setgid (similar al bit a r-w-x) a la carpeta (ojo, carpeta nada más, en archivos significa otra cosa) para que los <strong>nuevos</strong> archivos dentro de la misma hereden el grupo de la carpeta. Como vimos en un post anterior, podemos poner dicho bit de forma recursiva a todas las carpetas dentro de una carpeta:</p>
<p><code>find /ruta/al/directorio -type d -exec chmod g+s '{}' \;</code></p>
<p>Claro, para que eso tenga sentido lo mejor sería primero ponerle a todos los archivos el grupo que deseamos que hereden:</p>
<p><code>chgrp -R grupo /ruta/al/directorio</code></p>
<p>Saludos</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/283/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=283&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2011/02/21/heredar-grupo-con-setgid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Crear base de datos y usuario en MySQL</title>
		<link>http://cjenkins.wordpress.com/2011/02/14/crear-base-de-datos-y-usuario-en-mysql/</link>
		<comments>http://cjenkins.wordpress.com/2011/02/14/crear-base-de-datos-y-usuario-en-mysql/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 05:22:20 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Servidor]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=280</guid>
		<description><![CDATA[En nombre del post era más largo, era así: Crear base de datos y usuario con todos los permisos sobre esa y sólo sobre esa base de datos en MySQL. Siempre paso haciendo ésto, pero por más que lo haga una y otra vez siempre se me olvida el SQL de los permisos, por eso <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=280&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En nombre del post era más largo, era así:</p>
<p><strong>Crear base de datos y usuario con todos los permisos sobre esa y sólo sobre esa base de datos en MySQL.</strong></p>
<p>Siempre paso haciendo ésto, pero por más que lo haga una y otra vez siempre se me olvida el SQL de los permisos, por eso lo pongo acá para estar acordándome.</p>
<p>Primero, iniciamos una sesión de shell:</p>
<p><code>mysql -u root -p</code></p>
<p>(En humano dice: Inicie MySQL como el usuario root y pregúnteme el password).</p>
<p>Luego creamos la base de datos (en éste caso llamada exampledb):</p>
<p><code>mysql&gt; CREATE DATABASE exampledb;</code></p>
<p>Ahora creamos un usuario y le damos todos los permisos sobre esa base de datos (todo en un mismo paso; la creación del usuario no es explícita pero se lleva a cabo):</p>
<p><code>mysql&gt; GRANT ALL PRIVILEGES ON exampledb.* TO 'usuario'@'localhost' IDENTIFIED BY 'clave';</code></p>
<p>Claro, cambiamos &#8216;exampledb&#8217;, &#8216;usuario&#8217; y &#8216;clave&#8217; por los valores reales. Podemos dejar las comillas simples, es recomendado.</p>
<p>Saludos!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/280/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=280&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2011/02/14/crear-base-de-datos-y-usuario-en-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalar SuperCollider en Ubuntu</title>
		<link>http://cjenkins.wordpress.com/2011/02/14/instalar-supercollider-en-ubuntu/</link>
		<comments>http://cjenkins.wordpress.com/2011/02/14/instalar-supercollider-en-ubuntu/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 04:41:57 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Programas]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=276</guid>
		<description><![CDATA[SuperCollider es un entorno y lenguaje de programación para síntesis de sonido en tiempo real y composición de algoritmos. Pueden conocer más de SuperCollider en la página de Wikipedia. Cómo instalar SuperCollider en Ubuntu: 1. Agregar repositorio PPA: shell&#62; sudo add-apt-repository ppa:supercollider 2. Actualizar el índice de repositorios: shell&#62; sudo apt-get update 3. Instalar SuperCollider <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=276&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>SuperCollider es un entorno y lenguaje de programación para síntesis de sonido en tiempo real y composición de algoritmos. Pueden conocer más de <a href="http://en.wikipedia.org/wiki/SuperCollider">SuperCollider en la página de Wikipedia</a>.</p>
<p>Cómo instalar SuperCollider en Ubuntu:</p>
<p>1. Agregar repositorio PPA:</p>
<p><code>shell&gt; sudo add-apt-repository ppa:supercollider</code></p>
<p>2. Actualizar el índice de repositorios:</p>
<p><code>shell&gt; sudo apt-get update</code></p>
<p>3. Instalar SuperCollider y el plugin para gedit:</p>
<p><code>shell&gt; sudo apt-get install supercollider supercollider-gedit</code></p>
<p>4. Reiniciar la máquina o cerrar la sesión y volver a entrar (esto porque el usuario a sido agregado a otro grupo y los permisos han variado, para poder darle al usuario más control de prioridades y sobre la tarjeta de sonido).</p>
<p>5. Iniciar gedit y activar el modo SuperCollider:</p>
<p><code>Herramientas -&gt; Modo SuperCollider</code></p>
<p>6. Iniciar el servidor SuperCollider:</p>
<p><code>SuperCollider -&gt; Iniciar servidor</code></p>
<p>Ahora al escribir código pueden evaluarlo con el menú o con Ctrl+E</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/276/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=276&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2011/02/14/instalar-supercollider-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Configurar sudo para Debian (Squeeze y Gnome)</title>
		<link>http://cjenkins.wordpress.com/2010/11/29/configurar-sudo-para-debian-squeeze-y-gnome/</link>
		<comments>http://cjenkins.wordpress.com/2010/11/29/configurar-sudo-para-debian-squeeze-y-gnome/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 04:56:44 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=268</guid>
		<description><![CDATA[sudo .vs. root &#8230; no me interesa ver los pros y contras, ni me interesa explicar cuales son las diferencias. Pero por si las dudas, un muy buen artículo a forma de resumen: http://www.berthon.eu/ice_and_fire/?p=11 En todo caso, yo uso ambos, dependiendo del caso En Debian, la configuración por defecto es utilizar una cuenta de root, a <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=268&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>sudo .vs. root &#8230; no me interesa ver los pros y contras, ni me interesa explicar cuales son las diferencias. Pero por si las dudas, un muy buen artículo a forma de resumen:</p>
<p><a href="http://en.wikipedia.org/wiki/Sudo"></a><a href="http://www.berthon.eu/ice_and_fire/?p=11">http://www.berthon.eu/ice_and_fire/?p=11</a></p>
<p>En todo caso, yo uso ambos, dependiendo del caso <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>En Debian, la configuración por defecto es utilizar una cuenta de root, a diferencia de Ubuntu, en el cual la configuración por defecto es utilizar sudo.</p>
<p>Para muchos que queremos éste comportamiento en Debian se puede hacer complicado. ¿Por qué? Porque por alguna razón cuando escribo <a href="http://www.google.co.cr/search?hl=es&amp;q=SUDO+Debian&amp;aq=f&amp;aqi=g1&amp;aql=&amp;oq=&amp;gs_rfai=">&#8220;SUDO Debian&#8221; en Google</a> me salen links que no sirven para nada:</p>
<p>Los primeros 8 resultados no sirven! Son incompletos, incorrectos, obsoletos, viejos, enfocados en otros aspectos, excesivamente largos y avanzados. Incluso el mismo Wiki de Debian es muy incompleto en ese sentido: <a href="http://wiki.debian.org/sudo">http://wiki.debian.org/sudo</a></p>
<p>(Algún listillo dirá &#8220;Y por qué no corriges el wiki&#8221;. Respuesta: Favor traduce mi explicación al inglés y elimina las expresiones de catarsis <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ).</p>
<p>Pero bueno, manos a la obra. Para configurar el sudo en Debian requieres 4 pasos:</p>
<ol>
<li>Verificamos si está instalado el paquete sudo, si existe el grupo sudo y si éste tiene los permisos.</li>
<li>Agregar tu usuario a ese grupo.</li>
<li>Configurar el <a href="http://en.wikipedia.org/wiki/PolicyKit">PolicyKit</a> para que ahora nos pida la clave del usuario y no la de root.</li>
<li>Configurar el gksu para que ahora nos pida la clave del usuario y no la de root.</li>
</ol>
<p>Para el paso 1 al 3 requerimos el estar logeado como usuario root, el paso 4 requiere el estar logeado como el usuario que desea utilizar el sudo.</p>
<h3>PASO 1 (root)</h3>
<ol>
<li>Verificamos si el paquete sudo está instalado (no voy a cubrir los detalles de cómo instalar un paquete)</li>
<li>Verificamos si existe el grupo &#8220;sudo&#8221; <code>cat /etc/group | cut -d: -f1 | grep sudo</code>
<ul>
<li>Si existe (encuentra el grupo): seguimos al paso 1.2</li>
<li>No existe (no encuentra el grupo): <code>groupadd sudo</code></li>
</ul>
</li>
<li>Verificamos los permisos: <code>cat /etc/sudoers</code> y buscan la línea <code>%sudo ALL=(ALL) ALL</code>
<ul>
<li>Si existe (encuentran la línea): seguimos al paso 2</li>
<li>No existe: <code>visudo -f /etc/sudoers</code> y la agregamos.</li>
</ul>
</li>
</ol>
<h3>PASO 2 (root)</h3>
<p>Agregamos nuestro usuario al grupo sudo: <code>usermod -a -G sudo $USUARIO</code></p>
<h3>PASO 3 (root)</h3>
<p>Agregamos la siguiente regla en un archivo nuevo en la carpeta de configuración de PolicyKit:</p>
<p><code>cd /etc/polkit-1/localauthority.conf.d/<br />
nano 51-debian-sudo.conf</code></p>
<p>Y agregamos las siguientes líneas en ese archivo:</p>
<p><code>[Configuration]<br />
AdminIdentities=unix-group:sudo</code></p>
<h3>PASO 4 (usuario)</h3>
<p>Escribimos:</p>
<p><code>gconf-editor</code></p>
<p>Y vamos a <strong>apps -&gt; gksu -&gt; sudo-mode : CHECK</strong>. Es decir, verificamos que la clave &#8220;sudo-mode&#8221; del registro del programa gksu esté habilitada.</p>
<h3>PASO 5</h3>
<p>Ya sé que dije sólo 4 pasos, pero por si acaso: CIERREN SESIÓN Y VUELVAN A ENTRAR. O bien, reinicien.</p>
<p>Ahora pueden observar como Synaptic y el Gestor de actualizaciones les solicita la clave de su usuario y no la de root, y además, ya pueden utilizar el comando sudo como prefijo para ejecutar cualquier comando como root con su clave de usuario.</p>
<p>Saludos y espero les haya servidor.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/268/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/268/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/268/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=268&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2010/11/29/configurar-sudo-para-debian-squeeze-y-gnome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Iniciar máquinas virtuales de VirtualBox al inicio</title>
		<link>http://cjenkins.wordpress.com/2010/08/21/iniciar-maquinas-virtuales-de-virtualbox-al-inicio/</link>
		<comments>http://cjenkins.wordpress.com/2010/08/21/iniciar-maquinas-virtuales-de-virtualbox-al-inicio/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 06:49:44 +0000</pubDate>
		<dc:creator>cjenkins</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programas]]></category>
		<category><![CDATA[Servidor]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[start on boot]]></category>
		<category><![CDATA[Virtual Machine]]></category>
		<category><![CDATA[VirtualBox]]></category>

		<guid isPermaLink="false">http://cjenkins.wordpress.com/?p=254</guid>
		<description><![CDATA[Tengo una máquina virtual que quiero que inicie cada vez que bootea el servidor. Tanto mi VM como el servidor físico son Debian Lenny, ambos con openssh-server instalado como demonio de SSH para administrarlos, por lo que adrede no habilito el RDP de la VM y la corro como headless. 1. Iniciar las máquinas virtual <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=254&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tengo una máquina virtual que quiero que inicie cada vez que bootea el servidor. Tanto mi VM como el servidor físico son Debian Lenny, ambos con openssh-server instalado como demonio de SSH para administrarlos, por lo que adrede no habilito el RDP de la VM y la corro como headless.</p>
<p>1. Iniciar las máquinas virtual</p>
<p>Para iniciar las máquinas ponemos esto en nuestro archivo <strong>/etc/rc.local</strong> :</p>
<p><code>#/bin/bash -e<br />
#<br />
# rc.local<br />
#<br />
# This script is executed at the end of each multiuser runlevel.<br />
# Make sure that the script will "exit 0" on success or any other<br />
# value on error.<br />
#<br />
# In order to enable or disable this script just change the execution<br />
# bits.<br />
#<br />
# VirtualBox start virtual machines on boot<br />
# VMs Run user<br />
RUN_USER=userexecutesvm<br />
# VM run type. Options are [gui|sdl|vrdp|headless]. Check 'VBoxManage startvm'<br />
VM_RUN_TYPE=headless<br />
# Put the ID of the VMs. You can  put the unique id (ex. da52db1a-5b6e-4297-b4b6-aa9e293efcc8)<br />
# or the human friendly VM name (ex. "Name of the VM").<br />
# Check 'VBoxManage --nologo list vms' for information about your VMs<br />
# Example variable:<br />
# VMS=("Name of the VM 1" "Name of the VM2" da52db1a-5b6e-4297-b4b6-aa9e293efcc8)<br />
VMS=("Name of the VM")<br />
# Check for missing binaries<br />
VIRTUALBOX_BIN=/usr/bin/VBoxManage<br />
test -x $VIRTUALBOX_BIN || { echo "$VIRTUALBOX_BIN not installed"; exit 5; }<br />
# Start the VMs<br />
for i in "${VMS[@]}"<br />
        do<br />
		su - $RUN_USER -c "$VIRTUALBOX_BIN --nologo startvm '${i}' --type $VM_RUN_TYPE"<br />
        done<br />
exit 0</code></p>
<p>En WordPress se ve muy mal, pueden revisar el script en <a href="http://www.cjenkins.net/files/rc.local">http://www.cjenkins.net/files/rc.local</a></p>
<p>Es importante que cambien el usuario con el que ejecutarán las VM y que no sea root por seguridad. Está de más decir que el usuario es el mismo que con el que ejecutan normalmente la VM. El script <strong>/etc/rc.local</strong> es llamado sin argumentos por el script <strong>/etc/init.d/rc.local</strong> , pueden revisarlo para conocer como funciona. Ese script se encuentra enlazado como <strong>S99rc.local</strong> en los <a href="http://en.wikipedia.org/wiki/Runlevel">Run Levels</a> 2 al 5 (link simbólico /etc/rcX.d/S99rc.local), que en Debian <a href="http://en.wikipedia.org/wiki/Runlevel#Debian_Linux">significan lo mismo</a>. Por lo que entonces tenemos cubierto el inicio de la VMs.</p>
<p>2. Detener las VMs</p>
<p>Inicialmente cree mi propio script para detener las VMs. Sin embargo noté que existe el script <strong>/etc/init.d/vboxdrv</strong> . Al revisarlo, observé una buena implementación llamada <strong>stop_vms</strong>. El encabezado de la función menciona:</p>
<p><code># enter the following variables in /etc/default/virtualbox:<br />
#   SHUTDOWN_USERS="foo bar"<br />
#     check for running VMs of user foo and user bar<br />
#   SHUTDOWN=poweroff<br />
#   SHUTDOWN=acpibutton<br />
#   SHUTDOWN=savestate<br />
#     select one of these shutdown methods for running VMs<br />
</code></p>
<p>Por lo que creamos el archivo <strong>/etc/default/virtualbox</strong> (ya que por defecto no existe) de esta forma:</p>
<p><code>host:~# nano /etc/default/virtualbox</code></p>
<p><code>SHUTDOWN_USERS="usuarioejecutavms"<br />
SHUTDOWN=savestate<br />
</code></p>
<p>Ese script se encuentra enlazado como <strong>S20vboxdrv</strong> en los <a href="http://en.wikipedia.org/wiki/Runlevel">Run Levels</a> 2 al 5 (link simbólico /etc/rcX.d/S20vboxdrv). Y como <strong>K20vboxdrv</strong> en los <a href="http://en.wikipedia.org/wiki/Runlevel">Run Levels</a> 0, 1 y 6 (link simbólico /etc/rcX.d/K20vboxdrv). Es decir, que se llamará el script <strong>/etc/init.d/vboxdrv</strong> con el argumento <strong>stop</strong> cuando se apague el sistema (Run Level 0), se inicie como single-user mode (Run Level 1) o se reinicie el sistema (Run Level 6). El script <strong>vboxdrv</strong> sólo llama a <strong>stop_vms</strong> cuando se le llama con el argumento <strong>stop</strong>. Es decir, que las máquinas virtuales de los usuarios de la variables se apagarán usando el método especificado (en mi caso puse savestate) en dichos casos.</p>
<p>Con esto ya queda funcionando el sistema.</p>
<p>En resumen: El sistema al ejecutar <strong>rc.local</strong> se encarga de iniciar nuestras VMs. Al apagar o reiniciar <strong>vboxdrv</strong> se encarga de apagar nuestras VMs de forma como lo configuramos en <strong>/etc/default/virtualbox</strong>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cjenkins.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cjenkins.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cjenkins.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cjenkins.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cjenkins.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cjenkins.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cjenkins.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cjenkins.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cjenkins.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cjenkins.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cjenkins.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cjenkins.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cjenkins.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cjenkins.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cjenkins.wordpress.com&amp;blog=4067476&amp;post=254&amp;subd=cjenkins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://cjenkins.wordpress.com/2010/08/21/iniciar-maquinas-virtuales-de-virtualbox-al-inicio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fab5b93735032637677b34853a536ba6?s=96&#38;d=wavatar" medium="image">
			<media:title type="html">cjenkins</media:title>
		</media:content>
	</item>
	</channel>
</rss>
