<?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"
	>

<channel>
	<title>Phenobarbital con Soda &#187; PlanetaLinux</title>
	<atom:link href="http://www.jesuslara.com.ve/blog/category/cultura-libre/planeta-linux/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jesuslara.com.ve/blog</link>
	<description>Las peripecias de una pildora viajera ...</description>
	<pubDate>Wed, 24 Jun 2009 00:32:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>mySQL vs. MariaDB: Michael Widenius crea fork &#8220;libre&#8221; de mySQL</title>
		<link>http://www.jesuslara.com.ve/blog/2009/04/25/mysql-vs-mariadb-michael-widenius-crea-fork-libre-de-mysql/</link>
		<comments>http://www.jesuslara.com.ve/blog/2009/04/25/mysql-vs-mariadb-michael-widenius-crea-fork-libre-de-mysql/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 07:25:58 +0000</pubDate>
		<dc:creator>phenobarbital</dc:creator>
		
		<category><![CDATA[Blogeando!]]></category>

		<category><![CDATA[Cultura Libre]]></category>

		<category><![CDATA[Databases]]></category>

		<category><![CDATA[PlanetaLinux]]></category>

		<guid isPermaLink="false">http://www.jesuslara.com.ve/blog/?p=491</guid>
		<description><![CDATA[Michael Widenius; conocido en los &#8220;bajos fondos&#8221; como Monty y creador de la popular base de datos MYSQL; no solamente se ha retirado de mySQL (o de Sun; algo que hizo en las visperas de la venta de Sun a principios de Marzo); sino que además ha lanzado un &#8220;Fork&#8221; de mySQL bajo los siguientes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Michael_Widenius" target="_blank">Michael Widenius</a>; conocido en los &#8220;bajos fondos&#8221; como Monty y creador de la popular base de datos MYSQL; no solamente se ha retirado de mySQL (o de Sun; algo que hizo en las visperas de la venta de Sun a principios de Marzo); sino que además ha lanzado un <a href="http://askmonty.org/wiki/index.php/MariaDB" target="_blank">&#8220;Fork&#8221; de mySQL</a> bajo los siguientes principios:</p>
<ul>
<li>Completamente libre</li>
<li>Sin código privativo (u open source) de terceros sin una licencia libre</li>
<li>Sin que las razones comerciales sopesen a las técnicas y de diseño</li>
</ul>
<p>Lo que destaca de sus motivos (en un articulo en su blog llamado &#8220;<a href="http://monty-says.blogspot.com/2009/04/to-be-free-or-not-to-be-free.html" target="_blank">to be free or not to be free</a>&#8220;; para crear un fork; habla de liberar a mySQL de codigos que no cumplan con libertades esenciales (me imagino que se refiere a codigos como los incluidos en versiones iniciales de falcon y en NDB), que Oracle no es una empresa a la cual confiar la continuidad de un proyecto de software libre (le falta mucho como empresa para ser verdaderamente un líder de proyectos libres) y aun así aceptando ser un líder de desarrollo de software libre; el mantener a Oracle privativo y tener a mySQL en su poder lo enfrentará a juicios Anti-monopolio (al tener una excesiva cuota sobre el mercado de bases de datos) y en algún momento mySQL sufrirá algún golpe nocivo de la cual no se recuperará; por ende, es mejor hacer un fork ahora.</p>
<p>Inicialmente me decantaba más por la idea de que Oracle comprara a Sun para acceder a su Hardware (los famosos Sun Spark, Sun Fire y Sun Blade), para acceder a OpenSolaris, a Java (que sin Java, Oracle es una porquería) y a una serie de tecnologías de mercados emergentes (como Virtualbox); sin embargo, no solamente el hecho que Michael Widenius se retire de Sun, sino que además desee hacer un fork &#8220;completamente libre&#8221; de mySQL pues muestra un camino &#8220;sombrio y preocupante&#8221; sobre lo que podría ser el futuro de mySQL en manos de Oracle en los próximos años.</p>
<p>MariaDB (recibiendo el nombre de su hija menor Maria, cumpliendo la tradición de seguir el nombre de sus hijos, my &#8220;la mayor&#8221; y Max &#8220;el varon&#8221;) es un fork de mySQL de la versión 5.1 de mySQL, contiene los siguientes cambios:</p>
<ul>
<li>maria como storage por defecto (en reemplazo de myISAM)</li>
<li><a href="http://askmonty.org/wiki/index.php/Maria" target="_self">Maria </a>es un storage transaccional/no-transaccional que además es &#8220;crash-safe&#8221; y es un reemplazo seguro y más eficiente de myISAM (además de HEAP, merge y el resto de basadas en myISAM)</li>
<li>estreno de PBXT (primeBase XT); es un storage Transaccional MVCC muy semejante a postgreSQL, además permite &#8220;BLOB streaming&#8221; como una manera eficiente de almacenar cualquier tipo de binario de gran tamaño.</li>
<li>XtraDB como storage de reemplazo a innoDB (que Oracle es dueño de innoBase, desde hace un par de años).</li>
<li>Remoción de Berkeley DB (razones obvias, Oracle es también dueño de BDB)</li>
<li>Percona XtraDB es completamente compatible con InnoDB así que se podrán migrar facilmente todas las DB en innoDB en un paso</li>
<li>Maria planea ser MVCC y ACID compliant; pero a su vez con un small footprint y código bastante pequeño, lo que plantea ser no solamente un eficiente reemplazo de myISAM sino ser un fuerte competidor a SQLite para dispositivos embebidos</li>
<li>Falcon (el storage para sistemas de data crítica de alta velocidad) será por defecto un storage en mariaDB</li>
<li>mariaDB podrá ser multi-port (una misma instancia podría ocupar varios puertos para optimizar y mejorar el desempeño)</li>
<li>Storage Federated (que permite de una manera facil tener la data centralizada en un servidor y la metadata en indices en servidores alternos)</li>
<li>Mejoras en la velocidad y el diseño técnico versus las &#8220;features&#8221; comerciales</li>
</ul>
<p>Es obvio que maria 1.5 está bastante fuerte; aunque la versión 2.0 del storage pretende ser muchisimo mejor que myISAM; la conclusión lógica es comenzar a &#8220;probar&#8221; y a ofrecer mejoras y bugs a mariaDB como se hacía con mySQL y en lo que Oracle comience a mostrar sus garras salir &#8220;corriendo&#8221; a su hermanito menor libre mariaDB.</p>
<p>Yo en mi caso ya hice lo mio y me di de alta en el grupo de <a href="https://launchpad.net/~jesuslara" target="_blank">developers de MariaDB</a>.</p>
<p>No es hora para salir todos &#8220;corriendo en estampida&#8221; a mariaDB; aun esta algo &#8220;cruda&#8221; y tienen un largo camino que recorrer; sin embargo, no solamente porque siga o no libre mySQL, mariaDB vuelve a las manos del creador de mySQL con una visión más renovada, de hacer algo bien y libre, no pensando tanto en cosas comerciales sino en las virtudes técnicas (me imagino que Michael Widenius habrá instalado postgreSQL) y por ende, tendremos una nueva base de datos libre que testear, probar, usar e instalar!.</p>
<p>Si desean saber como es Maria (la hija de Monty); he aqui su foto:</p>
<div class="wp-caption aligncenter" style="width: 330px"><img title="Maria Widenius" src="http://askmonty.org/wiki/images/0/0a/Maria.jpg" alt="Maria Widenius" width="320" height="213" /><p class="wp-caption-text">Maria Widenius</p></div>
<p>Espero que mariaDB siempre mantenga esas caracteristicas y sea una DB tan linda como quien le dio el nombre.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jesuslara.com.ve/blog/2009/04/25/mysql-vs-mariadb-michael-widenius-crea-fork-libre-de-mysql/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[PHP 6 Namespaces] Una mala implementación</title>
		<link>http://www.jesuslara.com.ve/blog/2009/02/04/php-6-namespaces-una-mala-implementacion/</link>
		<comments>http://www.jesuslara.com.ve/blog/2009/02/04/php-6-namespaces-una-mala-implementacion/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 21:45:51 +0000</pubDate>
		<dc:creator>phenobarbital</dc:creator>
		
		<category><![CDATA[Blogeando!]]></category>

		<category><![CDATA[Cultura Libre]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[PlanetaLinux]]></category>

		<category><![CDATA[Programacion]]></category>

		<category><![CDATA[gotchas]]></category>

		<category><![CDATA[namespaces]]></category>

		<category><![CDATA[packages]]></category>

		<category><![CDATA[php5]]></category>

		<category><![CDATA[php6]]></category>

		<guid isPermaLink="false">http://www.jesuslara.com.ve/blog/?p=470</guid>
		<description><![CDATA[En las primeras de cambio, cuando aquel ruso Dimitri (Dmitri Vinogradov) postuló el parche para soporte de namespaces en php5 ó 6 y se inició un rally para incorporarlos rápidamente al lenguaje; mucha gente se entusiasmó, pensando que por fín se acabaría la cadena (o el yugo) a los nombres de función crípticos y a [...]]]></description>
			<content:encoded><![CDATA[<p>En las primeras de cambio, cuando aquel ruso Dimitri (<em>Dmitri</em> Vinogradov) postuló el parche para soporte de namespaces en php5 ó 6 y se inició un rally para incorporarlos rápidamente al lenguaje; mucha gente se entusiasmó, pensando que por fín se acabaría la cadena (o el yugo) a los nombres de función crípticos y a las implementaciones de 40 mil includes y requires al inicio de un archivo.</p>
<p><strong>El preámbulo</strong></p>
<p>Inicialmente el parche prometía bastante; al implementar un sistema de espacio de nombres basado en filesystem (y con soporte y resolución dinámica) muy semejante al de python:</p>
<pre>&lt;?php
namespace Proyecto::DNS;
class resolver {
public function get($ptr) {
}
}
?&gt;</pre>
<p>Y su implementación se realizaba:</p>
<pre>&lt;?php
use Proyecto::DNS as dns;
dns-&gt;get('127.0.0.1');
?&gt;</pre>
<p>Lo cual por legibilidad es más o menos como usar:</p>
<pre>import DNS
DNS.get('127.0.0.1')</pre>
<p>Lo cual parecía ser la solución &#8220;idónea&#8221; a los problemas de resolución del lenguaje; sin embargo, <a href="http://wiki.php.net/rfc/backslashnamespaces#use_as_namespace_separator" target="_blank">en octubre del 2008</a> la gente del buró de decisiones de Zend (la empresa que lleva el lenguaje PHP); decidió, fuera de toda lógica plausible; tratar a los espacios de nombres y a las clases como dos cosas completamente distintas; de tal manera que la resolución de nombres usando el :: quedaba descartada del lenguaje.</p>
<p><strong>El problema</strong></p>
<p>En la mayoría de los lenguajes no encontrarás una clase llamada igual que un namespace (o package como en Java o módulo como en python); o sea, nunca verás algo como:</p>
<pre>import org.java.lang</pre>
<p>donde Java.lang pueda ser un package y además una función; los increíbles de PHP desean hacer eso; con lo cual sentenciaron el separador (::) a muerte (al menos como separador de los namespaces, ya que el punto (como en python o java) no se puede usar porque es el concatenador lógico)).</p>
<p>Según la gente de Zend; tener:</p>
<pre>&lt;?php
namespace Proyecto;
function DNS() {}
?&gt;</pre>
<p>y</p>
<pre>&lt;?php
class Proyecto {
public function DNS() {
}
}
?&gt;</pre>
<p>Es sintáctica y además lógicamente válido;  lo que conlleva a que:</p>
<pre>&lt;?php
Proyecto::DNS();
?&gt;</pre>
<p>No sepa determinar si nos referimos a la función DNS en el namespace Proyecto o al método DNS en la clase Proyecto, llevando a confusiones al motor Zend2; obviamente, esto conllevó a una decisión.</p>
<p><strong>La fatídica solución (Según Zend)</strong></p>
<p>Lo que la gente de Zend ha <a href="http://wiki.php.net/rfc/backslashnamespaces#use_as_namespace_separator" target="_blank">ideado</a>; es obviamente un disparate; como según ellos lo anterior &#8220;se puede hacer&#8221; (aunque no se debería tener un namespace y una clase con el mismo nombre), entonces debemos &#8220;adoptar&#8221; el slash (o separador Windows &#8220;\&#8221;, que se alegren los programadores .NET) como separador de las resoluciones de nombre; de tal manera que lo de arriba queda así:</p>
<pre>&lt;?php
Proyecto::DNS(); //llamando estáticamente al método DNS de la clase Proyecto
\Proyecto\DNS(); //llamando a la función DNS del namespace proyecto
?&gt;</pre>
<p>¿Que rayos es esa cosa?; otra horrible invención de Zeev Zurasky y pandilla!; esto hará que:</p>
<pre>&lt;?php
\Date\time(); //namespace Date, función time()
Date::time(); //clase incorporada Date, método time()
?&gt;</pre>
<p>Es decir, a la clase Date (incorporada en PHP5.1) puedo crear paralelamente un namespace Date con una función llamada idénticamente a su contraparte de la clase; no hay nada más horrible que esto.</p>
<p>¿No era más sensato, como en otros lenguajes, evitar que un package y una clase compartieran el mismo nombre?.</p>
<p><strong>Las ventajas (que no lo son tanto)</strong></p>
<p>He decidio copiar y desmentir cada una de las &#8220;ventajas&#8221; que han puesto para aceptar el cambio del separador.</p>
<div class="level3">
<ul>
<li class="level1">
<div class="li">name ambiguity is impossible</div>
</li>
</ul>
<div class="level3">¿Qué es más ambiguo?, que se &#8220;lean&#8221; diferente o que pueda existir un Namespace y una clase con el mismo nombre?; imaginen esto:</div>
<pre class="level3">&lt;?php
\com\Zend\Data\Form::validate();
\com\Zend\Data\Form\validate();
?&gt;</pre>
</div>
<div class="level3">Ambas formas en el mismo script!, sintáctica y logicamente válidas; pero a la vista, ambiguas ambas (y un completo disparate).</p>
<ul>
<li class="level1">
<div class="li">\ is visually quite different from ::, and is easier to scan and detect as namespace instead of static class operator</div>
</li>
</ul>
<p>Creo que la presencia de un import (o USE en PHP) es una facil forma de detectar &#8220;visualmente&#8221; quien es un namespace y a quien nos referíamos estáticamente.</p>
<ul>
<li class="level1">
<div class="li">\ is a single keystroke on U.S. keyboard layout without shift key</div>
</li>
</ul>
<p>En la mayoría de los teclados latinoamericanos y españoles es imposible obtener el \ a la primera, a veces uno ni lo consigue!.</p>
<ul>
<li class="level1">
<div class="li">\this\is\used for paths on Windows and is intuitively familiar to those developers. According to a php|arch survey (as relayed by Steph Fox), most of their readers develop on Windows and deploy on Unix, which would imply that \these\paths are familiar</div>
</li>
</ul>
<p>&#8230; Sin comentarios; recordemos que ahora Microsoft le apuesta a los lenguajes de scripting libres (python, php) en vez de a su .NET, así que tiene una fuerte <a href="http://www.microsoft.com/presspass/press/2006/oct06/10-31MSZendPR.mspx" target="_blank">inversión con Zend</a>.</p>
<ul>
<li class="level1">
<div class="li">\this\maps\to\filesystem layouts often used by autoload intuitively for the above reason</div>
</li>
</ul>
<p>Pudieron haber escogido el backslash de unix igualmente, o el punto, para parecerse más a otros lenguajes &#8220;serios&#8221; (ruby, phyton) &#8230;</p>
<ul>
<li class="level1">
<div class="li">because \ is a single keystroke, it is possible to require \ prefix for all global functions/classes/constants, and conversion is minimally effortful (from personal experience trying to convert files to several namespace separators to see what it was like)</div>
</li>
</ul>
<div class="level3">El &#8220;namespace&#8221; global requerirá que &#8220;escapemos&#8221; todas las funciones y constantes globales, de tal manera que tendremos que llenar el código con cosas como:</div>
<pre class="level3">&lt;?php
\htmlspecialchars($variable);
?&gt;</pre>
<div class="level3">Simplemente hilarante.</div>
<ul>
<li class="level1">
<div class="li">code review ambiguities disappear permanently</div>
</li>
</ul>
</div>
<div class="level3">Y muchos programadores enojados desaparecerán también permanentemente.</div>
<div class="level3"></div>
<div class="level3"><strong>El Análisis posterior</strong></div>
<div class="level3"></div>
<div class="level3">Este parche ha sido incorporado a PHP 5.3; pero aún los cambios no han sido incorporados a PHP6; muchos vaticinan que ocurrirá algo parecido a la actual página www.gophp5.org (un gophp6.org) en un tiempo no mayor de 3 años; como consecuencia de que &#8220;proyectos de PHP4 no correrán en &gt; PHP 5.3&#8243;; pero además, código escrito en PHP 5.3 o superior posiblemente no corra en PHP6.</div>
<div class="level3"></div>
<div class="level3">Esto hace además que guias como <a href="http://www.andphp.com/2008/03/04/php-namespaces-is-not-years-away-to-be-included-in-php-53/" target="_blank">esta</a>; publicadas antes del parche de noviembre del 2008, sean inválidas, dicho sea de paso, hasta el .chm oficial en español de la documentación de PHP está erroneo pues no ha incorporado los cambios.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.jesuslara.com.ve/blog/2009/02/04/php-6-namespaces-una-mala-implementacion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Un detalle sobre Xen y Debian Lenny</title>
		<link>http://www.jesuslara.com.ve/blog/2009/01/20/un-detalle-sobre-xen-y-debian-lenny/</link>
		<comments>http://www.jesuslara.com.ve/blog/2009/01/20/un-detalle-sobre-xen-y-debian-lenny/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 20:51:15 +0000</pubDate>
		<dc:creator>phenobarbital</dc:creator>
		
		<category><![CDATA[Cultura Libre]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[PlanetaLinux]]></category>

		<category><![CDATA[trucos de la abuela]]></category>

		<category><![CDATA[virtualizacion]]></category>

		<category><![CDATA[xen]]></category>

		<category><![CDATA[xen-tools]]></category>

		<category><![CDATA[xend]]></category>

		<guid isPermaLink="false">http://www.jesuslara.com.ve/blog/?p=458</guid>
		<description><![CDATA[Estuve haciendo pruebas de levantar sobre GNU/Linux Debian Lenny el Xen que &#8220;oficialmente&#8221; viene para Dom0; el kernel 2.6.26-1 (traido desde Fedora por cierto) y luego de instalarlo y hacer un &#8220;update&#8221; de todos los paquetes se me presentó el siguiente error:

[2009-01-20 15:28:55 2595] INFO (SrvDaemon:219) Xend exited with status 1.
[2009-01-20 15:29:48 2625] INFO (SrvDaemon:331) [...]]]></description>
			<content:encoded><![CDATA[<p>Estuve haciendo pruebas de levantar sobre GNU/Linux Debian Lenny el Xen que &#8220;oficialmente&#8221; viene para Dom0; el kernel 2.6.26-1 (traido desde Fedora por cierto) y luego de instalarlo y hacer un &#8220;update&#8221; de todos los paquetes se me presentó el siguiente error:</p>
<p><code><br />
[2009-01-20 15:28:55 2595] INFO (SrvDaemon:219) Xend exited with status 1.<br />
[2009-01-20 15:29:48 2625] INFO (SrvDaemon:331) Xend Daemon started<br />
[2009-01-20 15:29:48 2625] INFO (SrvDaemon:335) Xend changeset: unavailable.<br />
[2009-01-20 15:29:48 2625] INFO (SrvDaemon:342) Xend version: Unknown.<br />
[2009-01-20 15:29:48 2625] ERROR (SrvDaemon:353) Exception starting xend (no element found: line 1, column 0)<br />
Traceback (most recent call last):<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/xend/server/SrvDaemon.py&#8221;, line 345, in run<br />
servers = SrvServer.create()<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/xend/server/SrvServer.py&#8221;, line 251, in create<br />
root.putChild(&#8217;xend&#8217;, SrvRoot())<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/xend/server/SrvRoot.py&#8221;, line 40, in __init__<br />
self.get(name)<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/web/SrvDir.py&#8221;, line 82, in get<br />
val = val.getobj()<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/web/SrvDir.py&#8221;, line 52, in getobj<br />
self.obj = klassobj()<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/xend/server/SrvNode.py&#8221;, line 30, in __init__<br />
self.xn = XendNode.instance()<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/xend/XendNode.py&#8221;, line 709, in instance<br />
inst = XendNode()<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/xend/XendNode.py&#8221;, line 60, in __init__<br />
saved_host = self.state_store.load_state(&#8217;host&#8217;)<br />
File &#8220;/usr/lib/xen-3.2-1/lib/python/xen/xend/XendStateStore.py&#8221;, line 104, in load_state<br />
dom = minidom.parse(xml_path)<br />
File &#8220;/usr/lib/python2.5/xml/dom/minidom.py&#8221;, line 1915, in parse<br />
return expatbuilder.parse(file)<br />
File &#8220;/usr/lib/python2.5/xml/dom/expatbuilder.py&#8221;, line 924, in parse<br />
result = builder.parseFile(fp)<br />
File &#8220;/usr/lib/python2.5/xml/dom/expatbuilder.py&#8221;, line 211, in parseFile<br />
parser.Parse(&#8221;", True)<br />
ExpatError: no element found: line 1, column 0<br />
[2009-01-20 15:29:48 2624] INFO (SrvDaemon:219) Xend exited with status 1.<br />
</code></p>
<p>Entonces este fallo imposibilitaba el inicio del Xen Daemon.</p>
<p>La solución</p>
<p>La solución es sencilla y realmente ni merece un post; lo que pasa es que a veces se me olvida y pues de repente a alguien más le sirve.</p>
<p>Simplemente deben eliminar el contenido de la carpeta /var/lib/xend/ con el comando:</p>
<p><code>rm -fR /var/lib/xend/*</code></p>
<p>Y listo!, inicien de nuevo el xen (/etc/init.d/xend start); descuiden, las carpetas serán creadas de nuevo al iniciarse el demonio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jesuslara.com.ve/blog/2009/01/20/un-detalle-sobre-xen-y-debian-lenny/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Desapareció el udevmonitor en Debian Lenny?</title>
		<link>http://www.jesuslara.com.ve/blog/2008/10/06/desaparecio-el-udevmonitor-en-debian-lenny/</link>
		<comments>http://www.jesuslara.com.ve/blog/2008/10/06/desaparecio-el-udevmonitor-en-debian-lenny/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 15:19:02 +0000</pubDate>
		<dc:creator>phenobarbital</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[PlanetaLinux]]></category>

		<guid isPermaLink="false">http://www.jesuslara.com.ve/blog/?p=428</guid>
		<description><![CDATA[Hace una semana hice un cambio de equipo; durante la instalación del último Debian Lenny me encontré con que no puedo ejecutar udevmonitor! &#8230;
No hay problema; udevmonitor era solo un enlace simbólico a un comando ya existente:
$udevadm monitor
que podemos seguir ejecutando siempre; esto es debido a unos cambios en la versión udev (de la 0.105 [...]]]></description>
			<content:encoded><![CDATA[<p>Hace una semana hice un cambio de equipo; durante la instalación del último Debian Lenny me encontré con que no puedo ejecutar udevmonitor! &#8230;</p>
<p>No hay problema; udevmonitor era solo un enlace simbólico a un comando ya existente:</p>
<p>$udevadm monitor</p>
<p>que podemos seguir ejecutando siempre; esto es debido a unos cambios en la versión udev (de la 0.105 a la 0.125) que elimina los comandos udevtest, udevtrigger y udevmonitor y los adjunta como parámetros del comando udevadm.</p>
<p>Gracias por avisar!, estuve un par de horas revisando comandos en mi compu hasta que di con el cambio (man udevadm).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jesuslara.com.ve/blog/2008/10/06/desaparecio-el-udevmonitor-en-debian-lenny/feed/</wfw:commentRss>
		</item>
		<item>
		<title>[MS] Que es mi Content-Type!, que te lo digo en serio!</title>
		<link>http://www.jesuslara.com.ve/blog/2008/07/06/ms-que-es-mi-content-type-que-te-lo-digo-en-serio/</link>
		<comments>http://www.jesuslara.com.ve/blog/2008/07/06/ms-que-es-mi-content-type-que-te-lo-digo-en-serio/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 01:05:20 +0000</pubDate>
		<dc:creator>phenobarbital</dc:creator>
		
		<category><![CDATA[Cultura Libre]]></category>

		<category><![CDATA[Cultura Oldie]]></category>

		<category><![CDATA[La soda y la pastilla]]></category>

		<category><![CDATA[Otros lenguajes]]></category>

		<category><![CDATA[PlanetaLinux]]></category>

		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.jesuslara.com.ve/blog/2008/07/06/ms-que-es-mi-content-type-que-te-lo-digo-en-serio/</guid>
		<description><![CDATA[No conformes con las cosas horribles que le pasan a Windows Vista y su pronto reemplazo por Windows 7 (o Windows Seven plagues como algunos ya lo llaman; el vaticinio del fin del mundo); la fiebre de soluciones &#8220;Chaborras&#8221; e ilusas ahora viene de la mano de la gente de Internet Explorer 8.
Si; este es [...]]]></description>
			<content:encoded><![CDATA[<p>No conformes con las cosas horribles que le pasan a Windows Vista y su pronto reemplazo por Windows 7 (o Windows Seven plagues como algunos ya lo llaman; el vaticinio del fin del mundo); la fiebre de soluciones &#8220;Chaborras&#8221; e ilusas ahora viene de la mano de la gente de Internet Explorer 8.</p>
<p>Si;<a href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx"> este es mi content-type; que te lo digo en serio!</a> &#8230;</p>
<p>Durante milenios los documentos han viajado de los servidores hasta el navegador de una manera más o menos igual; el documento declara un tipo de contenido (Content-Type + charset) y aun así; los navegadores son algo desconfiados y echan una &#8220;mirada&#8221; al documento; sin embargo, es renderizado &#8220;tal cual es&#8221; sin ningún inconveniente; esto ha sido el comportamiento &#8220;por defecto&#8221; de absolutamente todo el mundo menos la gente &#8220;desvergonzada&#8221; de Redmont.</p>
<p>Al parecer su manía de desconfiar de cualquier código que no sea generado por ellos mismos (y si es generado por ellos; más desconfían) los hace &#8220;tratar de interpretar&#8221; el contenido obviando &#8220;olímpicamente&#8221; la declaración de Content-Type y enviando el contenido a los distintos &#8220;parsers&#8221; de acuerdo a su contenido; esto podría sonar interesante cuando se trata por ejemplo de imágenes (donde por lo general nadie declara el type) pero si dentro de un bloque en vez de contenter text/xml colocamos código javascript; en vez de ser enviado a pantalla (como debería ser, es un código javascript declarado como texto; como si lo colocara dentro de un &lt;PRE&gt;) este es ejecutado; siendo la total maldición de los sitios web y de los ataques de &#8220;MIME-sniffing&#8221;.</p>
<p>Para algo que es una &#8220;aplicación&#8221; habiamos inventado una declaración &#8220;<tt>application/xhtml+xml&#8221;</tt> esta permite indicar que nuestra página es una aplicación XML que combina HTML y otros &#8220;lenguajes&#8221; como javascript&#8221;; pero antes de IE7 los navegadores microsoft asumían esa declaración como un &#8220;binario&#8221; e intentaban descargar la página; ¿Como lo solventaban los desarrolladores para IE?; colocando 2 declaraciones Content-Type; una haciendo referencia a application/xhtml+xml y otra para IE de text/html.</p>
<p>Observen este &#8220;burdo&#8221; ejemplo de como las &#8220;cosas&#8221; se pasan por alto dentro de la casa de Redmont:</p>
<p>Con un bloque como:</p>
<blockquote><p><font face="Courier New">HTTP/1.1 200 OK<br />
Content-Length: 108<br />
Date: Thu, 26 Jun 2008 22:06:28 GMT<br />
Content-Type: text/plain;</font></p>
<p><font face="Courier New" color="#008080">&lt;html&gt;<br />
&lt;body bgcolor=&#8221;#AA0000&#8243;&gt;<br />
This page renders as HTML in IE7/IE8.<br />
&lt;/body&gt;<br />
&lt;/html&gt;</font></p></blockquote>
<p>Como vemos; el content Type es &#8220;text/plain&#8221;; eso significa que &#8220;DEBERIA!&#8221; renderizarse como texto; pero la presencia de etiquetas HTML hace que IE7 e IE8 &#8220;interpreten&#8221; el contenido y lo envíen a pantalla.</p>
<p>En medida de seguridad; esto significa que un bloque de texto, conteniendo código Javascript (Jscript de MS) o VBScript será ejecutado en vez de ser &#8220;renderizado como texto&#8221;.</p>
<p>La burda solución de IE8? &#8230; inventarse una &#8220;declaración HTTP&#8221; indicando de que &#8220;en verdad&#8221; hay que hacerle caso al servidor y asumir el content-type como cierto; Authoritative=true:</p>
<blockquote><p><font face="Courier New">HTTP/1.1 200 OK<br />
Content-Length: 108<br />
Date: Thu, 26 Jun 2008 22:06:28 GMT<br />
Content-Type: text/plain; <strong><font color="#ff0000">authoritative=true;</font></strong></font></p>
<p><font face="Courier New" color="#008080">&lt;html&gt;<br />
&lt;body bgcolor=&#8221;#AA0000&#8243;&gt;<br />
This page renders as HTML source code (text) in IE8.<br />
&lt;/body&gt;<br />
&lt;/html&gt;</font></p></blockquote>
<p>Nos les parece estúpido?; no le hago caso al content-type declarado; pero si a una declaración autoritativa?; si puedo &#8220;falsificar&#8221; una declaración de &#8220;content-type&#8221; ahora puedo &#8220;OBLIGAR&#8221; al navegador a no &#8220;intentar&#8221; analizar el contenido y a confiar en mí; si antes podía meter droga en la casa escondida en una caja de pizza; ahora con solo decir &#8220;Si mamá; es pizza&#8221; ella no revisará la caja y pasaré tranquilo con lo que desee entrar.</p>
<p>La idea es simple; HTML 5 obliga a los navegadores a obtener los primeros 512 bytes del documento e intentar analizar (via la cabecera del documento) todo el contenido de la página e informar al usuario de cualquier posible &#8220;discordancia&#8221; con el contenido; cualquier contenido &#8220;mal declarado&#8221; deberá ser tratado como text/plain o text/html y no &#8220;ejecutado&#8221; como viene haciendo IE7 (de hecho; HTML5 OBLIGA al UA (navegador) a informar al usuario de que un &#8220;contenido&#8221; está intentando ejecutarse cuando no debería; lo cual viene haciendo Firefox y otros navegadores como Opera hace tiempo); pero en vez de seguir con la corriente; con Authoritative=true la gente de IE8 se estará ahorrando el tener que escribir toda esta &#8220;mega-implementación&#8221; de interpretación y errores de excepción y &#8220;pasar a confiar en el servidor&#8221; sin tratar de analizar nada.</p>
<p>Es decir; no solo quieren seguir con el jueguito de &#8220;todo lo que me llegue lo ejecuto&#8221;; sino que además; &#8220;si el server me dice que EN SERIO debo ejecutarlo; entonces más lo haré sin chistar!&#8221; &#8230;</p>
<p>Cada día da más escalofríos pensar que será de Windows 7 e Internet Explorer en un par de años &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jesuslara.com.ve/blog/2008/07/06/ms-que-es-mi-content-type-que-te-lo-digo-en-serio/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
