<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>alvarezp &#187; Desarrollos</title>
	<atom:link href="http://blog.alvarezp.org/categorias/desarrollos/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.alvarezp.org</link>
	<description>cat &#62;&#62; /dev/blog</description>
	<lastBuildDate>Thu, 02 Feb 2012 19:19:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Superkb: entonces y ahora</title>
		<link>http://blog.alvarezp.org/2011/03/28/superkb-entonces-y-ahora/</link>
		<comments>http://blog.alvarezp.org/2011/03/28/superkb-entonces-y-ahora/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 01:34:57 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=1381</guid>
		<description><![CDATA[Así es como superkb se veía en ese entonces, en la versión 0.10. Usaba directamente la librería Xlib que no tiene soporte para antialiasing. Entonces, el texto también lo pintaba con Xlib. Los íconos eran cargados y pintados con Imlib2. La versión 0.10 fue liberada en septiembre de 2006. No incluyo pantallazos más viejos pues [...]]]></description>
			<content:encoded><![CDATA[<p>Así es como superkb se veía en ese entonces, en la versión 0.10. Usaba directamente la librería Xlib que no tiene soporte para antialiasing. Entonces, el texto también lo pintaba con Xlib. Los íconos eran cargados y pintados con Imlib2. La versión 0.10 fue liberada en septiembre de 2006. No incluyo pantallazos más viejos pues los considero &#8220;demasiado experimentales&#8221;.<br />
<div id="attachment_1376" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.alvarezp.org/wp-content/uploads/2011/03/superkb-then.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2011/03/superkb-then-300x133.png" alt="Pantallazo de Superkb v0.10." title="Superkb, entonces!" width="300" height="133" class="size-medium wp-image-1376" /></a><p class="wp-caption-text">Pantallazo de Superkb v0.10.</p></div></p>
<p>Bueno, Superkb 0.22 fue liberado hace un par de semanas. Las teclas se pintan ahora usando gradientes. Esto, además de los múltiples modos de rendereo de las teclas que se introdujo en la 0.15 (Feb 2008) y el uso de la biblioteca Cairo en 0.20 (Nov 2009), han cambiado drásticamente la apariencia en general. Ayer corregí la presentación de caracteres UTF-8, que ahora me permiten usar flechas para las teclas de cursor y otras más. Este es el resultado:<br />
<div id="attachment_1377" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.alvarezp.org/wp-content/uploads/2011/03/superkb-now.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2011/03/superkb-now-300x114.png" alt="Superkb con el cambio más reciente para la versión 0.23." title="Superkb, now." width="300" height="114" class="size-medium wp-image-1377" /></a><p class="wp-caption-text">Superkb con el cambio más reciente para la versión 0.23.</p></div></p>
<p>También es una nota de agradecimiento a los usuarios que me han proveído con su retroalimentación tan útil.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2011/03/28/superkb-entonces-y-ahora/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superkb: then and now</title>
		<link>http://blog.alvarezp.org/2011/03/28/superkb-then-and-now/</link>
		<comments>http://blog.alvarezp.org/2011/03/28/superkb-then-and-now/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 01:30:11 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=1375</guid>
		<description><![CDATA[This is how Superkb used to look back then in the 0.10 version. It used direct calls to the Xlib library which doesn&#8217;t support antialiasing. Back then, text was also rendered using Xlib. The icons were loaded and painted using Imlib2. Version 0.10 was released on September, 2006. I didn&#8217;t include an even older screenshot [...]]]></description>
			<content:encoded><![CDATA[<p>This is how Superkb used to look back then in the 0.10 version. It used direct calls to the Xlib library which doesn&#8217;t support antialiasing. Back then, text was also rendered using Xlib. The icons were loaded and painted using Imlib2. Version 0.10 was released on September, 2006. I didn&#8217;t include an even older screenshot because I considered it to be &#8220;still too experimental&#8221;.<br />
<span id="more-1375"></span><br />
<div id="attachment_1376" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.alvarezp.org/wp-content/uploads/2011/03/superkb-then.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2011/03/superkb-then-300x133.png" alt="Superkb v0.10 screenshot." title="Superkb, back then!" width="300" height="133" class="size-medium wp-image-1376" /></a><p class="wp-caption-text">Superkb v0.10 screenshot.</p></div></p>
<p>So, Superkb 0.22 was released a couple of weeks ago. It featured a gradient-based rendering of the keys. This, in addition to the multiple key-rendering modes introduced in 0.15 (Feb 2008) and the use of the Cairo library in 0.20 (Nov 2009), have drastically changed the overall appearance. Yesterday I fixed the display of UTF-8 characters, which have allowed me to use arrows for the cursor keys and others. This is the result:<br />
<div id="attachment_1377" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.alvarezp.org/wp-content/uploads/2011/03/superkb-now.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2011/03/superkb-now-300x114.png" alt="Superkb with the most recent change for version 0.23." title="Superkb, now." width="300" height="114" class="size-medium wp-image-1377" /></a><p class="wp-caption-text">Superkb with the most recent change for version 0.23.</p></div></p>
<p>This is also a thank you note to the users that have provided me with their useful feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2011/03/28/superkb-then-and-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Teclado Logitech K200, su falta de Super_R y Superkb</title>
		<link>http://blog.alvarezp.org/2011/03/26/teclado-logitech-k200-su-falta-de-super_r-y-superkb/</link>
		<comments>http://blog.alvarezp.org/2011/03/26/teclado-logitech-k200-su-falta-de-super_r-y-superkb/#comments</comments>
		<pubDate>Sat, 26 Mar 2011 08:22:26 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=1368</guid>
		<description><![CDATA[Pues como dice el título, recién me compré un teclado Logitech K200 porque el anterior ya estaba demasiado gastado.
En la fotografía se alcanza a distinguir a la derecha de la barra espaciadora que sólo hay tres teclas. Se trata de Alt, Menu y Ctrl. 
¿Y la tecla Super_R apá? Me di cuenta ya cuando tenía [...]]]></description>
			<content:encoded><![CDATA[<p>Pues como dice el título, recién me compré un teclado <a href="http://www.logitech.com/en-gb/for-business/products/keyboards/devices/7242">Logitech K200</a> porque el anterior ya estaba demasiado gastado.</p>
<div class="wp-caption aligncenter" style="width: 439px"><a href="http://www.logitech.com/en-gb/for-business/products/keyboards/devices/7242"><img alt="Teclado Logitech K200" src="http://blog.alvarezp.org/imagenes/k200/df.png" title="Teclado Logitech K200" width="429" height="257" /></a><p class="wp-caption-text">Teclado Logitech K200</p></div>
<p>En la fotografía se alcanza a distinguir a la derecha de la barra espaciadora que sólo hay tres teclas. Se trata de Alt, Menu y Ctrl. </p>
<p>¿Y la tecla Super_R apá? Me di cuenta ya cuando tenía el teclado instalado y funcionando.</p>
<p>Yo uso <a href="http://superkb.sourceforge.net/index.shtml.es">Superkb</a> para lanzar aplicaciones. Para mí, lanzar aplicaciones es una de las cosas que podrían hacerse con shortcuts y por eso reservo la tecla de Super para esto. La tecla Super_R es importante porque no puedo presionar la Super izquierda simultáneamente con F12 usando una sola mano. Esto se necesita cuando tienes una hamburguesa en la otra mano, jaja!</p>
<p>Pues bien, Superkb admite en <a href="http://superkb.org/wiki/index.php?title=Configuration_files">$HOME/.superkbrc</a> tiene dos líneas de configuración: <a href="http://superkb.org/wiki/index.php?title=SUPERKEY2_STRING">SUPERKEY2_STRING</a> y <a href="http://superkb.org/wiki/index.php?title=SUPERKEY_REPLAY">SUPERKEY_REPLAY</a>, con lo que quedará resuelto este pequeño problema.</p>
<p>&#8220;SUPERKEY2_STRING Menu&#8221; me permite indicar que la segunda tecla mágica a usar será Menu, y no Super_R.</p>
<p>&#8220;SUPERKEY_REPLAY 1&#8243; me permite indicar a Superkb que si la tecla se presiona antes de mostrar el teclado en pantalla y no se usó para lanzar nada, que le envíe el tecladazo a la aplicación que actualmente tiene el foco. De esta manera, puedo seguir contando con la tecla Menu para mostrar los menús contextuales en cualquiera que sea la aplicación en la que esté trabajando.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2011/03/26/teclado-logitech-k200-su-falta-de-super_r-y-superkb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Superkb 0.22 liberado!</title>
		<link>http://blog.alvarezp.org/2011/03/18/superkb-0-22-liberado/</link>
		<comments>http://blog.alvarezp.org/2011/03/18/superkb-0-22-liberado/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 23:58:41 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Gultij]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Superkb]]></category>
		<category><![CDATA[Tenía que ser un geek.]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=1358</guid>
		<description><![CDATA[¡Superkb 0.22 ha sido liberado! Esta es una liberación menor. ¿Quieres saber qué hay de nuevo? Échale un vistazo a la página de la versión 0.22 en el Wiki de Superkb.
Superkb es un lanzador de aplicaciones basado en atajos de teclado con pistas gráficas en pantalla. Está escrito en C usando Xlib con la ayuda [...]]]></description>
			<content:encoded><![CDATA[<p>¡Superkb 0.22 ha sido liberado! Esta es una liberación menor. ¿Quieres saber qué hay de nuevo? Échale un vistazo a la <a href="http://superkb.org/wiki/index.php?title=Superkb_0.22">página de la versión 0.22 en el Wiki de Superkb</a>.</p>
<p><a href="http://superkb.sourceforge.net/">Superkb</a> es un lanzador de aplicaciones basado en atajos de teclado con pistas gráficas en pantalla. Está escrito en C usando Xlib con la ayuda de Cairo graphics, Pango, Imlib2, Xinerama, etc. y con su código fuente manejado con Git.</p>
<div class="wp-caption aligncenter" style="width: 650px"><a href="http://blog.alvarezp.org/imagenes/superkb/shots/0.22/0.22-flatkey.png"><img title="Tus atajos de teclado pintados por Superkb 0.22" src="http://blog.alvarezp.org/imagenes/superkb/shots/0.22/0.22-flatkey-640-245.png" alt="Tus atajos de teclado pintados por Superkb 0.22" width="640" height="245" /></a><p class="wp-caption-text">Tus atajos de teclado pintados por Superkb 0.22</p></div>
<p>Algunas de las características de Superkb:</p>
<ul>
<li>Fácil de usar. Se selecciona una tecla mágica (por omisión Super) como la base de los lanzadores y basta con presionar Super+Tecla para ejecutar cualquier comando configurado o aplicación seleccionada.</li>
<li>No estorboso. Siendo basado en atajos no se necesita nada en pantalla. Al mantener presionada la tecla mágica mostrará en las pistas en pantalla y al soltarla desaparecen.</li>
<li>Soporte para diferentes geometrías del teclado según lo provea el servidor de X Window System.</li>
<li>Provee indicadores en pantalla sobre las acciones invocadas.</li>
<li>La configuración se escribe en un archivo. Instalar la misma configuración en otra computadora es tan simple como copiar el archivo.</li>
<li>La tecla mágica no se desperdicia. Se puede usar F8 como tecla mágica y al presionarla sin lanzar nada se envía a la aplicación que actualmente tiene el foco. Yo uso esto para la Thinkpad T42.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2011/03/18/superkb-0-22-liberado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superkb 0.22 released</title>
		<link>http://blog.alvarezp.org/2011/03/18/superkb-0-22-released/</link>
		<comments>http://blog.alvarezp.org/2011/03/18/superkb-0-22-released/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 23:50:56 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Gultij]]></category>
		<category><![CDATA[Superkb]]></category>
		<category><![CDATA[Tenía que ser un geek.]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=1351</guid>
		<description><![CDATA[Superkb 0.22 has been released! This is a minor release. Do you want to know what&#8217;s new? Take a look at the 0.22 page on the Superkb Wiki.
Superkb is a shortcut-based launcher with on-screen graphical hints. It is written in C using Xlib, with the help of Cairo graphics, Pango, Imlib2, Xinerama, etc. and the [...]]]></description>
			<content:encoded><![CDATA[<p>Superkb 0.22 has been released! This is a minor release. Do you want to know what&#8217;s new? Take a look at the <a href="http://superkb.org/wiki/index.php?title=Superkb_0.22">0.22 page on the Superkb Wiki</a>.</p>
<p><a href="http://superkb.sourceforge.net/">Superkb</a> is a shortcut-based launcher with on-screen graphical hints. It is written in C using Xlib, with the help of Cairo graphics, Pango, Imlib2, Xinerama, etc. and the source code is managed using Git.</p>
<p><span id="more-1351"></span><br />
<div class="wp-caption aligncenter" style="width: 650px"><a href="http://blog.alvarezp.org/imagenes/superkb/shots/0.22/0.22-flatkey.png"><img title="Your keyboard shortcuts painted by Superkb 0.22" src="http://blog.alvarezp.org/imagenes/superkb/shots/0.22/0.22-flatkey-640-245.png" alt="Your keyboard shortcuts painted by Superkb 0.22. Click to see the full image." width="640" height="245" /></a><p class="wp-caption-text">Your keyboard shortcuts painted by Superkb 0.22</p></div></p>
<p>Some of Superkb features:</p>
<ul>
<li>Easy to use. You select a hotkey (Super keys by default) as the base for your launchers and just hit Super+Key to execute whatever command you configured or launch whatever application you chose.</li>
<li>Non-obstructive. Being shortcut based, you don&#8217;t need anything on your screen. Holding the hotkey down will invoke the on-screen hints and releasing it will dismiss them.</li>
<li>Support for different keyboard geometries as provided by the underlying X server.</li>
<li>It provides on-screen feedback for whatever action you have launched.</li>
<li>Configuration is written on a file. You take the configuration with you to install it on your other computer as simple as copying a file.</li>
<li>The hotkey isn&#8217;t wasted. You can choose F8 (or any other) as your hotkey if you please and hitting it will still send it to the currently focused window. I use this for the Thinkpad T42 that has no Super keys.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2011/03/18/superkb-0-22-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superkb 0.21 liberado</title>
		<link>http://blog.alvarezp.org/2010/03/18/superkb-0-21-liberado/</link>
		<comments>http://blog.alvarezp.org/2010/03/18/superkb-0-21-liberado/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 08:07:10 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Gultij]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=1011</guid>
		<description><![CDATA[Como se anunció hace algunos días en la lista de correos, Superkb 0.21 ha sido liberado.
Permítanme presentarlo para aquellos que no conozcan aún el proyecto.
Superkb es un lanzador de aplicaciones basado en atajos de teclado con pistas gráficas en pantalla. Está escrito en C usando Xlib con la ayuda de Cairo graphics, Pango, Imlib2, Xinerama, [...]]]></description>
			<content:encoded><![CDATA[<p>Como se anunció hace algunos días en la lista de correos, <a href="http://sourceforge.net/mailarchive/forum.php?thread_name=op.u870g8lu4oyyg1%40localhost.localdomain&#038;forum_name=superkb-devel">Superkb 0.21 ha sido liberado</a>.</p>
<p>Permítanme presentarlo para aquellos que no conozcan aún el proyecto.</p>
<div class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.alvarezp.org/imagenes/superkb/shots/0.20/0.20-msnatural.png"><img title="Teclado Microsoft Natural, pintado por Superkb." src="http://blog.alvarezp.org/imagenes/superkb/shots/0.20/0.20-msnatural-thumb.png" alt="Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key). Haz clic para ver la imagen completa." width="300" height="277" /></a><p class="wp-caption-text">Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key)</p></div>
<p><a href="http://superkb.sourceforge.net/">Superkb</a> es un lanzador de aplicaciones basado en atajos de teclado con pistas gráficas en pantalla. Está escrito en C usando Xlib con la ayuda de Cairo graphics, Pango, Imlib2, Xinerama, etc. y con su código fuente manejado con Git.</p>
<p>Algunas de las características de Superkb:</p>
<ul>
<li>Fácil de usar. Se selecciona una tecla mágica (por omisión Super) como la base de los lanzadores y basta con presionar Super+Tecla para ejecutar cualquier comando configurado o aplicación seleccionada.</li>
<li>No estorboso. Siendo basado en atajos no se necesita nada en pantalla. Al mantener presionada la tecla mágica mostrará en las pistas en pantalla y al soltarla desaparecen.</li>
<li>Soporte para diferentes geometrías del teclado según lo provea el servidor de X Window System.</li>
<li>Provee indicadores en pantalla sobre las acciones invocadas.</li>
<li>La configuración se escribe en un archivo. Instalar la misma configuración en otra computadora es tan simple como copiar el archivo.</li>
<li>La tecla mágica no se desperdicia. Se puede usar F8 como tecla mágica y al presionarla sin lanzar nada se envía a la aplicación que actualmente tiene el foco. Yo uso esto para la Thinkpad T42.</li>
</ul>
<p>Aquí hay algunos <a href="http://superkb.sourceforge.net/screenshots.shtml.es">pantallazos</a> sobre cómo se ve Superkb cuando se han invocado las pistas en pantalla.</p>
<p>Para esta versión, Superkb continuó sobre el camino de la estabilización. Desde la versión 0.20, se ha puesto mucho esfuerzo en corregir comportamientos inesperados e inamigabilidades. Esta es ua liberación que me tiene muy contento. Puedo decir que ya no está en un estado precario de &#8216;funciona para mí&#8217;. Ha sido sumamente probado con la ayuda invaluable del <a href="http://www.gultij.org/">Grupo de Usuarios de Linux de Tijuana</a>, particularmente en esta última versión.</p>
<p>¿Y qué hay de particular en esta versión? Bien, como proyecto:</p>
<ul>
<li>Hemos abierto un <a href="http://superkb.org/wiki/">Wiki</a> con mucha mejor documentación.</li>
<li>Se creó la lista de correos <a href="https://lists.sourceforge.net/lists/listinfo/superkb-devel">superkb-devel en lists.sourceforge.net</a> con su <a href="http://sourceforge.net/mailarchive/forum.php?forum_name=superkb-devel">archivo</a>.</li>
<li>Tuvimos nuestro <a href="http://sourceforge.net/mailarchive/forum.php?thread_name=op.u8soujqy4oyyg1%40alvarezp-ws&#038;forum_name=superkb-devel">primer día de caza de bugs</a> en Tijuana.
</li>
</ul>
<p>En el software:</p>
<ul>
<li>Un drástico incremento en la estabilidad y amigabilidad.</li>
<li>Las cadenas de retroalimentación ya no requieren de un doble entrecomillado<br />
   (mediante la nueva opción <a href="http://sourceforge.net/apps/mediawiki/superkb/index.php?title=FEEDBACK_STRINGS_AUTOQUOTE">FEEDBACK_STRINGS_AUTOQUOTE</a>).</li>
<li>Soporte inicial para estados de teclado (como Super+Shift+N contra el simple Super+N).</li>
<li>Muchos bugs corregidos.</li>
</ul>
<p>Y aún así, el proyecto cuenta con mucho espacio para mejorar. Particularmente:</p>
<ul>
<li>Empaquetamiento. Necesita ser preparado para las diferentes versiones de Debian, Fedora, openSUSE, Ubuntu, Arch Linux, Slackware, etc.</li>
<li>Inclusión en distribuciones. No hay mejor manera de instalar un programa que simplemente hacer algo como <code>apt-get install &lt;pkgname></code>. A Superkb le vendría muy bien eso.</li>
<li>Un mejor sitio web. Aunque la versión actual es mucho mejor que la original, mantenerla actualizada es difícil. Por lo tanto la documentación ha sido movida hacia el Wiki con miras a transformar el sitio web en uno más estático.</li>
<li>Traducciones. No hay código para la traducción de cadenas en Superkb. Aunque todos los mensajes que no van a stdout son traducibles por medio de configuración, los mensajes de consola deberían ser internacionalizados.</li>
<li>Pruebas de portabilidad. El proyecto ha sido probado en distribuciones basadas en Debian, Fedora y Slackware en versiones de 32 y 64 bits. Sin embargo, no se ha probado en plataformas ajenas a Linux como openSolaris, *BSD, etc. ni en arquitecturas diferentes a la PC.</li>
</ul>
<p>Espacio para mejoras de Superkb:</p>
<ul>
<li>Un GUI de configuración. Hasta ahora, Superkb debe ser configurado editando un archivo a mano, pero esto está lejos de la visión inicial del proyecto. Superkb cuenta con un espacio para hacer lo que sea cuando una tecla se mantiene presionada por más de 3 segundos. Esto es para la interfaz de configuración.</li>
<li>Soporte para Xrandr. Actualmente detecta las pantallas usando Xinerama durante el inicio, pero no puede detectar cambios sin que Superkb sea reiniciado.</li>
<li>Y mucho más.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/03/18/superkb-0-21-liberado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superkb 0.21 released</title>
		<link>http://blog.alvarezp.org/2010/03/18/superkb-0-21-released/</link>
		<comments>http://blog.alvarezp.org/2010/03/18/superkb-0-21-released/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 08:02:04 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Gultij]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>
		<category><![CDATA[Tijuana]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=1010</guid>
		<description><![CDATA[As announced some days ago in the mailing list, Superkb 0.21 was released.
Please let me introduce it for those that don&#8217;t know the project yet.
Superkb is a shortcut-based launcher with on-screen graphical hints. It is written in C using Xlib, with the help of Cairo graphics, Pango, Imlib2, Xinerama, etc. and the source code is [...]]]></description>
			<content:encoded><![CDATA[<p>As announced some days ago in the mailing list, <a href="http://sourceforge.net/mailarchive/forum.php?thread_name=op.u870g8lu4oyyg1%40localhost.localdomain&#038;forum_name=superkb-devel">Superkb 0.21 was released</a>.</p>
<p>Please let me introduce it for those that don&#8217;t know the project yet.</p>
<p><a href="http://superkb.sourceforge.net/">Superkb</a> is a shortcut-based launcher with on-screen graphical hints. It is written in C using Xlib, with the help of Cairo graphics, Pango, Imlib2, Xinerama, etc. and the source code is managed using Git.</p>
<p><span id="more-1010"></span><br />
<div class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.alvarezp.org/imagenes/superkb/shots/0.20/0.20-msnatural.png"><img title="Teclado Microsoft Natural, pintado por Superkb." src="http://blog.alvarezp.org/imagenes/superkb/shots/0.20/0.20-msnatural-thumb.png" alt="Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key). Haz clic para ver la imagen completa." width="300" height="277" /></a><p class="wp-caption-text">Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key)</p></div></p>
<p>Some of Superkb features:</p>
<ul>
<li>Easy to use. You select a hotkey (Super keys by default) as the base for your launchers and just hit Super+Key to execute whatever command you configured or launch whatever application you chose.</li>
<li>Non-obstructive. Being shortcut based, you don&#8217;t need anything on your screen. Holding the hotkey down will invoke the on-screen hints and releasing it will dismiss them.</li>
<li>Support for different keyboard geometries as provided by the underlying X server.</li>
<li>It provides on-screen feedback for whatever action you have launched.</li>
<li>Configuration is written on a file. You take the configuration with you to install it on your other computer as simple as copying a file.</li>
<li>The hotkey isn&#8217;t wasted. You can choose F8 as your hotkey if you please and hitting it will still send it to the currently focused window. I use this for the Thinkpad T42.</li>
</ul>
<p>Here are some <a href="http://superkb.sourceforge.net/screenshots.shtml.en">screenshots</a> about how Superkb looks like when the on-screen hints are triggered.</p>
<p>For this version, Superkb has continued walking on the stabilizing road. Since version 0.20 a lot of effort has been put in correcting unfriendliness and unexpected behaviors. This is a release I&#8217;m very happy about. I can say it is no longer in an ancient &#8216;works for me&#8217; state. It has been throughly tested with the invaluable help of the <a href="http://www.gultij.org/">Tijuana Linux User Group</a>, particularly in this last version.</p>
<p>So what&#8217;s particular for this version? Well, as a project:</p>
<ul>
<li>We have started a <a href="http://superkb.org/wiki">Wiki</a> with a lot of better documentation.</li>
<li>We created the <a href="https://lists.sourceforge.net/lists/listinfo/superkb-devel">superkb-devel at lists.sourceforge.net</a> mailing list with its <a href="http://sourceforge.net/mailarchive/forum.php?forum_name=superkb-devel">archive</a>.</li>
<li>We had our <a href="http://sourceforge.net/mailarchive/forum.php?thread_name=op.u8soujqy4oyyg1%40alvarezp-ws&#038;forum_name=superkb-devel">first bug-hunting day</a> in Tijuana.</li>
</ul>
<p>In the software:</p>
<ul>
<li>Stability and friendlyness is drastically increased.</li>
<li>Feedback strings don&#8217;t need to be requoted anymore (via the new<br />
<a href="http://sourceforge.net/apps/mediawiki/superkb/index.php?title=FEEDBACK_STRINGS_AUTOQUOTE">FEEDBACK_STRINGS_AUTOQUOTE</a> option).</li>
<li>Initial support for keyboard states (like Super+Shift+N versus plain Super+N).</li>
<li>Lots of bugs have been fixed.</li>
</ul>
<p>And yet, the project has a lot of space for improvement. Particularly:</p>
<ul>
<li>Packaging. It needs to be prepared for the different versions of Debian, Fedora, openSUSE, Ubuntu, Arch Linux, Slackware, etc.</li>
<li>Distribution inclusion. There is no better way to install any program than simply doing something like <code>apt-get install &lt;pkgname></code>. Superkb could really use that.</li>
<li>A better website. Though the current website is a lot better than the original, keeping it up to date is difficult. Documentation has therefore moved to the Wiki and I&#8217;m looking forward to changing the website to be more static.</li>
<li>Translations. There is no code for string translation yet in Superkb. Even though all non-stdout messages are translatable through configuration, console messages should be internationalized.</li>
<li>Portability testing. The project has proven to work on Debian, Fedora and Slackware-based Linux distributions in 32 and 64-bit versions. However, it has not been tested on non-Linux platforms like openSolaris, *BSD, etc, or non-PC architectures.</li>
</ul>
<p>Room for improvement for Superkb:</p>
<ul>
<li>A configuration GUI. So far, Superkb must be configured by editing a file but this is far from the actual vision of using the software. Superkb actually has a placeholder to do whatever thing when a key is held down for 3 seconds. This is intended to be the configuration interface.</li>
<li>Xrandr support. It currently detects screens using Xinerama at startup, but it cannot detect changes to the screen layout without being restarted.</li>
<li>Much more.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/03/18/superkb-0-21-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Se libera msn-pecan 0.1.0 de felipec</title>
		<link>http://blog.alvarezp.org/2010/02/27/se-libera-msn-pecan-0-1-0-de-felipec/</link>
		<comments>http://blog.alvarezp.org/2010/02/27/se-libera-msn-pecan-0-1-0-de-felipec/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 02:30:50 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Desarrollos]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Software libre]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=993</guid>
		<description><![CDATA[Esa es la noticia: se ha liberado msn-pecan 0.1.0! Y me da gusto.
Para citar (traducido) del post de felipec en su blog:

Después de un poco más de dos años de desarrollo, realmente nos orgullece anunciar la primera versión estable de msn-pecan. El proyecto comenzó como un &#8220;bifurcación&#8221; del protocolo msn de libpurple (lea más abajo [...]]]></description>
			<content:encoded><![CDATA[<p>Esa es la noticia: se ha liberado <a href="http://code.google.com/p/msn-pecan/">msn-pecan</a> 0.1.0! Y me da gusto.</p>
<p>Para citar (traducido) del <a href="http://felipec.wordpress.com/2010/02/27/msn-pecan-0-1-released-the-best-option-for-pidginlibpurple/">post</a> de felipec en su <a href="http://felipec.wordpress.com/">blog</a>:</p>
<blockquote><p>
Después de un poco más de dos años de desarrollo, realmente nos orgullece anunciar la primera versión estable de msn-pecan. El proyecto comenzó como un &#8220;bifurcación&#8221; del protocolo msn de libpurple (lea más abajo por qué no es realmente un bifurcación) pero ha crecido y pronto será una librería por sí misma, también con soporte para Telepathy.
</p></blockquote>
<p>Aunque puse sólo 3 de los 1009 parches y que no entiendo nada del código en sí, debo admitir que me siento parte del projecto.</p>
<p>Hace 7 años inicié un proyecto para escribir un cliente de MSN Messenger para Linux, en modo texto, basado en ncurses. El proyecto aún está registrado en Sourceforge como <a href="http://msnclient.sourceforge.net/">msnclient</a>. Fue mi primer intento de escribir <a href="http://es.wikipedia.org/wiki/Software_libre">software libre</a>. Sin embargo, el reto fue demasiado grande y el proyecto rápidamente se murió. Nunca llegué más allá de simplemente iniciar sesión y enviar mensajes de una sola palabra a otro contacto.</p>
<p>Eventualmente aprendí a usar Pidgin y conseguí buen hardware y la necesidad de un cliente personalizado de MSN ya no existía. Aún así creo que msnclient es un buen concepto para ser realizado. Tal vez algún día sea una interfaz basada en las funciones de msn-pecan.</p>
<p>Dicho eso, a mediados de 2009, cuando comencé a aprender Git, felipec me proveyó una rama de su repositorio para probar las conexiones directas (mejor conocidas como &#8220;transferencias rápidas&#8221; o &#8220;transferencias p2p&#8221;). No funcionaron en ese entonces.</p>
<p>6 meses y muchos commits sobre su master después: 0.1.0-rc1 salió y directconn aún no funcionaba pero la rama dc-test era ya muy vieja. Había aprendido más sobre Git y creí que era lo suficientemente mejor como para intentar corregir el problema de las conexiones directas. Sin embargo no sabía nada de la funcionalidad de MSN ni del código. Al menos sabía cuál era el primer paso: fuera lo que fuere había que hacer un rebase del código. Así que intenté rebasarlo para que las correcciones de la rama dc-test funcionaran bajo la nueva base de código; al menos sería útil para los desarrolladores. Así que la guerra estaba perdida para mí, pero tal vez felipec se podría motivar lo suficiente para continuar trabajando sobre esta parte de msn-pecan (pero se supone que uno no dice eso, cierto?). Así fue como ví las cosas y obtuve la motivación de hacerlo. Además, sería mi primer git rebase en el mundo real.</p>
<p>El principal problema fue que felipec había hecho muchos cambios de reorganización, renombrado y división de código en julio (algunos bien otros mal). Con un poco de experiencia en C, logré hacer el rebase y lo envié como un par de parches.</p>
<p>De repente felipec continuó trabajando arduamente sobre directconn. No sé si fueron los parches o no; eso es lo de menos. Lo importante es que en msn-pecan 0.1.0, las conexiones directas ya funcionan y de manera estable. Aunque no en todos los casos, es un gran avance.</p>
<p>Ahora creo que fue más allá de aprender a hacer un rebase: Realmente aprendí a <em>contribuir</em> usando Git, tal cual lo hacen los niños grandes en el proyecto del <a href="http://es.wikipedia.org/wiki/Linux_(núcleo)">Kernel Linux</a>. Aún no entiendo el código ni el funcionamiento interno del proyecto, pero esos dos parches me permitieron aprender mucho sobre colaboración y revisión de software. Esto fue particularmente útil para <a href="http://sourceforge.net/apps/mediawiki/superkb/">Superkb</a> que también está hecho en <a href="http://es.wikipedia.org/wiki/Lenguaje_de_programación_C">C</a> y su código fuente está manejado en <a href="http://git-scm.com/">Git</a>.</p>
<p>Así que, gracias nuevamente, felipec, felicidades y todos deberíamos tomarnos un trago por el proyecto, aunque estemos en diferentes partes del mundo. ¡A tirar fiesta y correr la voz!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/02/27/se-libera-msn-pecan-0-1-0-de-felipec/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>felipec&#8217;s msn-pecan 0.1.0 released</title>
		<link>http://blog.alvarezp.org/2010/02/27/felipecs-msn-pecan-0-1-0-released/</link>
		<comments>http://blog.alvarezp.org/2010/02/27/felipecs-msn-pecan-0-1-0-released/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 01:57:37 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Desarrollos]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software libre]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=986</guid>
		<description><![CDATA[So that&#8217;s the news: msn-pecan 0.1.0 is released! And I&#8217;m glad.
To directly quote from Felipec&#8217;s post in his blog:

After a bit more than two years of development we are proud to announce the first stable release of msn-pecan. The project started as a “fork” of libpurple’s msn protocol (read below why it’s not really a [...]]]></description>
			<content:encoded><![CDATA[<p>So that&#8217;s the news: <a href="http://code.google.com/p/msn-pecan/">msn-pecan</a> 0.1.0 is released! And I&#8217;m glad.</p>
<p>To directly quote from Felipec&#8217;s <a href="http://felipec.wordpress.com/2010/02/27/msn-pecan-0-1-released-the-best-option-for-pidginlibpurple/">post</a> in his <a href="http://felipec.wordpress.com/">blog</a>:</p>
<blockquote><p>
After a bit more than two years of development we are proud to announce the first stable release of msn-pecan. The project started as a “fork” of libpurple’s msn protocol (read below why it’s not really a fork), but it has grown and soon will become a standalone library with support for Telepathy too.
</p></blockquote>
<p><span id="more-986"></span>Even though I have only 3 of the 1009 patches and although I don&#8217;t understand any of the code itself, I gotta admit I really feel like I&#8217;m part of the project.</p>
<p>7 years ago I started a project to write a text mode, ncurses-based MSN client for Linux. The project is still registered on Sourceforge as <a href="http://msnclient.sourceforge.net/">msnclient</a>. It was my first attempt at writing <a href="http://en.wikipedia.org/wiki/Free_software">free software</a>. However, the challenge was too much for me and the project quickly died. I never got further than logging in and sending a single-worded message to another contact.</p>
<p>I eventually started to learn how to use Pidgin and got my self good hardware and my need of a personalized MSN client was no more. I still think, however, that msnclient is a good concept to try to bring to life. Maybe some day it will be an interface based on the msn-pecan functions.</p>
<p>That said, in mid 2009, when I started learning Git, felipec provided me a branch from his repository to test the direct connection feature (better known as &#8220;fast file transfers&#8221; or &#8220;p2p file transfers&#8221;). It didn&#8217;t work that time.</p>
<p>6 months went by and lot of commits over his master branch were too. 0.1.0-rc1 came out and directconn was still not working but the dc-test branch was relly old now. I had learned enough about Git and I though that I was better enough to try fixing the DC code. However I really knew nothing about the MSN functionality and I really didn&#8217;t understand the code. Well, at least I knew what the first step was: I had to rebase it anyway. So I tried to bring that old branch to the new code base so it could be (at least) useful to the developers. So war was lost for me, but perhaps felipec would get encouraged enough to restart working over this part of msn-pecan (but you&#8217;re not supposed to say that, right?). That&#8217;s how I saw it and how I got my motivation to do it; also, I would be my first actual real-world git rebase.</p>
<p>The main problem was that felipec had done a lot of relevant code reorganization, renaming and splitting in July (some done good, some done badly). Using some C experience I managed to rebase it and sent it in as a couple of patches.</p>
<p>Suddenly, felipec continued work on directconn. I don&#8217;t know if it was because of the patches or not; that doesn&#8217;t matter. The important thing is that in msn-pecan 0.1.0, direct connections now work and are stable. Even if not in all cases, it is a great step.</p>
<p>Now I think it went beyond learning how to rebase: I actually learned how to <em>contribute</em> using Git, just like the big boys do in the <a href="http://www.kernel.org/">Linux Kernel</a> project. I still don&#8217;t understand the code and the inner workings of the project but those two patches allowed me to learn a lot about software collaboration and review. This was particularly helpful for <a href="http://sourceforge.net/apps/mediawiki/superkb/">Superkb</a> which is also written in <a href="http://en.wikipedia.org/wiki/C_(programming_language)">C</a> and its source code managed in <a href="http://git-scm.com/">Git</a>.</p>
<p>So, thanks again felipec, congratulations and we all should have a drink for the project, even if on different parts of the world! Let&#8217;s party and spread the word.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/02/27/felipecs-msn-pecan-0-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superkb estrena Wiki</title>
		<link>http://blog.alvarezp.org/2010/01/26/superkb-estrena-wiki/</link>
		<comments>http://blog.alvarezp.org/2010/01/26/superkb-estrena-wiki/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 09:40:05 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=964</guid>
		<description><![CDATA[Actualización: Se ha movido el Wiki hacia un nuevo servidor: http://superkb.org/wiki/.
Gracias a SourceForge y su implementación de MediaWiki, el proyecto Superkb cuenta con su propio Wiki.
Por el momento está sólo en inglés. Realmente tengo en la mira poner el equivalente en español.
Con esto será mucho más fácil mantener la documentación al día.
El Wiki de SourceForge [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Actualización:</strong> Se ha movido el Wiki hacia un nuevo servidor: <a href="http://superkb.org/wiki/">http://superkb.org/wiki/</a>.</p>
<p>Gracias a <a href="http://www.sourceforge.net/">SourceForge</a> y su implementación de <a href="http://www.mediawiki.org/">MediaWiki</a>, el proyecto <a href="http://superkb.sourceforge.net/">Superkb</a> cuenta con su propio <del datetime="2010-12-05T22:38:58+00:00">Wiki</del>.</p>
<p>Por el momento está sólo en inglés. Realmente tengo en la mira poner el equivalente en español.</p>
<p>Con esto será mucho más fácil mantener la documentación al día.</p>
<p>El Wiki de SourceForge no admite ediciones anónimas, así que es necesario contar con una cuenta de SourceForge para poder incluir a las personas en el grupo de edición.</p>
<p>Las sugerencias y contribuciones son bienvenidas.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/01/26/superkb-estrena-wiki/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Superkb brand new Wiki</title>
		<link>http://blog.alvarezp.org/2010/01/26/superkb-brand-new-wiki/</link>
		<comments>http://blog.alvarezp.org/2010/01/26/superkb-brand-new-wiki/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 09:38:43 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=965</guid>
		<description><![CDATA[Update: We have moved the Wiki to a new server: http://superkb.org/wiki/.
Thanks to SourceForge and its MediaWiki implementation, the Superkb project now has its own Wiki.
For now, it is only in English. I&#8217;m really looking forward to adding a full Spanish equivalent.
I think this will make it a lot easier to keep the documentation up to [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> We have moved the Wiki to a new server: <a href="http://superkb.org/wiki/">http://superkb.org/wiki/</a>.</p>
<p>Thanks to <a href="http://www.sourceforge.net/">SourceForge</a> and its <a href="http://www.mediawiki.org/">MediaWiki</a> implementation, the <a href="http://superkb.sourceforge.net/">Superkb</a> project now has its own <del datetime="2010-12-05T22:38:58+00:00">Wiki</del>.</p>
<p>For now, it is only in English. I&#8217;m really looking forward to adding a full Spanish equivalent.</p>
<p>I think this will make it a lot easier to keep the documentation up to date.</p>
<p>The SourceForge Wiki doesn&#8217;t allow anonymous contributions, so an SF account is needed to include the people in the editors group.</p>
<p>Suggestions and contributions are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/01/26/superkb-brand-new-wiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De Superkb, GCC pedante y portabilidad</title>
		<link>http://blog.alvarezp.org/2009/12/29/de-superkb-gcc-pedante-y-portabilidad/</link>
		<comments>http://blog.alvarezp.org/2009/12/29/de-superkb-gcc-pedante-y-portabilidad/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 09:47:41 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=943</guid>
		<description><![CDATA[Por fin se me hizo: cambiar el Makefile de Superkb para usar gcc -std=c99 -pedantic-errors en lugar de -std=gnu99.
Lo que me impedía hacerlo era que uso algunas extensiones de GNU, BSD o POSIX que no se encuentran en el estándar C.
Yo no sabía, pero basta con añadir la línea
#define _GNU_SOURCE

o, según el caso,
#define _POSIX_C_SOURCE 2

al [...]]]></description>
			<content:encoded><![CDATA[<p>Por fin se me hizo: cambiar el Makefile de Superkb para usar <code>gcc -std=c99 -pedantic-errors</code> en lugar de <code>-std=gnu99</code>.</p>
<p>Lo que me impedía hacerlo era que uso algunas extensiones de GNU, BSD o POSIX que no se encuentran en el estándar C.</p>
<p>Yo no sabía, pero basta con añadir la línea</p>
<pre class="code">#define _GNU_SOURCE
</pre>
<p>o, según el caso,</p>
<pre class="code">#define _POSIX_C_SOURCE 2
</pre>
<p>al principio del código fuente y glibc reconoce y habilita las funciones que hagan falta.</p>
<p>Esto es un paso hacia adelante, pues ahora ya puedo usar un simple &#8220;grep&#8221; para ver en qué archivos están &#8220;solicitando extensiones&#8221;.</p>
<p>Desafortunadamente aún falta bastante para llegar al ideal, pues sigo atado a las herramientas de GNU. Por ejemplo ¿qué pasa si trato de compilar sobre OpenSolaris? La última vez que lo intenté, resultó que el Makefile usa extensiones que dependen de gmake (una de ellas es el <code>include</code> no fatal). Pero si hubiera gmake, ¿compilaría?</p>
<p>Sólo hay una manera de saberlo&#8230; ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/29/de-superkb-gcc-pedante-y-portabilidad/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Superkb 0.20</title>
		<link>http://blog.alvarezp.org/2009/11/20/superkb-0-20/</link>
		<comments>http://blog.alvarezp.org/2009/11/20/superkb-0-20/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 07:44:19 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Gultij]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=844</guid>
		<description><![CDATA[Ha habido mucho trabajo en esta versión y lo más notable es el soporte para pintar el teclado usando Cairo.
Cualquier falla que encuentren, por favor levanten un bug en el sistema de seguimiento de bugs, o bug tracking system. Al levantar un caso de bug, todo queda escrito y no se nos van a olvidar [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.alvarezp.org/imagenes/superkb/shots/0.20/0.20-msnatural.png"><img title="Teclado Microsoft Natural, pintado por Superkb." src="http://blog.alvarezp.org/imagenes/superkb/shots/0.20/0.20-msnatural-thumb.png" alt="Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key). Haz clic para ver la imagen completa." width="300" height="277" /></a><p class="wp-caption-text">Teclado Microsoft Natural, pintado por Superkb (Cairo, flat_key)</p></div>
<p>Ha habido mucho trabajo en esta versión y lo más notable es el soporte para pintar el teclado usando <a href="http://es.wikipedia.org/wiki/Cairo_(biblioteca)">Cairo</a>.</p>
<p>Cualquier falla que encuentren, por favor levanten un bug en el <a href="https://bugs.launchpad.net/superkb">sistema de seguimiento de bugs</a>, o <em>bug tracking system</em>. Al levantar un caso de bug, todo queda escrito y no se nos van a olvidar las cosas. Lo más importante es que el caso o bug quedará documentado para evitar que usuarios y desarrollador(es) trabajemos doble.</p>
<p>Por supuesto, lo anterior no quita que podamos platicar y discutir en #superkb en irc.freenode.net.</p>
<p>Quiero agradecer al <a href="http://www.gultij.org/">Grupo de Usuarios de Linux de Tijuana</a> por la retroalimentación sobre Superkb, sobre todo estos últimos días, en particular a:</p>
<ul>
<li><a href="http://israel8a.blogspot.com/">IsReal</a>, por el <a href="http://israel8a.blogspot.com/2009/11/superkb-paquetes-rpm-y-srpm-para-fedora.html">post en su blog</a> y usar Superkb para aprender a hacer paquetes RPM. <span style="text-decoration: line-through;">Si tendremos uno para la 0.20 será gracias a él.</span> <strong>Update</strong>: Ya tenemos paquete para Fedora Core 12! Gracias, IsReal.</li>
<li><a href="http://www.aduarte.net/blog/">aduarte</a>, por las eternas recomendaciones.</li>
<li><a href="http://www.rugebiker.com/">biker</a>, por intentar incansablemente de instalarlo por más que le falle. Al ver los errores he podido corregirlos.</li>
<li>y me faltó juan_arandaalva, por la ayuda con Cairo (que al final resultó ser una tontería).</li>
</ul>
<p>Bien, los recursos y descargas están donde siempre: en la <a href="http://blog.alvarezp.org/superkb/">página de Superkb en este blog</a> y en el <a href="http://superkb.sourceforge.net/">sitio oficial</a>.</p>
<p>De cualquier manera, cito todo eso aquí:</p>
<ul>
<li>Versión más reciente: 0.20.</li>
<li>Licencia: GPL v2.</li>
<li>Página del proyecto: <a href="http://superkb.sourceforge.net/">http://superkb.sourceforge.net/</a></li>
<li>Proyecto en Sourceforge: <a href="http://sourceforge.net/projects/superkb">http://sourceforge.net/projects/superkb</a></li>
<li>Descarga en gz: <a href="http://prdownloads.sourceforge.net/superkb/superkb-0.20.tar.gz?download">superkb-0.20.tar.gz</a></li>
<li>Descarga en bz2: <a href="http://prdownloads.sourceforge.net/superkb/superkb-0.20.tar.bz2?download">superkb-0.20.tar.bz2</a></li>
<li>Descarga para Fedora Core 12: <a href="http://prdownloads.sourceforge.net/superkb/superkb-0.20-1.fc12.i686.rpm?download">superkb-0.20-1.fc12.i686.rpm</a></li>
<li>Seguimiento de bugs: <a href="https://bugs.launchpad.net/superkb">https://bugs.launchpad.net/superkb</a></li>
<li>Descarga desde Git: <code>git clone git://superkb.git.sourceforge.net/gitroot/superkb/superkb superkb-git</code></li>
<li>Navegación del historial en Gitweb: <a href="http://superkb.git.sourceforge.net/">http://superkb.git.sourceforge.net/</a></li>
<li>Suscripción RSS a liberaciones de archivos: <a href="http://sourceforge.net/export/rss2_projfiles.php?group_id=154661">http://sourceforge.net/export/rss2_projfiles.php?group_id=154661</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/11/20/superkb-0-20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Seguimiento de bugs para Superkb</title>
		<link>http://blog.alvarezp.org/2009/09/21/seguimiento-de-bugs-para-superkb/</link>
		<comments>http://blog.alvarezp.org/2009/09/21/seguimiento-de-bugs-para-superkb/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 04:57:56 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=696</guid>
		<description><![CDATA[Nota rápida: Si al usar Superkb encuentras algún bug, lo mejor es reportarlo al sistema de seguimiento de casos en Launchpad.
]]></description>
			<content:encoded><![CDATA[<p>Nota rápida: Si al usar Superkb encuentras algún bug, lo mejor es reportarlo al <a href="https://bugs.launchpad.net/superkb">sistema de seguimiento de casos</a> en Launchpad.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/09/21/seguimiento-de-bugs-para-superkb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superkb 0.17</title>
		<link>http://blog.alvarezp.org/2009/03/20/superkb-017/</link>
		<comments>http://blog.alvarezp.org/2009/03/20/superkb-017/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 03:06:36 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Non geek]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Superkb]]></category>

		<guid isPermaLink="false">http://alvarezp.ods.org/blog/?p=193</guid>
		<description><![CDATA[Una de las metas que quería cumplir antes de sacar Superkb 0.17 fue convertir el código fuente a Git, manteniendo los historiales anteriores, tanto de CVS como de Subversion, así que, aquí está Superkb 0.17 con todos los links relevantes en la página usual.
¿Qué cambia en esta versión?

Hay soporte para Xinerama. Eso significa que si [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las metas que quería cumplir antes de sacar Superkb 0.17 fue convertir el código fuente a Git, manteniendo los historiales anteriores, tanto de CVS como de Subversion, así que, aquí está Superkb 0.17 <a href="http://alvarezp.ods.org/blog/superkb/">con todos los links relevantes en la página usual</a>.</p>
<p>¿Qué cambia en esta versión?</p>
<ul>
<li>Hay <a href="http://alvarezp.ods.org/blog/2008/06/18/implementando-soporte-para-xinerama-en-superkb/">soporte para Xinerama</a>. Eso significa que si tienes dos pantallas y no manejas XRandR todavía, Superkb saldrá correctamente.</li>
<li>El código fuente fue <a href="http://superkb.git.sourceforge.net/">migrado a Git</a>.</li>
<li>Mensajes más amigables durante la compilación.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/03/20/superkb-017/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Qué falló durante mi plática en el SFD2008</title>
		<link>http://blog.alvarezp.org/2008/09/16/que-fallo-durante-mi-platica-en-el-sfd2008/</link>
		<comments>http://blog.alvarezp.org/2008/09/16/que-fallo-durante-mi-platica-en-el-sfd2008/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 19:27:46 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Anécdota]]></category>
		<category><![CDATA[Conferencias]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[Gultij]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[SFD]]></category>
		<category><![CDATA[Tijuana]]></category>
		<category><![CDATA[audiosum]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[sfd2008]]></category>
		<category><![CDATA[Software libre]]></category>

		<guid isPermaLink="false">http://alvarezp.ods.org/blog/?p=177</guid>
		<description><![CDATA[A todas las personas que estuvieron presentes en la plática &#8220;Invitación al Desarrollo del Software Libre&#8221;:
Quiero expresar mi agradecimiento por su presencia en mi plática; en general, en el evento SFD 2008 en Tijuana.
Recordarán que al terminar la presentación realicé en vivo un cambio al código de audiosum; específicamente, al componente audiodup. Con este cambio [...]]]></description>
			<content:encoded><![CDATA[<p>A todas las personas que estuvieron presentes en la plática &#8220;Invitación al Desarrollo del Software Libre&#8221;:</p>
<p>Quiero expresar mi agradecimiento por su presencia en mi plática; en general, en el evento <a href="http://tonymoyoy.blogsome.com/2008/09/16/sfd-tijuana-08-resumen/">SFD 2008</a> en Tijuana.</p>
<p>Recordarán que al terminar la presentación realicé en vivo un cambio al código de <a href="http://alvarezp.ods.org/blog/audiosum/">audiosum</a>; específicamente, al componente <em>audiodup</em>. Con este cambio busqué mostrarles de manera práctica un ejemplo de cómo se desarrolla en el mundo del software libre mediante <a href="http://git.or.cz/">Git</a>.</p>
<p>También recordarán que el experimento no funcionó del todo:
<ol>
<li>descargamos el código desde repo.or.cz con <code>git clone http://repo.or.cz/audiosum.git</code>,</li>
<li>compilamos audiosum y lo vimos funcionando con <code>./autogen.sh &#038;&#038; ./configure &#038;&#038; make</code>,</li>
<li>realizamos un cambio en audiodup,</li>
<li>mostramos el parche resultante con <code>git diff</code>,</li>
<li>revisamos el estado del repositorio local con <code>git status</code>,</li>
<li>aplicamos el cambio en el repositorio local con <code>git commit -a</code>,</li>
<li>observamos las diferencias entre el repositorio local y el repositorio público con <code>git log origin..master</code>,</li>
<li>pero no pudimos publicar el cambio con <code>git push</code>.</li>
</ol>
<p>El motivo fue muy sencillo: no tenía autorizada la laptop para enviar cambios al repositorio. En <a href="http://repo.or.cz/">repo.or.cz</a> se deben dar de alta las claves públicas de cada persona@computadora autorizada para enviar cambios. Tengo diferentes claves públicas en cada máquina, y sólo tenía dada de alta la PC del trabajo y la PC de la casa. Mi cuenta de la laptop no estaba autorizada para enviar cambios.</p>
<p>Finalmente el cambio fue aplicado con <code>git push</code> y pueden observar en el <a href="http://repo.or.cz/w/audiosum.git">historial de cambios de audiosum</a> el cambio &#8220;<a href="http://repo.or.cz/w/audiosum.git?a=commit;h=02e1ea1a1d99f52d7c44b9f62c6f00e268999947">Added support for file pattern matching</a>&#8220;. En el segundo enlace pueden ver que la fecha es del 13 de septiembre a las 17:56, hora local, es decir, que el commit fue realizado <strong>durante</strong> la conferencia.</p>
<p>Saludos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2008/09/16/que-fallo-durante-mi-platica-en-el-sfd2008/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Implementando soporte para Xinerama en Superkb</title>
		<link>http://blog.alvarezp.org/2008/06/18/implementando-soporte-para-xinerama-en-superkb/</link>
		<comments>http://blog.alvarezp.org/2008/06/18/implementando-soporte-para-xinerama-en-superkb/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 02:21:22 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Superkb]]></category>
		<category><![CDATA[superkb xinerama x programacion linux]]></category>

		<guid isPermaLink="false">http://alvarezp.ods.org/blog/?p=167</guid>
		<description><![CDATA[Desde hace tiempo, Alfredo observó el problema. Incluso, hay un screenshot en la sección de bloopers (al final de la sección de Pantallazos) donde se ve una pantalla doble con un teclado muy bonito. Pero, ¿por qué es eso un blooper?
Para pintar el teclado, Superkb le pregunta a X el tamaño de la pantalla, y [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace tiempo, Alfredo observó el problema. Incluso, hay un screenshot en la sección de bloopers (al final de la sección de <a href="http://superkb.sourceforge.net/screenshots.shtml">Pantallazos</a>) donde se ve una pantalla doble con un teclado muy bonito. Pero, ¿por qué es eso un blooper?</p>
<p>Para pintar el teclado, Superkb le pregunta a X el tamaño de la pantalla, y pinta el teclado aprovechando al máximo la pantalla, según el tamaño que se le reporta.</p>
<h4>El problema</h4>
<p>Para X, una tarjeta dual con dos monitores, es en realidad un solo &#8220;display&#8221;, de modo que Superkb no logra percatarse de la existencia de dos monitores, y aunque <a href="http://superkb.sourceforge.net/shots/bloopers/xinerama-0.10-960-384.png">el screenshot</a> se ve perfecto, <a href="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-no-xinerama-screen-640-480.png">la realidad</a> es muy distinta. (Disculpen ustedes mi falta de pulso.)</p>
<p style="text-align: center"><a href="http://superkb.sourceforge.net/shots/bloopers/xinerama-0.10-960-384.png"><img style="margin: 10px" src="http://superkb.sourceforge.net/shots/bloopers/xinerama-0.10-320-128.png"/></a><a href="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-no-xinerama-screen-640-480.png"><img style="margin: 10px" src="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-no-xinerama-screen-320-240.png"/></a><br />(Superkb sin soporte para Xinerama: A la izquierda, el screenshot, a la derecha, las pantallas reales)</p>
<p>Nótese que en este caso, el problema se agrava debido a que cada monitor tiene una resolución distinta, de modo que no sólo el teclado se ve partido, sino que además una parte se pierde.</p>
<p>¿Cómo se podría resolver el problema? El problema dejaría de existir si Superkb tuviera la capacidad de conocer la cantidad de monitores existentes y la resolución de cada uno, y pintar varios teclados a la vez, uno por monitor.</p>
<h4>XINERAMA</h4>
<p>En una configuración de doble monitor, para X.org, se sigue tratando de un único &#8220;display&#8221;, es sólo que un conjunto de pixeles se asignan al primer monitor y otro conjunto de pixeles se asignan al segundo monitor.</p>
<p>Xinerama es una librería que, en esencia, cuenta con sólo una función, llamada <a href="http://linux.die.net/man/3/xineramaqueryscreens">XineramaQueryScreens</a>. Aunque en realidad son 4 funciones, las tres restantes sólo se usan para consultar la versión, disponibilidad y compatibilidad de Xinerama como extensión de X.</p>
<p>Con esta función le pregunto a X.org cuántos monitores hay y qué pixeles se mapean a cada uno de los monitores, y me contesta en un arreglo de estructuras <a href="http://gitweb.freedesktop.org/?p=xorg/lib/libXinerama.git;a=blob;h=666f52a78d294d349b75508e50b06c218133bc9b;hb=8123c94eba27d1a3eb3f509a79c229ddfa1f881a;f=include/X11/extensions/Xinerama.h#l32">XineramaScreenInfo</a>.</p>
<p>Por ejemplo, en la PC que se usó para el screenshot, esta es la información que regresa:</p>
<pre class="code">screen_number = 0
x_org = 0
y_org = 0
width = 1024
height = 768

screen_number = 1
x_org = 1024
y_org = 0
width = 1280
height = 1024</pre>
<p>Con esta información, Superkb sólo se limita a pintar los teclados en sus correspondientes coordenadas: un teclado entre 0-1023 x 0-767 y otro en 1024-2303 x 0-1023. El <a href="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-xinerama-shot-960-427.png">screenshot</a> queda un poco diferente, y tal vez no se vea del todo bien. Pero ya <a href="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-xinerama-screen-640-480.png">en pantalla</a> se ve como se espera.</p>
<p style="text-align: center"><a href="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-xinerama-shot-960-427.png"><img style="margin: 10px" src="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-xinerama-shot-320-142.png"/></a><a href="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-xinerama-screen-640-480.png"><img style="margin: 10px" src="http://alvarezp.ods.org/blog/imagenes/superkb-xinerama/superkb-xinerama-screen-320-240.png"/></a><br />(Superkb con soporte para Xinerama: A la izquierda, el screenshot, a la derecha, las pantallas reales)</p>
<p>Debido esto, hubo que convertir el pixmap y la ventana de Superkb, en un arreglo de pixmaps y ventanas. (No, no puedo usar un mismo pixmap para todas las ventanas, porque pueden ser monitores de diferente resolución).</p>
<p>En conclusión: para el tiempo que duré con conocimiento del bug y sin arreglarlo (desde la versión 0.10), creo que hice una tormenta con un vaso de agua. El cambio fue relativamente fácil de implementar.</p>
<p>&#8230; y todo para Xinerama se desprecie en favor de Xrandr. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2008/06/18/implementando-soporte-para-xinerama-en-superkb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Superkb 0.16</title>
		<link>http://blog.alvarezp.org/2008/04/05/superkb-016/</link>
		<comments>http://blog.alvarezp.org/2008/04/05/superkb-016/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 08:11:30 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Superkb]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[xft]]></category>

		<guid isPermaLink="false">http://alvarezp.ods.org/blog/?p=161</guid>
		<description><![CDATA[Una nota rápida para anunciar Superkb 0.16.
La bitácora de cambios:

Algunos bichos corregidos, reportados por gcc -Wextra.
Reescrito el código de dibujado de textos mediante Xft.
Corregida una condición de carrera en el procesamiento de los eventos de X.

Sobre Xft, la migración se realizó para aprovechar la funcionalidad de antialias que provee Xft, en comparación con Xlib. En [...]]]></description>
			<content:encoded><![CDATA[<p>Una nota rápida para anunciar Superkb 0.16.</p>
<p>La bitácora de cambios:</p>
<ul>
<li>Algunos bichos corregidos, reportados por gcc -Wextra.</li>
<li>Reescrito el código de dibujado de textos mediante Xft.</li>
<li>Corregida una condición de carrera en el procesamiento de los eventos de X.</li>
</ul>
<p>Sobre Xft, la migración se realizó para aprovechar la funcionalidad de antialias que provee Xft, en comparación con Xlib. En Debian Sid, por algún motivo renderea igual la versión 0.15 que la 0.16, pero en Ubuntu Feisty se nota la diferencia en la calidad del texto.</p>
<p>Sobre la condición de carrera, se trata de un bug espantoso que podía volver inutilizable Superkb. Significa que el mismo código en la misma distribución en diferentes PC, podría funcionar para una persona y para otra no.</p>
<p>No hay pantallazos por el momento.</p>
<p>Para los diversos recursos del proyecto (descargas y demás), visita <a href="http://alvarezp.ods.org/blog/superkb/">la página de Superkb</a> en este mismo blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2008/04/05/superkb-016/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>audiosum 0.2</title>
		<link>http://blog.alvarezp.org/2008/03/26/audiosum-02/</link>
		<comments>http://blog.alvarezp.org/2008/03/26/audiosum-02/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 06:59:39 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[audiosum]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Software libre]]></category>

		<guid isPermaLink="false">http://alvarezp.ods.org/blog/?p=156</guid>
		<description><![CDATA[Ok, audiosum ha sido un excelente conejillo de indias para aprender Git, GNU Autoconf y GNU Automake. Los dos últimos me parecen demasiado confusos todavía, pero ahí la llevo.
Y se han hecho varios cambios, principalmente:

Se corrigió un horrible bug donde los archivos que se abrían no se cerraban, tipo memory leak, pero de descriptores.
Se añadió [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, audiosum ha sido un excelente conejillo de indias para aprender Git, GNU Autoconf y GNU Automake. Los dos últimos me parecen demasiado confusos todavía, pero ahí la llevo.</p>
<p>Y se han hecho varios cambios, principalmente:</p>
<ul>
<li>Se corrigió un horrible bug donde los archivos que se abrían no se cerraban, tipo memory leak, pero de descriptores.</li>
<li>Se añadió una opción, -b, para indicar que sólo se desea la firma de una parte del archivo (dado en porcentaje). Si se usa -b sin un valor, imprime sólo el tamaño del audio del archivo.</li>
<li>Se añadió una opción, -a, para indicar qué algoritmo de hash usar, como md5, sha1, etc.</li>
<li>Mejores mensajes de ayuda.</li>
<li>Se incluye audiodup, un script para encontrar duplicados más cómodamente.</li>
</ul>
<p>El script audiodup trabaja de manera eficiente:</p>
<ol>
<li>Genera una lista de archivos a analizar, según las rutas indicadas.</li>
<li>(Primera etapa) Descarta los archivos no duplicados según su tamaño.</li>
<li>(Segunda etapa) Descarta los archivos no duplicados según el primer 2% del contenido.</li>
<li>(Tercera etapa) Descarta los archivos no duplicados según el contenido completo.</li>
<li>Los archivos restantes son duplicados. Se agrupan y se presentan.</li>
</ol>
<p>Ejemplo de uso de audiodup, para buscar mp3 duplicados en $HOME y /mnt/music:</p>
<pre class="code"><code>audiodup $HOME /mnt/music
</code></pre>
<p>Ejemplo de uso de audiodup, usando sha1 y que revise el 5% en la segunda etapa:</p>
<pre class="code"><code>audiodup -a sha1 -b 5 $HOME /mnt/music
</code></pre>
<p>Descarga en .tar.gz: <a href="http://alvarezp.ods.org/blog/files/audiosum-0.2.tar.gz">audiosum-0.2.tar.gz</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2008/03/26/audiosum-02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>audiosum 0.1</title>
		<link>http://blog.alvarezp.org/2008/03/10/audiosum-01/</link>
		<comments>http://blog.alvarezp.org/2008/03/10/audiosum-01/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 10:39:53 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[audiosum]]></category>

		<guid isPermaLink="false">http://alvarezp.ods.org/blog/2008/03/10/audiosum-01/</guid>
		<description><![CDATA[Me complace anunciar formalmente la liberación de audiosum 0.1.
Audiosum es una herramienta que permite calcular la firma MD5 para un archivo MP3, pero ignorando la metainformación (etiquetas ID3v1, ID3v2, Lyrics3v1 y Lyrics3v2). En este momento no existe soporte para OGG.
Audiosum surge de la idea de buscar duplicados de audio cuando los archivos difieren únicamente en [...]]]></description>
			<content:encoded><![CDATA[<p>Me complace anunciar formalmente la liberación de <strong>audiosum 0.1</strong>.</p>
<p>Audiosum es una herramienta que permite calcular la firma MD5 para un archivo MP3, pero ignorando la metainformación (etiquetas ID3v1, ID3v2, Lyrics3v1 y Lyrics3v2). En este momento no existe soporte para OGG.</p>
<p>Audiosum surge de la idea de buscar duplicados de audio cuando los archivos difieren únicamente en sus etiquetas. Por ejemplo, en el siguiente ejemplo, existen cuatro archivos cuya firma MD5 es diferente, por lo que son diferentes. Sin embargo, su parte de audio es idéntica. Cuando audiosum muestra la firma MD5 del audio, uniq los detecta por lo que tranquilamente podemos borrar una de las copias de estos archivos.</p>
<pre class="code" style="font-size: 60%; line-height: 120%"><code>alvarezp@alvarezp-laptop:~$ md5sum (algunos archivos)
d662def56360c1ba71975fe0858651df  other/music/ALEX UBAGO - QUE PIDES TU.mp3
4e91970580b0355b3aa7e711416d50ba  other/music/Alex Ubago.- Vuelve.mp3
07894b351ae9df4a3c8ca487169e1524  DCIM/iPod_Control/Music/F00/ASFP.mp3
82db5ed3ffe951aba19cdd2d38cbea01  other/music/no doubt - bath water.mp3

alvarezp@alvarezp-laptop:~$ find -iname "*.mp3" | audiosum | sort | uniq -D -w 41
003c6b41 36d2a24f44413f4a4ab3282e7cea1649 [I3v1] [I3v2] [----] [----] ./other/music/ALEX UBAGO - QUE PIDES TU.mp3
003c6b41 36d2a24f44413f4a4ab3282e7cea1649 [I3v1] [----] [----] [----] ./other/music/Alex Ubago.- Vuelve.mp3
0058f7a4 17df577141ae1db6384309e2e3cbe2c6 [I3v1] [I3v2] [----] [----] ./DCIM/iPod_Control/Music/F00/ASFP.mp3
0058f7a4 17df577141ae1db6384309e2e3cbe2c6 [I3v1] [----] [----] [----] ./other/music/no doubt - bath water.mp3</code></pre>
<p>El primer valor que se imprime es el tamaño del audio procesado. El segundo valor es la firma MD5.</p>
<p>Obsérvese cómo a audiosum no se le proveen los archivos por la línea de comando sino por la entrada estándar. Se puede incluir <code>tee audiosum.out</code> antes de sort para que las firmas se almacenen en un archivo de texto antes de ser ordenadas. El comando <code>uniq -D -w 41</code> es el que se encarga de dejar únicamente los duplicados, considerando los primeros 41 caracteres.</p>
<p>Descarga en .tar.gz: <a href="http://alvarezp.ods.org/blog/files/audiosum-0.1.tar.gz">audiosum-0.1.tar.gz</a></p>
<p>Para compilar:</p>
<pre class="code"><code>#Instalar la librería mhash.
apt-get install libmhash-dev #para Ubuntu

#Descargar el archivo audiosum-0.1.tar.gz.
wget http://alvarezp.ods.org/blog/files/audiosum-0.1.tar.gz

#Descomprimir el paquete.
tar xvzf audiosum-0.1.tar.gz
cd audiosum-0.1

#Configurar y crear
./configure &#038;&#038; make

#Instalar
sudo make install
</code></pre>
<p>Ejemplos de uso de audiosum:</p>
<pre class="code"><code>find -iname "*.mp3" | audiosum
find -iname "*.mp3" | audiosum > audiosum.out
find -iname "*.mp3" | audiosum | tee audiosum.out
find -iname "*.mp3" | audiosum | sort | uniq -D -w 41
</code></pre>
<p>Saludos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2008/03/10/audiosum-01/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

