<?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>Lo hice y lo entendí &#187; Programación</title>
	<atom:link href="http://www.vicente-navarro.com/blog/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vicente-navarro.com/blog</link>
	<description>El blog de Vicente Navarro</description>
	<lastBuildDate>Mon, 05 Jul 2010 07:41:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Comentarios anidados con WordPress 2.7, nueva vista para archivos y otros cambios en la plantilla</title>
		<link>http://www.vicente-navarro.com/blog/2009/01/13/comentarios-anidados-con-wordpress-27-nueva-vista-para-archivos-y-otros-cambios-en-la-plantilla/</link>
		<comments>http://www.vicente-navarro.com/blog/2009/01/13/comentarios-anidados-con-wordpress-27-nueva-vista-para-archivos-y-otros-cambios-en-la-plantilla/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 19:59:13 +0000</pubDate>
		<dc:creator>Super Coco</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[LAMP/WordPress]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Sobre el Blog]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.vicente-navarro.com/blog/?p=868</guid>
		<description><![CDATA[He estado trabajando bastante en reformar la plantilla. No ha habido ningún gran cambio estético, sino que en general han sido cambios para añadir funcionalidades. Además de otras muchas pequeñas mejoras, casi imperceptibles, las dos modificaciones más importantes han sido que la plantilla ahora permite los nuevos comentarios anidados (unos comentarios responden a otros) que [...]]]></description>
			<content:encoded><![CDATA[<p>He estado trabajando bastante en reformar la plantilla. No ha habido ningún gran cambio estético, sino que en general han sido cambios para añadir funcionalidades. Además de otras muchas pequeñas mejoras, casi imperceptibles, las dos modificaciones más importantes han sido que la plantilla ahora permite los nuevos comentarios anidados (unos comentarios responden a otros) que ha introducido WordPress 2.7 y que ahora, las páginas de Categorías, Etiquetas o Archivos muestran todas las entradas existentes, pero sin nada de texto o extractos, sólo mostrando el título y los metadatos. Esto era algo que tenía muchas ganas de implementar desde que me inicié en esto de escribir un blog, porque la forma que tiene WordPress por defecto de mostrar las Categorías, Etiquetas y Archivos, sacando 10 entradas por página, no te deja hacerte a la idea en un solo vistazo de qué hay exactamente en cada sección.</p>
<h4>Comentarios anidados con WordPress 2.7</h4>
<p>En relación a los comentarios anidados, para entender cómo funciona el nuevo <em>loop</em> y cómo adaptar nuestra plantilla para mostrarlos como queramos, podemos usar varias excelentes páginas como referencia:</p>
<ul>
<li><a href="http://codex.wordpress.org/Migrating_Plugins_and_Themes_to_2.7/Enhanced_Comment_Display">WordPress Codex: Migrating Plugins and Themes to 2.7/Enhanced Comment Display</a></li>
<li><a href="http://ottodestruct.com/blog/2008/09/29/wordpress-27-comments-enhancements/">WordPress 2.7 Comments Enhancements</a></li>
<li><a href="http://www.anieto2k.com/2008/12/12/adapta-los-comentarios-de-tu-theme-a-wordpress-27/">aNieto2k: Adapta los comentarios de tu theme a WordPress 2.7</a></li>
<li><a href="http://www.anieto2k.com/2008/12/26/adapta-tus-comentarios-a-wordpress-27-sin-problemas/">aNieto2k: Adapta tus comentarios a WordPress 2.7 sin problemas</a></li>
</ul>
<p>Al final yo no metí la tijera en la actual plantilla directamente para cambiar el sistema de comentarios viejo por el <em>loop</em> actual. Lo hice al contrario: copié el <code>comments.php</code> de la plantilla de por defecto, la <em>Kubrick</em>, y la fui adaptando a mis necesidades para tener una plantilla que soportara ya comentarios anidados sin problemas y con la máxima compatibilidad con cualquier plugin. El resto fue mucho trabajo de ajustar los estilos en CSS. El resultado se puede ver en los primeros comentarios de ejemplo de esta misma entrada.</p>
<p>¡Ah! Y no se nos tiene que olvidar activar los comentarios anidados en el panel de control (Opciones &rarr; Discusión).</p>
<p>(...)<br/><br/>Leer el resto de <a href="http://www.vicente-navarro.com/blog/2009/01/13/comentarios-anidados-con-wordpress-27-nueva-vista-para-archivos-y-otros-cambios-en-la-plantilla/">Comentarios anidados con WordPress 2.7, nueva vista para archivos y otros cambios en la plantilla</a> (956 palabras)</p>
<hr />
<p><small><a href="http://www.vicente-navarro.com/blog">Lo hice y lo entendí</a> © Vicente Navarro 2009 con una licencia <a href="http://www.vicente-navarro.com/blog/licencia-de-uso/">CC BY-SA</a> |
<a href="http://www.vicente-navarro.com/blog/2009/01/13/comentarios-anidados-con-wordpress-27-nueva-vista-para-archivos-y-otros-cambios-en-la-plantilla/#comments">9 comentarios</a>
<br/>
Etiquetas: <a href="http://www.vicente-navarro.com/blog/tag/blog/" rel="tag">blog</a>, <a href="http://www.vicente-navarro.com/blog/tag/php/" rel="tag">PHP</a>, <a href="http://www.vicente-navarro.com/blog/tag/wordpress/" rel="tag">WordPress</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vicente-navarro.com/blog/2009/01/13/comentarios-anidados-con-wordpress-27-nueva-vista-para-archivos-y-otros-cambios-en-la-plantilla/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>mailto: sin miedo a spammers</title>
		<link>http://www.vicente-navarro.com/blog/2008/02/24/mailto-sin-miedo-a-spammers/</link>
		<comments>http://www.vicente-navarro.com/blog/2008/02/24/mailto-sin-miedo-a-spammers/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 12:29:53 +0000</pubDate>
		<dc:creator>Super Coco</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[expresiones regulares]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ofuscación de e-mail]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://www.vicente-navarro.com/blog/2008/02/24/mailto-sin-miedo-a-spammers/</guid>
		<description><![CDATA[Todos sabemos que poner una dirección de e-mail en una página web es pasto seguro de spammers cuyos robots recorren incansablemente Internet en busca que cadenas que encajen con la siguiente expresión regular: \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b (Expresiones Regulares en la shell. Ejemplos de uso con grep, awk y sed.) Para mostrarlo, he buscado alguna web que tuviera [...]]]></description>
			<content:encoded><![CDATA[<p>Todos sabemos que poner una dirección de e-mail en una página web es pasto seguro de spammers cuyos robots recorren incansablemente Internet en busca que cadenas que encajen con la siguiente expresión regular:</p>
<blockquote><pre>\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b</pre>
</blockquote>
<p>(<a href="/blog/2007/04/13/expresiones-regulares-en-la-shell-ejemplos-de-uso-con-grep-awk-y-sed/">Expresiones Regulares en la shell. Ejemplos de uso con grep, awk y sed.</a>)</p>
<p>Para mostrarlo, he buscado alguna web que tuviera muchas direcciones de correo y <a href="http://www.unav.es/informacion/direccionesdecontacto.html">la página de direcciones de contacto de la Universidad de Navarra</a> resulta ser una excelente víctima para mi prueba. Con un comando como este:</p>
<blockquote><pre>$ wget -q -O - http://www.unav.es/informacion/direccionesdecontacto.html | \
egrep -oi '\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b' | sort -u | sed 's/unav.es/unav.is/'
abar@unav.is
adelgado@unav.is
adomeno@unav.is
agonzalez@unav.is
almcompr@unav.is
[...]</pre>
</blockquote>
<p>vemos lo fácil que resulta extraer todas las direcciones de correo de una página. Para el ejemplo, yo he tenido la precaución de cambiar el dominio final <code>s/es/is/</code> para no dar aún más visibilidad a esas direcciones.</p>
<p>(...)<br/><br/>Leer el resto de <a href="http://www.vicente-navarro.com/blog/2008/02/24/mailto-sin-miedo-a-spammers/">mailto: sin miedo a spammers</a> (1,761 palabras)</p>
<hr />
<p><small><a href="http://www.vicente-navarro.com/blog">Lo hice y lo entendí</a> © Vicente Navarro 2008 con una licencia <a href="http://www.vicente-navarro.com/blog/licencia-de-uso/">CC BY-SA</a> |
<a href="http://www.vicente-navarro.com/blog/2008/02/24/mailto-sin-miedo-a-spammers/#comments">19 comentarios</a>
<br/>
Etiquetas: <a href="http://www.vicente-navarro.com/blog/tag/apache/" rel="tag">Apache</a>, <a href="http://www.vicente-navarro.com/blog/tag/e-mail/" rel="tag">e-mail</a>, <a href="http://www.vicente-navarro.com/blog/tag/expresiones-regulares/" rel="tag">expresiones regulares</a>, <a href="http://www.vicente-navarro.com/blog/tag/html/" rel="tag">HTML</a>, <a href="http://www.vicente-navarro.com/blog/tag/imagemagick/" rel="tag">ImageMagick</a>, <a href="http://www.vicente-navarro.com/blog/tag/javascript/" rel="tag">JavaScript</a>, <a href="http://www.vicente-navarro.com/blog/tag/ofuscacion-de-e-mail/" rel="tag">ofuscación de e-mail</a>, <a href="http://www.vicente-navarro.com/blog/tag/php/" rel="tag">PHP</a>, <a href="http://www.vicente-navarro.com/blog/tag/spam/" rel="tag">spam</a>, <a href="http://www.vicente-navarro.com/blog/tag/wget/" rel="tag">wget</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vicente-navarro.com/blog/2008/02/24/mailto-sin-miedo-a-spammers/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Hojas de estilo CSS para imprimir</title>
		<link>http://www.vicente-navarro.com/blog/2007/11/07/hojas-de-estilo-css-para-imprimir/</link>
		<comments>http://www.vicente-navarro.com/blog/2007/11/07/hojas-de-estilo-css-para-imprimir/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 00:06:07 +0000</pubDate>
		<dc:creator>Super Coco</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[LAMP/WordPress]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Sobre el Blog]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[impresión]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.vicente-navarro.com/blog/index.php/2007/11/07/hojas-de-estilo-css-para-imprimir/</guid>
		<description><![CDATA[Hace unos días patata dijo en un comentario que le gustan tanto algunos de los artículos de este blog que se los imprime, pero que le quedan muy mal y que si podría poner alguna hoja de estilo para imprimir. A cambio, yo no puedo hacer menos que agradecer tales halagos atendiendo su petición, ya [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días <strong>patata</strong> <a href="/blog/2007/11/02/ya-se-pueden-revisar-los-comentarios/#comment-5231">dijo en un comentario</a> que le gustan tanto algunos de los artículos de este blog que se los imprime, pero que le quedan muy mal y que si podría poner alguna hoja de estilo para imprimir. A cambio, yo no puedo hacer menos que agradecer tales halagos atendiendo su petición, ya que, por otro lado, es algo muy fácil de hacer, siempre y cuando el HTML esté muy estructurado y no se mezcle contenido con estilo, algo que muchas veces se tiende a hacer, especialmente si se usan herramientas automatizadas de creación de páginas web. Yo procuro evitarlo, aunque reconozco que en ocasiones muy determinadas y concretas lo hago.</p>
<p>El HTML está para el contenido y el CSS para el estilo. Idealmente, el HTML no debería de tener ninguna referencia a colores, fuentes, tamaños, alineamiento del texto, etc. Eso nos permite cambiarle muy fácilmente la hoja de estilo y tener otra página de aspecto radicalmente distinto pero con el mismo contenido. Alguna vez le querido explicar esto a alguien y me ha resultado muy fácil hacerlo apoyándome en <a href="http://www.csszengarden.com/">CSS Zen Garden: The Beauty in CSS Design</a>, una página en la que partiendo del mismo contenido, multitud de autores le dan un aspecto radical y sorprendentemente distinto únicamente cambiando el CSS, la hoja de estilo.</p>
<p>Para especificar una hoja de estilo diferente para impresión, deberíamos de tener en la cabecera del documento HTML (entre <code>&lt;head&gt;</code> y <code>&lt;/head&gt;</code>) una entrada de CSS para el diseño en pantalla (<code>media="screen"</code>) y otra para el diseño para imprimir (<code>media="print"</code>):</p>
<blockquote><pre>&lt;link rel="stylesheet" href="style.css" type="text/css" media="screen" /&gt;

&lt;link rel="stylesheet" href="print.css" type="text/css" media="print" /&gt;</pre>
</blockquote>
<p>Podemos consultar los tipos de <em>media</em> que podemos usar en el <a href="http://www.w3.org/TR/CSS21/">estándar CSS 2.1</a>, capítulo <a href="http://www.w3.org/TR/REC-CSS2/media.html">Media Types</a>. Vemos que también existe el <em>media</em> <code>handheld</code> para especificar hojas de estilos adecuadas para PDAs y teléfonos móviles.</p>
<p>Para la hoja de estilo de impresión de este blog, yo he decidido intervenir lo mínimo posible. Únicamente escondo todos los elementos que no deberían aparecer en la página impresa: los comentarios, el formulario para introducir comentarios, las cajas laterales, los enlaces de navegación (entrada anterior, entrada siguiente), etc. e intervengo mínimamente en un par de aspectos más.</p>
<p>(...)<br/><br/>Leer el resto de <a href="http://www.vicente-navarro.com/blog/2007/11/07/hojas-de-estilo-css-para-imprimir/">Hojas de estilo CSS para imprimir</a> (592 palabras)</p>
<hr />
<p><small><a href="http://www.vicente-navarro.com/blog">Lo hice y lo entendí</a> © Vicente Navarro 2007 con una licencia <a href="http://www.vicente-navarro.com/blog/licencia-de-uso/">CC BY-SA</a> |
<a href="http://www.vicente-navarro.com/blog/2007/11/07/hojas-de-estilo-css-para-imprimir/#comments">8 comentarios</a>
<br/>
Etiquetas: <a href="http://www.vicente-navarro.com/blog/tag/blog/" rel="tag">blog</a>, <a href="http://www.vicente-navarro.com/blog/tag/css/" rel="tag">CSS</a>, <a href="http://www.vicente-navarro.com/blog/tag/firefox/" rel="tag">Firefox</a>, <a href="http://www.vicente-navarro.com/blog/tag/google/" rel="tag">Google</a>, <a href="http://www.vicente-navarro.com/blog/tag/html/" rel="tag">HTML</a>, <a href="http://www.vicente-navarro.com/blog/tag/impresion/" rel="tag">impresión</a>, <a href="http://www.vicente-navarro.com/blog/tag/php/" rel="tag">PHP</a>, <a href="http://www.vicente-navarro.com/blog/tag/wordpress/" rel="tag">WordPress</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vicente-navarro.com/blog/2007/11/07/hojas-de-estilo-css-para-imprimir/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Mostrar un árbol de los paquetes instalados que dependen de otro en Debian</title>
		<link>http://www.vicente-navarro.com/blog/2007/09/23/mostrar-un-arbol-de-los-paquetes-instalados-que-dependen-de-otro-en-debian/</link>
		<comments>http://www.vicente-navarro.com/blog/2007/09/23/mostrar-un-arbol-de-los-paquetes-instalados-que-dependen-de-otro-en-debian/#comments</comments>
		<pubDate>Sun, 23 Sep 2007 20:00:08 +0000</pubDate>
		<dc:creator>Super Coco</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[enscript]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.vicente-navarro.com/blog/index.php/2007/09/23/listar-los-paquetes-instalados-que-dependen-de-otro-en-debian/</guid>
		<description><![CDATA[De la época que estuve usando Gentoo recuerdo con especial cariño dos cosas: la flexibilidad y la posibilidad de personalización durante el compilado de los parámetros USE, y las herramientas de gestión de paquetes de Portage: el emerge y el equery del Gentoolkit. El emerge viene a ser una unión de los comandos de Debian [...]]]></description>
			<content:encoded><![CDATA[<p>De la época que estuve usando <a href="http://www.gentoo.org/">Gentoo</a> recuerdo con especial cariño dos cosas: la flexibilidad y la posibilidad de personalización durante el compilado de los <a href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&#038;chap=2">parámetros USE</a>, y las herramientas de gestión de paquetes  de <a href="http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&#038;chap=1">Portage</a>: el <code><a href="http://gentoo-wiki.com/MAN_emerge">emerge</a></code> y el <code><a href="http://gentoo-wiki.com/MAN_equery">equery</a></code> del <a href="http://www.gentoo.org/doc/en/gentoolkit.xml">Gentoolkit</a>.</p>
<p>El <code>emerge</code> viene a ser una unión de los comandos de Debian <code>dpkg</code>, <code>apt-get</code>, <code>apt-cache</code> y <code><a href="/blog/2007/02/20/gentooizar-debian/">apt-build</a></code>. Nigún misterio por esa parte&#8230;</p>
<p>Sin embargo, el <code>equery</code> que, como su propio nombre indica, se usa para hacer <em>queries</em> a la base de datos de paquetes, resulta muy útil. Por ejemplo, se puede obtener la lista de paquetes que dependen de uno dado (ejemplo copiado de <a href="http://www.gentoo.org/doc/en/gentoolkit.xml">Gentoolkit</a>):</p>
<blockquote><pre># equery depends pygtk
[ Searching for packages depending on pygtk... ]
app-office/dia-0.93
dev-python/gnome-python-2.0.0-r1
gnome-extra/gdesklets-core-0.26.2
media-gfx/gimp-2.0.4
x11-libs/vte-0.11.11-r1</pre>
</blockquote>
<p>También nos permite obtener un árbol de dependencias de un paquete dado, pero en este caso no se trata de los paquetes de los que depende el paquete, sino de sus dependencias:</p>
<blockquote><pre># equery depgraph cdrtools
Displaying dependencies for app-cdr/cdrtools-2.01_alpha37
`-- app-cdr/cdrtools-2.01_alpha37
 `-- sys-libs/glibc-2.3.4.20040808 (virtual/libc)
  `-- sys-kernel/linux-headers-2.4.22 (virtual/os-headers)
   `-- sys-apps/baselayout-1.10.4
    `-- sys-apps/sysvinit-2.85-r1
     `-- sys-apps/gawk-3.1.3-r1
      `-- sys-apps/util-linux-2.12-r4
          `-- sys-apps/sed-4.0.9
        `-- sys-libs/ncurses-5.4-r4
            `-- sys-apps/pam-login-3.14
            `-- sys-libs/pam-0.77-r1
                 `-- sys-libs/cracklib-2.7-r10
               `-- sys-apps/miscfiles-1.3-r1
              `-- app-arch/gzip-1.3.5-r1
              `-- sys-apps/portage-2.0.50-r10</pre>
</blockquote>
<p>En Debian, a menudo quiero eliminar un paquete y las dependencias no me lo permiten:</p>
<blockquote><pre> # dpkg -P libxine1
dpkg: dependency problems prevent removal of libxine1:
 totem-xine depends on libxine1 (>= 1.1.2-5).
dpkg: error processing libxine1 (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 libxine1</pre>
</blockquote>
<p>Es posible que esté tan convencido de querer eliminar el paquete que me decida incluso a eliminar sus dependencias:</p>
<blockquote><pre># dpkg -P totem
dpkg: dependency problems prevent removal of totem:
 <strong>gnome-desktop-environment depends on totem</strong> (>= 1.4.3).
dpkg: error processing totem (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 totem</pre>
</blockquote>
<p>Pero claro, llegados a este punto, me temo que el <code>gnome-desktop-environment</code> no lo quiero eliminar. De momento, los paquetes ya me los ha dejado marcados como que no los quiero instalados para aprovechar la mínima ocasión para eliminarlos:</p>
<blockquote><pre># dpkg -l | egrep -v ^ii
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name             Version              Description
+++-================-====================-============================================
pi  libxine1         1.1.2+dfsg-4         the xine video/media player library, binary
pi  totem            2.16.5-3             A simple media player for the Gnome desktop</pre>
</blockquote>
<p>Como a mí me da manía dejarlos así, pues en este punto haría un &#8220;<code>apt-get --reinstall install libxine1 totem</code>&#8221; para que vuelvan a estar en estado <code>ii</code>.</p>
<p>La forma elegante de prever y al mismo tiempo tantear si podríamos borrar el paquete sería haber usado el &#8220;<code>dpkg -P</code>&#8221; con una de las tres opciones que evitan que la acción se haga en realidad:</p>
<blockquote><pre>       <strong>--no-act | --dry-run | --simulate</strong>
              Do everything which is supposed to be done, but  don't  write  any  changes.
              This  is  used  to  see what would happen with the specified action, without
              actually modifying anything.

              Be sure to give --no-act before the action-parameter, or you  might  end  up
              with  undesirable  results. (e.g. dpkg --purge foo --no-act will first purge
              package foo and then try to purge package --no-act, even though you probably
              expected it to actually do nothing)
</pre>
</blockquote>
<p>Pero bueno, esta forma de trabajar por tanteo me parece un atraso tras haber visto lo que puede hacer el <code>equery</code>. </p>
<p>(...)<br/><br/>Leer el resto de <a href="http://www.vicente-navarro.com/blog/2007/09/23/mostrar-un-arbol-de-los-paquetes-instalados-que-dependen-de-otro-en-debian/">Mostrar un árbol de los paquetes instalados que dependen de otro en Debian</a> (1,090 palabras)</p>
<hr />
<p><small><a href="http://www.vicente-navarro.com/blog">Lo hice y lo entendí</a> © Vicente Navarro 2007 con una licencia <a href="http://www.vicente-navarro.com/blog/licencia-de-uso/">CC BY-SA</a> |
<a href="http://www.vicente-navarro.com/blog/2007/09/23/mostrar-un-arbol-de-los-paquetes-instalados-que-dependen-de-otro-en-debian/#comments">5 comentarios</a>
<br/>
Etiquetas: <a href="http://www.vicente-navarro.com/blog/tag/bash/" rel="tag">bash</a>, <a href="http://www.vicente-navarro.com/blog/tag/debian/" rel="tag">Debian</a>, <a href="http://www.vicente-navarro.com/blog/tag/dpkg/" rel="tag">dpkg</a>, <a href="http://www.vicente-navarro.com/blog/tag/enscript/" rel="tag">enscript</a>, <a href="http://www.vicente-navarro.com/blog/tag/gentoo/" rel="tag">Gentoo</a>, <a href="http://www.vicente-navarro.com/blog/tag/shell/" rel="tag">shell</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vicente-navarro.com/blog/2007/09/23/mostrar-un-arbol-de-los-paquetes-instalados-que-dependen-de-otro-en-debian/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Sobre la señal SIGHUP: nohup, disown, trap</title>
		<link>http://www.vicente-navarro.com/blog/2007/04/19/sobre-la-senal-sighup-nohup-disown-trap/</link>
		<comments>http://www.vicente-navarro.com/blog/2007/04/19/sobre-la-senal-sighup-nohup-disown-trap/#comments</comments>
		<pubDate>Thu, 19 Apr 2007 18:23:39 +0000</pubDate>
		<dc:creator>Super Coco</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[disown]]></category>
		<category><![CDATA[nohup]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[SIGHUP]]></category>
		<category><![CDATA[trap]]></category>

		<guid isPermaLink="false">http://www.vicente-navarro.com/blog/index.php/2007/04/19/sobre-la-senal-sighup-nohup-disown-trap/</guid>
		<description><![CDATA[El nohup es un comando de los históricos de UNIX. Cuando en un terminal físico (terminal serie), virtual (xterm, konsole, putty, telnet, ssh, etc.), o en la consola cerramos la sesión (cerrando la ventana si estamos en un entorno gráfico, con el comando exit, o pulsando Control+D en la shell), el proceso que gestiona dicho [...]]]></description>
			<content:encoded><![CDATA[<p>El <a href="http://www.die.net/doc/linux/man/man1/nohup.1.html">nohup</a> es un comando de los históricos de <a href="http://en.wikipedia.org/wiki/Unix">UNIX</a>. Cuando en un terminal físico (terminal serie), virtual (xterm, konsole, <a href="http://www.putty.nl/">putty</a>, telnet, ssh, etc.), o en la consola cerramos la sesión (cerrando la ventana si estamos en un entorno gráfico, con el comando <em>exit</em>, o pulsando Control+D en la shell), el proceso que gestiona dicho terminal (<a href="http://www.die.net/doc/linux/man/man8/agetty.8.html">getty</a>, <a href="http://www.die.net/doc/linux/man/man8/mgetty.8.html">mgetty</a>, <a href="http://www.hmug.org/man/8/sshd.php">sshd</a>, <a href="http://www.die.net/doc/linux/man/man8/telnetd.8.html">telnetd</a>, etc.) manda una <a href="http://en.wikipedia.org/wiki/Signal_(computing)">señal</a> <a href="http://en.wikipedia.org/wiki/SIGHUP">SIGHUP</a> a los procesos que cuelgan bajo ellos, normalmente, la shell, y en Linux, típicamente <a href="http://www.gnu.org/software/bash/">bash</a>. Tal y como podemos leer en la <a href="http://www.die.net/doc/linux/man/man1/bash.1.html">página de man de bash</a>, la shell, a su vez, manda dicha señal a todos los procesos que cuelgan bajo ella y, de hecho, incluso los despierta si están parados:</p>
<blockquote><p>The shell exits by default upon receipt of a <strong>SIGHUP</strong>.  Before exiting, an interactive shell<br />
resends  the  <strong>SIGHUP </strong> to  all  jobs, running or stopped.  Stopped jobs are sent <strong>SIGCONT</strong> to<br />
ensure that they receive the <strong>SIGHUP</strong>.  To prevent the shell from sending the  signal  to  a<br />
particular  job,  it  should  be  removed from the jobs table with the <strong>disown</strong> builtin (see<br />
SHELL BUILTIN COMMANDS below) or marked to not receive <strong>SIGHUP</strong> using disown -h.</p></blockquote>
<p>Ante la señal <strong>SIGHUP</strong> normalmente todos los procesos reaccionan simplemente saliendo, lo cual es un problema si queremos que nuestro programa siga ejecutándose en el sistema una vez que hayamos dejado la shell. Para evitar que esto ocurra, tradicionalmente se ha usado el comando <strong>nohup</strong>. Adicionalmente, el bash, <a href="http://www.faqs.org/faqs/unix-faq/shell/bash/">desde la versión 2.0</a>, también tiene el comando interno <em>disown</em> como podemos leer en el párrafo anterior.</p>
<p>(...)<br/><br/>Leer el resto de <a href="http://www.vicente-navarro.com/blog/2007/04/19/sobre-la-senal-sighup-nohup-disown-trap/">Sobre la señal SIGHUP: nohup, disown, trap</a> (1,183 palabras)</p>
<hr />
<p><small><a href="http://www.vicente-navarro.com/blog">Lo hice y lo entendí</a> © Vicente Navarro 2007 con una licencia <a href="http://www.vicente-navarro.com/blog/licencia-de-uso/">CC BY-SA</a> |
<a href="http://www.vicente-navarro.com/blog/2007/04/19/sobre-la-senal-sighup-nohup-disown-trap/#comments">15 comentarios</a>
<br/>
Etiquetas: <a href="http://www.vicente-navarro.com/blog/tag/bash/" rel="tag">bash</a>, <a href="http://www.vicente-navarro.com/blog/tag/c/" rel="tag">C</a>, <a href="http://www.vicente-navarro.com/blog/tag/debian/" rel="tag">Debian</a>, <a href="http://www.vicente-navarro.com/blog/tag/disown/" rel="tag">disown</a>, <a href="http://www.vicente-navarro.com/blog/tag/gnulinux/" rel="tag">GNU/Linux</a>, <a href="http://www.vicente-navarro.com/blog/tag/nohup/" rel="tag">nohup</a>, <a href="http://www.vicente-navarro.com/blog/tag/patch/" rel="tag">patch</a>, <a href="http://www.vicente-navarro.com/blog/tag/shell/" rel="tag">shell</a>, <a href="http://www.vicente-navarro.com/blog/tag/sighup/" rel="tag">SIGHUP</a>, <a href="http://www.vicente-navarro.com/blog/tag/trap/" rel="tag">trap</a>, <a href="http://www.vicente-navarro.com/blog/tag/unix/" rel="tag">UNIX</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vicente-navarro.com/blog/2007/04/19/sobre-la-senal-sighup-nohup-disown-trap/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>El HDD Perf en SourceForge.net</title>
		<link>http://www.vicente-navarro.com/blog/2007/03/05/hddperf_sourceforge/</link>
		<comments>http://www.vicente-navarro.com/blog/2007/03/05/hddperf_sourceforge/#comments</comments>
		<pubDate>Mon, 05 Mar 2007 07:49:02 +0000</pubDate>
		<dc:creator>Super Coco</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[HDD Perf]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[Win32]]></category>

		<guid isPermaLink="false">http://valencia.homelinux.org/?p=42</guid>
		<description><![CDATA[Corría el año 2003 y yo tenía un flamante portátil con un procesador Pentium M a 1GHz y 256MB de RAM. El ordenador normalmente iba muy bien, pero a veces se ralentizaba hasta la desesperación. En esas ocasiones, el led del disco duro no dejaba de estar encendido, por lo que que estaba claro que [...]]]></description>
			<content:encoded><![CDATA[<p>Corría el año 2003 y yo tenía un flamante portátil con un procesador Pentium M a 1GHz y 256MB de RAM. El ordenador normalmente iba muy bien, pero a veces se ralentizaba hasta la desesperación. En esas ocasiones, el led del disco duro no dejaba de estar encendido, por lo que que estaba claro que el cuello de botella estaba en el lento disco de 4200rpm. Varios años después, con PCs mucho mejores, <a href="http://tomshardware.co.uk/2006/11/27/15-years-of-hard-drive-history_uk/">el cuello de botella sigue siendo el mismo</a>.</p>
<p>Cuando estaba esperando a que las aplicaciones respondieran míminimamente (trabajando en Windows), me preguntaba si sería fácil poner un icono en el &#8220;área de notificación&#8221; (también conocida como &#8220;bandeja del sistema&#8221;) que me avisara de que <em>tu PC va mal porque el disco duro está agobiado</em>. No es que ésto hiciera mucho por arreglar el problema, pero al menos, podría saber qué estaba pasando&#8230;</p>
<p>(...)<br/><br/>Leer el resto de <a href="http://www.vicente-navarro.com/blog/2007/03/05/hddperf_sourceforge/">El HDD Perf en SourceForge.net</a> (304 palabras)</p>
<hr />
<p><small><a href="http://www.vicente-navarro.com/blog">Lo hice y lo entendí</a> © Vicente Navarro 2007 con una licencia <a href="http://www.vicente-navarro.com/blog/licencia-de-uso/">CC BY-SA</a> |
<a href="http://www.vicente-navarro.com/blog/2007/03/05/hddperf_sourceforge/#comments">5 comentarios</a>
<br/>
Etiquetas: <a href="http://www.vicente-navarro.com/blog/tag/c/" rel="tag">C</a>, <a href="http://www.vicente-navarro.com/blog/tag/hdd-perf/" rel="tag">HDD Perf</a>, <a href="http://www.vicente-navarro.com/blog/tag/sourceforge/" rel="tag">SourceForge</a>, <a href="http://www.vicente-navarro.com/blog/tag/win32/" rel="tag">Win32</a>, <a href="http://www.vicente-navarro.com/blog/tag/windows/" rel="tag">Windows</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vicente-navarro.com/blog/2007/03/05/hddperf_sourceforge/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>El algoritmo del NIF y de los números de cuenta para el móvil</title>
		<link>http://www.vicente-navarro.com/blog/2007/02/18/el-algoritmo-del-nif-y-de-los-numeros-de-cuenta-para-el-movil/</link>
		<comments>http://www.vicente-navarro.com/blog/2007/02/18/el-algoritmo-del-nif-y-de-los-numeros-de-cuenta-para-el-movil/#comments</comments>
		<pubDate>Sun, 18 Feb 2007 22:14:43 +0000</pubDate>
		<dc:creator>Super Coco</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[números de cuenta]]></category>
		<category><![CDATA[NIF]]></category>

		<guid isPermaLink="false">http://valencia.homelinux.org/?p=13</guid>
		<description><![CDATA[Lo algoritmos que describía en la entrada &#8220;Algoritmos útiles en JavaScript&#8221; también los implementé en el 2005 en un programa Java (J2ME) para compilarlo para el móvil y llevarlos siempre conmigo. El programa es el Utilidades.java (GPL) y para compilarlo se necesita el SDK de Sun y el SDK de Nokia. Aunque éste último no [...]]]></description>
			<content:encoded><![CDATA[<p>Lo algoritmos que describía en la entrada <a href="/?p=12">&#8220;Algoritmos útiles en JavaScript&#8221;</a> también los implementé en el 2005 en un programa Java (<a href="http://en.wikipedia.org/wiki/J2me">J2ME</a>) para compilarlo para el móvil y llevarlos siempre conmigo.</p>
<p>El programa es el <a href="/misc/Utilidades.java">Utilidades.java</a> (<a href="http://www.gnu.org/copyleft/gpl.html">GPL</a>) y para compilarlo se necesita el <a href="http://java.sun.com/products/sjwtoolkit/download-2_2.html">SDK de Sun</a> y el <a href="http://forum.nokia.com/main/resources/tools_and_sdks/index.html">SDK de Nokia</a>. Aunque éste último no es realmente necesario, viene bien para probar el programa en el emulador que lleva.</p>
<p>Se supone que debería de funcionar bien en todos los móviles, pero yo sólo lo he probado en un Nokia 6310i y en un Nokia 6021. En el primero funciona muy bien, pero en el 6021 funciona peor porque el botón del medio, de &#8220;Seleccionar&#8221; no funciona y hay que hacer &#8220;Opciones -> Seleccionar&#8221;.</p>
<p>Si te interesa y lo quieres probar, sólo tienes que subir estos dos ficheros a tu móvil: <a href="/misc/Utilidades.jad">Utilidades.jad</a> y <a href="/misc/Utilidades.jar">Utilidades.jar</a>. ¡Ya me cuentas si te funciona bien y te sirve!</p>
<p><img id="image15" src="http://www.vicente-navarro.com/blog/wp/img/2007/02/utilidades_nokia.jpg" alt="Utilidades en Nokia 1" /> <img id="image16" src="http://www.vicente-navarro.com/blog/wp/img/2007/02/utilidades_nokia_2.jpg" alt="Utilidades en Nokia 2" /></p>
<hr />
<p><small><a href="http://www.vicente-navarro.com/blog">Lo hice y lo entendí</a> © Vicente Navarro 2007 con una licencia <a href="http://www.vicente-navarro.com/blog/licencia-de-uso/">CC BY-SA</a> |
<a href="http://www.vicente-navarro.com/blog/2007/02/18/el-algoritmo-del-nif-y-de-los-numeros-de-cuenta-para-el-movil/#comments">Un comentario</a>
<br/>
Etiquetas: <a href="http://www.vicente-navarro.com/blog/tag/java/" rel="tag">Java</a>, <a href="http://www.vicente-navarro.com/blog/tag/numeros-de-cuenta/" rel="tag">números de cuenta</a>, <a href="http://www.vicente-navarro.com/blog/tag/nif/" rel="tag">NIF</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vicente-navarro.com/blog/2007/02/18/el-algoritmo-del-nif-y-de-los-numeros-de-cuenta-para-el-movil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Algoritmos útiles en JavaScript</title>
		<link>http://www.vicente-navarro.com/blog/2007/02/18/algoritmos-utiles-en-javascript/</link>
		<comments>http://www.vicente-navarro.com/blog/2007/02/18/algoritmos-utiles-en-javascript/#comments</comments>
		<pubDate>Sun, 18 Feb 2007 21:39:49 +0000</pubDate>
		<dc:creator>Super Coco</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Ley D'Hondt]]></category>
		<category><![CDATA[números de cuenta]]></category>
		<category><![CDATA[NIF]]></category>

		<guid isPermaLink="false">http://valencia.homelinux.org/?p=12</guid>
		<description><![CDATA[El JavaScript es un lenguaje de programación tremendamente cómodo para implementar pequeños algoritmos. No necesitas compilador, ni entorno de desarrollo, ni nada. Sólo un editor de texto y ya está. Además, si usas Firefox, tienes por defecto instalado el &#8220;DOM Inspector&#8221; y el &#8220;Error Console&#8221; (tengo el Firefox en inglés, no sé cómo saldrá en [...]]]></description>
			<content:encoded><![CDATA[<p>El <a href="http://es.wikipedia.org/wiki/JavaScript">JavaScript</a> es un lenguaje de programación tremendamente cómodo para implementar pequeños algoritmos. No necesitas compilador, ni entorno de desarrollo, ni nada. Sólo un editor de texto y ya está. </p>
<p>Además, si usas Firefox, tienes por defecto instalado el &#8220;DOM Inspector&#8221; y el &#8220;Error Console&#8221; (tengo el Firefox en inglés, no sé cómo saldrá en el Firefox en castellano), con lo que puedes hacer incluso &#8220;debugging&#8221; sin absolutamente ningún programa adicional.</p>
<p>Hay un par de algoritmos sencillos que son muy útiles en el día a día y que me he implementado en JavaScript:</p>
<ul>
<li><a href="/misc/nif.html">Cálculo de la letra del NIF a partir del número del DNI</a></li>
<li><a href="/misc/numcta.html">Verificación de si un número de cuenta (español) es válido usando los dígitos de control</a></li>
</ul>
<p>Si te interesa el algoritmo que usan, puedes examinar los ficheros <a href="/misc/nif.js">nif.js</a> y <a href="/misc/numcta.js">numcta.js</a>. Ambos están descritos en la WikiPedia, tanto <a href="http://es.wikipedia.org/wiki/Algoritmo_para_obtener_la_letra_del_NIF">el del NIF</a> como el de <a href="http://es.wikipedia.org/wiki/C%C3%B3digo_cuenta_cliente">los números de cuenta</a>.</p>
<p>Además, en las últimas elecciones municipales (las del 2003), un amigo metido en política municipal me pidió que le hiciera un programilla que implementara la <a href="http://es.wikipedia.org/wiki/M%C3%A9todo_d%27Hondt">ley D&#8217;Hondt</a> para calcular los concejales que le tocaban a cada partido inmediatamente después del recuento. En aquella ocasión hice un programita en C muy sencillito para línea de comandos. Esta vez, para ilustrar esta entrada y ante las inminentes municipales del 2007, <a href="/blog/2007/03/15/simulador-de-la-ley-dhondt/">lo he vuelto a hacer</a>, esta vez en JavaScript. El algoritmo se puede ver en <a href="/misc/hondt.js">hondt.js</a> pero está mucho mejor explicado en <a href="http://www.binefa.net/asi/fp/CursC/D97/d97m5/d97m5p8.htm">la web de Jordi Binefa</a>.</p>
<hr />
<p><small><a href="http://www.vicente-navarro.com/blog">Lo hice y lo entendí</a> © Vicente Navarro 2007 con una licencia <a href="http://www.vicente-navarro.com/blog/licencia-de-uso/">CC BY-SA</a> |
<a href="http://www.vicente-navarro.com/blog/2007/02/18/algoritmos-utiles-en-javascript/#comments">4 comentarios</a>
<br/>
Etiquetas: <a href="http://www.vicente-navarro.com/blog/tag/javascript/" rel="tag">JavaScript</a>, <a href="http://www.vicente-navarro.com/blog/tag/ley-dhondt/" rel="tag">Ley D'Hondt</a>, <a href="http://www.vicente-navarro.com/blog/tag/numeros-de-cuenta/" rel="tag">números de cuenta</a>, <a href="http://www.vicente-navarro.com/blog/tag/nif/" rel="tag">NIF</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vicente-navarro.com/blog/2007/02/18/algoritmos-utiles-en-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
