<?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>Daniel Coletti &#187; Técnicos</title>
	<atom:link href="http://www.danielcoletti.com.ar/category/tecnicos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danielcoletti.com.ar</link>
	<description>Software Libre y negocios!</description>
	<lastBuildDate>Sun, 02 Oct 2011 22:41:21 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Actualización de Android en Motorola XOOM</title>
		<link>http://www.danielcoletti.com.ar/2011/08/12/actualizacion-de-android-en-motorola-xoom/</link>
		<comments>http://www.danielcoletti.com.ar/2011/08/12/actualizacion-de-android-en-motorola-xoom/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 00:16:23 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Técnicos]]></category>
		<category><![CDATA[3.2]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[actualizar]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[software libre]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://www.danielcoletti.com.ar/?p=400</guid>
		<description><![CDATA[Hace un tiempo me compré una Motorola XOOM con la promoción de Personal. Mi mayor curiosidad era saber para qué me podía servir a mi un dispositivo como este. Dí muchas vueltas para comprarla porque la veía poco útil.

Elegí esta tableta en particular porque traía Android, el sistema operativo más libre (y popular) que conozco para dispositivos móviles... sí, ya sé que está algo lejos de ser bastante libre, pero bueh...

Al tiempo de usarla empezó a tener problemas de software, el cliente de correo que trae crasheaba demasiado seguido y no era la única aplicación que explotaba. Revisando por internet encontré que había dos releases más modernos publicados por Google y mi tableta no los tenía. Lo primero que pensé es que Personal no los había liberado aún, esto fue más bien por desconocimiento del funcionamiento de las actualizaciones en el ambiente Android (sigo sin saber muy bien cómo es, si es que Google libera en su repositorio y todos los dispositivos se actualizan o si esto puede ser manipulado por la compañía de teléfonos o distribuidor del aparato). En fin... la realidad es que estaba clavado en Android 3.0 y ya estaba dando vueltas Android 3.1 e incluso 3.2.

Dado que la tableta es un dispositivo no esencial para mi vida me decidí a actualizarla a manopla.

Como estuve una buena cantidad de horas con esto pensé en escribir un artículo técnico para que otro pudiera hacerlo más velozmente.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 2px 4px;" src="http://img1.mlstatic.com/s_MLV_v_O_f_30756441_9586.jpg" alt="" width="150" height="150" />Hace un tiempo me compré una Motorola XOOM con la promoción de <a href="http://www.personal.com.ar/" target="_blank">Personal</a>. Mi mayor curiosidad era saber para qué me podía servir a mi un dispositivo como este. Dí muchas vueltas para comprarla porque la veía poco útil.</p>
<p>Elegí esta tableta en particular porque traía Android, el sistema operativo más libre (y popular) que conozco para dispositivos móviles&#8230; sí, ya sé que está algo lejos de ser bastante libre, pero bueh&#8230;</p>
<p>Al tiempo de usarla empezó a tener problemas de software, el cliente de correo que trae crasheaba demasiado seguido y no era la única aplicación que explotaba. Revisando por internet encontré que había dos <em>releases</em> más modernos publicados por Google y mi tableta no los tenía. Lo primero que pensé es que Personal no los había liberado aún, esto fue más bien por desconocimiento del funcionamiento de las actualizaciones en el ambiente Android (sigo sin saber muy bien cómo es, si es que Google libera en su repositorio y todos los dispositivos se actualizan o si esto puede ser manipulado por la compañía de teléfonos o distribuidor del aparato). En fin&#8230; la realidad es que estaba clavado en Android 3.0 y ya estaba dando vueltas Android 3.1 e incluso 3.2.</p>
<p>Dado que la tableta es un dispositivo no esencial para mi vida me decidí a actualizarla a manopla.</p>
<p>Como estuve una buena cantidad de horas con esto pensé en escribir un artículo técnico para que otro pudiera hacerlo más velozmente.</p>
<p><span id="more-400"></span></p>
<p>Todas estas explicaciones técnicas son para hacer desde un Linux, los usuarios de otros sistemas operativos les puede servir la explicación de cómo funcionan estas cosas.</p>
<p>La tableta parece tener –como las computadoras comunes– dos instancias de booteo, primero ejecutan un software que vendría a ser un &#8220;<em>BIOS</em>&#8221; y luego cargan el sistema operativo. El &#8220;<em>BIOS</em>&#8221; de la Xoom está en una región de memoria no escribible fácilmente (por lo menos no encontré cómo, pero eso es <span style="text-decoration: underline;">bueno</span>, porque de sobrescribir mal esta sección <a href="http://en.wikipedia.org/wiki/Brick_%28electronics%29">brickeas</a> la tableta y fuiste), este software tiene unas pocas opciones que te permiten:</p>
<ul>
<li>Acceder a la imagen de recuperación (esto es un software que se puede modificar)</li>
<li>Ponerla en modo de <a href="http://android-dls.com/wiki/index.php?title=Fastboot">Fastboot Protocol</a> (esto sirve para cambiar el sistema operativo que bootea la tableta)</li>
<li>Y hay un modo RSD que no sé qué es, ni para qué sirve.</li>
</ul>
<p>&nbsp;</p>
<h1>El cómo&#8230;</h1>
<p>Lo primero que hay que hacer es tener un cable USB para la tableta que funcione bien (si no tenes uno podes usar el de los teléfonos BlackBerry o Nexus1), también preparar el Linux para que detecte la tableta al conectarla por el cable USB.</p>
<p>&nbsp;</p>
<h2>Preparación de Linux</h2>
<p>La preparación del Linux es simple:</p>
<pre dir="ltr">sudo touch /etc/udev/rules.d/51-android.rules
echo "SUBSYSTEM==\"usb\", SYSFS{idVendor}==\"22b8\", MODE=\"0666\"" |sudo tee -a /etc/udev/rules.d/51-android.rules
sudo /etc/init.d/udev restart</pre>
<p>Con esto Linux ya debería ver la tableta al enchufar el USB, más información y con más detalle sobre esto <a href="http://forum.xda-developers.com/showthread.php?p=11691731#post11691731" target="_blank">acá</a>.</p>
<h2></h2>
<h2>Herramienta para cargar ROMs</h2>
<p>Luego hay que bajar el software de <em>fastboot</em> para Linux. Hay otro que se llama &#8216;<em>adb</em>&#8216; que es muy útil, pero está pensado para hacer bastantes más cosas y para quienes desarrollan aplicaciones para Android.</p>
<p>Como solo se necesita <em>fastboot</em>, lo podes descargar de esta <a href="http://developer.htc.com/adp.html#s2" target="_blank">página</a> (que te lo dan todo compiladito). Alternativamente podes bajar tooooodo el <a href="http://developer.android.com/sdk/index.html" target="_blank">SDK de Android para Linux</a> (con sus prerequisitos) y luego compilar los fuentes de <em>fastboot</em>.</p>
<p>&nbsp;</p>
<h2>Bajar ROMs</h2>
<p>Motorola publica las diferentes versiones que tiene de Android para tabletas Xoom <a href="http://developer.motorola.com/products/software/" target="_blank">aća</a>. Yo probé casi todas las ROMs que publican y todas funcionaron en mi Motorola Xoom de Personal (que viene con 3G y wifi), menos la de Verizon. Lo que no sé es si todas las Xoom son iguales a nivel hardware y es el software quien activa el 3G o el wifi. Incluso te da las instrucciones para cambiar las ROM en esa página.</p>
<p>Cada ROM viene con 4 archivos dentro (<em>recovery.img, system.img, userdata.img </em>y<em> boot.img</em>).</p>
<p>Para cargar la ROM lo que hay que hacer es reiniciar la tableta y <strong>cuando está prendiendo apretar el botón de &#8220;bajar volúmen&#8221;</strong> (el que está sobre el contorno izquierdo del dispositivo). Cuando aparece la leyenda &#8220;Starting Fastboot protocol support.&#8221; ya se pueden empezar a ejecutar estos comando:</p>
<p>El clásico <strong><span style="color: #ff0000;">WARNING: Aća es donde borras todo y perdes la garantía que tenes del aparato, sabelo porque es exactamente lo que estás por hacer. Además&#8230; a no venir con reclamos, si no funciona es tu culpa por hacer cosas que no debes (como no hacerle caso al fabricante <img src='http://www.danielcoletti.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) <strong>y no es mi culpa. </strong>A quién se le ocurre??? andar hackeando cosas&#8230; no hacer lo que le dicen que hay que hacer y caminar por otra senda que la indicada.</span></strong></p>
<p>Entonces, primero descomprimis el archivo que contiene la ROM (el que trae los cuatro archivos .img) y luego en modo fastboot protocol ejecutas:</p>
<pre>fastboot oem unlock</pre>
<p>(y seguís las instrucciones de la pantalla de la xoom, luego se reiniciará nuevamente, de nuevo tenes que apretar el botón para bajar el volúmen y cuando esté de nuevo en modo fastboot protocol ejecutas: )</p>
<pre>fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash recovery recovery.img
fastboot flash userdata userdata.img
fastboot erase cache
fastboot erase userdata
#fastboot oem lock (esto no es obligatorio)
fastboot reboot</pre>
<p>Al reiniciar va a ejecutar el nuevo sistema operativo y te va a pedir todos los datos que te pidió cuando la compraste y prendiste por primera vez.</p>
<p>Hasta ahora <span style="text-decoration: underline;">NADA</span> nuevo, porque estas ROMs son las que vienen con la XOOM de fabrica. Si queres la ROM que te permite actualizar (por vía normal, o sea, desde Google) a Android 3.2 tenes que bajarte la ROM del Build HWI69 de <a href="http://www.mediafire.com/file/5pd8ta6uaantax5/HWI69.zip">esta página</a>. Esta ROM viene con Android 3.0, pero al registrar tu Xoom con tu cuenta de Google empieza a bajarte las actualizaciones (a 3.1 primero y luego a 3.2), pero esta ROM solo es para wifi.</p>
<p>Con esa ROM vas a tener Android 3.2 pero solamente con wifi.</p>
<p>La alternativa a esto es utilizar la <a href="http://forum.xda-developers.com/showthread.php?t=1203635">ROM de la gente de Tiamat</a>. Usando esta ROM vas a tener Android 3.2 y además ya está <em>rooteada</em>, por lo que no será necesario poner otros boot.img para permitir ejecutar comandos como root.</p>
<p>Para trabajar con esta ROM hay que hacer algo previo que es cambiar la imagen de recovery (recovery.img). La imagen de recovery no es un backup de tu imagen en uso (que te permite restaurar lo que tenías de fábrica), sino que es un &#8220;<em>sistema operativo</em>&#8221; que te permite instalar otras ROMs, formatear todo, borrar todos los datos de usuario, básicamente te permite tratar de recuperar el sistema.</p>
<p>Hay un &#8220;<em>sistema operativo</em>&#8221; de recovery que se llama <a href="http://www.addictivetips.com/mobile/what-is-clockworkmod-recovery-and-how-to-use-it-on-android-complete-guide/">ClockWorkMod</a> que extiende las posibilidades y te permite hacer cosas como instalar una ROM leyendo la microSD (un disco flash que podes poner y sacar de la tableta y no tener que usar el cable USB), algo indispensable para instalar la ROM de la gente de Tiamat utilizando el archivo .ZIP y no el .IMG (que se usa si lo haces en modo fastboot con la herramienta).</p>
<p>Seguí las instrucciones de esta página y vas a poder cambiar el &#8220;sistema operativo&#8221; de recovery. Una vez hecho booteas en modo recovery (apretas el botón para bajar el volumen 3 segundos después de que aparece el primer logo al iniciar) y desde este nuevo recovery instalas la ROM de Tiamat.</p>
<p>La ROM de Tiamat no reemplaza toooodo, sino que cambia el kernel y algunas cosas más. Si vas a instalar la ROM de Tiamat hacelo teniendo instalado la ROM de fábrica. A mi me pasó que instalando la ROM de Tiamat no tenía forma de conectarme al 3G de Personal. Esto era porque instalé la ROM modificando una base de ROM de Motorola solo para wifi (que no tiene la posibilidad de configurar 3G). Volví todo atrás, puse la versión de Motorola que tiene 3G y wifi para LATAM y al modificar esa base con la ROM de Tiamat pude usar 3G sin problemas.</p>
<p>Todo muy lindo&#8230; pero luego de todo esto, todo este tiempo probando cosas y aprendiendo cómo funcionan y bootean estos dispositivos y teniendo Android 3.2 con todos los chiches&#8230; el cliente de correo sigue explotando <img src='http://www.danielcoletti.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> . Pero ya no me importa tanto.</p>
<p>Suerrrrrte! Espero que te sea útil.</p>
<p>&nbsp;</p>
<h3>Páginas útiles:</h3>
<p><a href="http://yosoyandroid.com/?p=6957">http://yosoyandroid.com/?p=6957</a></p>
<p><a href="http://forum.xda-developers.com/archive/index.php/t-1049485.html">http://forum.xda-developers.com/archive/index.php/t-1049485.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielcoletti.com.ar/2011/08/12/actualizacion-de-android-en-motorola-xoom/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Nuevo juguete: HTC Dream G1</title>
		<link>http://www.danielcoletti.com.ar/2009/05/31/nuevo-juguete-htc-dream-g1/</link>
		<comments>http://www.danielcoletti.com.ar/2009/05/31/nuevo-juguete-htc-dream-g1/#comments</comments>
		<pubDate>Sun, 31 May 2009 14:45:36 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Opinión]]></category>
		<category><![CDATA[Revisiones de Software]]></category>
		<category><![CDATA[Técnicos]]></category>
		<category><![CDATA[htc]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[t-mobile g1]]></category>

		<guid isPermaLink="false">http://www.danielcoletti.com.ar/?p=270</guid>
		<description><![CDATA[Hacía mucho que no me compraba algún chichecito para jugar y usar, dado que ya pasé un buen tiempo usando un NOKIA 5200 (sin romperlo) decidí que podía pasar a otro nivel, salir de la adolescencia torpe de no poder mantener intacto un aparatito; madurar para asumir la responsabilidad de tener algo caro, pequeño de tamaño sin que se me caiga, deje de funcionar en menos de 6 meses de uso (algo que no pude hacer con mis ex-celulares —Motorola U6 y Motorola V3—). Para el que no está acostumbrado a tener un smart phone, la primer experiencia de uso es molesta, uno lo ve como un teléfono, pero en realidad lo tiene que ver como una computadora o PDA, porque sino las ganas de tirarlo por la ventana son bastante fuertes. —Pero si yo antes, para hacer una simple llamada, apretaba el botón verde, buscaba en contacto usando los números (único teclado de cualquier telefono) y listo! Ahora, queridísimo y flamante usuario de smartphone, no es tan sencillo. Por lo menos con el HTC G1 tenes que: Apretar el botoncito verde Elegir la solapa correspondiente (tenes cuatro: Dialer -para usar los números presionandolos desde la pantalla-, Call log -que [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 1px 3px;" src="http://www.textually.org/textually/archives/images/set3/g1officialnewnew.jpg" alt="" width="178" height="140" />Hacía mucho que no me compraba algún chichecito para jugar y usar, dado que ya pasé un buen tiempo usando un NOKIA 5200 (sin romperlo) decidí que podía pasar a otro nivel, salir de la adolescencia torpe de no poder mantener intacto un aparatito; madurar para asumir la responsabilidad de tener algo caro, pequeño de tamaño sin que se me caiga, deje de funcionar en menos de 6 meses de uso (algo que no pude hacer con mis ex-celulares —Motorola U6 y Motorola V3—).</p>
<p><span id="more-270"></span>Para el que no está acostumbrado a tener un smart phone, la primer experiencia de uso es molesta, uno lo ve como un teléfono, pero en realidad lo tiene que ver como una computadora o PDA, porque sino las ganas de tirarlo por la ventana son bastante fuertes.</p>
<p>—Pero si yo antes, para hacer una simple llamada, apretaba el botón verde, buscaba en contacto usando los números (único teclado de cualquier telefono) y listo!</p>
<p>Ahora, queridísimo y flamante usuario de smartphone, no es tan sencillo. Por lo menos con el HTC G1 tenes que:</p>
<ol>
<li>Apretar el botoncito verde</li>
<li>Elegir la solapa correspondiente (tenes cuatro: <em>Dialer</em> -para usar los números presionandolos desde la pantalla-, <em>Call log</em> -que te dice las llamadas entrantes/salientes/perdidas, <em>Contacts</em> -listado de contactos- y <em>Favorites</em> -que se va llenando sola con los números más utilizados-)</li>
<li>Al elegir Contacts te aparecen todos los contactos, podes: a) abrir el teclado y tipear el nombre -hace búsqueda incremental- o b) mover la lista de contactos con el dedo para elegir a quien llamar.</li>
<li>Luego de elegir podes apretar el botón verde nuevamente y llama al primer número de ese contacto o elegir otro de los números de ese contacto y así llamar a su &#8220;<em>Work</em>&#8221; por ejemplo.</li>
</ol>
<p>No es tan fácil como antes, claro que ahora tengo la dirección de mail de los contactos (no solamente como dato ya que puedo usarla para enviarle un correo), multiples datos asignables al contacto como cualquier agenda y la foto de cada contacto descargada directamente de facobook, porque hay una aplicacioncita para android que se conecta a tu FB, se fija si hay contactos con datos similares (nombre, email) y descarga la foto que tiene de su perfil ese contacto y la ubica en tu agenda telefónica.</p>
<p>Pros y contras, como siempre. Igualmente el <em>teléfono inteligente</em> está mejor que mi teléfono para llamar únicamente que tenía antes. Usa Android -que es software libre- y a pesar de sus DRMs muy a la vista, hay muchas aplicaciones (libres) portadas a Android, como un cliente de OpenSSH, cliente de correo a elección y además muchas aplicancioncitas que te hacen la vida más fácil.</p>
<p>Desgraciadamente solo funciona en modo EDGE y no 3G (me cansé de buscar por qué ya que tiene el mismo hardware de conectividad que el HTC TyTN y sí funciona en 3G de Movistar), por lo que la conectividad a inet es lenta.</p>
<p>Para aquellos que estén pensando en cambiar a un smartphone piensen si les sirve tener tanta información (agenda y datos) en un aparato móvil y que tener todo esto implicará mayor complejidad de uso.</p>
<p>Ah! Y otra cosa muy importante, si sos medio reacio a enviar tus datos privados a grandes empresas como Google, no te compres estas cosas porque están pensados para que todo el mundo confíe plenamente en grandes corporaciones (no es mi caso, pero soy geek y creo saber como evitar que esto ocurra).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielcoletti.com.ar/2009/05/31/nuevo-juguete-htc-dream-g1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uno, dos, tres, cuatrocincoseis (siete-ocho-nueve) y cero!</title>
		<link>http://www.danielcoletti.com.ar/2009/02/13/uno-dos-tres-cuatrocincoseis-siete-ocho-nueve-y-cero/</link>
		<comments>http://www.danielcoletti.com.ar/2009/02/13/uno-dos-tres-cuatrocincoseis-siete-ocho-nueve-y-cero/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 16:59:12 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Cosas de la vida]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Técnicos]]></category>
		<category><![CDATA[epoch]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[unix time]]></category>

		<guid isPermaLink="false">http://www.danielcoletti.com.ar/?p=262</guid>
		<description><![CDATA[Hoy a las 21:31:30 (hora de Buenos Aires) el reloj UNIX mostrará la secuencia de números 1234567890. ¿No es re lindo? Lástima que no tengo este reloj, sino me sentaría a ver pasar los segundos y preparar una cámara para sacarle una fotito. Me tendré que conformar con escribir watch -n 1 "perl -e \"print time() . \\\"\n\\\"\"" en una laptop y mirar el monitor sin pestañar. Salud a todos los geeks que -como yo- nos juntaremos para vernos las caras y decir &#8220;No podeeeeeessss ser tan geek&#8221;]]></description>
			<content:encoded><![CDATA[<p>Hoy a las 21:31:30 (hora de Buenos Aires) el<a href="http://en.wikipedia.org/wiki/Unix_time"> reloj UNIX</a> mostrará la secuencia de números 1234567890. ¿No es re lindo?</p>
<p>Lástima que no tengo <a href="http://www.thinkgeek.com/homeoffice/lights/a7c5/" target="_blank">este reloj</a>, sino me sentaría a ver pasar los segundos y preparar una cámara para sacarle una fotito.</p>
<p>Me tendré que conformar con escribir</p>
<pre>watch -n 1 "perl -e \"print time() . \\\"\n\\\"\""</pre>
<p>en una laptop y mirar el monitor sin pestañar.</p>
<p>Salud a todos los geeks que -como yo- <a href="http://www.1234567890day.com/">nos juntaremos</a> para vernos las caras y decir &#8220;No podeeeeeessss ser tan geek&#8221; <img src='http://www.danielcoletti.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielcoletti.com.ar/2009/02/13/uno-dos-tres-cuatrocincoseis-siete-ocho-nueve-y-cero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quiero ser como openfire ¿y vos?</title>
		<link>http://www.danielcoletti.com.ar/2008/12/22/quiero-ser-como-openfire-%c2%bfy-vos/</link>
		<comments>http://www.danielcoletti.com.ar/2008/12/22/quiero-ser-como-openfire-%c2%bfy-vos/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 15:20:14 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Revisiones de Software]]></category>
		<category><![CDATA[Técnicos]]></category>
		<category><![CDATA[fácil]]></category>
		<category><![CDATA[openfire]]></category>
		<category><![CDATA[software libre]]></category>

		<guid isPermaLink="false">http://www.danielcoletti.com.ar/?p=241</guid>
		<description><![CDATA[Qué lindo que es cuando uno se pone viejo y hay gente que lo entiende, pero mejor aún es cuando uno se pone viejo y hay programadores que lo entienden a uno. Será porque un fue (¿?) &#8220;programador&#8221; y cree que es mejor que te entienda un/a programador/a a la gente. No sé, pero lo cierto es que hace pocas semanas probé de instalar openfire y quedé atónito, creyendome alguien totalmente comprendido, por fin una aplicación libre para servidor que se instala tan fácilmente, se configura aún más facilmente y tiene una interfaz de administración tan bien acabada. Hace algunos años, muchos desgraciadamente, no podía irme a dormir si no había terminado de configurar ese programa, esa aplicación o esa configuración que hace aquello tan maravilloso. Recuerdo hasta momentos donde me desperté soñando la solución a un bug o una forma diferente de encarar una funcionalidad nueva. Esos tiempos han pasado y ya hace tiempo. Ahora, que estoy más viejo, quiero que las cosas funcionen de una, nada de andar configurando esto para que ande esto otro que justamente es lo que necesita el sistema que (tan solo) quiero probar. Lógicamente apoyo esto de no tener que reinventar la rueda [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 2px;" src="http://www.igniterealtime.org/images/logo_openfire.gif" alt="" width="29" height="34" />Qué lindo que es cuando uno se pone viejo y hay gente que lo entiende, pero mejor aún es cuando uno se pone viejo y hay programadores que lo entienden a uno. Será porque un fue (¿?) <em>&#8220;programador&#8221;</em> y cree que es mejor que te entienda un/a programador/a a la gente. No sé, pero lo cierto es que hace pocas semanas probé de instalar <a href="http://www.igniterealtime.org/projects/openfire/index.jsp" target="_blank">openfire</a> y quedé atónito, creyendome alguien totalmente comprendido, por fin una aplicación libre para servidor que se instala tan fácilmente, se configura aún más facilmente y tiene una interfaz de administración tan bien acabada.</p>
<p><span id="more-241"></span></p>
<p>Hace algunos años, muchos desgraciadamente, no podía irme a dormir si no había terminado de configurar ese programa, esa aplicación o esa configuración que hace aquello tan maravilloso. Recuerdo hasta momentos donde me desperté soñando la solución a un bug o una forma diferente de encarar una funcionalidad nueva. Esos tiempos han pasado y ya hace tiempo. Ahora, que estoy más viejo, quiero que las cosas funcionen de una, nada de andar configurando esto para que ande esto otro que justamente es lo que necesita el sistema que (tan solo) quiero probar.</p>
<p>Lógicamente apoyo esto de no tener que reinventar la rueda todo el tiempo ¿Para qué hacer una aplicación accesible vía browser y programar (primero) un servidor web? (existiendo <a href="http://www.apache.org" target="_blank">apache</a>) Claro que es un ejemplo burdo, pero hay muuuuchos sistemas, compañías y programadores que caen en esta trampa, generalmente porque no conocen el software libre, su software es software privativo y creen cosas de lo más estúpidas como: si no hay que pagarlo seguramente es una porquería (o algo cercano a ello), si uso un software libre mi software entonces tiene que ser libre también, etcétera, etcétera, etcétera.</p>
<p>Pero es tan lindo cuando uno instala un software de servidor e instantáneamente se lo puede probar. El caso de openfire es uno de ellos, instalas el paquete, levantas el servicio y guala! todo anda. Accedes desde el browser a la interfaz de administración, te bajas el cliente <a href="http://es.wikipedia.org/wiki/XMPP" target="_blank">XMPP</a> (<a href="http://www.igniterealtime.org/projects/spark/index.jsp" target="_blank">Spark</a>) o <a href="http://es.wikipedia.org/wiki/XMPP#Clientes">cualquier otro</a> y lo podes probar, queres ver qué onda alguna de sus extensiones y desde la interfaz web la instalas (el sistema la baja de sitio web correspondiente), la activas y ya está. Ningún shell, ningún comando.</p>
<p>No hay que configurar ningún otro demonio, ninguna base de datos, crear ningún usuario (bueno, lo hace el instalador del paquete) ni preparar nada. Ah! no, miento, hay que tener un JRE disponible (porque está escrito en JAVA).</p>
<p>Este tipo de facilidades solo las he visto en aplicaciones (libres) para el escritorio. Firefox, Thunderbird, OpenOffice.org y muchos otros no requieren más que eso&#8230; instalarlos, para empezar a usarlos.</p>
<p>Claro, openfire resuelve algo que está relativamente aislado en lo que se refiere a subsistemas necesarios, es un servidor XMPP. Solo es necesario implementar el protocolo, brindar una interfaz de administración y listo, pero igualmente hay otros servidores XMPP que son muy diferentes en lo que refiere administración e instalación.</p>
<p>Lo pudieron haber escrito en J2EE, como tantas aplicaciones libres escritas hoy (lo que hace <strong>muy incomodo</strong> de probar algún sistema) o la interfaz web la pudieron haber escrito en PHP y así requerir que apache esté configurado con su VirtualHost correspondiente, lógicamente se requiere guardar algún dato en alguna parte y qué mejor que usar una base de datos MySQL (claro que para eso hay que tener un usuario para esa base y darle los permisos necesarios).</p>
<p>Nada de todo esto es imposible de hacer, siempre está el archivo INSTALL que te dice como hacerlo &#8220;en dos patadas&#8221;, pero cansa. Si uno está evaluando software para ver si lo evalúa con mayor énfasis generalmente se baja todo lo que parece que hace lo que uno necesita. Si ya para instalarlo hay que dar algunas vueltas, preparar tantas cosas el listado de software posible se va reduciendo solo y las expectativas del testeador bajan.</p>
<p>Para mi una aplicación libre tiene muchas más posibilidades de ser popular si su método de instalación y administración está bien pensado, bien fácil, bien APB (y también tener un modo avanzado para hacer las cosas como se debe sin tantos defaults). Sino se tiene que hacer popular de la manera tradicional, mostrando lo buena que es técnicamente y que la gente (poca inicialmente) hable bien de ella. El camino largo, pero no necesariamente mejor (técnicamente hablando) que el propuesto.</p>
<p>Gracias a la gente de Openfire y espero que muchos programadores de software libre aprendan de esta experiencia.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielcoletti.com.ar/2008/12/22/quiero-ser-como-openfire-%c2%bfy-vos/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>DKIM &#8211; DomainKeys Identified Mail</title>
		<link>http://www.danielcoletti.com.ar/2008/04/03/dkim-domainkeys-identified-mail/</link>
		<comments>http://www.danielcoletti.com.ar/2008/04/03/dkim-domainkeys-identified-mail/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 14:27:16 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Revisiones de Software]]></category>
		<category><![CDATA[Técnicos]]></category>
		<category><![CDATA[DKIM DomainKeys Yahoo!]]></category>

		<guid isPermaLink="false">http://www.danielcoletti.com.ar/index.php/2008/04/03/dkim-domainkeys-identified-mail/</guid>
		<description><![CDATA[Desde hace ya un tiempo existe una RFC que se creó para crear una nueva técnica (adicional) en la lucha contra el SPAM y el phishing. Yahoo! diseño, supongo en conjunto con otros, la RFC 4871 (DomainKeys Identified Mail (DKIM) Signatures) que cuyo objetivo es el de -sin modificar la forma en que se envía y recibe mail, o sea, el protocolo SMTP- se pueda implementar un método de verificación de remitente, a nivel dominio, usando claves públicas y privadas. El método básicamente es el agregar un encabezado SMTP cuando se envía el mail con un hash (firma) creado con la parte privada de la clave RSA. Cuando el MTA receptor recibe este correo, hace una consulta DNS, obtiene la clave pública del dominio del cual fue enviado el correo y verifica la autenticidad del hash. En este post voy a describir cómo lo implementé en un debian etch. Implementación Para implementarlo finalmente elegimos usar dk-milter o dk-filter (que es lo mismo). Debian trae un paquete en lenny, por lo que me baje los fuentes con: apt-get -t lenny source dk-milter y después lo compilé (con dpkg-buildpackage) Lo primero que hay que hacer es armar los certificados. El paquete trae [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace ya un tiempo existe una RFC que se creó para crear una nueva técnica (adicional) en la lucha contra el SPAM y el phishing. Yahoo! diseño, supongo en conjunto con otros, la <a href="http://www.ietf.org/rfc/rfc4871.txt" target="_blank">RFC 4871</a> (DomainKeys Identified Mail (DKIM) Signatures) que cuyo objetivo es el de -sin modificar la forma en que se envía y recibe mail, o sea, el protocolo SMTP- se pueda implementar un método de verificación de remitente, a nivel dominio, usando claves públicas y privadas.</p>
<p>El método básicamente es el agregar un encabezado SMTP cuando se envía el mail con un hash (firma) creado con la parte privada de la clave RSA. Cuando el MTA receptor recibe este correo, hace una consulta DNS, obtiene la clave pública del dominio del cual fue enviado el correo y verifica la autenticidad del hash.</p>
<p>En este post voy a describir cómo lo implementé en un debian etch.</p>
<p><span id="more-22"></span></p>
<p><strong>Implementación</strong></p>
<p>Para implementarlo finalmente elegimos usar dk-milter o dk-filter (que es lo mismo).<br />
Debian trae un paquete en lenny, por lo que me baje los fuentes con:</p>
<p><code>apt-get -t lenny source dk-milter</code></p>
<p>y después lo compilé (con <code>dpkg-buildpackage</code>)</p>
<p>Lo primero que hay que hacer es armar los certificados. El paquete trae un comandito para hacerlo <code>gentxt.csh</code>, este comando se ejecuta pasandole dos argumentos, el &#8220;selector&#8221; que es un nombre (yo le mandé &#8220;calculin&#8221;) y el nombre del dominio al que pertenece el certificado, en este caso fue &#8220;cafelug.org.ar&#8221;.</p>
<p>Genera dos archivos:</p>
<ul>
<li>calculin.public</li>
<li>calculin.private</li>
</ul>
<p>El archivo privado es el más importante y hay que ponerlo en alguna parte que después lea el demonio, yo lo mandé en /etc/postfix/domainkeys.</p>
<p>Luego hay que configurar el DNS y también algunos parámetros del dk-filter.</p>
<p>El dk-filter se configura tocando el archivo <code>/etc/default/dk-filter</code> y así quedó:</p>
<p><code># Sane defaults: log to syslog<br />
DAEMON_OPTS="-l -m smtpd,postfix"<br />
# Sign for example.com with key in /etc/mail/domainkey.key using<br />
# selector '2007' (e.g. 2007._domainkey.example.com)<br />
DAEMON_OPTS="$DAEMON_OPTS -d cafelug.org.ar -s /etc/postfix/domainkeys/dk_cafelug.org.ar.pem -S calculin"<br />
# See dk-filter(8) for a complete list of options<br />
#<br />
# Uncomment to specify an alternate socket<br />
#SOCKET="/var/run/dk-filter/dk-filter.sock" # default<br />
#SOCKET="inet:54321" # listen on all interfaces on port 54321<br />
SOCKET="inet:1025@localhost" # listen on loopback on port 12345<br />
#SOCKET="inet:12345@192.0.2.1" # listen on 192.0.2.1 on port 12345<br />
</code></p>
<p>Entre las opciones esta <code>-l</code> que es para que mande los logs a través de syslog, <code>-m smtpd,postfix</code> no sé si es necesario (entre las pruebas que hice quedó). Las otras son más importantes:</p>
<ul>
<li><code>-d cafelug.org.ar</code> (el dominio del certificado, se pueden poner más dominios)</li>
<li><code>-s /etc/postfix/domainkeys/dk_cafelug.org.ar.pem</code> (el lugar donde está la clave privada)</li>
<li><code>-S calculin</code> (el &#8220;selector&#8221;).</li>
</ul>
<p>Y la parte que me volvió un poco loco fue la opción de <code>SOCKET=</code>, postfix corre en chroot, por lo que la opción <code>SOCKET="/var/run/dk-filter/dk-filter.sock"</code> me tiraba &#8221;&#8217;file not found&#8221;&#8217;&#8230; estuve un rato para acordarme y darme cuenta que no lo encontraba porque no estaba dentro del jail. En fin, lo deje escuchando en un puerto y así no da problemas.</p>
<p><strong>Configuración de DNS</strong></p>
<p>La configuración de DNS es &#8221;tricky&#8221;, la documentación que encontré no es muy específica. La forma de correcta de setearlo es poniendo &#8221;&#8217;dos&#8221;&#8217; entradas de tipo &#8221;TXT&#8221; en la zona:</p>
<p><code>calculin._domainkey.cafelug.org.ar. TXT "k=rsa; t=y; p=MFwwDQYJ[...]xfS+g/UlcszvzvY3UPFNEVGEecCAwEAAQ=="</code></p>
<p><code>_domainkey.cafelug.org.ar. TXT "t=y; o=-"</code></p>
<p>La primera indica la clave pública (encodeada en Base64) para el selector &#8221;calculin&#8221; (que use con el gentxt.csh) y es importante que esté con el selector adelante y seguido de un &#8221;.&#8221; (punto). O sea &#8221;&lt;selector&gt;._domainkey.&lt;dominio&gt;&#8221;, las demás opciones (&#8221;&#8217;k=&#8221;&#8217; y &#8221;&#8217;t=&#8221;&#8217;) están claramente documentadas en la <a href="http://tools.ietf.org/html/rfc4870" target="_blank">RFC 4870</a>.</p>
<p>La segunda entrada indica cómo deben ser tratados los mails que llegan de este dominio, &#8221;&#8217;t=&#8221;&#8217; indica que el dominio está en &#8221;test-mode&#8221; (esto se saca una vez que lo pasamos a producción), luego la opción &#8221;&#8217;o=&#8221;&#8217; tiene varios valores, &#8221;~&#8221; indica que los mails pueden ser firmados o no, en cambio &#8221;-&#8221; indica que todos los mails enviados van a salir firmados.</p>
<p><strong>Configuración de postfix</strong></p>
<p>La configuración de postfix es simple, lo único que hay que tener en cuenta es la versión de postfix. Esto está soportado desde la versión 2.3.</p>
<p><code>smtpd_milters = inet:127.0.0.1:1025<br />
non_smtpd_milters = inet:127.0.0.1:1025<br />
</code></p>
<p><code>smtpd_milters</code> indica donde encuentra los &#8221;milters&#8221; definidos (ojo con la sintaxis, no es la misma que usa el dk-milter, intercambia la posición del &#8221;host&#8221; y &#8221;puerto&#8221;, así que no hay que hacer cut&amp;paste).</p>
<p><code>non_smtpd_milters</code> es para los mails generados localmente.</p>
<p><strong>Probando la configuración</strong></p>
<p>Para probar si todo quedó bien se pueden enviar mails a una cuenta de Yahoo! que hace el chequeo (aparece una leyenda debajo del &#8220;From:&#8221; visible desde la interfaz web (sin tener que ver los encabezados completos). La otra forma es enviando un mail a una cuenta que responde automáticamente diciendo el estado del tema. Esta cuenta es <em>autorespond e@n dk.elandsys.com</em></p>
<p>Lo que hay que tener muy en cuenta es que tanto Yahoo! como el servidor que recibe el mail de la dirección de testeo tienen que tener la zona de nuestro dominio actualizada. Generalmente van a tenerla en un cache (si es que ya mandaron algun mail al dominio en cuestión), por lo que el test puede darnos que falló, cuando en realidad solo hay que tener paciencia y esperar a que nuestra zona expire en el DNS cache que leen estos MTA.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielcoletti.com.ar/2008/04/03/dkim-domainkeys-identified-mail/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Virtualización con XEN</title>
		<link>http://www.danielcoletti.com.ar/2006/11/13/virtualizacion-con-xen/</link>
		<comments>http://www.danielcoletti.com.ar/2006/11/13/virtualizacion-con-xen/#comments</comments>
		<pubDate>Mon, 13 Nov 2006 19:07:33 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Revisiones de Software]]></category>
		<category><![CDATA[Técnicos]]></category>
		<category><![CDATA[paravirtualización]]></category>
		<category><![CDATA[software libre]]></category>
		<category><![CDATA[virtualización]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://www.danielcoletti.com.ar/index.php/2006/11/13/virtualizacion-con-xen/</guid>
		<description><![CDATA[La virtualización existe desde hace mucho tiempo, más de veinte años creo yo]]></description>
			<content:encoded><![CDATA[<p>La virtualización es un concepto que existe desde hace años implementado por empresas como IBM, Hewlett Packard (entre otras) en sus sistemas operativos y equipos mainframe. Pero es en estos días que está tomando un interés mayor por las empresas sobre esta tecnología.<br />
En este artículo se hará una revisión sobre el monitor de máquinas virtuales libre (o hypervisor) XEN licenciado bajo GPL y que funciona en arquitecturas x86 (32 y 64 bits).<br />
<span id="more-10"></span><br />
<span style="font-size: xx-small;">Historia</span></p>
<p>Conocer los inicios de los proyectos de software siempre es bueno, porque da una visión sobre el futuro del proyecto y de su estado actual, especialmente en software libre.</p>
<p>Xen fue inicialmente un proyecto de investigación de la Universidad de Cambridge (la primer versión del software fue publicada a fines de 2003). Este proyecto de investigación fue liderado por Ian Pratt, quien luego formó una empresa -junto con otras personas- para dar servicios de valor agregado como soporte, mantenimiento y capacitación sobre Xen en Enero de 2005. Esta empresa es Xensource Inc., recibió fondos por millones de dolares de diferentes inversores y actualmente mantiene Xen (junto con otras empresas y la comunidad), también se dedica a programar aplicaciones adicionales no libres para facilitar el uso, instalación y mantenimiento de Xen.</p>
<p>Dado que Xen está licenciado bajo GPL el código no puede cerrarse, y no es solo Xensource quien mantiene el código, sino que varias empresas importantes como IBM, Sun, HP, Intel, AMD, RedHat, Novell están sumamente involucradas en el desarrollo asignando programadores al mantenimiento de este software.</p>
<p><span style="font-size: xx-small;">Paravirtualización</span></p>
<p>En las computadoras que estamos acostumbrados a utilizar a diario el sistema operativo es el software mas poderoso, ya que controla todos los recursos del CPU, como el uso compartido del mismo entre las aplicaciones, memoria virtual, I/O a dispositivos, entre otras cosas. Estas tareas las puede realizar gracias a que los procesadores modernos soportan niveles de privilegios o rings. El sistema operativo, el supervisor,  corre en el ring 0 (más privilegiado) y las aplicaciones en ring 3 (menos privilegiado). ¿Cómo se adapta Xen a este esquema?, utiliza una técnica llamada &#8220;ring deprivileging&#8221;, donde el sistema operativo es modificado para poder ejecutarse en ring 1 dejando el ring 0 para el Xen, el cual es conocido como Hypervisor. Este mecanismo le permite a Xen tener más poder que el sistema operativo controlando los recursos a los cuales este puede acceder. Este esquema de usos de rings es lo que se llama &#8220;paravirtualización&#8221;. A diferencia de lo que dice Xensource en su página web, ellos no fueron los que inventaron el concepto, sino que existe desde hace ya algunos años.</p>
<p>La modificación que deben sufrir los sistemas operativos para ser virtualizados en principio presenta una limitación, ya que esto solo puede realizarse en software abierto (o por el fabricante del software, en el caso del software propietario). Sin embargo, esta limitación es eliminada con las nuevas tecnologías de virtualización de Intel y AMD, que permiten ejecutar sistemas operativos en ring 0 sin necesidad de modificación alguna, dejando un nivel de privilegio especial para el Hypervisor. Este nivel de privilegio especial se llama root-mode, el resto de los componentes corren en non-root-mode.</p>
<p>El rendimiento superior de Xen es una de sus características principales, ya que los sistemas virtualizados corren directamente sobre el procesador, sin emulación. Sistemas de virtualización como VMWARE y Virtual PC o Virtual Server de Microsoft utilizan una técnica conocida como &#8220;binary translation&#8221;, donde las instrucciones privilegiadas son reemplazadas con fragmentos de código que simulan las mismas.</p>
<p><span style="font-size: xx-small;">Usos de Xen (o de la virtualización en general)</span></p>
<p>Xen es extremedamente util para hacer un mejor uso del hardware disponible en una empresa. Generalmente el hardware que se utiliza para un servidor de páginas web, servidor de correo u otros servicios de red no es utilizado en la totalidad de su capacidad.<br />
Al migrar estos servicios a máquinas virtuales, el hardware se utiliza mejor ya que es compartido por todas las máquinas virtuales (y se achican los espacios físicos que se necesitan en los datacenters).<br />
Adicionalmente al mejor uso del hardware, se agrega la posibilidad de tener máquinas virtuales para usarlas como respaldo de equipos en producción. Si un equipo crítico de producción tiene un problema de hardware se puede activar una máquina virtual (ya preparada) para que tome el control de este servicio mientras se repara -con más tiempo y tranquilidad- el problema de hardware.<br />
Otra posibilidad muy interesante es la posibilidad de liberarse de equipos viejos que están brindando un servicio desde hace años, muchas veces trabajan sobre equipamiento obsoleto (y que generalmente son grandes en uso de espacio físico). Estos equipos se pueden migrar a máquinas virtuales tranquilamente.<br />
Por último, la virtualización es muy útil para empresas que desarrollan software, ya que es común encontrarse con la necesidad de los programadores de probar algun software nuevo (bibliotecas de funciones, nuevos compiladores, etc.) que pueden perjudicar el trabajo de otros programores. En estos casos, solo basta con activar una nueva máquina virtual, instalar las cosas que se necesitan, hacer las pruebas, extraer las conclusiones y luego borrar todo.</p>
<p><span style="font-size: xx-small;">Soporte de distribuciones Linux y otros ss.oo.</span></p>
<p>Las grandes empresas de distribuciones Linux (RedHat y Novell) están sacando versiones de sus distribuciones ya preparadas para Xen, muchas otras distribuciones como Debian, Fedora y otras también tienen kernels disponibles para poder ser virtualizados o que actúen como &#8220;host&#8221; de máquinas virtuales (domain 0).</p>
<p>Existen otros sistemas operativos que se pueden utilizar para trabajar como domain 0 y también ejecutarse dentro de una máquina virtual, por ejemplo NetBSD y Opensolaris. Dado que Xen implementa paravirtualización, para que un sistema operativo se ejecute dentro de una máquina virtual Xen éste debe ser modificado. Siempre y en cuanto el equipo donde corre Xen es un equipo de arquitectura x86 común. En el caso de utilizar un equipo con la nueva tecnología de Intel (Intel-VT) o AMD (AMD-V), Xen puede ejecutar máquinas virtuales de sistemas operativos propietarios (sin necesidad de modificar esos sistemas operativos) como Microsoft Windows.</p>
<p>El uso de estos nuevos procesadores de Intel y AMD abre enormemente el mercado donde se puede implementar Xen, esto, sumado al rendimiento superior que se logra al utilizar paravirtualización, hace de Xen un software competitivo y muy tentador a la hora de seleccionar un hypervisor.</p>
<p>En lo que respecta a distribuciones que venden las suscripciones para obtener mantenimiento, RedHat sacará sus suscripciones permitiendo usar una suscripción para todas las máquinas virtuales que ejecuten RHEL dentro de un mismo hardware. Reduciendo aún más los costos al utilizar virtualización.</p>
<p><span style="font-size: xx-small;">Interfaces de administración</span></p>
<p>Dado que Xen es software libre constantemente se van conociendo nuevas interfaces de administración para el producto.<br />
Actualmente las más destacadas son Enomalism (escrita en python) y Xenman (gtk). RedHat por su parte está desarrollando una intefaz de administración para Xen llamada virt-manager. Y por último Xensource vende un producto (Xen Enterprise) que trae una interfaz de administración, monitoreo que también algunas herramientas útiles para instalar más fácilmente diferentes sistemas operativos en las máquinas virtuales.<br />
Todas las interfaces (exceptuando la de Xensource) están en estado beta y no todas son fáciles de instalar. La más compleja es Enomalism por su metodología de autenticación de usuarios. Para autenticar usuarios utiliza FDS (Fedora Directory Service) que es un producto (libre) para manejar varios directorios (LDAP) en forma centralizada. FDS es un producto pensado para empresas muy grandes o sistemas de directorios complejos, y si bien sus pantallas son todas gráficas, no es muy intuitivo para usarlo.<br />
De todas formas los comandos que provee Xen para interactuar con las máquinas virtuales son muy fáciles de usar y no son muchos.</p>
<p><span style="font-size: xx-small;">Características de Xen</span></p>
<p>Entre las características de Xen se destaca su velocidad, lo pequeño de su código fuente (menos de 50.000 lineas de código), un excepcional particionamiento de recursos de E/S de bloques y red, CPU y memoria. La posibilidad de &#8220;mover en caliente&#8221; máquinas virtuales de un equipo de hardware a otro. Un excelente rendimiento (entre 0.1% y 3% de overhead). Tiene soporte de hasta 32 procesadores en paralelo (SMP), soporta PAE (Physical Address Extension) para servers de 32 bits con más de 4Gb. de memoria RAM y tiene soporte para hardware de virtualización Intel VT y AMD Pacifica.</p>
<p><span style="font-size: xx-small;">Detalles técnicos</span><br />
La instalación de Xen no requiere más que un kernel con el parche de Xen y las herramientas de usuario para poder crear, destruir y modificar los valores de las máquinas virtuales en caliente (cantidad de memoria, parámetros del algorítmo de particionamiento de CPU que esté utilizando la máquina virtual) entre otras herramientas.<br />
Los archivos de configuración de las máquinas virtuales de Xen son muy simples. Un ejemplo sería el siguiente:</p>
<p>kernel = &#8220;/boot/vmlinuz-2.6-xen&#8221;<br />
ramdisk = &#8220;/boot/initrd-2.6-xen.img&#8221;<br />
memory = 128<br />
name = &#8220;mv01&#8243;<br />
vif = ['mac=52:54:00:12:34:56','bridge=xenbr0']<br />
disk = ['phy:vg/vg01,hda1,w','phy:vg/vg01swap,hda2,w']<br />
root = &#8220;/dev/hda1 ro&#8221;<br />
vcpus = 2<br />
cpus = &#8220;0-3,5,^1&#8243;<br />
pae = 0<br />
acpi = 0<br />
cdrom=&#8221;/dev/cdrom&#8221;</p>
<p>Los archivos de kernel y ramdisk residen en el disco del domain 0, &#8220;memory&#8221; indica la cantidad de memoria en megabytes que se le da inicialmente a la máquina virtual. &#8220;vif&#8221; indica los parámetros de la interfaz de red, su MAC Address y también el nombre que tiene la interfaz (del domain 0) que actúa haciendo un bridge entre el domain 0 y la intefaz de red virtual de la máquina virtual. Por defecto Xen crea un bridge para enviarle los paquetes que llegan a la placa física de red que están destinados a una u otra máquina virtual.<br />
&#8220;disk&#8221; indica los dispositivos físicos donde están los discos (o particiones) que usa esa máquina virtual, generalmente se utiliza LVM (Logical Volumen Manager) para darle más flexibilidad al espacio que puede utilizar la máquina virtual. &#8220;root&#8221; es un parámetro que solo se usa en máquinas virtuales Linux que indica qué dispositivo (visto desde la máquina virtual, por eso el dispositivo es /dev/hda1) y cómo va a montarlo inicialmente, generalmente es modo solo lectura (ro). Con &#8220;vcpus&#8221; se puede simularle a la máquina virtual que tiene más procesadores de los que en realidad tiene (muy práctico para programación de aplicaciones que usen varios procesadores). El valor de &#8220;cpus&#8221; indica sobre qué CPU (físicas) va a correr esta máquina virtual, en este caso correrá sobre el procesador 0, 2, 3 y 5.<br />
Los parámetros de acpi=0 y pae=0 indican que no se utilizará ACPI ni PAE en esta máquina virtual.<br />
En el caso del valor de &#8220;cdrom&#8221; se le indica el dispositivo asignado a la lectora de CD, el valor de este parámetro puede ser el nombre de un archivo del disco (del domain 0), por ejemplo &#8220;/mnt/images/w2000server.iso&#8221; que puede ser util para la instalación de la máquina virtual.<br />
Con este archivo creado y el disco indicado (&#8220;/dev/vg/vg01&#8243; en el ejemplo) con el sistema operativo ya instalado se puede levantar o activar la máquina virtual utilizando el comando &#8220;xm create -c mv01&#8243;.</p>
<p><span style="font-size: xx-small;">Otros comandos de Xen</span></p>
<p>- xm top (muestra el uso de recursos de cada máquina virtual)<br />
- xm mem-set   (ajusta la cantidad de memoria que puede utilizar la máquina virtual en caliente)<br />
- xm migrate   (mueve en caliente la máquina virtual para que siga ejecutandose en otro equipo)<br />
- xm shutdown  (ejecuta el proceso de apagado de la máquina virtual)<br />
- xm list (lista todas las máquinas virtuales en funcionamiento)</p>
<p><span style="font-size: xx-small;">Conclusiones</span><br />
Xen es un producto probado, utilizado y listo para usar en producción. El hecho de que esté licenciado bajo GPL no solo baja mucho los costos, sino que también le da mucha flexibilidad y proyección a futuro (en la vida del proyecto).<br />
Este producto combinado con sistemas de storage propietarios o libres (utilizando LVM -Logical Volumen Manager, mdadm -manejo de RAID por software para Linux-, IET -iSCSI Enterprise Target- y GFS -Global FileSystem-) puede dar excelentes resultados, alta disponibilidad y una escalabilidad sorprendente.<br />
Mi recomendación es probarlo, aunque sea para virtualizar sistemas operativos libres y luego avanzar sobre Xen en hardware que soporte la separación de privilegios (rings).</p>
<p><span style="font-size: xx-small;">Agradecimientos</span></p>
<ul>
<li>A Diego Woitasen por ayudarme con la escritura del artículo.</li>
</ul>
<p><span style="font-size: xx-small;">Referencias y lectura adicional</span><br />
<a class="linkification-ext" title="Linkification: http://en.wikipedia.org/wiki/Xen" href="http://en.wikipedia.org/wiki/Xen">http://en.wikipedia.org/wiki/Xen</a><br />
<a class="linkification-ext" title="Linkification: http://www.xensource.com" href="http://www.xensource.com/">http://www.xensource.com</a><br />
<a class="linkification-ext" title="Linkification: http://www.enomalism.com" href="http://www.enomalism.com/">http://www.enomalism.com</a><br />
<a class="linkification-ext" title="Linkification: http://xenman.sourceforge.net" href="http://xenman.sourceforge.net/">http://xenman.sourceforge.net</a><br />
<a class="linkification-ext" title="Linkification: http://www.linuxjournal.com/article/8540" href="http://www.linuxjournal.com/article/8540">http://www.linuxjournal.com/article/8540</a><br />
<a class="linkification-ext" title="Linkification: http://iscsitarget.sourceforge.net/" href="http://iscsitarget.sourceforge.net/">http://iscsitarget.sourceforge.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielcoletti.com.ar/2006/11/13/virtualizacion-con-xen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿tan dificil es?</title>
		<link>http://www.danielcoletti.com.ar/2006/04/15/%c2%bftan-dificil-es/</link>
		<comments>http://www.danielcoletti.com.ar/2006/04/15/%c2%bftan-dificil-es/#comments</comments>
		<pubDate>Sat, 15 Apr 2006 21:46:23 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Técnicos]]></category>
		<category><![CDATA[build-locales-archive]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[locales]]></category>

		<guid isPermaLink="false">http://www.danielcoletti.com.ar/index.php/2006/04/15/%c2%bftan-dificil-es/</guid>
		<description><![CDATA[Hace mucho, mucho tiempo había una vez una sola distribución de Linux conocida (y usable). Esa distribución se llamaba Slackware, luego, la ditribución que se empezaba a imponer era RedHat ya que permitía hace upgrades de distro completa (sin tener que reinstalar ni cosas locas), y más tarde &#8211;por lo menos para mi&#8211;, corriendo en pánico, huyendo despavorido de la pesadilla llamada RPMs, me pasé a Debian. Años más tarde, o sea, ahora &#8230; me encuentro con que quiero hacer algunas cosas básicas en otra distribución (que no sea Debian) y me vuelvo algo loco&#8230; Por ejemplo, ¿Es necesario que me tenga que recorrer todo google para encontrar cómo catzo se hace para recompilar locales en Fedora? Tan fácil es en Debian ejecutar &#8220;dpkg-reconfigure locales´´ que uno se imagina que en otras distribuciones tiene que haber algo similar. ¿Cómo hago en Fedora para tener disponible otro idioma si cuando lo instalé no marqué en &#8220;Idiomas disponibles&#8221; al Español? Bueno, no sé si realmente ésta es la aplicación correcta en Fedora, pero finalmente logré resolver el inconveniente ejecutando &#8220;build-locales-archive&#8221;. Un binario que viene (creo) dentro del paquete de la glibc. Para colmo de males, la aplicación que quería que apareciera en [...]]]></description>
			<content:encoded><![CDATA[<p>Hace mucho, mucho tiempo había una vez una sola distribución de Linux conocida (y usable). Esa distribución se llamaba <a href="http://www.slackware.org" target="_blank">Slackware</a>, luego, la ditribución que se empezaba a imponer era <a href="http://www.redhat.com" target="_blank">RedHat</a> ya que permitía hace upgrades de distro completa (sin tener que reinstalar ni cosas locas), y más tarde &#8211;por lo menos para mi&#8211;, corriendo en pánico, huyendo despavorido de la pesadilla llamada RPMs, me pasé a <a href="http://www.debian.org" target="_blank">Debian.</a></p>
<p>Años más tarde, o sea, ahora &#8230; me encuentro con que quiero hacer algunas cosas básicas en otra distribución (que no sea Debian) y me vuelvo algo loco&#8230;</p>
<p>Por ejemplo,  ¿Es necesario que me tenga que recorrer todo google para encontrar cómo catzo se hace para recompilar locales en <a href="http://fedora.redhat.com" target="_blank">Fedora</a>? Tan fácil es en Debian ejecutar &#8220;dpkg-reconfigure locales´´ que uno se imagina que en otras distribuciones tiene que haber algo similar.</p>
<p>¿Cómo hago en Fedora para tener disponible otro idioma si cuando lo instalé no marqué en &#8220;Idiomas disponibles&#8221; al Español?</p>
<p>Bueno, no sé si realmente ésta es la aplicación correcta en Fedora, pero finalmente logré resolver el inconveniente ejecutando &#8220;build-locales-archive&#8221;. Un binario que viene (creo) dentro del paquete de la glibc.</p>
<p>Para colmo de males, la aplicación que quería que apareciera en castellano sigue sin aparecer en nuestro hermoso idioma por el simple hecho de que no está traducida, así que ahora no sé si los locales estaban realmente compilados en este fedora o no, pero definitivamente no me funcionaban.</p>
<p>En fin &#8230; lo dejo acá escrito por si a alguien le pasa lo mismo, con suerte el tío google pasa por estos lares e indexa las palabras &#8220;cambiar&#8221; &#8220;locales&#8221; en fedora, o &#8220;reconfigure&#8221; &#8220;locales&#8221; en fedora, o algo que ayude a no perder varias páginas de navegación innecesariamente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielcoletti.com.ar/2006/04/15/%c2%bftan-dificil-es/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El maravilloso mundo de smarty</title>
		<link>http://www.danielcoletti.com.ar/2006/03/21/el-maravilloso-mundo-de-smarty/</link>
		<comments>http://www.danielcoletti.com.ar/2006/03/21/el-maravilloso-mundo-de-smarty/#comments</comments>
		<pubDate>Tue, 21 Mar 2006 14:38:44 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Revisiones de Software]]></category>
		<category><![CDATA[Técnicos]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smarty]]></category>

		<guid isPermaLink="false">http://www.danielcoletti.com.ar/index.php/2006/03/21/el-maravilloso-mundo-de-smarty/</guid>
		<description><![CDATA[Acabo de terminar la interfaz gráfica de un software libre (whale) y para armar toda la interfaz utilicé smarty. Smarty son unas clases de PHP que permiten el uso de plantillas. Lo fantástico del uso de estas plantillas es que tienen un reducido (pero muy util) set de funciones e intrucciones que se pueden poner dentro de al plantilla, para darle algo de &#8220;inteligencia&#8221;. En el sitio de smarty hay un (muy bien armado) Crash Course, que muestra rápidamente cómo se utilizan. Lo que más me gustó fue cuando tuve que hacer dos cosas: Internacionalizar la interfaz Cambiar el content-type de la salida de un formulario para que en vez de mostrarlo en HTML, haga que el navegador pida ejecutar otra aplicación para editar el archivo enviado (en este caso, la salida era un archivo CSV que es editable con casi cualquier planilla de cálculo) Para internacionalizar la interfaz utilicé un hack de un tal André Rabold que extendió la clase de Smarty, para permitir cambiar ciertos strings definidos en un archivo de idioma por su significado en el idioma que se desea mostrar. El hack se llama SmartyMultilanguageSupport, y además de ser muy útil, detecta el idioma con el [...]]]></description>
			<content:encoded><![CDATA[<p>Acabo de terminar la interfaz gráfica de un software libre (<a href="http://sourceforge.net/projects/whale-sqlfilter">whale</a>) y para armar toda la interfaz utilicé <a href="http://smarty.php.net">smarty.</a> Smarty son unas clases de PHP que permiten el uso de plantillas.</p>
<p>Lo fantástico del uso de estas plantillas es que tienen un reducido (pero muy util) set de funciones e intrucciones que se pueden poner dentro de al plantilla, para darle algo de <em>&#8220;inteligencia&#8221;.</em></p>
<p>En el sitio de smarty hay un (muy bien armado) <a href="http://smarty.php.net/crashcourse.php" target="_blank">Crash Course</a>, que muestra rápidamente cómo se utilizan.</p>
<p><span id="more-4"></span> Lo que más me gustó fue cuando tuve que hacer dos cosas:</p>
<ol>
<li>Internacionalizar la interfaz</li>
<li>Cambiar el content-type de la salida de un formulario para que en vez de mostrarlo en HTML, haga que el navegador pida ejecutar otra aplicación para editar el archivo enviado (en este caso, la salida era un archivo CSV que es editable con casi cualquier planilla de cálculo)</li>
</ol>
<p>Para internacionalizar la interfaz utilicé un hack de un tal André Rabold que extendió la clase de Smarty, para permitir cambiar ciertos strings definidos en un archivo de idioma por su significado en el idioma que se desea mostrar. El hack se llama <a href="http://smarty.incutio.com/?page=SmartyMultilanguageSupport" target="_blank">SmartyMultilanguageSupport</a>, y además de ser muy útil, detecta el idioma con el que esta seteado el navegador, permitiendo que el usuario vea la interfaz en su idioma natal.</p>
<p>Para resolver lo segundo, utilicé algo muy sencillo que es la función header() de PHP, dependiendo el botón que haya apretado el usuario (botones disponibles: &#8220;Recuperar Archivo&#8221; o &#8220;Aceptar&#8221; &#8230; para pedir que la información requerida en el formulario se muestre en el navegador) defino qué plantilla se va a utilizar y le aplico (o no) la función header().</p>
<p>Por ejemplo:</p>
<p>if (!$csvoutput) {<br />
$smarty-&gt;assign(&#8220;tpl_name&#8221;, &#8220;drr.tpl&#8221;);<br />
$smarty-&gt;display(&#8216;main.tpl&#8217;);<br />
} else {<br />
$fdate = strftime(&#8220;%Y-%m-%d&#8221;,$sdate);<br />
header(&#8220;Content-Type: text/csv&#8221;);<br />
header(&#8220;Content-Disposition: inline; filename=dayreport-$fdate.csv &#8220;);<br />
$smarty-&gt;display(&#8216;drr-csv.tpl&#8217;);<br />
}<br />
Dentro del directorio templates, la plantilla drr-csv.tpl contiene:</p>
<p>##POSITION##,##HOST##,##CONNECTIONS##,##BYTES##<br />
{foreach key=sid item=site from=$sites}<br />
{counter assign=&#8221;count&#8221;} {$count},{$site.host},{$site.conns},{$site.total_bytes}{/foreach}<br />
En el caso de la misma plantilla pero para HTML, tiene básicamente lo mismo pero todo lleno de tags HTML (obviamente).</p>
<p>De no haber hecho esta interfaz utilizando Smarty creo que todavía estaría escribiendo código y me volvería loco para internacionalizarla y poder cambiar content-type(s) tan fácilmente.</p>
<p>Recomiendo su uso para todo interfaz desarrollada en PHP.</p>
<p>Suerte!</p>
<p>dax///</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielcoletti.com.ar/2006/03/21/el-maravilloso-mundo-de-smarty/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

