<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Javier Vidal Postigo</title>
	
	<link>http://javiervidal.net</link>
	<description>internet, desarrollo, diseño web, sysadmin</description>
	<pubDate>Wed, 22 Oct 2008 11:04:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/javiervidal" type="application/rss+xml" /><item>
		<title>El sprint de JQuery</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/428446626/</link>
		<comments>http://javiervidal.net/el-sprint-de-jquery/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 11:04:14 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[desarrollo]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=255</guid>
		<description><![CDATA[Reconozco que llevo tiempo queriendo aprender JavaScript, sin ponerme a ello en serio. Creo que el momento ha llegado. He decidido ponerme a estudiar JQuery, y es que me han hablado muy bien de este framework. Es impresionante el sprint que está realizando JQuery respecto a otras librerías JavaScript:


]]></description>
			<content:encoded><![CDATA[<p>Reconozco que llevo tiempo queriendo aprender JavaScript, sin ponerme a ello en serio. Creo que el momento ha llegado. He decidido ponerme a estudiar <a href="http://jquery.com/" onclick="javascript:urchinTracker ('/outbound/article/jquery.com');"><strong>JQuery</strong></a>, y es que me han hablado muy bien de este framework. Es impresionante el sprint que está realizando JQuery respecto a otras librerías JavaScript:</p>
<p align="center">
<img src="http://javiervidal.net/wp-content/uploads/2008/10/frameworks_javascript.png" alt="frameworks_javascript" title="frameworks_javascript" width="500" height="248" class="alignnone size-full wp-image-256" /></p>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/428446626" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/el-sprint-de-jquery/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/el-sprint-de-jquery/</feedburner:origLink></item>
		<item>
		<title>¿Es ético el plan de rescate del gobierno español?</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/414644098/</link>
		<comments>http://javiervidal.net/es-etico-el-plan-de-rescate-del-gobierno-espanol/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 08:51:57 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[misceláneo]]></category>

		<category><![CDATA[crisis]]></category>

		<category><![CDATA[ético]]></category>

		<category><![CDATA[plan de rescate]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=254</guid>
		<description><![CDATA[El consejo de ministros va a aprobar una medida que consiste en comprar activos en poder de los bancos y cajas de ahorros por un importe de hasta 50.000 millones de euros, es decir, del 5% del PIB. Este dinero saldrá de los presupuestos, a través de emisión de deuda. Lo que quiere decir que [...]]]></description>
			<content:encoded><![CDATA[<p>El consejo de ministros va a aprobar una medida que consiste en comprar activos en poder de los bancos y cajas de ahorros por un importe de hasta 50.000 millones de euros, es decir, del 5% del PIB. Este dinero saldrá de los presupuestos, a través de emisión de deuda. Lo que quiere decir que lo acabaremos pagando los contribuyentes y nuestros hijos.</p>
<p>¿Qué activos se van a comprar? Activos que actualmente son ilíquidos y que nadie quiere comprar. Dicen que no van a ser activos tóxicos, pero, si no son tóxicos, ¿por qué van a querer los bancos quitárselos de encima?</p>
<p>Básicamente, se comprarán activos hipotecarios, es decir, los contribuyentes vamos a comprar las casas que los bancos han financiado y no ahora no se venden. ¿A qué precio? Seguramente el precio será algo más barato que el precio alcanzado en el pico de la burbuja, pero, ¿podremos recurperar ese dinero en un plazo razonable?</p>
<p>¿Para qué va a servir la medida? ¿Para reactivar la economía? No lo creo. Sólo va a servir para paliar la deuda de los bancos y cajas, pero no para que se concedan más créditos. Es decir, los contribuyentes vamos a acabar pagando, por ejemplo, enjendros como &#8220;Pocerolandia&#8221;.</p>
<p>¿Estamos locos? ¿Está actúando el gobierno en beneficio de los ciudadanos? ¿Por qué no ha habido un debate en el Parlamento? ¿Cuál es la opinión de los partidos de la oposición?</p>
<p>¿No será mejor construir un nuevo sistema? ¿Vamos a dejar que se premie de esta manera la avaricia?</p>
<p>La crisis tal vez sea una oportunidad para mejorar. Reflexionemos y pensemos sobre ello.</p>
<p><b>Actualización:</b> Aquí os dejo un excelente artículo sobre el mismo tema: </p>
<ul>
<li>
<a href="http://www.gurusblog.com/archives/plan-de-recompra-de-activos-mas-sombras-que-luces/09/10/2008/" onclick="javascript:urchinTracker ('/outbound/article/www.gurusblog.com');">Plan de recompra de activos: más sombras que luces (GurusBlog)</a>.
</li>
</ul>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/414644098" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/es-etico-el-plan-de-rescate-del-gobierno-espanol/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/es-etico-el-plan-de-rescate-del-gobierno-espanol/</feedburner:origLink></item>
		<item>
		<title>Nuevo plano del metro de Madrid</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/396991516/</link>
		<comments>http://javiervidal.net/nuevo-plano-del-metro-de-madrid/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 07:52:43 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[diseño]]></category>

		<category><![CDATA[2008]]></category>

		<category><![CDATA[diseño web]]></category>

		<category><![CDATA[madrid]]></category>

		<category><![CDATA[metro]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=252</guid>
		<description><![CDATA[Ayer monté en metro y vi la nueva versión, la de 2008, del plano del metro de Madrid. Por fin aparece el tiempo que se tarda en los trasbordos largos. A mí me gusta mucho el diseño. Existen por ahí planos con el diseño antiguo y las nuevas ampliaciones, pero me parecen más complicados de [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer monté en metro y vi la nueva versión, la de 2008, del plano del metro de Madrid. Por fin aparece el tiempo que se tarda en los trasbordos largos. A mí me gusta mucho el diseño. Existen por ahí planos con el diseño antiguo y las nuevas ampliaciones, pero me parecen más complicados de leer.</p>
<p><img src="http://javiervidal.net/wp-content/uploads/2008/09/planometro2008.jpg" alt="plano metro madrid" title="plano metro madrid" class="center" /></p>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/396991516" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/nuevo-plano-del-metro-de-madrid/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/nuevo-plano-del-metro-de-madrid/</feedburner:origLink></item>
		<item>
		<title>La Conferencia Rails 2008 será los días 13 y 14 de noviembre</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/396340962/</link>
		<comments>http://javiervidal.net/la-conferencia-rails-2008-sera-los-dias-13-y-14-de-noviembre/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 16:16:45 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[ruby, rails]]></category>

		<category><![CDATA[conferencia]]></category>

		<category><![CDATA[conferenciarails]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=248</guid>
		<description><![CDATA[Como otros años, estoy participando en la organización de la Conferencia Rails. Este año se celebrará los días 13 y 14 de noviembre y todo apunta a que vamos a poder superar el listón de otras ediciones.



La primera edición fue la del 2006, la del descubrimiento. Para los que ya sabíamos lo que se puede [...]]]></description>
			<content:encoded><![CDATA[<p>Como otros años, estoy participando en la organización de la <a href="http://www.conferenciarails.org/" onclick="javascript:urchinTracker ('/outbound/article/www.conferenciarails.org');">Conferencia Rails</a>. Este año se celebrará los días <strong>13 y 14 de noviembre</strong> y todo apunta a que vamos a poder superar el listón de otras ediciones.</p>
<p class="center">
<img src="http://javiervidal.net/wp-content/uploads/2008/09/logo_conferencia_rails.png" alt="logo_conferencia_rails" title="logo_conferencia_rails" width="100" />
</p>
<p>La primera edición fue la del <a href="http://2006.conferenciarails.org/" onclick="javascript:urchinTracker ('/outbound/article/2006.conferenciarails.org');">2006</a>, la del <strong>descubrimiento</strong>. Para los que ya sabíamos lo que se puede disfrutar programando en Rails, fue el descubrimiento de que había mucha otra gente programando con este framework tan poco conocido por entonces. Para los que se acercaban por primera vez a Rails, fue el descubrimiento del framework en sí. Fue todo un éxito porque no sabíamos si seríamos más de 20 y acabamos siendo unos 150.</p>
<p>La segunda edición, la del <a href="http://2007.conferenciarails.org/" onclick="javascript:urchinTracker ('/outbound/article/2007.conferenciarails.org');">2007</a>, fue la de la <strong>consolidación</strong>. Sabíamos de antemano que el interés por Rails existía y aquí vimos que dicho interés era creciente, que las empresas estaban adoptando la tecnología y que el framework maduraba.</p>
<p>¿Cómo será la próxima edición? Por lo pronto, hay un gran interés por patrocionar el evento, con lo que veo que el negocio en torno a Rails está creciendo. Por otro lado, parece que va a ser posible traer a varios gurús a nivel mundial. Este año también se reducirá el número de ponencias, para así ofrecer las de mayor calidad.</p>
<p>Por cierto, ¿todavía no has presentado tu propuesta de ponencia? <a href="http://www.conferenciarails.org/2008/08/call-for-papers-para-la-edicion-de-2008/" onclick="javascript:urchinTracker ('/outbound/article/www.conferenciarails.org');">El plazo termina el 29 de septiembre</a>. No lo dejes para el último día.</p>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/396340962" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/la-conferencia-rails-2008-sera-los-dias-13-y-14-de-noviembre/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/la-conferencia-rails-2008-sera-los-dias-13-y-14-de-noviembre/</feedburner:origLink></item>
		<item>
		<title>Enlaces :ruby, :rails =&gt; “agosto 2008″</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/380324215/</link>
		<comments>http://javiervidal.net/enlaces-ruby-rails-agosto-2008/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 09:16:10 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[ruby, rails]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=246</guid>
		<description><![CDATA[Enlaces destacados de Ruby y Rails durante el mes de agosto de 2008:

Vulnerabilidad por denegación de servicio en la librería REXML.
Qué nos espera en Ruby 1.9.
daemon_controller: una librería para gestionar demonios.
Rails 2.2 será &#8220;thread safe&#8221;.
Ventajas en incovenientes de GitHub y RubyForge como repositorios de gemas.

]]></description>
			<content:encoded><![CDATA[<p>Enlaces destacados de Ruby y Rails durante el mes de agosto de 2008:</p>
<ul>
<li><a href="http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/" onclick="javascript:urchinTracker ('/outbound/article/www.ruby-lang.org');">Vulnerabilidad por denegación de servicio en la librería REXML</a>.</li>
<li><a href="http://slideshow.rubyforge.org/ruby19.html" onclick="javascript:urchinTracker ('/outbound/article/slideshow.rubyforge.org');">Qué nos espera en Ruby 1.9</a>.</li>
<li><a href="http://blog.phusion.nl/2008/08/25/daemon_controller-a-library-for-robust-daemon-management/" onclick="javascript:urchinTracker ('/outbound/article/blog.phusion.nl');">daemon_controller: una librería para gestionar demonios</a>.</li>
<li><a href="http://www.railsinside.com/news/74-rails-22-to-be-thread-safe.html" onclick="javascript:urchinTracker ('/outbound/article/www.railsinside.com');">Rails 2.2 será &#8220;thread safe&#8221;</a>.</li>
<li><a href="http://www.infoq.com/news/2008/08/gems-from-rubyforge-and-github" onclick="javascript:urchinTracker ('/outbound/article/www.infoq.com');">Ventajas en incovenientes de GitHub y RubyForge como repositorios de gemas</a>.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/380324215" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/enlaces-ruby-rails-agosto-2008/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/enlaces-ruby-rails-agosto-2008/</feedburner:origLink></item>
		<item>
		<title>Dan Kaminsky habla sobre la vulnerabilidad de DNS</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/359349040/</link>
		<comments>http://javiervidal.net/dan-kaminsky-vulnerabilidad-dns/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 11:24:05 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[sysadmin]]></category>

		<category><![CDATA[blackhat]]></category>

		<category><![CDATA[Dan Kaminsky]]></category>

		<category><![CDATA[dns]]></category>

		<category><![CDATA[seguridad]]></category>

		<category><![CDATA[ssl]]></category>

		<category><![CDATA[vulnerabilidad]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=245</guid>
		<description><![CDATA[Hace varias semanas Dan Kaminsky descubrió una grave vulnerabilidad en el protocolo DNS. En la conferencia de seguridad BlackHat que se acaba de celebrar, Dan ha contado los detalles de dicha vunerabilidad. Su ponencia ha sido muy interesante. Las conclusiones a las que llega se pueden resumir en los siguientes puntos:

La infraestructura DNS estaba expuesta [...]]]></description>
			<content:encoded><![CDATA[<p>Hace varias semanas <a href="http://www.ioactive.com/kaminsky.html" onclick="javascript:urchinTracker ('/outbound/article/www.ioactive.com');">Dan Kaminsky</a> descubrió una <a href="http://javiervidal.net/vulnerabilidad-en-el-protocolo-dns/" >grave vulnerabilidad en el protocolo DNS</a>. En la conferencia de seguridad <a href="http://www.blackhat.com/" onclick="javascript:urchinTracker ('/outbound/article/www.blackhat.com');">BlackHat</a> que se acaba de celebrar, Dan ha contado los detalles de dicha vunerabilidad. Su <a href="http://www.doxpara.com/DMK_BO2K8.ppt" onclick="javascript:urchinTracker ('/outbound/article/www.doxpara.com');">ponencia</a> ha sido muy interesante. Las conclusiones a las que llega se pueden resumir en los siguientes puntos:</p>
<ul>
<li>La <strong>infraestructura DNS</strong> estaba expuesta a una grave vulnerabilidad.</li>
<li>La investigación en seguridad está entrando en una <strong>nueva era</strong>, ya que las aplicaciones están sumamente interrelacionadas a través de internet.</li>
<li><strong>La actualización de aplicaciones online</strong> puede verse comprometida debido a la vulnerabilidad de DNS. Por ejemplo, un atacante podría hacerse pasar por el sitio del cual nos descargamos las actualizaciones del sistema operativo.</li>
<li><strong>SSL</strong> no aporta mucho, ya que en última instancia la cadena de autoridades certificadoras depende de DNS.</li>
<li><strong>Las redes internas</strong> tampoco están totalmente a salvo, ya que siempre acaba habiendo alguna dependencia con el exterior.</li>
</ul>
<p>Ha sido publicado también un curioso video elaborado por <a href="http://www.clarifiednetworks.com/" onclick="javascript:urchinTracker ('/outbound/article/www.clarifiednetworks.com');">Clarified Networks</a> en el que puede verse <strong>cómo se ha propagado la instalación del parche</strong> en los servidores DNS:</p>
<p align="center">
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Ff5WBDOwueI&#038;color1=11645361&#038;color2=13619151&#038;hl=en&#038;fs=1"></param><param name="wmode" value="transparent"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/Ff5WBDOwueI&#038;color1=11645361&#038;color2=13619151&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" wmode="transparent" width="425" height="344"></embed></object>
</p>
<p>Rojo — Sin parchear<br />
Amarillo — Parcheado, pero el NAT embrolla las cosas<br />
Verde — OK</p>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/359349040" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/dan-kaminsky-vulnerabilidad-dns/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/dan-kaminsky-vulnerabilidad-dns/</feedburner:origLink></item>
		<item>
		<title>Enlaces :ruby, :rails =&gt; “julio 2008″</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/352374249/</link>
		<comments>http://javiervidal.net/enlaces-ruby-rails-julio-2008/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 07:34:55 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[ruby, rails]]></category>

		<category><![CDATA[engine yard]]></category>

		<category><![CDATA[jruby]]></category>

		<category><![CDATA[libxml-ruby]]></category>

		<category><![CDATA[open flash chart]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[rails edge]]></category>

		<category><![CDATA[railsconf]]></category>

		<category><![CDATA[redcloth]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=241</guid>
		<description><![CDATA[Noticias destacadas de Ruby y Rails durante el mes de julio de 2008:

Se anuncia Rails Summit Latin America 2008.
Engine Yard consigue $15 millones de financiación.
Se publica libxml-ruby 0.8.0, con una gran mejora del rendimiento en el parseo de XML.
Se lanza JRuby 1.1.3.
Open Flash Chart ahora como plugin para Rails.
Se lanza RedCloth 4.0.
Disponible el calendario de [...]]]></description>
			<content:encoded><![CDATA[<p>Noticias destacadas de Ruby y Rails durante el mes de julio de 2008:</p>
<ul>
<li>Se anuncia <a href="http://www.akitaonrails.com/2008/7/13/rails-summit-latin-america-2008" onclick="javascript:urchinTracker ('/outbound/article/www.akitaonrails.com');">Rails Summit Latin America 2008</a>.</li>
<li><a href="http://javiervidal.net/engine-yard-15-millones-financiacion/" >Engine Yard consigue $15 millones de financiación.</a></li>
<li><a href="http://www.rubyinside.com/ruby-xml-crisis-over-libxml-0-8-0-released-955.html" onclick="javascript:urchinTracker ('/outbound/article/www.rubyinside.com');">Se publica libxml-ruby 0.8.0</a>, con una gran mejora del rendimiento en el parseo de XML.</li>
<li><a href="http://docs.codehaus.org/display/JRUBY/2008/07/19/JRuby+1.1.3+Released" onclick="javascript:urchinTracker ('/outbound/article/docs.codehaus.org');">Se lanza JRuby 1.1.3</a>.</li>
<li><a href="http://www.pullmonkey.com/projects/open_flash_chart" onclick="javascript:urchinTracker ('/outbound/article/www.pullmonkey.com');">Open Flash Chart ahora como plugin para Rails</a>.</li>
<li><a href="http://www.rubyinside.com/redcloth-4-released-962.html" onclick="javascript:urchinTracker ('/outbound/article/www.rubyinside.com');">Se lanza RedCloth 4.0</a>.</li>
<li>Disponible el <a href="http://en.oreilly.com/railseurope2008/public/schedule/grid" onclick="javascript:urchinTracker ('/outbound/article/en.oreilly.com');">calendario de la RailsConf Europe 2008</a>.</li>
<li><a href="http://ryandaigle.com/articles/2008/7/22/what-s-new-in-edge-rails-standard-internationalization-framework" onclick="javascript:urchinTracker ('/outbound/article/ryandaigle.com');">La internacionalización llega a Rails Edge</a>.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/352374249" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/enlaces-ruby-rails-julio-2008/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/enlaces-ruby-rails-julio-2008/</feedburner:origLink></item>
		<item>
		<title>¿Navegas con un browser actualizado?</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/337828084/</link>
		<comments>http://javiervidal.net/%c2%bfnavegas-con-un-browser-actualizado/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 07:38:08 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[internet]]></category>

		<category><![CDATA[browser]]></category>

		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=243</guid>
		<description><![CDATA[Leo en el blog de seguridad de Google que han analizado las versiones de los browsers que visitan los sites de Google y calculado el porcentaje de usuarios que utilizan una versión segura del browser, es decir, aquella con los últimos parches de seguridad aplicados.



Los resultados pueden verse en la anterior gráfica. El 83.3% de [...]]]></description>
			<content:encoded><![CDATA[<p>Leo en el <a href="http://googleonlinesecurity.blogspot.com/2008/07/are-you-using-latest-web-browser.html" onclick="javascript:urchinTracker ('/outbound/article/googleonlinesecurity.blogspot.com');">blog de seguridad de Google</a> que han analizado las versiones de los browsers que visitan los sites de Google y calculado <strong>el porcentaje de usuarios que utilizan una versión segura del browser</strong>, es decir, aquella con los últimos parches de seguridad aplicados.</p>
<p align="center">
<img src="http://javiervidal.net/wp-content/uploads/2008/07/most-secure-browser-versions.png" alt="most-secure-browser-versions" title="most-secure-browser-versions" width="340" height="268" class="aligncenter size-full wp-image-244" />
</p>
<p>Los resultados pueden verse en la anterior gráfica. El 83.3% de los usuarios de Firefox tienen su browser actualizado, frente a sólo el 47.6% de los usuarios de Internet Explorer.</p>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/337828084" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/%c2%bfnavegas-con-un-browser-actualizado/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/%c2%bfnavegas-con-un-browser-actualizado/</feedburner:origLink></item>
		<item>
		<title>Rails en producción - Parte 6 - Cluster de mongrels</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/337795542/</link>
		<comments>http://javiervidal.net/rails-produccion-6/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 13:52:49 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[ruby, rails]]></category>

		<category><![CDATA[sysadmin]]></category>

		<category><![CDATA[cluster]]></category>

		<category><![CDATA[mongrel]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=240</guid>
		<description><![CDATA[Ya sólo nos queda configurar un cluster de mongrels y apuntar hacia ellos el servidor web nginx. Supongamos que vamos a arrancar 4 mongrels, tal y como representamos en la figura de la primera parte parte de este tutorial. Los mongrels escucharán en los puertos 8000 a 8003.
Para configurar el cluster hacemos:

$ mongrel_rails cluster::configure -e [...]]]></description>
			<content:encoded><![CDATA[<p>Ya sólo nos queda configurar un cluster de mongrels y apuntar hacia ellos el servidor web nginx. Supongamos que vamos a arrancar 4 mongrels, tal y como representamos en la figura de la primera parte parte de este tutorial. Los mongrels escucharán en los puertos 8000 a 8003.</p>
<p>Para configurar el cluster hacemos:</p>

<div class="wp_syntax"><div class="code"><pre>$ mongrel_rails cluster::configure -e production -p 8000 -N 4 -c /var/miaplicacion/current -a 127.0.0.1
** Ruby version is not up-to-date<SEMI> loading cgi_multipart_eof_fix
Writing configuration file to config/mongrel_cluster.yml.</pre></div></div>

<p>Este comando habrá creado el fichero config/mongrel_cluster.yml. Lo editamos y añadimos al final sendas líneas indicando el usuario y el grupo que ejecutarán los mongrels. Como ya indicamos, será un usuario no privilegiado el que ejecute tanto el servidor web como los mongrels:</p>

<div class="wp_syntax"><div class="code"><pre>cwd: /var/www/miaplicacion/current
log_file: log/mongrel.log
port: &quot;8000&quot;
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 4
user: usuario
group: usuario</pre></div></div>

<p>Añadiremos el cluster de mongrels al arranque de la máquina:</p>

<div class="wp_syntax"><div class="code"><pre>sudo mkdir /etc/mongrel_cluster
sudo ln -s /var/www/miaplicacion/current/config/mongrel_cluster.yml /etc/mongrel_cluster/miaplicacion.yml
sudo cp /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d
sudo chmod +x /etc/init.d/mongrel_cluster
sudo /usr/sbin/update-rc.d -f mongrel_cluster defaults
sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby</pre></div></div>

<p>Y ya podremos arrancar y parar el cluster de mongrels:</p>

<div class="wp_syntax"><div class="code"><pre>$ sudo /etc/init.d/mongrel_cluster start
$ sudo /etc/init.d/mongrel_cluster stop</pre></div></div>

<p>Ahora sólo nos queda apuntar el servidor web nginx a los mongrels. Para ello, editaremos el fichero /usr/local/nginx/conf/nginx.conf. Éste es un ejemplo básico del cual podemos partir.</p>

<div class="wp_syntax"><div class="code"><pre class="bash">user              miusuario miusuario;
worker_processes  <span style="color: #000000;">4</span>;
&nbsp;
events <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    worker_connections  <span style="color: #000000;">1024</span>;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
http <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    include           mime.types;
    default_type      application<span style="color: #000000; font-weight: bold;">/</span>octet-stream;
    sendfile          on;
    keepalive_timeout <span style="color: #000000;">65</span>;
    <span style="color: #c20cb9; font-weight: bold;">gzip</span>              on;
&nbsp;
    upstream miaplicacion <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        server <span style="color: #000000;">127.0</span><span style="color: #000000;">.0</span><span style="color: #000000;">.1</span>:<span style="color: #000000;">8000</span>;
        server <span style="color: #000000;">127.0</span><span style="color: #000000;">.0</span><span style="color: #000000;">.1</span>:<span style="color: #000000;">8001</span>;
        server <span style="color: #000000;">127.0</span><span style="color: #000000;">.0</span><span style="color: #000000;">.1</span>:<span style="color: #000000;">8002</span>;
        server <span style="color: #000000;">127.0</span><span style="color: #000000;">.0</span><span style="color: #000000;">.1</span>:<span style="color: #000000;">8003</span>;
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
    server <span style="color: #7a0874; font-weight: bold;">&#123;</span>
        listen       <span style="color: #000000;">80</span>;
        server_name  midominio.com;
&nbsp;
        root   <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>miaplicacion<span style="color: #000000; font-weight: bold;">/</span>current<span style="color: #000000; font-weight: bold;">/</span>public;
        index  index.html;
&nbsp;
        location <span style="color: #000000; font-weight: bold;">/</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
          proxy_set_header  X-Real-IP  <span style="color: #007800;">$remote_addr</span>;
          proxy_set_header  X-Forwarded-For <span style="color: #007800;">$proxy_add_x_forwarded_for</span>;
          proxy_set_header Host <span style="color: #007800;">$http_host</span>;
          proxy_redirect <span style="color: #c20cb9; font-weight: bold;">false</span>;
&nbsp;
          <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>-f <span style="color: #007800;">$request_filename</span><span style="color: #000000; font-weight: bold;">/</span>index.html<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
            rewrite <span style="color: #7a0874; font-weight: bold;">&#40;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> $<span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span>index.html <span style="color: #7a0874; font-weight: bold;">break</span>;
          <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
          <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>-f <span style="color: #007800;">$request_filename</span>.html<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
            rewrite <span style="color: #7a0874; font-weight: bold;">&#40;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> $<span style="color: #000000;">1</span>.html <span style="color: #7a0874; font-weight: bold;">break</span>;
          <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
          <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">!</span>-f <span style="color: #007800;">$request_filename</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
            proxy_pass http:<span style="color: #000000; font-weight: bold;">//</span>miaplicacion;
            <span style="color: #7a0874; font-weight: bold;">break</span>;
          <span style="color: #7a0874; font-weight: bold;">&#125;</span>
        <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># redirect server error pages to the static page /50x.html</span>
        <span style="color: #666666; font-style: italic;">#</span>
        error_page   <span style="color: #000000;">500</span> <span style="color: #000000;">502</span> <span style="color: #000000;">503</span> <span style="color: #000000;">504</span>  <span style="color: #000000; font-weight: bold;">/</span>50x.html;
        location = <span style="color: #000000; font-weight: bold;">/</span>50x.html <span style="color: #7a0874; font-weight: bold;">&#123;</span>
            root   html;
        <span style="color: #7a0874; font-weight: bold;">&#125;</span>
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>En la sección &#8220;upstream&#8221; apuntamos hacia los mongrels. En ella, &#8220;miaplicacion&#8221; es una etiqueta, la misma que usamos más abajo en la línea:</p>

<div class="wp_syntax"><div class="code"><pre class="bash">proxy_pass http:<span style="color: #000000; font-weight: bold;">//</span>miaplicacion;</pre></div></div>

<p>En la sección &#8220;server&#8221; cabe destacar que &#8220;root&#8221; apunta al directorio public de mi aplicación.  </p>
<p>Rearrancamos nginx para que la nueva configuración surta efecto:</p>

<div class="wp_syntax"><div class="code"><pre>$ sudo /etc/init.d/nginx stop
$ sudo /etc/init.d/nginx start</pre></div></div>

<p>Y ahora sí, por fin, tenemos que poder abrir desde nuestro navegador la URL:</p>

<div class="wp_syntax"><div class="code"><pre>http://midominio.com/</pre></div></div>

<p>y acceder a nuestra aplicación. Si no tenemos configurado todavía la entrada en DNS, tendremos que poner la IP.</p>
<p>Como una última prueba, probaremos una vez más a rearracar la máquina y ver que todo arranca correctamente.</p>
<h3>Tutorial completo</h3>
<ul>
<li><a href="http://javiervidal.net/rails-produccion-1" >Rails en producción - Parte 1 - Introducción</a></li>
<li><a href="http://javiervidal.net/rails-produccion-2" >Rails en producción - Parte 2 - Configuración del servidor debian</a></li>
<li><a href="http://javiervidal.net/rails-produccion-3" >Rails en producción - Parte 3 - MySQL, Ruby y Rails</a></li>
<li><a href="http://javiervidal.net/rails-produccion-4" >Rails en producción - Parte 4 - Servidor web nginx</a></li>
<li><a href="http://javiervidal.net/rails-produccion-5" >Rails en producción - Parte 5 - Mongrels e instalación de nuestra aplicación</a></li>
<li><a href="http://javiervidal.net/rails-produccion-6" >Rails en producción - Parte 6 - Cluster de mongrels</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/337795542" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/rails-produccion-6/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/rails-produccion-6/</feedburner:origLink></item>
		<item>
		<title>Rails en producción - Parte 5 - Mongrel e instalación de nuestra aplicación</title>
		<link>http://feeds.feedburner.com/~r/javiervidal/~3/336106724/</link>
		<comments>http://javiervidal.net/rails-produccion-5/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 13:52:36 +0000</pubDate>
		<dc:creator>Javier Vidal Postigo</dc:creator>
		
		<category><![CDATA[ruby, rails]]></category>

		<category><![CDATA[sysadmin]]></category>

		<category><![CDATA[mongrel]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://javiervidal.net/?p=239</guid>
		<description><![CDATA[Mongrel
Mongrel será el encargado de atender las peticiones HTTP que lleguen del servidor web y ejecutar nuestra aplicación en el intérprete de Ruby.
Para instalar mongrel simplemente haremos:

$ sudo gem install mongrel mongrel_cluster --include-dependencies --no-rdoc --no-ri

Instalación de nuestra aplicación
Supondré que tenemos nuestra aplicación en un repositorio de subversion. En este caso, antes de poder hacer un [...]]]></description>
			<content:encoded><![CDATA[<h3>Mongrel</h3>
<p><a href="http://mongrel.rubyforge.org/" onclick="javascript:urchinTracker ('/outbound/article/mongrel.rubyforge.org');">Mongrel</a> será el encargado de atender las peticiones HTTP que lleguen del servidor web y ejecutar nuestra aplicación en el intérprete de Ruby.</p>
<p>Para instalar mongrel simplemente haremos:</p>

<div class="wp_syntax"><div class="code"><pre>$ sudo gem install mongrel mongrel_cluster --include-dependencies --no-rdoc --no-ri</pre></div></div>

<h3>Instalación de nuestra aplicación</h3>
<p>Supondré que tenemos nuestra aplicación en un repositorio de <a href="http://subversion.tigris.org/" onclick="javascript:urchinTracker ('/outbound/article/subversion.tigris.org');">subversion</a>. En este caso, antes de poder hacer un export de la aplicación desde el repositorio, necesitaré instalar subversion:</p>

<div class="wp_syntax"><div class="code"><pre>$ sudo aptitude install subversion -y</pre></div></div>

<p>Ahora ya podré transferir una copia de mi aplicación al servidor de producción. Supondré que la aplicación la vamos a instalar, por ejemplo, en /var/www/miaplicacion/current.</p>

<div class="wp_syntax"><div class="code"><pre>$ sudo chown usuario:usuario /var/www
$ mkdir /var/www/miaplicacion
$ cd /var/www/miaplicacion
$ svn export http://svn.midominio.com/miaplicacion/trunk current</pre></div></div>

<p>Necesitamos crear una base de datos para la aplicación:</p>

<div class="wp_syntax"><div class="code"><pre class="bash">$ mysql --<span style="color: #007800;">user=</span>root -p
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> grant all on miaplicacion_production.<span style="color: #000000; font-weight: bold;">*</span> to miaplicacion<span style="color: #000000; font-weight: bold;">@</span>localhost identified by <span style="color: #ff0000;">'miaplicacion'</span>;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> flush privileges;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> create database miaplicacion_production;</pre></div></div>

<p>Es decir, hemos creado una base de datos llamada &#8220;miaplicacion_production&#8221; y un usuario &#8220;miaplicacion&#8221;, con idéntica password, que dispone de todos los permisos en &#8220;miaplicacion_production&#8221;.</p>
<p>Normalmente, tendremos que configurar el fichero config/database.yml de nuestra aplicación para que apunte a la base de datos que acabamos de crear:</p>

<div class="wp_syntax"><div class="code"><pre>production:
  adapter: mysql
  database: miaplicacion_production
  username: miaplicacion
  password: miaplicacion
  socket: /var/run/mysqld/mysqld.sock
  host: localhost
  encoding: utf8</pre></div></div>

<p>Antes de poder arrancar nuestra aplicación deberemos instalar todas las gemas que utilicemos y que no hayamos instalado. Si no nos acordamos podemos intentar arrancar la aplicación y ver los errores. Leyendo el log de errores suele ser fácil identificar si nos falta alguna gema. Una que siempre viene bien será:</p>

<div class="wp_syntax"><div class="code"><pre>$ sudo gem install rake</pre></div></div>

<p>Hay que tener en cuenta que si no especificamos la versión, gem install instalará la última versión disponible en el repositorio. Esto quiere decir que en el entorno de desarrollo y en el de test, si instalamos las gemas hace tiempo, las versiones pueden ser inferiores, y por lo tanto, nos podemos encontrar con problemas de compatibilidad. Para ver las gemas instaladas en una máquina y sus versiones podemos ejecutar:</p>

<div class="wp_syntax"><div class="code"><pre>$ gem list</pre></div></div>

<p>Ahora ya puedo arrancar mi aplicación. De momento, para probar, arrancaremos un único proceso mongrel. Todavía no hemos configurado el servidor web para que apunte a los mongrels, así que no podremos comprobar con un navegador que funciona. Simplemente, veremos que arranca correctamente leyendo el fichero log/production.log:</p>

<div class="wp_syntax"><div class="code"><pre>$ cd /var/www/miaplicacion/current
$ mongrel_rails start -d -e production -p 8000 -P log/mongrel8000.pid</pre></div></div>

<p>Si en el fichero de log vemos que la aplicación ha arrancado, podríamos incluso comprobar que sirve peticiones:</p>

<div class="wp_syntax"><div class="code"><pre>$ cd
$ wget http://localhost:8000/</pre></div></div>

<p>Esto me guardaría en el directorio raíz del usuario un fichero llamado index.html con el HTML de la página raíz de mi aplicación. En el fichero de log debería poder ver la petición. ¿Quién necesita un browser?</p>
<p>En el último capítulo configuraremos un cluster de mongrels y apuntaremos el servidor web hacia ellos. Por eso, ahora, paramos el mongrel que hemos arrancado como prueba:</p>

<div class="wp_syntax"><div class="code"><pre>$ mongrel_rails stop -P log/mongrel8000.pid</pre></div></div>

<h3>Tutorial completo</h3>
<ul>
<li><a href="http://javiervidal.net/rails-produccion-1" >Rails en producción - Parte 1 - Introducción</a></li>
<li><a href="http://javiervidal.net/rails-produccion-2" >Rails en producción - Parte 2 - Configuración del servidor debian</a></li>
<li><a href="http://javiervidal.net/rails-produccion-3" >Rails en producción - Parte 3 - MySQL, Ruby y Rails</a></li>
<li><a href="http://javiervidal.net/rails-produccion-4" >Rails en producción - Parte 4 - Servidor web nginx</a></li>
<li><a href="http://javiervidal.net/rails-produccion-5" >Rails en producción - Parte 5 - Mongrels e instalación de nuestra aplicación</a></li>
<li><a href="http://javiervidal.net/rails-produccion-6" >Rails en producción - Parte 6 - Cluster de mongrels</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/javiervidal/~4/336106724" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://javiervidal.net/rails-produccion-5/feed/</wfw:commentRss>
		<feedburner:origLink>http://javiervidal.net/rails-produccion-5/</feedburner:origLink></item>
	</channel>
</rss>
