<?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; Planet Gultij</title>
	<atom:link href="http://blog.alvarezp.org/categorias/planet-gultij/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.alvarezp.org</link>
	<description>cat &#62;&#62; /dev/blog</description>
	<lastBuildDate>Sun, 28 Feb 2010 08:16:50 +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>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>Google Maps Street View en Tijuana</title>
		<link>http://blog.alvarezp.org/2010/02/12/google-maps-street-view-en-tijuana/</link>
		<comments>http://blog.alvarezp.org/2010/02/12/google-maps-street-view-en-tijuana/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 08:45:22 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Tenía que ser un geek.]]></category>
		<category><![CDATA[Tijuana]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=975</guid>
		<description><![CDATA[
Por azares del destino encontré que Google ya tiene una pizca de Tijuana lista en el Street View de Google Maps.
Al parecer alguien vio el carro en junio de 2009, se la pasó a algún amigo y éste lo blogueó! :-O
Actualización 1: La mejor foto que publicaron los de tijuanayo.com es la del vehículo de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><a href="http://blog.alvarezp.org/imagenes/gm-sv-tijuana/gm-st-tij.png"><img src="http://blog.alvarezp.org/imagenes/gm-sv-tijuana/gm-st-tij-480.png" alt="Google Maps, Street View, Tijuana, 2010-02-12" /></a></p>
<p>Por azares del destino encontré que Google ya tiene una pizca de Tijuana lista en el Street View de Google Maps.</p>
<p>Al parecer alguien <a href="http://www.tijuanayo.com/google-maps-street-view-en-tijuana/  ">vio el carro</a> en junio de 2009, se la pasó a algún amigo y éste lo blogueó! :-O</p>
<p><strong>Actualización 1: </strong>La mejor foto que publicaron los de <a href="http://www.tijuanayo.com/">tijuanayo.com</a> es la del <a href="http://www.tijuanayo.com/wp-content/gallery/google-maps-1/google-street-view-tijuana02.jpg">vehículo de Google siendo cuestionado por la policía</a>.</p>
<p><strong>Actualización 2: </strong>También en <a href="http://www.tijuanayo.com/">tijuanayo.com</a> observaron que ya está en línea e hicieron un <a href="http://www.tijuanayo.com/habilitan-parte-de-google-street-view-en-tijuana/">post</a> al respecto.</p>
<p>Grandioso ¿no? Ojalá pronto podamos tener el resto de los servicios. Particularmente, saber cómo llegar de A a B con optimizaciones, como en San Diego, pero específicas a la localidad. Estas son las optimizaciones que me imagino en Google Maps para Tijuana:
<ul>
<li>Usar sólo transporte público</li>
<li>Usar sólo automóvil</li>
<li>Evitar boulevares y aprovechar vías rápidas</li>
<li>Evitar tráfico (en tiempo real)</li>
<li>Evitar baches y charcos (en tiempo real)</li>
<li>Evitar balaceras (en tiempo real)</li>
<li>Parar por una gasolinera non-rata (en tiempo real?)</li>
<li>Evitar el tren (en tiempo real)</li>
</ul>
<p>:-)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/02/12/google-maps-street-view-en-tijuana/feed/</wfw:commentRss>
		<slash:comments>2</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[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 no admite ediciones anónimas, así que es necesario contar con [...]]]></description>
			<content:encoded><![CDATA[<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 <a href="https://sourceforge.net/apps/mediawiki/superkb/">Wiki</a>.</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>Debian Bridge</title>
		<link>http://blog.alvarezp.org/2010/01/18/debian-bridge/</link>
		<comments>http://blog.alvarezp.org/2010/01/18/debian-bridge/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 23:55:05 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Net-admin]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=958</guid>
		<description><![CDATA[/etc/network/interfaces:
auto br0
iface br0 net dhcp
   bridge_ports eth0 eth1
   bridge_stp off
   bridge_fd 3

]]></description>
			<content:encoded><![CDATA[<p>/etc/network/interfaces:</p>
<pre class="code"><code>auto br0
iface br0 net dhcp
   bridge_ports eth0 eth1
   bridge_stp off
   bridge_fd 3
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2010/01/18/debian-bridge/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>0</slash:comments>
		</item>
		<item>
		<title>Operación contraintuitiva de &#8220;patch&#8221;</title>
		<link>http://blog.alvarezp.org/2009/12/22/operacion-contraintuitiva-de-patch/</link>
		<comments>http://blog.alvarezp.org/2009/12/22/operacion-contraintuitiva-de-patch/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 18:52:39 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Queja]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Tenía que ser un geek.]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=880</guid>
		<description><![CDATA[Este es un ejemplo de lo que NO se debe hacer al diseñar un software.
[Sun Dec 20 14:37:42 -0800 -- alvarezp@octavio:~/patch-test]
$ ls -l
total 24
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.bak
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.c
-rw-r--r-- 1 alvarezp alvarezp 7232 Dec 20 14:37 slpcall.c.2

[Sun Dec 20 14:37:43 -0800 -- alvarezp@octavio:~/patch-test]
$ diff [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un ejemplo de lo que NO se debe hacer al diseñar un software.</p>
<pre class="code">[Sun Dec 20 14:37:42 -0800 -- alvarezp@octavio:~/patch-test]
$ ls -l
total 24
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.bak
-rw-r--r-- 1 alvarezp alvarezp 7127 Dec 20 14:37 slpcall.c
-rw-r--r-- 1 alvarezp alvarezp 7232 Dec 20 14:37 slpcall.c.2

[Sun Dec 20 14:37:43 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u slpcall.c slpcall.c.2 > p

[Sun Dec 20 14:37:57 -0800 -- alvarezp@octavio:~/patch-test]
$ cat p
--- slpcall.c	2009-12-20 14:37:36.000000000 -0800
+++ slpcall.c.2	2009-12-20 14:37:36.000000000 -0800
@@ -66,6 +66,11 @@

 	slpcall->slplink = slplink;

+	slpcall->wait_for_socket = FALSE;
+	slpcall->xfer = NULL;
+	slpcall->dc = NULL;
+	slpcall->branch = NULL;
+
 	msn_slplink_add_slpcall(slplink, slpcall);

 	slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall);

[Sun Dec 20 14:38:00 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u slpcall.bak slpcall.c # .bak is a backup of original

[Sun Dec 20 14:38:19 -0800 -- alvarezp@octavio:~/patch-test]
$ patch < p
patching file slpcall.c
</pre>
<p>Hasta aquí, todo bien.</p>
</pre>
<pre class="code">[Sun Dec 20 14:38:53 -0800 -- alvarezp@octavio:~/patch-test]
$ cp slpcall.bak slpcall.c

[Sun Dec 20 14:39:02 -0800 -- alvarezp@octavio:~/patch-test]
$ mkdir x

[Sun Dec 20 14:39:04 -0800 -- alvarezp@octavio:~/patch-test]
$ mv slpcall* x/

[Sun Dec 20 14:39:06 -0800 -- alvarezp@octavio:~/patch-test]
$ ls -l
total 8
-rw-r--r-- 1 alvarezp alvarezp  410 Dec 20 14:37 p
drwxr-xr-x 2 alvarezp alvarezp 4096 Dec 20 14:39 x

[Sun Dec 20 14:39:08 -0800 -- alvarezp@octavio:~/patch-test]
$ diff -u x/slpcall.c x/slpcall.c.2 > px

[Sun Dec 20 14:39:20 -0800 -- alvarezp@octavio:~/patch-test]
$ cat px
--- x/slpcall.c	2009-12-20 14:39:02.000000000 -0800
+++ x/slpcall.c.2	2009-12-20 14:37:36.000000000 -0800
@@ -66,6 +66,11 @@

 	slpcall->slplink = slplink;

+	slpcall->wait_for_socket = FALSE;
+	slpcall->xfer = NULL;
+	slpcall->dc = NULL;
+	slpcall->branch = NULL;
+
 	msn_slplink_add_slpcall(slplink, slpcall);

 	slpcall->timer = purple_timeout_add_seconds(MSN_SLPCALL_TIMEOUT, msn_slpcall_timeout, slpcall);

[Sun Dec 20 14:39:22 -0800 -- alvarezp@octavio:~/patch-test]
$ patch < px
patching file slpcall.c.2
Hunk #1 FAILED at 66.
1 out of 1 hunk FAILED -- saving rejects to file slpcall.c.2.rej
</pre>
<p>¿La solución?</p>
</pre>
<pre class="code">
patch -p0 < px
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/22/operacion-contraintuitiva-de-patch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Etiqueta en el citado de mensajes de e-mail</title>
		<link>http://blog.alvarezp.org/2009/12/15/etiqueta-en-el-citado-de-mensajes-de-e-mail/</link>
		<comments>http://blog.alvarezp.org/2009/12/15/etiqueta-en-el-citado-de-mensajes-de-e-mail/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 07:47:16 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Ensayos]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>
		<category><![CDATA[Queja]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=858</guid>
		<description><![CDATA[Introducción
Una regla de etiqueta en Internet muy ignorada es la del citado de mensajes al contestar un correo electrónico.
Al hablar de &#8220;citado&#8221; me refiero a la inclusión de un mensaje anterior dentro de uno nuevo (una respuesta, por ejemplo) con el objetivo de mantener la relevancia de la respuesta dentro del contexto original. Es decir, [...]]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>Una regla de <a href="http://es.wikipedia.org/wiki/Netiquette">etiqueta en Internet</a> muy ignorada es la del <a href="http://es.wikipedia.org/wiki/Top-posting">citado de mensajes</a> al contestar un correo electrónico.</p>
<p>Al hablar de &#8220;citado&#8221; me refiero a la inclusión de un mensaje anterior dentro de uno nuevo (una respuesta, por ejemplo) con el objetivo de mantener la relevancia de la respuesta dentro del contexto original. Es decir, le diría a alguien: &#8220;Javier, no sé de qué hablas. La próxima vez cita en tu respuesta el mensaje original para saber a qué estás contestando.&#8221;</p>
<p>Prácticamente todos los <a href="http://es.wikipedia.org/wiki/Cliente_de_correo_electrónico">clientes de correo electrónico</a> citan el mensaje que es objeto de respuesta, al menos por defecto. Eso es bueno y contribuye con la etiqueta, pero ha desencadenado un abuso de esta regla que la vuelve totalmente inútil.</p>
<p>Al decir que la regla es &#8220;ignorada&#8221;, me refiero a que el usuario común no edita el texto citado por el cliente de correo. Deja que su programa cite el mensaje original ignorando el texto resultante. Después de 3 iteraciones de respuesta, el &#8220;mensaje original&#8221; contiene más basura que contenido relevante.</p>
<p>Y los clientes de correo electrónico &mdash;como Outlook y Thunderbird&mdash; tampoco ayudan; son demasiado tontos. Citan lo que se encuentran. Si bien, el propósito es dejarte el mensaje original listo para su *edición* durante la respuesta, lo cierto es que incluyen hasta las firmas y los legales odiosos.</p>
<p>Bien, más allá de la queja, el propósito de este artículo es mostrar las técnicas de citado y respuesta existentes, pero sobre todo, expresar mi añoranza por un estilo que usaba hace 15 años, incluso antes de la proliferación de Internet en esta ciudad.</p>
<p>La etiqueta bien aplicada a una respuesta o forward de correo electrónico permite un mensaje relativamente organizado y se compone de dos elementos: (a) la correcta colocación de la respuesta en relación al mensaje citado y (b) la correcta edición del mensaje citado.</p>
<h3>Colocación de la respuesta en relación al mensaje citado</h3>
<p>La mejor manera de explicar lo que es, es mencionando los tres diferentes estilos y la diferencia entre ellos: publicación superior (top-posting), inferior (bottom-posting) e intercalado (interposting or inline-posting). Corresponde a colocar la respuesta arriba del mensaje original, abajo, o intercalando las respuestas a los diferentes temas del texto.</p>
<h5>Ejemplo A: publicación superior (top-posting)</h5>
<blockquote><pre>
Sí y la voy a realizar yo.

El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<h5>Ejemplo B: publicación inferior (bottom-posting)</h5>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx

Sí y la voy a realizar yo.
</pre>
</blockquote>
<h5> Ejemplo C: respuestas intercaladas (inline-posting)</h5>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?

Sí.

>
> Quién la va a realizar?

Yo.

> Saludos.
>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<p>¿Cuál consideran que es mejor? La respuesta puede variar según el entorno, pues tienen pros y contras. ¿Cuáles consideras que son los pros y contras de cada uno?</p>
<p>En las listas de correo, por ejemplo, el escrito superior está más que prohibido, a favor del escrito inferior (o mejor aún, el intercalado). Este se ha venido manejando incluso desde antes de la existencia del &#8220;correo electrónico&#8221; como se conoce hoy en día.</p>
<p>Sin embargo, en los negocios y el uso común, lo más popular es el estilo &#8220;superior&#8221;, debido a que es más fácil &#8220;escribir y mandar&#8221; sin preocuparse por más; esto ha llevado a que los clientes de correo electrónico más populares vengan preconfigurados de esa manera, lo que a su vez lo populariza aún más.</p>
<h3>Correcta edición del mensaje citado</h3>
<p>El ejemplo anterior de mensaje intercalado deja al descubierto la inutilidad de una gran parte del texto de respuesta. Se considera que el texto citado forma parte de la respuesta, pues pertenece al mismo mensaje y ocupa espacio en disco como parte de la misma.</p>
<p>Tomaré el ejemplo de intercalado expuesto arriba como caso de análisis, pero esto aplica a cualquiera de los tres estilos de colocación de respuesta.</p>
<p>A partir de la palabra &#8220;saludos&#8221; es texto irrelevante (y por ende, inútil). Tal vez podríamos argumentar que la línea &#8220;Octavio:&#8221; también es texto irrelevante, pero no seamos tan quisquillosos en este momento. En números, son inútiles 8 de 21 líneas (38%); 25 de 59 palabras (42%); 161 de 373 caracteres (43%). Hay que considerar que falta mi propia firma, lo cual disminuirá ligeramente estos porcentajes.</p>
<h5>Ejemplo D: Correcto citado en publicación superior</h5>
<blockquote><pre>
Sí y lo voy a realizar yo.

El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>
</pre>
</blockquote>
<h5>Ejemplo E: Correcto citado en publicación inferior</h5>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?
>
> Quién la va a realizar?
>

Sí y lo voy a realizar yo.
</pre>
</blockquote>
<h5>Ejemplo F: Correcto citado en publicación intercalada.</h5>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> Octavio:
>
> El mantenimiento es la madrugada del próximo jueves?

Sí.

> Quién la va a realizar?

Yo.
</pre>
</blockquote>
<p>El argumento principal para no editar el texto podría ser que es muy ineficiente y tardado hacerlo. Lo que en mi barrio le llamamos &#8220;hueva&#8221;. </p>
<p>Este será el argumento que den aquellas personas que no conozcan los atajos de teclado para edición, en particular el uso de la tecla Shift como un estándar no escrito para marcar texto. Usando Shift y las flechas seguido de la tecla &#8220;Delete&#8221;, es sumamente fácil marcar y eliminar texto inútil.</p>
<h3>Añorando Blue Wave y FidoNet</h3>
<p>Antes de tocar el tema de las interfaces de usuario y los dispositivos móviles, me tomaré un momento para externar mi más sincera añoranza por los tiempos en los que escribía en <a href="http://es.wikipedia.org/wiki/FidoNet">FidoNet</a>, antes de la presencia popular de Internet en Tijuana (1994 a 1996).</p>
<p>En FidoNet, la costumbre era un tanto distinta. En ese entonces usaba un shareware popular llamado <a href="http://en.wikipedia.org/wiki/Blue_Wave">Blue Wave Offline Reader</a>. Muchos usábamos Blue Wave, que tenía un estilo especial de preparar el citado antes de enviarlo a edición:</p>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 HT>
 HT> Quién la va a realizar?
 HT>
 HT> Saludos.
 HT>
 HT> ---
 HT> Hitsuo Tikashi.
 HT> Coord. de Servicios de Infraestructura.
 HT> Sistemas Integrados.
 HT> T. +52 (664) 555-1234
 HT> E. hitsuo.tikashi@sistint.com.mx
</pre>
</blockquote>
<p>Lo interesante no está en el intercalado, pues entonces como hoy, con un par de Enters tenía una respuesta intercalada.</p>
<p>Y para borrar a partir de &#8220;Saludos&#8221;, tal como hoy: me coloco en la letra &#8220;S&#8221; de &#8220;Saludos&#8221; y en dos pasos: Shift+Ctrl+End, Delete, y listo: mensaje limpio.</p>
<p>Y entonces yo contestaba:</p>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?

 Así es. Aunque el mantenimiento no está considerado de carácter crítico,
 en caso de posible falla afectaremos los acuerdos de nivel de servicio,
 pues hace menos de 30 días hubo otra falla por parte de nuestros
 proveedores.

 HT> Quién la va a realizar?

 Yo.
</pre>
</blockquote>
<p>Lo realmente interesante es que cuando el susodicho remitente intentara contracontestar mi respuesta, el texto era automáticamente ajustado a la longitud de la línea y citado de la siguiente manera:</p>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Octavio Alvarez dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 OA>
 OA> Así es. Aunque el mantenimiento no está considerado de carácter
 OA> crítico, en caso de posible falla afectaremos los acuerdos de
 OA> nivel de servicio, pues hace menos de 30 días hubo otra falla por
 OA> parte de nuestros proveedores.

 Enterado. Te encargo el changarro y mantenme informado.

 HT> Quién la va a realizar?
 OA>
 OA> Yo.

 ¿Quién estará monitoreando los servicio al siguiente día?
</pre>
</blockquote>
<p>En el ejemplo, el usuario ya intercaló su respuesta hacia mí.</p>
<p>Puede apreciarse cómo las líneas del texto no corresponden a las líneas originales: fueron modificadas inteligentemente, siendo consideradas como un párrafo y ajustadas para mantener un bloque sólido y consistente de texto.</p>
<p>Puede verse cómo el texto es sumamente claro y fácil de seguir; aún más, si el lector y el editor se encargaban de poner en diferentes colores a los diferentes autores.</p>
<p>Este estilo, además de ordenado es escalable. Después de múltiples iteraciones, el texto y el formato se mantienen en orden.</p>
<blockquote><pre>
El Vie, 26 Jun 2009 17:42:34 -0700, Octavio Alvarez dijo:
 HT> Octavio:
 HT>
 HT> El mantenimiento es la madrugada del próximo jueves?
 OA>
 OA> Así es. Aunque el mantenimiento no está considerado de carácter
 OA> crítico, en caso de posible falla afectaremos los acuerdos de
 OA> nivel de servicio, pues hace menos de 30 días hubo otra falla por
 OA> parte de nuestros proveedores.
 HT>
 HT> Enterado. Te encargo el changarro y mantenme informado.
 OA>
 OA> Ok. Le enviaré un mensaje a su celular, según el procedimiento.

 Y además mándamelo por correo, por favor.

 HT> Quién la va a realizar?
 OA>
 OA> Yo.
 HT>
 HT> ¿Quién estará monitoreando los servicio al siguiente día?
 OA>
 OA> Estará el compañero nuevo, pero ya hablé con los demás para que
 OA> estén al pendiente de caulqueir eventualidad.

 ¿Ya intercambiaron números de teléfono?
</pre>
</blockquote>
<p>Desde mi punto de vista esto es mucho más inteligente que su popularizada contraparte:</p>
<blockquote><pre>
El Lun, 29 Jun 2009 17:42:34 -0700, Octavio Alvarez &lt;alvarezp@alvarezp.ods.org> dijo:
> El Dom, 28 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> > El Sab, 27 Jun 2009 17:42:34 -0700, Octavio Alvarez &lt;alvarezp@alvarezp.ods.org> dijo:
> > > El Vie, 26 Jun 2009 17:42:34 -0700, Hitsuo Tikashi &lt;hitsuo.tikashi@sistint.com.mx> dijo:
> > > > Octavio:
> > > >
> > > > El mantenimiento es la madrugada del próximo jueves?
> > >
> > > Así es. Aunque el mantenimiento no está considerado de carácter
> > > crítico, en caso de posible falla afectaremos los acuerdos de
> > > nivel de servicio, pues hace menos de 30 días hubo otra falla por
> > > parte de nuestros proveedores.
> >
> > Enterado. Te encargo el changarro y mantenme informado.
>
> Ok. Le enviaré un mensaje a su celular, según el procedimiento.

Y además mándamelo por correo, por favor.

> > > > Quién la va a realizar?
> > >
> > > Yo.
> >
> > ¿Quién estará monitoreando los servicio al siguiente día?
>
> Estará el compañero nuevo, pero ya hablé con los demás para que estén
> al pendiente de caulqueir eventualidad.

¿Ya intercambiaron números de teléfono?
</pre>
</blockquote>
<p>Esto es lo mejor que un mensaje de correo electrónico puede dar. No está tan mal, asumiendo que el autor haya seguido la etiqueta.</p>
<p>De no ser así, nos encontramos con:</p>
<ul>
<li>Prefijos de cita como el siguiente: > >> > >>> ></li>
<li>Líneas partidas por exceder una cierta longitud.</li>
<li>Mensajes citados en su totalidad, incluyendo párrafos irrelevantes.</li>
<li>Mensajes llenos de firmas y bloques de textos de información legal (a veces en dos idiomas por mensaje).</li>
</ul>
<p>Aunque mejor que lo que se ve día a día, dista mucho de la comodidad de trabajar con el estilo de Blue Wave / FidoNet.</p>
<h3>De interfaces de usuario</h3>
<p>Los clientes de correo electrónico son realmente deficientes en promover la cultura de la etiqueta en el correo electrónico.</p>
<p>Considero que podría existir un mecanismo en los clientes de correo electrónico para detectar la firma del remitente y excluirla del mensaje citado. Esto ahorraría que después de tres respuestas, la respuesta contuviera tres copias del mismo rollo:</p>
<blockquote><pre>
> ---
> Hitsuo Tikashi.
> Coord. de Servicios de Infraestructura.
> Sistemas Integrados.
> T. +52 (664) 555-1234
> E. hitsuo.tikashi@sistint.com.mx
>
> El contenido de este mensaje de correo, así como sus anexos pueden ser
> confidenciales y estar protegidos por derechos de autor. Están dirigidos
> única y exclusivamente para uso de el (los) destinatario(s). Si Usted
> lo ha recibido por error debe destruirlo de su sistema. No se permite
> copiar, ni imprimir, ni distribuir este correo o sus anexos, ni usarlos
> para propósito alguno ni dar a conocer su contenido a persona alguna.
> La información aquí contenida no necesariamente refleja la opinión
> o postura de [NOMBRE DE LA EMPRESA] ni sus subsidiarias, afiliadas
> o alianzas.
>
> Por favor piense en el planeta antes de imprimir este mensaje.
</pre>
</blockquote>
<p>(Nota: la última línea la he visto en algunos mensajes de correo y la he incluído sólo porque al imaginarme ese llamado a la ecología al lado de ese derroche de energía eléctrica y espacio en disco que suele estar en HTML, no puedo evitar contener mi deficiente sentido del sarcasmo.)</p>
<h3>Los dispositivos móviles</h3>
<p>En una pantalla de 160&#215;320 y un teclado miniatura uno podría argumentar que es difícil realizar toda esta edición de mensaje de forma práctica. Sin embargo, del mismo modo en el que los dispositivos móviles presentan al usuario interfaces apropiadas para realizar otras tareas, es en la interfaz donde radica la facilidad o dificulad de realizar estas ediciones.</p>
<p>De ser popular el intercalado, un dispositivo móvil contaría con una función para &#8220;contestar el siguiente bloque o párrafo&#8221; o tal vez para &#8220;navegar por párrafo&#8221; y escoger &#8220;contestar&#8221;, &#8220;dejar&#8221; o &#8220;eliminar&#8221; cada uno de ellos hasta una opción para &#8220;borrar el resto del texto&#8221;.</p>
<p>Si la interfaz no lo contiene, es porque el intercalado no fue lo suficientemente popular y hoy en día no se demanda lo suficiente.</p>
<h3>Conclusiones</h3>
<p>He tratado de mostrar cómo el estilo del ejemplo F es el más ordenado, organizado y escalable de todos, basado en la experiencia previa de Blue Wave y FidoNet.</p>
<p>Personalmente, trato de respetar el estilo que la mayoría de la población utilice en un contexto dado. Es lo mejor. Una persona que contesta con intercalado en una lista donde todos contestan arriba del mensaje original (por ejemplo, en el trabajo) sólo provocaría confusión para todos.</p>
<p>No me queda más que hacer el llamado a quienes participan en grupos de discusión, listas de correo (en especial a los de áreas más técnicas) que al menos entre nosotros mismos sigamos estas reglas de etiqueta:</p>
<ul>
<li>Intercalar nuestras respuestas en el mensaje original.</li>
<li>Eliminar las partes irrelevantes del mensaje citado, en especial firmas y párrafos legales.</li>
<li>Reacomodar los párrafos que se vuelvan ilegibles.</li>
<li>Evitar <a href="http://blog.alvarezp.org/2007/04/06/vicios-de-escritura/">vicios de escritura</a>.</li>
<li>Apoyar nuestro texto con los emoticones en caso de que pudiera prestarse a confusión.</li>
</ul>
<p>Gracias por la paciencia de leer hasta aquí.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/15/etiqueta-en-el-citado-de-mensajes-de-e-mail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Remplazo interactivo en vim</title>
		<link>http://blog.alvarezp.org/2009/12/08/remplazo-interactivo-en-vim/</link>
		<comments>http://blog.alvarezp.org/2009/12/08/remplazo-interactivo-en-vim/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 08:47:11 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notas]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=853</guid>
		<description><![CDATA[Una nota rápida para que no se me olvide la siguiente vez.
Para remplazar texto en vim, confirmando cada remplazo, basta con agregar la opción &#8220;c&#8221; al comando &#8220;s&#8221;.
Si nuestro comando original era %s/viejo/nuevo/g entonces se usa %s/viejo/nuevo/gc.
Cada posible remplazo se sombrea y vim solicita confirmación con las siguientes opciones:
y = yes, remplazar el texto sombreado.
n [...]]]></description>
			<content:encoded><![CDATA[<p>Una nota rápida para que no se me olvide la siguiente vez.</p>
<p>Para remplazar texto en vim, confirmando cada remplazo, basta con agregar la opción &#8220;c&#8221; al comando &#8220;s&#8221;.</p>
<p>Si nuestro comando original era <code>%s/viejo/nuevo/g</code> entonces se usa <code>%s/viejo/nuevo/gc</code>.</p>
<p>Cada posible remplazo se sombrea y vim solicita confirmación con las siguientes opciones:</p>
<p>y = yes, remplazar el texto sombreado.<br />
n = no, ignorar el texto sombreado.<br />
a = all, siempre sí remplazar todo.<br />
l = last, cambiar el actual y terminar.<br />
q = quit, ignorar el actual y terminar.<br />
^E = desplazar el texto hacia adelante (para ver más texto).<br />
^Y = desplazar el texto hacia atrás.</p>
<p>Fuente:<br />
<a href="http://www.linux.com/learn/tutorials/8255-vim-tips-the-basics-of-search-and-replace">Vim tips: The basics of search and replace</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/12/08/remplazo-interactivo-en-vim/feed/</wfw:commentRss>
		<slash:comments>1</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>¿Qué falló durante mi plática en el SHDH, 2009?</title>
		<link>http://blog.alvarezp.org/2009/10/26/%c2%bfque-fallo-durante-mi-platica-en-el-shdh-2009/</link>
		<comments>http://blog.alvarezp.org/2009/10/26/%c2%bfque-fallo-durante-mi-platica-en-el-shdh-2009/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 07:52:39 +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>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=820</guid>
		<description><![CDATA[El pasado 24 de octubre estuve en el Super Happy Dev House, 2009 que se realizó en el CESUN de El Lago.
Además de estar presente para escuchar otras pláticas, yo me apunté a una para presentar sobre Git.
El objetivo de la plática era dar a conocer a Git como un sistema distribuído de control de [...]]]></description>
			<content:encoded><![CDATA[<p>El pasado 24 de octubre estuve en el <a href="http://shdhtj.pbworks.com/">Super Happy Dev House, 2009</a> que se realizó en el CESUN de El Lago.</p>
<p>Además de estar presente para escuchar otras pláticas, yo me apunté a una para presentar sobre <a href="http://git-scm.com/">Git</a>.</p>
<p>El objetivo de la plática era dar a conocer a Git como un <a href="http://en.wikipedia.org/wiki/Distributed_Version_Control_System">sistema distribuído de control de versiones</a>, y tratar de demostrar su funcionamiento con un ejemplo.</p>
<p>Si bien la parte de la plática salió bien y las primeras muestras en proyección funcionaron, la demostración en la maqueta no salió como esperaba.</p>
<p><span id="more-820"></span>Fuera de que lo que llevaba como servidor se puso a hacer un fsck a la hora de levantar el lab y que hubo que levantar una red alterna porque los peers no se veían entre ellos, lo que realmente mató la demostración fue que olvidé el asunto de los permisos. Al no tener los usuarios permisos para leer los repositorios unos de otros, la demostración se convirtió en un ejemplo de VCS centralizado.</p>
<p>Realicé varios clones, uno de otro y con otro usuario para cuidar los accesos a la laptop. Para cuando todos clonaron del repositorio compartido, estúpidamente perdí rastro del árbol de repositorios generados. Pero en fin, estaba logrando recuperar camino, cuando&#8230;</p>
<p>Debido a que todos clonaron de mi repositorio &#8211;que tenía una <em>working copy</em>, es decir, que no era un repositorio <em>bare</em>&#8211; cuando quisieron darle <code>git push</code> sólo Alex pudo enviar sus cambios y ocurrió lo que tenía que pasar:</p>
<ol>
<li>Que a los demás les apareció un mensaje sobre las &#8220;refs&#8221; que rápidamente se resolvió con <code>git pull</code></li>
<li>Una vez realizado el pull, git les comenzó a rechazar el push, debido a que mi copia local estaba &#8220;sucia&#8221;, es decir, que no correspondía con la última versión del HEAD.</li>
<p> Esto lo he resuelto múltiples veces con <code>git reset --hard</code> pero por algún motivo que desconozco, nunca pensé en forzar mi copia local a la versión actual de HEAD. Y aún si lo hubiera hecho, era demasiado tema para una sola sesión explicar <code>git reset</code>.
</ol>
<p>Algunos tuvieron conflictos y no pudieron realizar el git pull necesario para preparar el git push. Yo me preguntaba por qué tenían conflictos, y entre las tantas cosas que estaba tratando de resolver simultáneamente, el laboratorio me rebasó.</p>
<p>Afortunadamente, la parte conceptual quedó cubierta, algunos lograron instalar Git y ejecutar algunos de sus comandos.</p>
<p>Yo siento que quedé debiendo, así que he preparado un ejemplo que podrán leer y seguir con toda calma.</p>
<p>Se trata de una serie de acciones realizadas con Git afectando cuatro repositorios para demostrar la naturaleza distribuída de este gran manejador de versiones.</p>
<p>Hagan clic en la imagen para entrar a una tabla con cuatro columnas. Cada columna pertenece a los comandos ejecutados en un repositorio. Verticalmente es una línea de tiempo.</p>
<p><a href="http://blog.alvarezp.org/files/git-lab-run.html"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/10/git-lab-overview.png" alt="git-lab-overview" title="git-lab-overview" width="550" height="360" class="aligncenter size-full wp-image-822" /></a></p>
<p>Si ustedes siguen todo el laboratorio en orden, los repositorios les quedarán de la siguiente manera:</p>
<p><img src="http://blog.alvarezp.org/wp-content/uploads/2009/10/diagram-550.png" alt="diagram-550" title="diagram-550" width="550" height="418" class="aligncenter size-full wp-image-821" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/10/26/%c2%bfque-fallo-durante-mi-platica-en-el-shdh-2009/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bash prompting</title>
		<link>http://blog.alvarezp.org/2009/10/12/bash-prompting/</link>
		<comments>http://blog.alvarezp.org/2009/10/12/bash-prompting/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 03:43:41 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=772</guid>
		<description><![CDATA[Al diagnosticar un problema intermitente, tener la hora exacta en la que una prueba arrojó un determinado resultado puede ser muy útil al momento de tratarlo con los proveedores o intercambiar información con otro técnico.
Por medio de cambiar el prompt PS1 de Bash he resuelto el problema de saber a qué hora ejecuté un comando.
Mi [...]]]></description>
			<content:encoded><![CDATA[<p>Al diagnosticar un problema intermitente, tener la hora exacta en la que una prueba arrojó un determinado resultado puede ser muy útil al momento de tratarlo con los proveedores o intercambiar información con otro técnico.</p>
<p>Por medio de cambiar el prompt PS1 de Bash he resuelto el problema de saber a qué hora ejecuté un comando.</p>
<p><span id="more-772"></span>Mi prompt anterior era el default de Ubuntu:</p>
<pre class="code">PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
</pre>
<p>Para efectos de simplificar, eliminaré la parte <code>${debian_chroot:+($debian_chroot)}</code>. Bastará indicar que muestra la variable de entorno <code>debian_chroot</code> entre paréntesis cuando ésta tenga un valor asignado. Desconozco más.</p>
<p>Digamos entonces que mi prompt anterior era:</p>
<pre class="code">PS1='\u@\h:\w\$ '</pre>
<div id="attachment_776" class="wp-caption aligncenter" style="width: 515px"><a href="http://blog.alvarezp.org/wp-content/uploads/2009/10/prev.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/10/prev.png" alt="Versión por default." title="prev" width="505" height="151" class="size-full wp-image-776" /></a><p class="wp-caption-text">Versión por default.</p></div>
<p>Y planteé como objetivos:</p>
<ul>
<li>Que me permitiera encontrar fácilmente la separación entre comandos ejecutados.</li>
<li>Que me permitiera separar visual y fácilmente los componentes del prompt.</li>
<li>Que me permitiera determinar cuándo exactamente ejecuté un comando (útil durante mantenimientos de emergencia).</li>
<li>Que a pesar de tanta información, no se me acabe el renglón para escribir mi comando.</li>
</ul>
<p>Así que:</p>
<ul>
<li>Incluí un <code>\n</code> al principio del prompt para dejar una línea en blanco.</li>
<li>Incluí la fecha y hora con huso horario <code>\d \t \D{%z}</code>. El huso horario es particularmente útil cuando hay que compartir un resultado con un tercero que pudiera estar en otro lugar.</li>
<li>Puse en verde el identificador de usuario y en azul el directorio actual</li>
<li>Inicié el comando en una línea nueva. Una ventaja de esto fue que para documentar, puedo simplemente copiar toda la línea y no se incluye toda la información irrelevante.</li>
</ul>
<p>Quedó como sigue:</p>
<pre class="code">
SET_GREEN=`echo -e '\033[01;32m'`
SET_BLUE=`echo -e '\033[01;34m'`
UNSET_COLOR=`echo -e '\033[0m'`
PS1='\n[\d \t \D{%z} -- \[$SET_GREEN\]\u@\h\[$UNSET_COLOR\]:\[$SET_BLUE\]\w\[$UNSET_COLOR\]]\n\$ '
</pre>
<p>En líneas posteriores en mi .bashrc, Debian y Ubuntu anteponen <code>\[\e]0;\u@\h: \w\a\]</code> para que el título cambie al establecer el prompt. Esto se habilita si la terminal es compatible con los cambios de título.</p>
<p>El resultado final es:</p>
<div id="attachment_775" class="wp-caption aligncenter" style="width: 515px"><a href="http://blog.alvarezp.org/wp-content/uploads/2009/10/after.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/10/after.png" alt="Resultado final." title="after" width="505" height="151" class="size-full wp-image-775" /></a><p class="wp-caption-text">Resultado final.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/10/12/bash-prompting/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bell on new line</title>
		<link>http://blog.alvarezp.org/2009/09/28/bell-on-new-line/</link>
		<comments>http://blog.alvarezp.org/2009/09/28/bell-on-new-line/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 20:10:21 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Computación]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Planeta Linux]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=725</guid>
		<description><![CDATA[To have a Linux beep each time a new line is printed on standard output, just filter your output through the following code:
gawk '{print "\007" $0 }'
This will effectively &#8220;prepend&#8221; a bell to each line.
You can convert this into an alias or a command (say /usr/local/bin/line-beep.gawk):
#!/usr/bin/gawk -f

{ print "\007" $0; }
So it can be used [...]]]></description>
			<content:encoded><![CDATA[<p>To have a Linux beep each time a new line is printed on standard output, just filter your output through the following code:</p>
<pre class="code"><code>gawk '{print "\007" $0 }'</code></pre>
<p>This will effectively &#8220;prepend&#8221; a bell to each line.</p>
<p>You can convert this into an alias or a command (say /usr/local/bin/line-beep.gawk):</p>
<pre class="code"><code>#!/usr/bin/gawk -f

{ print "\007" $0; }</code></pre>
<p>So it can be used in a code like the following:</p>
<pre class="code"><code>tail -f /var/log/messages | grep --line-buffered dhcpd | line-beep.bash
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/09/28/bell-on-new-line/feed/</wfw:commentRss>
		<slash:comments>0</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>Opera and mysterious font aliasing problem in Ubuntu and Debian</title>
		<link>http://blog.alvarezp.org/2009/09/20/opera-and-mysterious-font-aliasing-in-ubuntu-and-debian/</link>
		<comments>http://blog.alvarezp.org/2009/09/20/opera-and-mysterious-font-aliasing-in-ubuntu-and-debian/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 05:04:43 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Diseño web]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Opera browser]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=517</guid>
		<description><![CDATA[Opera renders text without antialiasing under Ubuntu and Debian when a value in the font-family CSS property matches a &#8220;Core X&#8221; font before an Xft font.
That&#8217;s why Opera can be set to ignore core X fonts, by unchecking the Enable Core X fonts configuration option. You can use this as a workaround.
So, the result of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Opera_(web_browser)">Opera</a> renders text without <a href="http://en.wikipedia.org/wiki/Antialiasing">antialiasing</a> under Ubuntu and Debian when a value in the <a href="http://www.w3.org/TR/CSS2/fonts.html#font-family-prop">font-family</a> CSS property matches a &#8220;Core <a href="http://en.wikipedia.org/wiki/X_Window_System">X</a>&#8221; font before an <a href="http://en.wikipedia.org/wiki/Xft">Xft</a> font.</p>
<p>That&#8217;s why Opera can be set to ignore core X fonts, by unchecking the <a href="opera:config#UserPrefs|EnableCoreXFonts">Enable Core X fonts</a> configuration option. You can use this as a workaround.</p>
<p><span id="more-517"></span>So, the result of having this option enabled can be compared in the following images. The first image shows the rendering when the <code>font-family: "Deja Vu Sans", sans-serif</code> directive is used. The second image shows the same page when the &#8220;Deja Vu Sans&#8221; option is removed from the directive. In this second case, Opera renders the text using the &#8220;sans-serif&#8221; font, whatever it matches.</p>
<p style="text-align: center">
<img style="padding: 5px; margin: 10px; border: 1px solid black" src="http://blog.alvarezp.org/imagenes/opera-antialias/aliased.png"/><br />
<img style="padding: 5px; margin: 10px; border: 1px solid black" src="http://blog.alvarezp.org/imagenes/opera-antialias/antialiased.png"/>
</p>
<p>Seen from a different perpective, it appears to be that when Opera asks X for a font, X returns an antialised core font. Does this happen on other distributions too?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/09/20/opera-and-mysterious-font-aliasing-in-ubuntu-and-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Opera work with Cisco Secure ACS 4.1.</title>
		<link>http://blog.alvarezp.org/2009/09/18/making-opera-work-with-cisco-secure-acs-41/</link>
		<comments>http://blog.alvarezp.org/2009/09/18/making-opera-work-with-cisco-secure-acs-41/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 06:25:18 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Opera browser]]></category>
		<category><![CDATA[Planet Gultij]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=649</guid>
		<description><![CDATA[This post should be called instead &#8220;Making Opera work around a Cisco Secure ACS 4.1 interoperability bug&#8221;.
Continuing with the stream of web browser interoperability issues I recently found how to make Opera 10 work with a Cisco Secure Access Control Server 4.1.
The problem I experienced is briefly described as, clicking any option in the menu [...]]]></description>
			<content:encoded><![CDATA[<p>This post should be called instead &#8220;Making Opera work around a Cisco Secure ACS 4.1 interoperability bug&#8221;.</p>
<p>Continuing with the stream of web browser interoperability issues I recently found how to make <a href="http://www.opera.com/browser/features/">Opera 10</a> work with a <a href="http://www.cisco.com/">Cisco</a> <a href="http://www.cisco.com/en/US/products/sw/secursw/ps2086/">Secure Access Control Server</a> 4.1.</p>
<p>The problem I experienced is briefly described as, clicking any option in the menu (in the left frame) will open the menu again in the right frame, instead of actually showing the selected option.</p>
<p><span id="more-649"></span>The answer is simple: set Opera to identify as <a href="http://www.mozilla.com/en-US/firefox/features/">Firefox</a> for that domain or IP. This is located under Tools » Preferences » Advanced » Content » Manage Site Preferences. Add the site and under Network, change &#8220;Browser identification&#8221; to &#8220;Identify as Firefox&#8221;.</p>
<p><a href="http://blog.alvarezp.org/wp-content/uploads/2009/09/opera-cisco-acs-image.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/09/opera-cisco-acs-image.png" alt="opera-cisco-acs-image" title="opera-cisco-acs-image" class="aligncenter size-full wp-image-652" style="max-width: 100%" /></a></p>
<p>Here are the screenshots. Click on them.</p>
<div id="attachment_656" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.alvarezp.org/wp-content/uploads/2009/09/opera-cisco-acs.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/09/opera-cisco-acs-300x217.png" alt="Opera identified as such." title="opera-cisco-acs" width="300" height="217" class="size-medium wp-image-656" /></a><p class="wp-caption-text">Opera identified as such.</p></div>
<div id="attachment_658" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.alvarezp.org/wp-content/uploads/2009/09/opera-cisco-acs-2.png"><img src="http://blog.alvarezp.org/wp-content/uploads/2009/09/opera-cisco-acs-2-300x217.png" alt="Opera identified as Firefox." title="opera-cisco-acs-2" width="300" height="217" class="size-medium wp-image-658" /></a><p class="wp-caption-text">Opera identified as Firefox.</p></div>
<p style="clear: both">
<p>The analysis narrows down to this code in the menu:</p>
<pre class="code">// unfortunately the Object model in IE doesn't match the Netscape one so we have to check the browser...
if( "Netscape" == navigator.appName )
{
	obj.href=sequence_url;
}
else
{
	ua=navigator.userAgent;
	v=navigator.appVersion.substring(0,1);
	if ((ua.lastIndexOf("MSIE")!=-1) &#038;&#038; (v!='1') &#038;&#038; (v!='2') &#038;&#038; (v!='3'))
	{
		// MSIE 4.0 and later.
		obj.href=sequence_url;
	}
	else
	{
		parent.parent.R.location=sequence_url;
	}
}

(some code snipped)

&lt;A HREF="" TARGET=R onClick="getURL( this , 'setup.exe?action=make_r_fs&#038;option=users' )" >
&lt;IMG SRC="images/cisco_buttons/user-up.gif" BORDER=1 ALT="User Setup">&lt;/A>
</pre>
<p>So Cisco is actually trying to detect the UA, but instead of assuming a standards-complaint browser and applying special fixes for IE, it assumes IE and applies a special fix for Mozilla (Netscape).</p>
<p>That&#8217;s why changing the identifier for that site actually works. Now the JavaScript code correctly detects the UA and performs the correct action of loading the page in the &#8220;R&#8221; frame.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/09/18/making-opera-work-with-cisco-secure-acs-41/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sábado 19 de septiembre: SFD 2009</title>
		<link>http://blog.alvarezp.org/2009/09/17/sabado-19-de-septiembre-sfd-2009/</link>
		<comments>http://blog.alvarezp.org/2009/09/17/sabado-19-de-septiembre-sfd-2009/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 04:22:53 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Conferencias]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Gultij]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[SFD]]></category>
		<category><![CDATA[Tijuana]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=646</guid>
		<description><![CDATA[Como ya se ha vuelto tradición, el tercer domingo sábado de septiembre se realiza el Software Freedom Day.
En Tijuana, el evento se realizará en la sala de audiovisual del edificio de Gobierno del Estado de BC, este sábado 19 de 2009 en punto de las 10:00 a. m.
Por mi parte, estaré presentando una charla sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Como ya se ha vuelto tradición, el tercer <span style="text-decoration: line-through;">domingo</span> sábado de septiembre se realiza el <a href="http://softwarefreedomday.org/">Software Freedom Day</a>.</p>
<p>En Tijuana, el evento se realizará en la sala de audiovisual del edificio de <a href="http://aplicaciones.colef.mx/acervofoto/main.php?g2_itemId=2192">Gobierno del Estado de BC</a>, este sábado 19 de 2009 en punto de las 10:00 a. m.</p>
<p>Por mi parte, estaré presentando una charla sobre paquetería libre para Windows y Linux.</p>
<p>Lo único malo es que ese día me toca trabajar por la mañana, pero nos vemos allá para la conferencia a las 3:00 p. m.</p>
<p>Más información sobre el evento en la página del <a href="http://www.gultij.org/sfd2009/">SFD 2009 en GULTIJ</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/09/17/sabado-19-de-septiembre-sfd-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Garitas Tijuana</title>
		<link>http://blog.alvarezp.org/2009/09/16/garitas-tijuana/</link>
		<comments>http://blog.alvarezp.org/2009/09/16/garitas-tijuana/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 16:38:31 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Non geek]]></category>
		<category><![CDATA[Planet Gultij]]></category>
		<category><![CDATA[Tijuana]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=640</guid>
		<description><![CDATA[Platicando con Isra sobre su nuevo plugin para Firefox, recordé que en alguna ocasión tenía yo un simple HTML con los enlaces a las páginas de las garitas. Esto porque así podía ponerla en los favoritos de mi celular (entonces un Nokia 6600). Pero considerando que mi iPhone no soporta Adobe Flash, me resultaría útil [...]]]></description>
			<content:encoded><![CDATA[<p>Platicando con <a href="http://israel8a.blogspot.com/">Isra</a> sobre su <a href="http://isuraeru.googlepages.com/garitasbc">nuevo plugin para Firefox</a>, recordé que en alguna ocasión tenía yo un simple HTML con los enlaces a las páginas de las garitas. Esto porque así podía ponerla en los favoritos de mi celular (entonces un Nokia 6600). Pero considerando que mi iPhone no soporta Adobe Flash, me resultaría útil volver a poner esa página.</p>
<p>Así que abrimos la segunda <a href="http://blog.alvarezp.org/herramientas/">herramienta</a>: <a href="http://blog.alvarezp.org/herramientas/garitas-tijuana/">Enlaces directos a las webcams de las garitas entre Tijuana y San Diego</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/09/16/garitas-tijuana/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El mito de los 11 canales de 802.11b/g</title>
		<link>http://blog.alvarezp.org/2009/07/10/el-mito-de-los-11-canales-de-80211bg/</link>
		<comments>http://blog.alvarezp.org/2009/07/10/el-mito-de-los-11-canales-de-80211bg/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 22:01:26 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Español]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Net-admin]]></category>
		<category><![CDATA[Planet Gultij]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=490</guid>
		<description><![CDATA[
En breve: Sólo hay que usar los canales 1, 6 y/u 11 para las redes inalámbricas. Hay que ajustar la potencia para usar la red cómodamente pero sin estorbar inútilmente al vecino.

Los punto de acceso inalámbrico (Access Points, AP), ofrecen 11 (tal vez hasta 14) canales a escoger. Lo que no dicen, es que sólo [...]]]></description>
			<content:encoded><![CDATA[<div class="enbreve">
<p>En breve: Sólo hay que usar los canales 1, 6 y/u 11 para las redes inalámbricas. Hay que ajustar la potencia para usar la red cómodamente pero sin estorbar inútilmente al vecino.</p>
</div>
<p>Los punto de acceso inalámbrico (Access Points, AP), ofrecen 11 (tal vez hasta 14) canales a escoger. Lo que no dicen, es que sólo 3 de esos 11 canales se pueden escoger sin estorbar a nadie más.</p>
<p>Sin embargo, las opciones reales son sólo tres: 1, 6 y 11.</p>
<p><span id="more-490"></span><img src="http://blog.alvarezp.org/imagenes/80211-channels/wikipedia-2.4_GHz_Wi-Fi_channels_(802.11b%2Cg_WLAN).png" alt="Canales 802.11b/g" style="width: 100%"/></p>
<p>Como se puede ver en la gráfica, los canales tienen una separación de 5 MHz entre sí, pero cada canal usa 22 MHz.</p>
<p>Esto significa que si se tiene un vecino en canal 1 y otro vecino en canal 6, poner nuestro AP en canal 3 no sería una buena elección. Habrá interferencia en los canales de los tres vecinos, metiendo ruido, en lugar de compartir el canal.</p>
<p>La clave de esto es que no es lo mismo compartir el canal, que meterle ruido. Al compartirlo, la tarjeta detecta que no puede transmitir al mismo tiempo que otro equipo y se espera a que el otro termine. Sin embargo, meter ruido implica que ambas transmisiones fallan y ambos deben retransmitir. Al final, esto resulta más caro para ambos.</p>
<p>Hay quienes proponen un diseño de cuatro canales (1, 4, 8 y 11), pero esto resulta menos eficiente que un diseño de tres canales con uno compartido. Hay un documento de Cisco que analiza específicamente este caso: <a href="http://www.cisco.com/en/US/docs/wireless/technology/channel/deployment/guide/Channel.html">Channel Deployment Issues for 2.4-GHz 802.11 WLANs</a></p>
<p>El otro parámetro a ajustar es la potencia. Supongamos que dos vecinos tienen sus AP en el mismo canal por fuerza mayor. ¿Cómo pueden interferirse lo menos posible?</p>
<ul>
<li>Bajando la potencia de sus AP para que las áreas de cobertura se traslapen lo menos posible.</li>
<li>Subiendo la potencia para que ambos compartan el canal de forma más ordenada. Sin embargo, subir la potencia, por lo general estorbará a otros vecinos, por lo que no siempre es esta la mejor opción.</li>
</ul>
<p>¿Qué es lo mejor, desde mi punto de vista?</p>
<ul>
<li>Sólo usar la red inalámbrica cuando sea necesario. Esto significa que es mejor utilizar la red alámbrica tanto como sea posible.</li>
<li>Acordar con los vecinos cercanos que sólo se usen los canales 1, 6 y 11 y que cada quien escoja el canal menos saturado.</li>
<li>Ajustar la potencia de los AP al nivel óptimo: que sirva bien pero sin estorbar a otros.</li>
<li>Mover de lugar los AP, de modo que queden instalados en el centro del área de cobertura. Esto alejará un AP de otro AP y ayudará un poco. Aún así se compartirá el canal por aquellas laptops que estén físicamente ubicadas entre ambos AP.</li>
<li>Si alguno de los vecinos tiene demandas más grandes de consumo que el resto (por ejemplo, un vecino transfiere archivos pesados frecuentemente entre sus PC y los demás sólo hacen navegación común y chat), reserven uno de los canales para él, y los demás compartan los otros dos canales. Al final sale mejor para todos, pues la probabilidad neta de colisión es menor.</li>
</ul>
<p>Algunas empresas tienen demandas más grandes de consumo y usan aparatos que dinámicamente cambian el canal de sus AP hacia la mejor frecuencia disponible. En esos casos, la negociación es un poco más difícil, pero pueden acordar que cierto AP sólo pueda usar &mdash;digamos&mdash; el 1 y el 11, y dejar a los vecinos que usan navegación simple, el canal 6.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/07/10/el-mito-de-los-11-canales-de-80211bg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nueva sección: Herramientas. &#8212; Nueva página: Consulta TAE.</title>
		<link>http://blog.alvarezp.org/2009/07/04/nueva-seccion-herramientas-nueva-pagina-consulta-tae/</link>
		<comments>http://blog.alvarezp.org/2009/07/04/nueva-seccion-herramientas-nueva-pagina-consulta-tae/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 04:18:46 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Non geek]]></category>
		<category><![CDATA[Planet Gultij]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=478</guid>
		<description><![CDATA[He abierto una nueva sección llamada Herramientas, donde estaré publicando pequeños artilegios que me hacen la vida menos difícil.
Y el primero en la lista es: Consulta de saldo, Ticket Alimentación Electrónico, Accor Services México.
Mientras Accor Services México no me deje consultar el saldo de mi TAE a través de su sitio, yo voy a publicar [...]]]></description>
			<content:encoded><![CDATA[<p>He abierto una nueva sección llamada <a href="http://blog.alvarezp.org/herramientas/">Herramientas</a>, donde estaré publicando pequeños artilegios que me hacen la vida menos difícil.</p>
<p>Y el primero en la lista es: <a href="http://blog.alvarezp.org/herramientas/consulta-tae/">Consulta de saldo, Ticket Alimentación Electrónico, Accor Services México</a>.</p>
<p>Mientras <a href="http://www.accor.com.mx/">Accor Services México</a> no me deje consultar el saldo de mi TAE a través de su sitio, yo voy a publicar un método alterno.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/07/04/nueva-seccion-herramientas-nueva-pagina-consulta-tae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambio de URL del blog</title>
		<link>http://blog.alvarezp.org/2009/06/18/cambio-de-url-del-blog/</link>
		<comments>http://blog.alvarezp.org/2009/06/18/cambio-de-url-del-blog/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 06:09:09 +0000</pubDate>
		<dc:creator>alvarezp</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[Planet Gultij]]></category>

		<guid isPermaLink="false">http://blog.alvarezp.org/?p=423</guid>
		<description><![CDATA[Desde hace varios años he estado usando Open Domain Server como mi proveedor gratuito de dominios para direcciones dinámicas. Fue uno de los primeros que conocí y en general he recibido muy buen servicio. Desafortunadamente, en días recientes alguien explotó un cráter de seguridad con el que, de manera inexplicable, crearon algunos subdominios bajo alvarezp.ods.org, [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace varios años he estado usando <a href="http://www.ods.org/">Open Domain Server</a> como mi proveedor gratuito de dominios para direcciones dinámicas. Fue uno de los primeros que conocí y en general he recibido muy buen servicio. Desafortunadamente, en días recientes alguien explotó un cráter de seguridad con el que, de manera inexplicable, crearon algunos subdominios bajo alvarezp.ods.org, con fines maliciosos (spam, phishing&#8230; no sé con exactitud).</p>
<p>Todo fuera como eso, pero en este momento el daño está hecho: el blog ha sido eliminado de los índices de Google.</p>
<p>Desafortunadamente, ODS se niega a tomar acción contra este problema, así que me he visto en la forzosa necesidad de cambiar la URL para mi blog.</p>
<p>La nueva dirección es: <a href="http://blog.alvarezp.org/">http://blog.alvarezp.org/</a></p>
<p>Mucho agradeceré a quienes me conceden el honor de enlazarme desde sus sitios, blogs y demás, que actualicen su enlace. Consideren que se eliminó el directorio /blog/ en favor de tener todo bajo el directorio root en el host blog.alvarezp.org. Entre más links se actualicen ya, más pronto encontrará Google el nuevo sitio y, con un poco de suerte, reaparecerá en los índices de Google.</p>
<p>De todos modos, la dirección anterior seguirá funcionando durante un tiempo indeterminado. Ningún sitio padecerá tenebrosos 404 por este movimiento.</p>
<p>Gracias de antemano.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alvarezp.org/2009/06/18/cambio-de-url-del-blog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
