<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.1" -->
<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/"
	>

<channel>
	<title>La Cara Oscura del Desarrollo de Software</title>
	<link>http://www.lacaraoscura.com</link>
	<description>La Cara Oscura del Desarrollo de Software</description>
	<pubDate>Sun, 11 May 2008 21:50:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.1</generator>
	<language>en</language>
			<item>
		<title>Resumen de JavaOne 2008 y Java University</title>
		<link>http://www.lacaraoscura.com/2008/05/11/resumen-de-javaone-2008-y-java-university/</link>
		<comments>http://www.lacaraoscura.com/2008/05/11/resumen-de-javaone-2008-y-java-university/#comments</comments>
		<pubDate>Sun, 11 May 2008 21:50:04 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
		
	<dc:subject>General</dc:subject>
	<dc:subject>Java</dc:subject>
	<dc:subject>J2EE</dc:subject>
	<dc:subject>Software Libre / Abierto</dc:subject>
	<dc:subject>Noticias</dc:subject>
	<dc:subject>sun</dc:subject><dc:subject>filthy rich clients</dc:subject><dc:subject>java</dc:subject><dc:subject>javafx</dc:subject><dc:subject>JavaOne</dc:subject><dc:subject>Netbeans</dc:subject><dc:subject>opensource</dc:subject><dc:subject>swing</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2008/05/11/resumen-de-javaone-2008-y-java-university/</guid>
		<description><![CDATA[El proceso de registro en JavaOne
Hola a todos,
Para no redundar en lo mismo, les dejo el enlace a mis impresiones sobre JavaOne del 2008. La experiencia fué realmente interesante.

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/josevnz/2483567090/" title="JavaOne registration by josevnz, on Flickr"><img src="http://farm3.static.flickr.com/2008/2483567090_33349e428d.jpg" width="500" height="375" alt="JavaOne registration" /></br>El proceso de registro en JavaOne</a></p>
<p>Hola a todos,</p>
<p>Para no redundar en lo mismo, <a href="http://kodegeek.com/2008/05/mi-experiencia-de-javaone.shtml">les dejo el enlace a mis impresiones sobre JavaOne del 2008</a>. La experiencia fué realmente interesante.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2008/05/11/resumen-de-javaone-2008-y-java-university/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Este Lunes 5 de Mayo arranca JavaOne en San Francisco</title>
		<link>http://www.lacaraoscura.com/2008/05/02/este-lunes-5-de-mayo-arranca-javaone-en-san-francisco/</link>
		<comments>http://www.lacaraoscura.com/2008/05/02/este-lunes-5-de-mayo-arranca-javaone-en-san-francisco/#comments</comments>
		<pubDate>Fri, 02 May 2008 22:04:03 +0000</pubDate>
		<dc:creator>josevnz</dc:creator>
		
	<dc:subject>General</dc:subject>
	<dc:subject>Java</dc:subject>
	<dc:subject>J2EE</dc:subject>
	<dc:subject>Software Libre / Abierto</dc:subject>
	<dc:subject>Noticias</dc:subject>
	<dc:subject>sun</dc:subject><dc:subject>conference</dc:subject><dc:subject>java</dc:subject><dc:subject>JavaOne</dc:subject><dc:subject>javaone2008</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2008/05/02/este-lunes-5-de-mayo-arranca-javaone-en-san-francisco/</guid>
		<description><![CDATA[Este Lunes 5 de Mayo arranca JavaOne. Se esperan varias &#8220;sorpresas&#8221; entre ellas:

Nuevo progresos con JavaFX y el nuevo plugin del JDK para los browser
OpenJDK

Yo voy a estar el Lunes en el Java University, metiendome un puñal en JavaFX y Swing. Si el tiempo lo permite colocaré algunas de mis impresiones sobre la conferencia.
¡Lo cierto [...]]]></description>
			<content:encoded><![CDATA[<p>Este Lunes 5 de Mayo arranca JavaOne. Se esperan varias &#8220;sorpresas&#8221; entre ellas:</p>
<ul>
<li>Nuevo progresos con JavaFX y el nuevo plugin del JDK para los browser</li>
<li>OpenJDK</li>
</ul>
<p>Yo voy a estar el Lunes en el Java University, metiendome un puñal en <a href="http://kodegeek.com/2008/04/voy-para-javaone.shtml">JavaFX y Swing</a>. Si el tiempo lo permite colocaré algunas de mis impresiones sobre la conferencia.</p>
<p>¡Lo cierto es que ando más emocionado que muchacho comiendo moco! :)</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2008/05/02/este-lunes-5-de-mayo-arranca-javaone-en-san-francisco/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>¿Será que se alinean los planetas?</title>
		<link>http://www.lacaraoscura.com/2008/04/07/%c2%bfsera-que-se-alinean-los-planetas/</link>
		<comments>http://www.lacaraoscura.com/2008/04/07/%c2%bfsera-que-se-alinean-los-planetas/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 00:15:08 +0000</pubDate>
		<dc:creator>Román González</dc:creator>
		
	<dc:subject>General</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2008/04/07/%c2%bfsera-que-se-alinean-los-planetas/</guid>
		<description><![CDATA[Ultimamente en la oficina andan como muchachas de bachillerato a punto de ver a Ricky Martin, y es que el Jueves que viene (10 de Abril), van a ir a la presentación  de nada mas y nada menos que el delincuente juvenil Kevin Mitnick y el &#8220;señor multimedia&#8221; Nicholas Negroponte. 
Debido a que los [...]]]></description>
			<content:encoded><![CDATA[<p>Ultimamente en la oficina andan como muchachas de bachillerato a punto de ver a Ricky Martin, y es que el Jueves que viene (10 de Abril), van a ir a la presentación  de nada mas y nada menos que el delincuente juvenil <a href="http://es.wikipedia.org/wiki/Kevin_Mitnick">Kevin Mitnick</a> y el &#8220;señor multimedia&#8221; <a href="http://es.wikipedia.org/wiki/Nicholas_Negroponte">Nicholas Negroponte</a>. </p>
<p>Debido a que los cupos son limitados y no todos en la oficina pueden ir de gratis :-(, estoy tratando de optar por una entrada vía el concurso de to2blogs (Como dice Aníbal: &#8220;Las probabilidades de que ganes la entrada aumentan exponencialmente si participas&#8221;). Si se alinean los planetas y me gano la entrada, espero que Negroponte pueda mencionar sus experiencias en la identidad digital en la Web, pudiera incluso citarlo en la presentación del TEG.</p>
<p>Amanecerá y veremos.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2008/04/07/%c2%bfsera-que-se-alinean-los-planetas/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Entre fechas y bichos en Rails 2.0</title>
		<link>http://www.lacaraoscura.com/2008/03/24/entre-fechas-y-bichos-en-rails-20/</link>
		<comments>http://www.lacaraoscura.com/2008/03/24/entre-fechas-y-bichos-en-rails-20/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 21:23:00 +0000</pubDate>
		<dc:creator>Román González</dc:creator>
		
	<dc:subject>Ruby</dc:subject>
	<dc:subject>Rails</dc:subject>
	<dc:subject>Bugs</dc:subject><dc:subject>bugs</dc:subject><dc:subject>Rails</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2008/03/24/entre-fechas-y-bichos-en-rails-20/</guid>
		<description><![CDATA[
Al trabajar sobre las fechas en los Form Helpers de Rails, hemos conseguido un bug bastante peculiar, tiene mucho que ver con el uso de los helpers para crear varios elementos de una misma clase de Objetos; este consiste incialmente en colocar un par de corchetes ([]) alrededor del nombre del objeto que queremos crear, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bow-wowbooks.com/grown-ups/images/8bk_bugs_a_bug_cov.gif" alt="Un bug sobre mi cabeza" /></p>
<p>Al trabajar sobre las fechas en los <em>Form Helpers</em> de Rails, hemos conseguido un bug bastante peculiar, tiene mucho que ver con el uso de los <em>helpers</em> para crear varios elementos de una misma clase de Objetos; este consiste incialmente en colocar un par de corchetes ([]) alrededor del nombre del objeto que queremos crear, de esta forma podemos enviar multiples objetos de una vez en el <em>request</em> del Navegador.</p>
<p>Por ejemplo, cuando tenemos el siguiente codigo en un archivo rhtml (en Rails 2.0 sería html.erb)</p>
<div class="syntax_hilite">
<div id="ruby-4">
<div class="ruby">&lt;% form_tag :url =&gt; personas_path <span style="color:#9966CC; font-weight:bold;">do</span> %&gt;<br />
&nbsp; &lt;%<span style="color:#008000; font-style:italic;"># Persona 1 %&gt;</span><br />
&nbsp; &lt;%= text_field 'persona<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>', :nombre %&gt;<br />
&nbsp; &lt;%= date_select 'persona<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>', :cumple %&gt;<br />
&nbsp; &lt;%<span style="color:#008000; font-style:italic;"># Persona 2 %&gt;</span><br />
&nbsp; &lt;%= text_field 'persona<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>', :nombre %&gt;<br />
&nbsp; &lt;%= date_select 'persona<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>', :cumple %&gt;<br />
&lt;% <span style="color:#9966CC; font-weight:bold;">end</span> %&gt;</div>
</div>
</div>
<p></p>
<p>Esto dibujaría un HTML de la siguiente forma:</p>
<div class="syntax_hilite">
<div id="html-5">
<div class="html"><span style="color: #009900;"><a href="http://december.com/html/4/element/form.html"><span style="color: #000000; font-weight: bold;">&lt;form</span></a> <span style="color: #000066;">action</span>=<span style="color: #ff0000;">"/personas"</span> <span style="color: #000066;">method</span>=<span style="color: #ff0000;">"post"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
<span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- Persona 1 --&gt;</span></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"persona__nombre"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"persona[][nombre]"</span> <span style="color: #000066;">size</span>=<span style="color: #ff0000;">"30"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text"</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/select.html"><span style="color: #000000; font-weight: bold;">&lt;select</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"persona_cumple_1i"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"persona[cumple(1i)]"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
...<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/select&gt;</span></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/select.html"><span style="color: #000000; font-weight: bold;">&lt;select</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"persona_cumple_2i"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"persona[cumple(2i)]"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
...<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/select&gt;</span></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/select.html"><span style="color: #000000; font-weight: bold;">&lt;select</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"persona_cumple_3i"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"persona[cumple(3i)]"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
...<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/select&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #808080; font-style: italic;">&lt;!-- Persona 2 --&gt;</span></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/input.html"><span style="color: #000000; font-weight: bold;">&lt;input</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"persona__nombre"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"persona[][nombre]"</span> <span style="color: #000066;">size</span>=<span style="color: #ff0000;">"30"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text"</span> /<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/select.html"><span style="color: #000000; font-weight: bold;">&lt;select</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"persona_cumple_1i"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"persona[cumple(1i)]"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
...<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/select&gt;</span></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/select.html"><span style="color: #000000; font-weight: bold;">&lt;select</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"persona_cumple_2i"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"persona[cumple(2i)]"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
...<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/select&gt;</span></span><br />
<span style="color: #009900;"><a href="http://december.com/html/4/element/select.html"><span style="color: #000000; font-weight: bold;">&lt;select</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"persona_cumple_3i"</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">"persona[cumple(3i)]"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><br />
...<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/select&gt;</span></span></p>
<p><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/form&gt;</span></span></div>
</div>
</div>
<p></p>
<p>Si se dan cuenta, pueden ver que los selects generados no poseen los [] en el nombre, de hecho los ignora por completo. Esto trae como consecuencia de que cuando se cree el objeto de Persona vía <em>mass-assignment</em></p>
<div class="syntax_hilite">
<div id="ruby-6">
<div class="ruby"><span style="color:#9966CC; font-weight:bold;">def</span> create<br />
&nbsp; Persona.<span style="color:#9900CC;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span>params<span style="color:#006600; font-weight:bold;">&#91;</span>:persona<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># &lt;= esto crearía varias personas a la vez</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div>
</div>
</div>
<p></p>
<p>se genere un error difícil de detectar en el código de nuestro proyecto. Después de "googlear" un poco, me di cuenta que es un bug registrado desde hace 2 versiones, por suerte conseguí un patch que me sirvio perfectamente para solucionar este problema.</p>
<p>Les dejo el link del ticket en caso de que lo necesiten:<br />
http://dev.rubyonrails.org/ticket/10551</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2008/03/24/entre-fechas-y-bichos-en-rails-20/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>New Ruby Web Server in Town: Thin</title>
		<link>http://www.lacaraoscura.com/2008/01/08/new-ruby-web-server-in-town-thin/</link>
		<comments>http://www.lacaraoscura.com/2008/01/08/new-ruby-web-server-in-town-thin/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 16:57:02 +0000</pubDate>
		<dc:creator>Aníbal Rojas</dc:creator>
		
	<dc:subject>General</dc:subject>
	<dc:subject>Ruby</dc:subject>
	<dc:subject>Rails</dc:subject><dc:subject>event machine</dc:subject><dc:subject>framework</dc:subject><dc:subject>frameworks</dc:subject><dc:subject>mongrel</dc:subject><dc:subject>rack</dc:subject><dc:subject>ruby</dc:subject><dc:subject>thin</dc:subject><dc:subject>web server</dc:subject><dc:subject>webserver</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2008/01/08/new-ruby-web-server-in-town-thin/</guid>
		<description><![CDATA[A la hora de tener múltiples instancias de una aplicación Ruby On Rails en ejecución el caballito de batalla actualmente es Mongrel.
Mongrel es un webserver escrito en Ruby, donde los cuellos de botella fueron optimizados en lenguaje C. Es pequeño, ligero y sencillo de usar.
Basado en el mismo parser de Mongrel, pero usando Ruby/EventMachine (Ruby [...]]]></description>
			<content:encoded><![CDATA[<p>A la hora de tener múltiples instancias de una aplicación <a href="http://www.rubyonrails.org/">Ruby On Rails</a> en ejecución el caballito de batalla actualmente es <a href="http://mongrel.rubyforge.org/">Mongrel</a>.</p>
<p><strong>Mongrel</strong> es un webserver escrito en Ruby, donde los cuellos de botella fueron optimizados en lenguaje C. Es pequeño, ligero y sencillo de usar.</p>
<p>Basado en el mismo parser de <strong>Mongrel,</strong> pero usando <a href="http://rubyeventmachine.com/">Ruby/EventMachine</a> (Ruby y C++) para acelerar la parte del I/O a nivel de redes y <a href="http://rack.rubyforge.org/">Rack</a> para la interface con los frameworks crearon <a href="http://code.macournoyer.com/thin/">Thin</a>.</p>
<p><em>¿El beneficio?</em> Consistentemente maneja los requerimientos  HTTP más rápido, en mis pruebas informales efectivamente se puede hablar consistentemente de entre un 15% y un 25% de mejora en los tiempos dependiendo del escenario.</p>
<p>Ya algunos desarrolladores hicieron unas pruebas en producción en sitios pequeños, encontraron un bug en el parsing de los headers HTTP que llevó al release de la versión 0.5.1 (LOLCAT) que además incorpora compatibilidad con Ruby 1.9.</p>
<p>Si están usando <strong>Ruby on Rails</strong> y quieren probarlo es tan sencillo como:</p>
<div class="syntax_hilite">
<div id="code-10">
<div class="code">$ sudo gem install thin</div>
</div>
</div>
<p></p>
<p>Y ejecutan en la raíz de su aplicación Rails:</p>
<div class="syntax_hilite">
<div id="code-11">
<div class="code">$ thin start</div>
</div>
</div>
<p></p>
<p>O si quieren que tome el ambiente de producción para <a href="http://www.lacaraoscura.com/2006/08/04/%C2%BFasi-que-le-quieres-meterle-carga-a-tu-servidor-web/">hacer benchmarks</a>:</p>
<div class="syntax_hilite">
<div id="code-12">
<div class="code">$ thin -e production start</div>
</div>
</div>
<p>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2008/01/08/new-ruby-web-server-in-town-thin/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Gracias a GOD que puedo MONIT orear con Ruby</title>
		<link>http://www.lacaraoscura.com/2008/01/06/gracias-a-god-que-puedo-monit-orear-con-ruby/</link>
		<comments>http://www.lacaraoscura.com/2008/01/06/gracias-a-god-que-puedo-monit-orear-con-ruby/#comments</comments>
		<pubDate>Sun, 06 Jan 2008 23:35:48 +0000</pubDate>
		<dc:creator>Aníbal Rojas</dc:creator>
		
	<dc:subject>General</dc:subject>
	<dc:subject>Ruby</dc:subject><dc:subject>god</dc:subject><dc:subject>monitoreo</dc:subject><dc:subject>monot</dc:subject><dc:subject>ruby</dc:subject><dc:subject>servicios</dc:subject><dc:subject>servidor</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2008/01/06/gracias-a-god-que-puedo-monit-orear-con-ruby/</guid>
		<description><![CDATA[Desde hace algún tiempo monitoreo algunos servidores donde se ejecutan las aplicaciones que hemos desarrollado con Ruby On Rails usando Monit.
Con Monit monitoreo consumo de recursos, carga sobre el servidor, conectividad y estado de archivos en filesystem. La herramienta es bien útil y fácil de configurar.
¿Qué no me gusta de Monit? Que en el caso [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace algún tiempo monitoreo algunos servidores donde se ejecutan las aplicaciones que hemos desarrollado con <a href="http://www.rubyonrails.org/">Ruby On Rails</a> usando <a href="http://www.tildeslash.com/monit/">Monit</a>.</p>
<p>Con <strong>Monit</strong> monitoreo consumo de recursos, carga sobre el servidor, conectividad y estado de archivos en filesystem. La herramienta es bien útil y fácil de configurar.</p>
<p>¿Qué no me gusta de <strong>Monit</strong>? Que en el caso de monitorear por ejemplo un clúster de <a href="http://mongrel.rubyforge.org/">Mongrels</a>, hay repetir toda la configuración para cada instancia y hay cosas que es difícil (sino imposible) expresar mediante los archivos de configuración de <strong>Monit</strong>.</p>
<p>Intentando instalar <strong>Monit</strong> en Debian Etch en un <a href="http://en.wikipedia.org/wiki/Virtual_private_server">VPS</a> me topé con el error:</p>
<div class="syntax_hilite">
<div id="code-15">
<div class="code">Monit has not changed<br />
Floating point exception</div>
</div>
</div>
<p></p>
<p>El bug debería estar resuelto en la versión 4.8.1 sin embargo no le encontré la vuelta, y es que tampoco se la busqué mucho porque estaba loco por probar <a href="http://god.rubyforge.org/">God: like monit, only awesome</a>, así que decidí probarlo.</p>
<p>Lo primero que hay que decir es que aún le falta, lo que es lógico siendo una versión 0.6, sin embargo funciona perfectamente.</p>
<p>Una de las primeras cosas que extrañé fue que no tuviera soporte para una condición (Condition) que me permitiera monitorear si el código de una respuesta <code>HTTP</code> sobre un <code>URL</code> determinado era diferente de un <code>200 OK</code>. Sin embargo, lo que si provee en esta versión es la habilidad de expresar una condición a través de una <a href="http://www.ruby-lang.org/es/documentation/quickstart/4/">función anónima (lambda)</a>.</p>
<p>De esta forma ni siquiera tenemos que extender los <code>Conditions</code> que provee <strong>God</strong>para agregar uno que acepte un <code>URL</code> y un código de respuesta <code>HTTP</code> esperado, sino que sencillamente podemos pasar el bloque de código que será evaluado para determinar si el proceso monitoreado debe ser reiniciado o no.</p>
<p>En mi caso además quería asegurar que la respuesta se diera en menos de un segundo, y al final quedó algo como esto:</p>
<div class="syntax_hilite">
<div id="ruby-16">
<div class="ruby">uri = URI.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span>'http://localhost/static/response200'<span style="color:#006600; font-weight:bold;">&#41;</span><br />
restart.<span style="color:#9900CC;">condition</span><span style="color:#006600; font-weight:bold;">&#40;</span>:<span style="color:#CC0066; font-weight:bold;">lambda</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |c|<br />
&nbsp; c.<span style="color:#CC0066; font-weight:bold;">lambda</span> = <span style="color:#CC0066; font-weight:bold;">lambda</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; Timeout::timeout<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Net::HTTP.<span style="color:#9900CC;">get_response</span><span style="color:#006600; font-weight:bold;">&#40;</span>uri<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">response</span>.<span style="color:#9900CC;">code</span>.<span style="color:#9900CC;">to_i</span> != <span style="color:#006666;">200</span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">rescue</span> Exception<br />
&nbsp; &nbsp; &nbsp; <span style="color:#0000FF; font-weight:bold;">true</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; c.<span style="color:#9900CC;">notify</span> = 'anibal'<br />
<span style="color:#9966CC; font-weight:bold;">end</span></div>
</div>
</div>
<p></p>
<p>La gran ventaja que tiene <strong>God</strong>, sobre <strong>Monit</strong> es que se le saca el jugo a Ruby para poder expresar  que es lo que vamos a monitorear, qué acciones vamos a tomar y bajo que condiciones.</p>
<p>Como les comenté sólo es una versión 0.6, y aún hay mucho por hacer, pero es <a href="http://www.ruby-lang.org/es/">Ruby</a> así que siempre lo pueden extender fácilmente para conseguir lo que ustedes quieran.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2008/01/06/gracias-a-god-que-puedo-monit-orear-con-ruby/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Soporte para OpenID en Blogger</title>
		<link>http://www.lacaraoscura.com/2007/12/16/soporte-para-openid-en-blogger/</link>
		<comments>http://www.lacaraoscura.com/2007/12/16/soporte-para-openid-en-blogger/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 03:07:03 +0000</pubDate>
		<dc:creator>Aníbal Rojas</dc:creator>
		
	<dc:subject>General</dc:subject><dc:subject>blogger</dc:subject><dc:subject>comments</dc:subject><dc:subject>openid</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2007/12/16/soporte-para-openid-en-blogger/</guid>
		<description><![CDATA[Google  incorporó a Blogger soporte para OpenIDpara firmar los comentarios. También incorporó soporte para AOL/AIM, LiveJournal, TypeKey, WordPress.com.
Desde hace varios meses la gente se preguntaba dónde estaba la aplicación que soportara el uso de OpenID, al parecer esta es.

]]></description>
			<content:encoded><![CDATA[<p><strong>Google </strong> incorporó a <strong>Blogger</strong> soporte para <a href="http://es.wikipedia.org/wiki/OpenID">OpenID</a>para firmar los comentarios. También incorporó soporte para AOL/AIM, LiveJournal, TypeKey, WordPress.com.</p>
<p>Desde hace varios meses la gente se preguntaba dónde estaba <em><strong>la aplicación</strong></em> que soportara el uso de <strong>OpenID</strong>, al parecer esta <em>es</em>.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2007/12/16/soporte-para-openid-en-blogger/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Darcs 2 Primer Prerelease</title>
		<link>http://www.lacaraoscura.com/2007/12/13/darcs-2-primer-prerelease/</link>
		<comments>http://www.lacaraoscura.com/2007/12/13/darcs-2-primer-prerelease/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 19:55:10 +0000</pubDate>
		<dc:creator>Aníbal Rojas</dc:creator>
		
	<dc:subject>General</dc:subject><dc:subject>2</dc:subject><dc:subject>darcs</dc:subject><dc:subject>git. mercurial</dc:subject><dc:subject>scm. alfa</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2007/12/13/darcs-2-primer-prerelease/</guid>
		<description><![CDATA[Cuando empecé a investigar sobre sistemas de control de versiones distribuidos Darcs se convirtió para mí en un "oscuro objeto del deseo" ;-) Lamentablemente aún no he tenido la oportunidad de probar Darcs o alguna otra de las opciones distribuidas como Git, o Mercurial en un proyecto que no sea un juguete.
Sin embargo me parece [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando empecé a investigar sobre sistemas de control de versiones <em>distribuidos</em> <a href="http://darcs.net/">Darcs</a> se convirtió para mí en un "oscuro objeto del deseo" <strong>;-)</strong> Lamentablemente aún no he tenido la oportunidad de probar <strong>Darcs</strong> o alguna otra de las opciones distribuidas como <strong>Git</strong>, o <strong>Mercurial</strong> en un proyecto que no sea un juguete.</p>
<p>Sin embargo me parece bien interesante que <a href="http://wiki.darcs.net/index.html/DarcsTwo">Darcs 2</a> empiece a asomarse al ruedo con un primer prerelease, que apunta a ofrecer mejoras sustanciales a este <strong>SCM</strong>.</p>
<p>Entre las mejoras que estarán a prueba, están el nuevo formato "hashed" del repositorio que previene ciertos problemas y optimiza algunas operaciones, particularmente con soporte para caché de los patches.</p>
<p>El algoritomo que maneja los merges previene que Darcs se quede "pegado" intentando resolver conflictos, adicionalmente hay un cambio fuerte relacionado con la semántica de patches idénticos y la forma en que las dependencias contra estos se resuelven.</p>
<p>Como decimos en Venezuela, "amanecerá y veremos", ya que aún es temprano para saber el impacto real de estos cambios.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2007/12/13/darcs-2-primer-prerelease/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Instalación de NGinx 0.5.30 desde testing en Debian</title>
		<link>http://www.lacaraoscura.com/2007/12/12/instalacion-de-nginx-0530-desde-testing-en-debian/</link>
		<comments>http://www.lacaraoscura.com/2007/12/12/instalacion-de-nginx-0530-desde-testing-en-debian/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 01:07:38 +0000</pubDate>
		<dc:creator>Aníbal Rojas</dc:creator>
		
	<dc:subject>General</dc:subject>
	<dc:subject>Ruby</dc:subject>
	<dc:subject>Rails</dc:subject><dc:subject>apt</dc:subject><dc:subject>debian</dc:subject><dc:subject>nginx</dc:subject><dc:subject>package</dc:subject><dc:subject>packages</dc:subject><dc:subject>Rails</dc:subject><dc:subject>ruby</dc:subject><dc:subject>rubyonrails</dc:subject><dc:subject>sid</dc:subject><dc:subject>stable</dc:subject><dc:subject>testing</dc:subject><dc:subject>ubuntu</dc:subject><dc:subject>webserver</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2007/12/12/instalacion-de-nginx-0530-desde-testing-en-debian/</guid>
		<description><![CDATA[Gracias a la labor de marketing que realicé con José Parella la comunidad de usuarios Debian (y distribuciones derivadas)  dispone de paquetes actualizados para el pequeño y brutal web server Nginx (Gracias Jose por tu excelente trabajo ;-)
Nginx es popular actualmente como frontend o load balancer para clusters de Mongrels corriendo aplicaciones Ruby On [...]]]></description>
			<content:encoded><![CDATA[<p>Gracias a la labor de <em>marketing</em> que realicé con <a href="http://blog.bureado.com.ve/">José Parella</a> la comunidad de usuarios <strong>Debian</strong> (y distribuciones derivadas)  dispone de paquetes actualizados para el pequeño y brutal web server <a href="http://wiki.codemongers.com/Main">Nginx</a> (Gracias Jose por tu excelente trabajo ;-)</p>
<p><strong>Nginx</strong> es popular actualmente como <em>frontend</em> o <em>load balancer</em> para clusters de <strong>Mongrels</strong> corriendo aplicaciones <strong>Ruby On Rails</strong>. Realmente <em>funciona</em>, después de que uno lo instala y los configura puede olvidarse de él.</p>
<p>Mucha gente termina montando <strong>Nginx</strong> desde los fuentes porque la <a href="http://packages.debian.org/stable/nginx">versión de Nginx en stable en <strong>stable</strong>es la 0.4.13</a> es relativamente vieja* y el sistema de administración de paquetes de Debian es algo así como el "secreto mejor guardado del Caribe".</p>
<p>De cualquier manera si quiere instalar la versión <a href="http://packages.debian.org/testing/nginx">0.5.30</a> o la <a href="http://packages.debian.org/sid/nginx">0.5.33</a>, estas están disponibles en testing y sid respectivamente, no tienen que hacerlo desde los fuentes.</p>
<p>Cortesía de Jose, las instrucciones para seguir el paquete desde <em>testing</em> son:</p>
<p>Crear o agregar al archivo <code>/etc/apt/preferences</code>:</p>
<div class="syntax_hilite">
<div id="code-20">
<div class="code">Package: nginx<br />
Pin: release a=testing<br />
Pin-Priority: <span style="color:#800000;">1000</span></div>
</div>
</div>
<p></p>
<p>Agregar los repos de <em>testing</em> en <code>/etc/apt/sources.list</code>, en general sencillamente tomen los que apuntan a <em>etch</em>, los copian y reemplazan <em>etch</em> por <em>testing</em> o <em>sid</em> si fuera el caso. En la máquina que yo estaba instalando:</p>
<div class="syntax_hilite">
<div id="code-21">
<div class="code">deb http:<span style="color:#FF9933; font-style:italic;">//ftp.debian.org/debian/ testing main contrib</span><br />
deb-src http:<span style="color:#FF9933; font-style:italic;">//ftp.debian.org/debian/ testing main contrib </span></div>
</div>
</div>
<p></p>
<p>Y finalmente:</p>
<div class="syntax_hilite">
<div id="code-22">
<div class="code">apt-get update<br />
apt-get install nginx</div>
</div>
</div>
<p></p>
<p>En general esto les va a requerir nuevas versiones de <code>libc6</code>, <code>libssl</code>, <code>locales</code>, <code>tzdata</code> y un par de librerías más, que pueden requerir de reiniciar un par de serivicios.</p>
<p>* En realidad no es que sea vieja, es que los rusos echan código como locos ;-)
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2007/12/12/instalacion-de-nginx-0530-desde-testing-en-debian/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Mi experiencia: Cambio de Zona Horaria en Venezuela</title>
		<link>http://www.lacaraoscura.com/2007/12/10/mi-experiencia-cambio-de-zona-horaria-en-venezuela/</link>
		<comments>http://www.lacaraoscura.com/2007/12/10/mi-experiencia-cambio-de-zona-horaria-en-venezuela/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 17:12:15 +0000</pubDate>
		<dc:creator>robmv</dc:creator>
		
	<dc:subject>General</dc:subject>
	<dc:subject>Java</dc:subject>
	<dc:subject>Software Libre / Abierto</dc:subject>
	<dc:subject>How To's</dc:subject>
	<dc:subject>linux</dc:subject>
		<guid isPermaLink="false">http://www.lacaraoscura.com/2007/12/10/mi-experiencia-cambio-de-zona-horaria-en-venezuela/</guid>
		<description><![CDATA[Como muchos ya se habrán informado, el cambio de Zona horaria en Venezuela ya se hizo efectivo y aquí les digo a qué empresa/grupo en mi experiencia le doy puntos por darle a sus usuarios los fixes necesarios a tiempo y sin complicaciones
IBM: +1
http://www.ibm.com/developerworks/java/jdk/dst/index.html
Microsoft: +1
http://www.nuevahoravenezolana.com/
Red Hat/Fedora: +1
https://bugzilla.redhat.com/show_bug.cgi?id=410101
Sun Microsystems: 0
http://java.sun.com/javase/timezones/
Algunos se preguntarán por qué a Sun [...]]]></description>
			<content:encoded><![CDATA[<p>Como muchos ya se habrán informado, el cambio de Zona horaria en Venezuela ya se hizo efectivo y aquí les digo a qué empresa/grupo en mi experiencia le doy puntos por darle a sus usuarios los fixes necesarios a tiempo y sin complicaciones</p>
<p>IBM: +1<br />
<a href="http://www.ibm.com/developerworks/java/jdk/dst/index.html">http://www.ibm.com/developerworks/java/jdk/dst/index.html</a></p>
<p>Microsoft: +1<br />
<a href="http://www.nuevahoravenezolana.com/">http://www.nuevahoravenezolana.com/</a></p>
<p>Red Hat/Fedora: +1<br />
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=410101">https://bugzilla.redhat.com/show_bug.cgi?id=410101</a></p>
<p>Sun Microsystems: 0<br />
<a href="http://java.sun.com/javase/timezones/">http://java.sun.com/javase/timezones/</a></p>
<p>Algunos se preguntarán por qué a Sun no le doy puntos, y es sencillo, lamentablemente para obtener su fix para Java necesitas llamar al Centro de Soporte Técnico, cosa que hice de inmediato, para simplemente obtener la respuesta de que necesito tener un contrato de soporte y si quería tener contacto con un vendedor para tratar el tema.</p>
<p>Pero no se preocupen, la idea de esta entrada en este blog es la de dar soluciones y no solo quejarme :-P. La última versión disponible en el sitio de Sun de la herramienta de update es la versión 1.3.0 que no incluye el cambio de Venezuela del pasado 9 de diciembre, y como la licencia de la herramienta prohíbe explícitamente la ingeniería reversa, simplemente busque otro camino. Desde hace un poco más de un año Sun empezó el proceso de convertir Java en Software Libre, y la primera distribución en incluir parte de lo que será Java 7 es Fedora (llamada <a href="http://icedtea.classpath.org">IcedTea</a>), recurrí al código fuente de este localizado en los <a href="http://download.fedora.redhat.com/pub/fedora/linux/releases/8/Fedora/source/SRPMS/java-1.7.0-icedtea-1.7.0.0-0.19.b21.snapshot.fc8.src.rpm">mirrors de Fedora</a></p>
<p>Tras examinar el proceso de build, se puede notar que al igual que en Linux/Unix se utiliza el comando zic para trasformar la <a href="ftp://elsie.nci.nih.gov/pub/">base de datos Olson de Zonas horarias</a>, en OpenJDK hay un programa Java en openjdk/j2se/make/tools/javazic que realiza la misma tarea pero generando el formato específico para los JVM de Sun. Utilizando este compilador y usándolo con el archivo southamerica localizado en la base de datos Olson más reciente, se generan una serie de archivos, del cual nos interesa es America/Caracas, el cual puede sustituir a $JAVA_HOME/jre/lib/zi/America/Caracas (Este cambio fue probado en JVM de Sun 1.6.x)</p>
<p>Ahora, por qué 0 puntos es vez de -1, porque gracias a OpenJDK fue fácil realizar este cambio, de alguna manera u otra Sun ayudó a que fuese posible, El poder del Software Libre en acción.</p>
<p>NOTA: antes de que pregunten :-P ¿por qué Java requiere tener la base de datos internamente y no usar la del OS?, sencillo, no todas los sistemas operativos incluyen APIs para obtener la zona horaria que incluya el histórico de los cambios, por ejemplo, El fix de Windows solo incluye una nueva zona horaria al sistema, pero no lleva un histórico de que Venezuela estaba  a -4:30 de UTC antes del año 1965, Windows solo tiene información del offset con UTC actual, en cambio las APIs de Java permiten hacer transformaciones de Zona horaria para cualquier fecha y hora. Por esta razón aplicaciones como Ms Office deben ser actualizadas por separado.</p>
<p>De todos modos he añadido un Bug a Fedora a ver si es posible hacer que IcedTea pueda usar una base de datos externa o en lo posible separar los archivos que vienen dentro de IcedTea al RPM de tzdata de tal forma de que el cambio sea centralizado. <a href="https://bugzilla.redhat.com/show_bug.cgi?id=418101">https://bugzilla.redhat.com/show_bug.cgi?id=418101</a></p>
<p>El archivo "Caracas" lo pueden conseguir en:</p>
<p><a href="http://www.marcanoonline.com/downloads/java/zi/Caracas">http://www.marcanoonline.com/downloads/java/zi/Caracas</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.lacaraoscura.com/2007/12/10/mi-experiencia-cambio-de-zona-horaria-en-venezuela/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
