<?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>voiser.es</title>
	<atom:link href="http://voiser.es/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://voiser.es/blog</link>
	<description>muy por debajo del umbral de Shannon</description>
	<lastBuildDate>Thu, 02 Sep 2010 06:44:18 +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>Los JARs: esos grandes desconocidos</title>
		<link>http://voiser.es/blog/?p=303</link>
		<comments>http://voiser.es/blog/?p=303#comments</comments>
		<pubDate>Sat, 28 Aug 2010 17:18:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=303</guid>
		<description><![CDATA[Esta semana he tenido que enfrentarme a una biblioteca Java creada por alguien que prefiero no citar. Leyendo la documentación me encuentro un párrafo que dice: Para sobreescribir las propiedades por defecto del API, será necesario establecer un recurso con nombre “/config/sign.properties” anterior al API (xxxxxx.jar) en el classpath de la aplicación. Leyendo y releyendo, no doy [...]]]></description>
			<content:encoded><![CDATA[<p>Esta semana he tenido que enfrentarme a una biblioteca Java creada por alguien que prefiero no citar. Leyendo la documentación me encuentro un párrafo que dice:</p>
<blockquote>
<div id="_mcePaste">Para sobreescribir las propiedades por defecto del API, será necesario establecer un recurso con nombre “/config/sign.properties” anterior al API (xxxxxx.jar) en el classpath de la aplicación.</div>
</blockquote>
<p>Leyendo y releyendo, no doy crédito a lo que dice: ¿Tengo que poner en el classpath un archivo antes que otro para que la aplicación funcione? WTF?</p>
<p>No se me ocurre ninguna razón para tomar este criterio de diseño, aparte de un malísimo entendimiento de cómo funcionan los JARs. Así que, con vuestro permiso, voy a intentar explicarlo, a ver si ayuda a alguien.</p>
<p><em><strong>NOTA</strong>: Algunas explicaciones usan fuentes con colores para que se entiendan mejor. Si lees esto a través del Planeta Gul o del feed no los verás.</em></p>
<h2>Máquina Virtual</h2>
<p>Todos los programadores Java saben que las aplicaciones Java se ejecutan en una máquina virtual, la JVM, pero parece que nadie hace caso realmente a este hecho. Cuando programas en Java, tienes que olvidar cosas como tu sistema de archivos local o tu ruta actual de trabajo. Estoy harto de encontrarme cosas como:</p>
<blockquote>
<pre>File f = new File("recursos/blablabla.conf");</pre>
</blockquote>
<p>Cuando cojas tu aplicación y la metas en un servidor de aplicaciones, por ejemplo, directamente no va a funcionar. Así que el primer paso es no olvidar lo que significan las siglas VM en JVM. Los programadores que hacen este tipo de barbaridades siempre añaden algún tipo de documentación que dice algo así como &#8220;asegúrate de ejecutar java en el directorio tal&#8221;. Si te encuentras con algún programador así, dile de mi parte que es idiota.</p>
<h2>Sistema de archivos virtual</h2>
<p>Es cierto que la JVM puede acceder al sistema de archivos local (dependiendo de los permisos que le otorgues, no lo olvides). Pero, y he aquí lo más importante de todo, la JVM tiene un sistema de archivos virtual. No sé si este nombre se usa oficialmente en la documentación de la JVM, pero creo que es un buen nombre. Este VFS no es otra cosa que un árbol de directorios y archivos que contiene todo lo necesario para que funcione tu aplicación.</p>
<p>Cuando ejecutas una aplicación Java, la JVM toma todo lo necesario de tu disco duro (clases, recursos, etc) y los mete en un sistema de archivos virtual, un árbol de archivos. He aquí otra clave para entender el funcionamiento de Java: <strong>las clases no se cargan desde el disco duro, sino desde el sistema de archivos virtual.</strong></p>
<p>En este sistema de archivos virtual, los directorios reciben el nombre de <em>paquetes</em>. Habrás leído que los paquetes siguen una jerarquía. Ahora que sabes que un paquete no es más que un directorio, eso de la <em>jerarquía de paquetes</em> te parecerá lo más tonto del mundo.</p>
<p>Por último, en el árbol del VFS, el nodo raíz se llama <em>paquete por defecto</em>, que es otro nombre chulo para algo tan tonto como /</p>
<h2>Clases y paquetes</h2>
<p>Cuando creas una clase Java, debes especificar el paquete al que pertenece.</p>
<blockquote>
<pre>package es.voiser.personas;
class Persona {  /* vale por un main() */  }</pre>
</blockquote>
<p>Guarda el archivo donde quieras. Yo te recomendaría algo así como:</p>
<blockquote>
<pre>src/es/voiser/personas/Persona.java</pre>
</blockquote>
<p>pero (por ahora) eres libre de guardalo donde quieras. Ahora lo compilamos, y queremos que los .class resultantes los guarde en el directorio:</p>
<blockquote>
<pre>classes/</pre>
</blockquote>
<p>Para ello:</p>
<blockquote>
<pre>javac -d classes donde/esté/el/archivo/Persona.java</pre>
</blockquote>
<p>El .class resultante se guarda automáticamente en:</p>
<blockquote>
<pre>classes/es/voiser/personas/Persona.class</pre>
</blockquote>
<p>La información de dónde dejar el .class la obtiene de la instrucción <em>package</em> y del parámetro -d. Por tanto, el directorio de clases tiene este aspecto:<a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar1.png"><br />
</a><a href="../wp-content/uploads/2010/08/jar2.png"></a><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar2.png"><img class="aligncenter size-full wp-image-314" title="jar2" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar2.png" alt="" width="620" height="330" /></a><br />
Habrás adivinado que el amarillo representa un .class y el resto directorios. Y que el cilindrito del fondo representa tu disco duro <img src='http://voiser.es/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>En definitiva, cuando creas una clase, la metes en un paquete. Cuando compilas tus clases con un parámetro -d, java escupe los .class creando una jerarquía de directorios y archivos que refleja la jerarquía de paquetes y las clases que contienen.</p>
<h2>CLASSPATH</h2>
<p>Seguro que has escuchado a alguien decir que el CLASSPATH es la ruta donde Java busca las clases. Probablemente esta definición viene de buscar un paralelismo con el PATH típico de un sistema operativo. En realidad, el CLASSPATH lo que hace es (atención) indicar a la JVM qué archivos y directorios forman el sistema de archivos virtual de la JVM.</p>
<p>Vamos a ejecutar la aplicación. Para ello se hace:</p>
<blockquote>
<pre>$ java -cp classes es.voiser.personas.Persona</pre>
</blockquote>
<p>¿Qué hace este comando?</p>
<p>1- Se instancia la JVM:</p>
<blockquote>
<pre>$ <span style="color: #ff0000;">java</span> -cp classes es.voiser.personas.Persona</pre>
</blockquote>
<p><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar3.png"><img class="aligncenter size-full wp-image-315" title="jar3" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar3.png" alt="" width="620" height="330" /></a></p>
<p>2- Se toma el contenido del CLASSPATH y se mete en la burbujita:</p>
<blockquote>
<pre>$ java <span style="color: #ff0000;">-cp classes</span> es.voiser.personas.Persona</pre>
</blockquote>
<p><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar4.png"><img class="aligncenter size-full wp-image-316" title="jar4" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar4.png" alt="" width="620" height="330" /></a></p>
<p>3- Y ya, por fin, ejecutamos la clase es.voiser.personas.Persona. Fíjate que esta clase ya está en el VFS de la JVM.</p>
<blockquote>
<pre>$ java -cp classes <span style="color: #ff0000;">es.voiser.personas.Persona</span></pre>
</blockquote>
<h2><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar5.png"><img class="aligncenter size-full wp-image-317" title="jar5" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar5.png" alt="" width="620" height="330" /></a></h2>
<h2>Varios CLASSPATH</h2>
<p>Cuando una aplicación es muy grande, suele dividirse en componentes o bibliotecas (los puristas dirán que no es lo mismo, no quiero entrar en eso). De esta manera evitamos tener un monstruo de miles de archivos y directorios. Supongamos que nuestra aplicación que versa sobre personas necesita, por la razón que sea, una biblioteca que modele colores (por ejemplo para poder decir el color del pelo de una persona).</p>
<p>Creamos una biblioteca de colores, totalmente aparte del proyecto anterior. Crearemos las clases en el paquete es.voiser.colores, con dos clases: Rojo y Verde:</p>
<blockquote>
<pre>// Rojo.java
package es.voiser.colores;
Class Rojo { ... }</pre>
<pre>// Verde.java
package es.voiser.colores;
class Verde { ... }</pre>
</blockquote>
<p>Guardamos este código donde sea, y compilamos. Quiero generar los .class en el directorio:</p>
<blockquote>
<pre>classes_colores/</pre>
</blockquote>
<p>así que haré:</p>
<blockquote>
<pre>$ javac -d classes_colores donde/este/Rojo.java</pre>
</blockquote>
<p>Ahora, el disco duro tendrá este aspecto:</p>
<p><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar6.png"><img class="aligncenter size-full wp-image-321" title="jar6" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar6.png" alt="" width="620" height="442" /></a>Ahora ejecutamos la aplicación:</p>
<blockquote>
<pre>$ java -cp /donde/esté/classes:/donde/esté/classes_colores es.voiser.personas.Persona</pre>
</blockquote>
<p>Veamos de nuevo qué hace esto:</p>
<p>1- Se instancia la JVM:</p>
<blockquote>
<pre>$ <span style="color: #ff0000;">java</span> -cp /donde/esté/classes:/donde/esté/classes_colores es.voiser.personas.Persona</pre>
</blockquote>
<p><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar7.png"><img class="aligncenter size-full wp-image-322" title="jar7" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar7.png" alt="" width="620" height="442" /></a></p>
<p>2- Se copia el contenido del CLASSPATH al sistema de archivos virtual.</p>
<blockquote>
<pre>$ java <span style="color: #ff0000;">-cp /donde/esté/classes:/donde/esté/classes_colores</span> es.voiser.personas.Persona</pre>
</blockquote>
<p><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar8.png"><img class="aligncenter size-full wp-image-323" title="jar8" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar8.png" alt="" width="620" height="442" /></a></p>
<p>3- Por fin, se ejecuta la clase es.voiser.personas.Persona:</p>
<blockquote>
<pre>$ java -cp /donde/esté/classes:/donde/esté/classes_colores <span style="color: #ff0000;">es.voiser.personas.Persona</span></pre>
</blockquote>
<p><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar9.png"><img class="aligncenter size-full wp-image-324" title="jar9" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar9.png" alt="" width="620" height="442" /></a></p>
<p>La moraleja de esta parte es que <strong>la JVM trabaja sobre un sistema de archivos virtual que contiene el agregado de todos los directorios especificados en el CLASSPATH</strong>.</p>
<p>Como curiosidad, que no debería ser más que un dato anecdótico pero que veremos que no lo es: imagina que existieran estos dos archivos:</p>
<blockquote>
<pre><span style="color: #339966;">classes/<span style="color: #3366ff;">es/voiser/app.config</span></span></pre>
<pre><span style="color: #ff0000;">classes_colores/</span><span style="color: #3366ff;">es/voiser/app.config</span></pre>
</blockquote>
<p>A la hora de copiarlos al interior de la JVM, ambos archivos se guardarían con el mismo nombre,</p>
<blockquote>
<pre><span style="color: #3366ff;">/es/voiser/app.config </span></pre>
</blockquote>
<p>Lo que la JVM hace es quedarse con el primero que se especifique en el CLASSPATH, en este caso</p>
<blockquote>
<pre> <span style="color: #339966;">classes/<span style="color: #3366ff;">es/voiser/app.config</span></span></pre>
</blockquote>
<h2>¿Qué es un JAR?</h2>
<p>Un JAR es un árbol de directorios comprimido en ZIP. Sirve para coger una biblioteca de clases, comprimirla en un ZIP y distribuirla como un único archivo. Supongamos que queremos distribuir nuestra biblioteca de colores Rojo y Verde. Haremos esto:</p>
<blockquote>
<pre>$ jar <span style="color: #ff0000;">-C classes_colores</span> cvf <span style="color: #339966;">colores.jar</span> .</pre>
</blockquote>
<p>Este comando lo que hace es meter en el archivo <span style="color: #339966;">colores.jar</span> el contenido del directorio <span style="color: #ff0000;">classes_colores</span>.</p>
<p>Lo bonito de un JAR es que puede incluirse en un CLASSPATH. Siguiendo con el ejemplo, ahora tenemos esta situación: un directorio <em>classes</em> donde están las clases de la aplicación de personas, y un JAR que contiene la biblioteca de colores:</p>
<p><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar10.png"><img class="aligncenter size-full wp-image-326" title="jar10" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar10.png" alt="" width="620" height="499" /></a>Ahora ejecutamos la aplicación de la siguiente manera:</p>
<blockquote>
<pre>$ java -cp classes:colores.jar es.voiser.personas.Persona</pre>
</blockquote>
<p>Lo que hará la JVM es crear un sistema de archivos con el contenido de classes y el contenido de colores.jar. O sea, esto:</p>
<p><a href="http://voiser.es/blog/wp-content/uploads/2010/08/jar11.png"><img class="aligncenter size-full wp-image-327" title="jar11" src="http://voiser.es/blog/wp-content/uploads/2010/08/jar11.png" alt="" width="620" height="450" /></a></p>
<p>Que es idéntico a lo que vimos en el caso anterior.</p>
<h2>Entonces&#8230; ¿Importa el orden del CLASSPATH?</h2>
<p>La respuesta es: <strong>no debería importar</strong>. Cuando una aplicación  necesita muchas bibliotecas, se carga el contenido de los JAR en el  sistema de archivos virtual de la JVM y punto. Si dos archivos  colisionan se toma el primero que llegó, pero este hecho no debería  tomarse como criterio para diseñar tu aplicación. Más que nada porque si  usas un IDE, cosa muy recomendable al trabajar con Java, es el propio  IDE el que escribe el CLASSPATH así que te será complicadillo  especificar el orden de los JARs.</p>
<h2>¿De qué me vale este sistema de archivos virtual?</h2>
<p>Una aplicación no es solo código, sino que también contiene otros recursos como por ejemplo los iconos o los archivos de internacionalización. Si haces un JAR de tu aplicación, estos archivos viajan con tu aplicación, lo cual es estupendo. Una aplicación autocontenida.</p>
<p>Para acceder a estos recursos se puede usar una función Class.getResourceAsStream(String path), que recibe la ruta al archivo <strong>en el sistema de archivos virtual</strong> y devuelve un ImputStream. Se podría usar, por ejemplo, algo así como</p>
<blockquote>
<pre>InputStream config = this.class.getResourceAsStream("/es/voiser/app.config");</pre>
</blockquote>
<h2>¿Qué han hecho los de la aplicación que comentabas al principio?</h2>
<p>El requisito es el siguiente: la aplicación debe leer un archivo de configuración. Si no se especifica ninguno, se toma una configuración por defecto.</p>
<p>Qué han hecho estos chavales:</p>
<p>1- Nuestra biblioteca lee siempre el archivo &#8220;/config/sign.properties&#8221;</p>
<p>2- Creamos un archivo &#8220;/config/sign.properties&#8221; con la configuración por defecto</p>
<p>3- Para sobreescribir esta configuración, meter en el CLASSPATH lo primero de todo un JAR que contenga un /config/sign.properties. Así prevalecerá sobre la configuración por defecto.</p>
<p>Evidentemente este diseño es una basura. Primero, si quieres configurar la aplicación tienes que crearte el archivo, comprimirlo y meterlo en el CLASSPATH en primer orden. Si usas un IDE, probablemente te cueste (o te sea imposible) cambiar el orden del CLASSPATH así que tendrás que hacerlo a manubrio. Si metes la biblioteca en un Tomcat o similar tendrás que lidiar con los Manifest del WAR. Vamos, lo mires por donde lo mires, es una mala idea.</p>
<h2>¿Cómo se puede hacer?</h2>
<p>De varias maneras, pero una más o menos fácil y general sería:</p>
<p>1- La configuración se carga cuando alguien invoca un método determinado. Nunca automáticamente.</p>
<p>2- La configuración por defecto se guarda en un recurso en el JAR de la biblioteca.</p>
<p>3- La configuración se lee a través de un InputStream que apunta inicialmente al recurso con la configuración por defecto.</p>
<p>4- Un método permite que el InputStream apunte a un archivo del sistema de archivos real.</p>
<p>Y con esto y un bizcocho, te has quitado el problema de encima sin hacks estúpidos, sin tocar las narices al usuario final, y haciendo las cosas bien.</p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=303</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pánico en el núcleo</title>
		<link>http://voiser.es/blog/?p=289</link>
		<comments>http://voiser.es/blog/?p=289#comments</comments>
		<pubDate>Wed, 14 Jul 2010 18:04:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=289</guid>
		<description><![CDATA[Como quizá sepáis, en el GUL tenemos la suerte de tener a cuatro compañeros que se dedican desde principios de año a hacer un estupendo podcast llamado Pánico en el Núcleo en el que participan Tania, Samuel, De La Cruz y Peris (@SeleneUnder, @laparca, @mgdelacroix y @mrcomputer respectivamente). El podcast trata temas muy interesantes sobre [...]]]></description>
			<content:encoded><![CDATA[<p>Como quizá sepáis, en el <a href="http://www.gul.es">GUL</a> tenemos la suerte de tener a cuatro compañeros que se dedican desde principios de año a hacer un estupendo podcast llamado <a href="http://gul.es/index.php/podcast.html">Pánico en el Núcleo</a> en el que participan Tania, Samuel, De La Cruz y Peris (<a href="http://twitter.com/SeleneUnder">@SeleneUnder</a>, <a href="http://twitter.com/laparca">@laparca</a>, <a href="http://twitter.com/mgdelacroix">@mgdelacroix</a> y <a href="http://twitter.com/mrcomputer">@mrcomputer</a> respectivamente). El podcast trata temas muy interesantes sobre software y cultura libre, noticias y eventos del GUL, resolución de dudas, ruido de servidores&#8230; esas cosas.</p>
<p>Atendiendo a su posición respecto al software libre, las personas o empresas pueden catalogarse según dos variables: su posición oficial respecto al software libre y su posición real. La posición oficial se refiere a si apoya o no al software libre, y la real es si es sincero o no en su posición oficial. Dicho de otro modo: qué digo a los demás y qué hago en realidad.</p>
<p>Estas variables dividen el plano en cuatro cuadrantes:</p>
<div style="text-align: center;">
<table style="width: 100%;" width="369">
<tbody>
<tr>
<td style="text-align: center;"></td>
<td style="text-align: center;"><strong>Soy sincero<br />
</strong></td>
<td style="text-align: center;"><strong>Soy hipócrita<br />
</strong></td>
</tr>
<tr>
<td style="text-align: right;"><strong>No apoyo el S.L.<br />
</strong></td>
<td style="text-align: center;">?</td>
<td style="text-align: center;">Microsoft</td>
</tr>
<tr>
<td style="text-align: right;"><strong>Apoyo el S.L.<br />
</strong></td>
<td style="text-align: center;">Apache, Mozilla, GUL, etc</td>
<td style="text-align: center;">Pozo sin fondo, podcasters sin ideas</td>
</tr>
</tbody>
</table>
</div>
<ul style="text-align: left;">
<li>El primer cuadrante: no apoyo el soft libre pero me aprovecho de él. Aquí se encuentra el grueso de la Sociedad: la mayoría de las empresas de TI, Microsoft, las consultoras, etc.</li>
<li>El segundo cuadrante: no apoyo el software libre y no lo uso. No sé si hay alguna empresa que use software 100% privativo, teniendo en cuenta que tanto Microsoft como Apple usan <em>pedacitos</em> de software libre en sus sistemas operativos. Algunos sistemas empotrados son 100% privativos, pero el software se usa para el desarrollo del negocio no. Dejémoslo en un interrogante, pero yo diría que este cuadrante está vacío.</li>
<li>El tercer cuadrante: apoyo el software libre y lo uso y promuevo. La Fundación Apache, Mozilla, el <a href="http://www.gul.es">GUL</a>, etc. Tienen políticas que están acorde con la comunidad del software y el conocimiento libre y son coherentes con ellos.</li>
<li>El cuarto cuadrante: voy de guay-moderno pero a mi que me lo den todo hecho, también llamados &#8220;pozo sin fondo&#8221;. De cara a los demás defienden el software libre, lo usan constantemente y hacen alarde de ello, pero están dispuestos a incumplir licencias, obviar el trabajo de los demás, no citar fuentes, no respetar identidades ni derechos. Si les llamas la atención suelen excusarse con accidentes, casualidades, no lo sabía, fíjate qué penita, vaya lío.</li>
</ul>
<p>Todo este rollo es solo para pedir a los chicos de <a href="http://gul.es/index.php/podcast.html">Pánico en el Núcleo</a> que no se enfaden ni desesperen por las acciones de Cuartos Cuadrantes ni similares: independientemente de si queréis o no cambiar el nombre, no perdáis de vista el verdadero objetivo del podcast, que es dar un buen contenido, elaborado e interesante.</p>
<p style="text-align: left;">En otras palabras: ¿<strong>Para cuándo el próximo capítulo de <a href="http://gul.es/index.php/podcast.html">Pánico en el Núcleo</a></strong>?</p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=289</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Muse (II)</title>
		<link>http://voiser.es/blog/?p=283</link>
		<comments>http://voiser.es/blog/?p=283#comments</comments>
		<pubDate>Thu, 17 Jun 2010 20:23:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=283</guid>
		<description><![CDATA[Tienes que quitarle el tapón a la botella de agua. Métetelo en el bolsillo y ya está, yo lo hago cuando voy al fútbol - un segurata Para hacerse una idea de lo que es el espectáculo de Muse (pillada de aquí): Hubo dos teloneros. Los primeros, The Big Pink, flojillos, al menos en directo. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><em>Tienes que quitarle el tapón a la botella de agua. Métetelo en el bolsillo y ya está, yo lo hago cuando voy al fútbol</em></p>
<p style="text-align: right;">- un segurata</p>
<p>Para hacerse una idea de lo que es el espectáculo de Muse (pillada de <a href="http://www.flickr.com/photos/fiestas-de-madrid/4709820248/in/photostream/">aquí</a>):</p>
<p style="text-align: center;"><img class="aligncenter" src="http://farm2.static.flickr.com/1280/4709820248_620348e2b3.jpg" alt="" width="500" height="375" /></p>
<p style="text-align: left;">Hubo dos teloneros. Los primeros, <a href="http://www.youtube.com/watch?v=OGnNlQ-KNv4">The Big Pink</a>, flojillos, al menos en directo. Vale que tampoco es gracioso que hagas canciones de cinco minutos con una única nota de bajo, guitarra y voz. A ver, es bueno si quieres hacer archivos MIDI pequeñitos, pero como música deja algo que desear. Al acabar alguien soltó un &#8220;bueno, vale, como broma está bien&#8221;.</p>
<p style="text-align: left;">Los segundos, <a href="http://www.editorsofficial.com">The Editors</a>, muy muy muy buenos. A medio camino entre Depeche Mode y Coldplay, habrá que informarse.</p>
<p style="text-align: left;">Después de tres horitas de espera, aparecieron ellos. Una entrada espectacular, con un desfile de tíos con bengalas y pancartas en las que podían leerse frases de la letra de Uprising. El escenario se convirtió en la nave espacial de <em>Encuentros en la tercera fase</em> y nos quedamos alucinados con las pantallas del escenario.</p>
<p style="text-align: left;">Espero que a <a href="http://www.flickr.com/photos/voiser/1125153783/">mi Ali</a>, que era su primer concierto serio (¡lo de la gala de los 40 no cuenta como concierto, preciosa! <img src='http://voiser.es/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ) y que se dedicó a empapar a un vigilante de agua y a caminar como si fuera un compás con botellas escondidas en los calcetines se lo pasara tan bien como yo. Ahora a dormir, que 3 horas de sueño no son suficientes <img src='http://voiser.es/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=283</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Muse</title>
		<link>http://voiser.es/blog/?p=280</link>
		<comments>http://voiser.es/blog/?p=280#comments</comments>
		<pubDate>Wed, 16 Jun 2010 14:54:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=280</guid>
		<description><![CDATA[Teloneros: hordas de góticas emo esperando la música de crepúsculo.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" src="http://voiser.es/stuff/Muse_logo.png" alt="Muse logo" width="600" height="265" />Teloneros: hordas de góticas emo esperando la música de crepúsculo.</p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=280</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Una breve historia de casi todo</title>
		<link>http://voiser.es/blog/?p=277</link>
		<comments>http://voiser.es/blog/?p=277#comments</comments>
		<pubDate>Fri, 11 Jun 2010 15:31:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=277</guid>
		<description><![CDATA[Acabo de leer la última página de esta famosa obra de Bill Bryson que encontré de casualidad paseando por la Casa del Libro. Tenía muy buenas referencias de él y lo cogí con ganas. Es un libro que está a medio camino entre la divulgación científica, la historia de la ciencia y una revista de [...]]]></description>
			<content:encoded><![CDATA[<p>Acabo de leer la última página de esta famosa obra de Bill Bryson que encontré de casualidad paseando por la Casa del Libro. Tenía muy buenas referencias de él y lo cogí con ganas. Es un libro que está a medio camino entre la divulgación científica, la historia de la ciencia y una revista de cotilleos. En él se aborda la historia de un montón de ramas de la ciencia, haciendo hincapié en personalidades, curiosidades y cifras, por lo general de forma amena y divertida.</p>
<p>No es para nada un libro técnico, apenas toca temas complicados y si en algún momento cuenta algo que se le pueda escapar al lector, rápidamente hace algún tipo de comparativa para que quede claro. Me hizo mucha gracia una que decía que esperar que la vida surgiera espontáneamente de un mar de proteínas es como esperar que un tornado pase por un desguace lleno de piezas sueltas y que al marcharse dejara atrás un avión perfectamente montado. O cuando cuenta que ha habido buceadores que, sometidos a enormes presiones, empezaron a experimentar una <a href="http://es.wikipedia.org/wiki/Narcosis_de_nitr%C3%B3geno"><em>borrachera</em></a> que los animaba a ofrecer las boquilas de oxígeno a los peces que pasaban.</p>
<p>Lo que me ha decepcionado un poco de este libro es que al principio es muy prometedor pero a mitad del libro empieza a flojear y llega a convertirse en un almanaque de cifras y comparaciones. Incluso en algún momento parece unos apuntes de alguna asignatura, con listas de conceptos y millones de cifras. Y para rematar la faena, el final te deja con un poquito de mal sabor de boca. En otras palabras, parece que el autor empezó con ganas pero no pudo mantenerse así hasta el final.</p>
<p>En cualquier caso, si tienes algo más de paciencia que yo y te interesan desde los átomos hasta las migraciones de los homínidos, probablemente te guste el libro.</p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=277</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¡Dejad de quejaros ya!</title>
		<link>http://voiser.es/blog/?p=275</link>
		<comments>http://voiser.es/blog/?p=275#comments</comments>
		<pubDate>Sat, 10 Apr 2010 13:09:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=275</guid>
		<description><![CDATA[Que si el lanzamiento del iPad, el iPhone OS 4, el flash, los términos de licencia para desarrolladores&#8230; ¡basta ya! Ninguna tecnología no libre es buena para todos. Si eres desarrollador y quieres libertad, solo tienes una alternativa posible; si entras en el juego del software no libre, no te quejes. Es culpa tuya, por [...]]]></description>
			<content:encoded><![CDATA[<p>Que si el lanzamiento del iPad, el iPhone OS 4, el flash, los términos de licencia para desarrolladores&#8230; ¡basta ya! <strong>Ninguna tecnología no libre es buena para todos</strong>. Si eres desarrollador y quieres libertad, solo tienes una alternativa posible; si entras en el juego del software no libre, no te quejes. Es culpa tuya, por idiota. Tienes libertad de elección, así que si eliges mal, acéptalo y punto, pero no te quejes. Llorica.</p>
<p>Fdo: un usuario de mac con un iphone touch y al que le encanta el iPad.</p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=275</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>1 de Marzo: Empiezan las jornadas técnicas del GUL Marzo 2010</title>
		<link>http://voiser.es/blog/?p=270</link>
		<comments>http://voiser.es/blog/?p=270#comments</comments>
		<pubDate>Sun, 28 Feb 2010 13:33:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=270</guid>
		<description><![CDATA[No olvidéis que mañana día 1 de marzo empiezan las jornadas técnicas del GUL. Si te gusta la informática y te apetece pasar un buen ratillo aprendiendo cosas nuevas e interesantes no olvides pasarte por allí. Además, vamos a aprovechar el nuevo servicio de la Universidad de cartelería digital, si quieres ver los carteles que [...]]]></description>
			<content:encoded><![CDATA[<p>No olvidéis que mañana día 1 de marzo empiezan las jornadas técnicas del GUL. Si te gusta la informática y te apetece pasar un buen ratillo aprendiendo cosas nuevas e interesantes <a href="http://gul.es/index.php/component/content/article/1-latest-news/73-calendario-de-marzo-2010.html">no olvides pasarte por allí</a>. Además, vamos a aprovechar el nuevo servicio de la Universidad de cartelería digital, si quieres ver los carteles que les mandaremos los tienes <a href="ftp://ftp.gul.es/pub/gul/myc/marzo2010/tiras-carteleria-digital/">aquí</a>.</p>
<p>El viernes pasado hicimos una entrevista en la radio <a href="http://ecoleganes.org">ECO Leganés</a> donde charlamos sobre las jornadas del GUL y el software libre en general. Tenéis la entrevista <a href="http://audio.urcm.net/archivo/mp3/20100226_gul_ECOLeganes.mp3">aquí</a>. Nos lo pasamos fenomenal y nos ofrecieron la oportunidad de hacer un programa mensual nosotros solitos. Creo que la aprovecharemos.</p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=270</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jornadas técnicas del GUL Marzo 2010</title>
		<link>http://voiser.es/blog/?p=267</link>
		<comments>http://voiser.es/blog/?p=267#comments</comments>
		<pubDate>Thu, 04 Feb 2010 23:07:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=267</guid>
		<description><![CDATA[Un montón de charlas tan interesantes como computación voluntaria, securización de servidores, memoria dinámica o administración de los servidores del GUL. En mi caso voy a dar tres charlas en total: la primera trata sobre cómo medir la calidad del software empleando la medida de cobertura; las otras dos son sendos talleres de Python y [...]]]></description>
			<content:encoded><![CDATA[<p>Un montón de charlas tan interesantes como computación voluntaria, securización de servidores, memoria dinámica o administración de los servidores del GUL. En mi caso voy a dar tres charlas en total: la primera trata sobre cómo medir la calidad del software empleando la medida de cobertura; las otras dos son sendos talleres de Python y Ruby, dos lenguajes que seguro que interesan a muchos programadores y administradores de sistemas. </p>
<p>Si tienes pensado acudir a la charla de calidad, repasa un poco cómo funciona el lenguaje C (básicamente qué diferencia hay entre un .c, un .h, un .o y un ejecutable). Si vas a ir a algún taller, no olvides llevarte un portátil con la última versión que tengas de Python y/o Ruby instalado.</p>
<p>Los que trabajamos no tenemos la posibilidad de ir todos los días a las 17:00, por lo que espero que algunos guleros que viven en la uni puedan acudir a esas charlas para ayudar con las llaves del aula, el cable VGA, etc. Este paso es el más importante de todos.</p>
<p>Y, por supuesto, entrada libre y gratuita. Más información:</p>
<p><a href="http://www.gul.es">www.gul.es</a></p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=267</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anatema</title>
		<link>http://voiser.es/blog/?p=253</link>
		<comments>http://voiser.es/blog/?p=253#comments</comments>
		<pubDate>Sun, 24 Jan 2010 16:04:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=253</guid>
		<description><![CDATA[El mismo día que Fer avisó de que Anatema estaba a la venta, me pasé por la fnac y lo compré. Un tiempo después, le contaba entusiasmado a mi Ali las cosas que pasaban en el libro, y ella me dijo &#8220;ya lo sé, lo pone en la sinopsis&#8221;. Entonces me di cuenta de que [...]]]></description>
			<content:encoded><![CDATA[<p>El mismo día que <a href="http://fer-nando21.blogspot.com/2009/09/anatema-ya-la-venta.html">Fer avisó de que Anatema estaba a la venta</a>, me pasé por la fnac y lo compré. Un tiempo después, le contaba entusiasmado a <a href="http://www.flickr.com/photos/voiser/1125153783/">mi Ali</a> las cosas que pasaban en el libro, y ella me dijo &#8220;ya lo sé, lo pone en la sinopsis&#8221;. Entonces me di cuenta de que no la había leído.</p>
<p>Si eres de los que leen las sinopsis de los libros, tampoco te fíes de la de Anatema. Aunque es cierto eso de los alienígenas, religión y política, el libro es en realidad una narración que sirve como excusa para comentar una teoría existencialista platónica &#8220;con amiguitos&#8221;: si recuerdas lo del mundo de las ideas que estudiaste en el instituto, medio libro te será familiar. El otro medio es mecánica cuántica del montón.</p>
<p>Hay dos cosas que me han sorprendido bastante de este libro. La primera es el cambio de estilo, mucho más serio, sin el gamberrismo que le caracteriza, se podría decir que es casi maduro. La segunda, la costumbre que ha adoptado de huir de las explicaciones. Acostumbrado, de cierta forma, a encontrarme capítulos enteros que explican con detalle el funcionamiento de un ataque tempest, veo que en Anatema algunas ideas clave en la novela -y algunas que ciertamente no lo son pero que resultan igual de inquietantes- se citan, se dejan caer, se comentan en un mísero parrafillo, cuando merecen varias páginas de atención. De hecho, en una entrevista, Stephenson admitió que cierta idea que no se explica en el libro es fundamental para entender la novela.</p>
<p>Esta clave es la siguiente: para pasar de un argumento A a otro argumento B se debe coger información de B y plasmarla de forma física en A. Para mantener la inviolabilidad de las leyes físicas, el argumento A necesita cambiar de dirección y converger a un punto donde la información que se extrajo de B sea efectiva. Creo que es una teoría suficientemente interesante como para desarrollarla, y a medida que pasan las últimas páginas del libro te angustias pensando que no llega el momento en que se explique esta clave. Efectivamente, no llega. Como tampoco llega la explicación de cómo son capaces de separar la información real del Retículum de la información errónea que se sintetiza sistemáticamente.</p>
<p>Esto no significa que la novela decepcione. A mi, al menos, no lo ha hecho, he disfrutado con ella. Me ha gustado mucho la forma en la que describe el planeta donde se desarrolla la acción: en primera persona y a través de la vida diaria del protagonista. Es una dosis de realismo que se agradece en una obra de ficción especulativa, en contra de la ciencia ficción tradicional donde naves espaciales disparan haces de láser de escasos metros de longitud a velocidades newtonianas y todas esas cosas. Stephen King dice que la clave para escribir una novela de ficción es ser creíble. Puedes escribir sobre fantasmas o sobre extraterrestres, pero la novela tiene que ser creíble. Creo que esto es una máxima en Anatema: llega a ser <em>agradable</em> encontrarse con una novela donde la gente no se reúne para tomar una decisión en diez segundos y acto seguido ya se encuentran en naves espaciales peleando contra la Estrella de la Muerte, ni donde de repente los protagonistas necesitan viajar a Londres y sorprendentemente aparece un amigo que tiene un avión privado. Aquí las decisiones se discuten, los políticos se pelean, los científicos realizan observaciones y hacen experimentos para obtener modelos, y los astronautas se entrenan para calcular el azimut y el tiempo de propulsión para desplazarse por el espacio en sus trajes espaciales, y donde si fallan tienen que esperar unas cuantas horas para situarse de nuevo en una posición de la órbita donde puedan ser rescatados. Eso es una <em>historia </em> y lo otro son <em>historietas</em>.</p>
<p>Una vez hice un curso en Colmenarejo sobre sistemas embarcados en la industria aeroespacial. Uno de los ponentes trabajaba en la ESA y nos comentaba con mucha gracia que en las películas, cuando el espía malo entraba en la embajada de turno, los buenos apretaban un botón y el satélite en apenas unos segundos se colocaba encima de dicha embajada para hacer las mejores fotos de la Historia De Las Fotos Por Satélite. En el mundo real, el satélite está orbitando a su bola y las fotos se hacen cuando el satélite pase por allí. Y a veces hay nubes. Esa diferencia entre <em>a lo que estamos acustumbrados</em> y <em>lo que es físicamente posible</em> es lo que Anatema ofrece como novela de ficción.</p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=253</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chivatazo para la SGAE</title>
		<link>http://voiser.es/blog/?p=259</link>
		<comments>http://voiser.es/blog/?p=259#comments</comments>
		<pubDate>Sat, 09 Jan 2010 12:10:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bla bla bla]]></category>

		<guid isPermaLink="false">http://voiser.es/blog/?p=259</guid>
		<description><![CDATA[Los asesinos de Sandra Palo se bajaron música de internet de Ramoncín y Víctor Manuel. La escuchaban mientras violaban, atropellaban y quemaban viva a Sandra. A ver si así alguien los mete en prisión.]]></description>
			<content:encoded><![CDATA[<p>Los asesinos de Sandra Palo se bajaron música de internet de Ramoncín y Víctor Manuel. La escuchaban mientras violaban, atropellaban y quemaban viva a Sandra. A ver si así alguien los mete en prisión.</p>
]]></content:encoded>
			<wfw:commentRss>http://voiser.es/blog/?feed=rss2&amp;p=259</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
