<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-2461576666827389205</atom:id><lastBuildDate>Mon, 25 Feb 2013 13:42:14 +0000</lastBuildDate><category>ruby</category><category>mail</category><category>attachment_fu</category><category>javascript</category><category>coldfusion</category><category>free</category><category>501</category><category>ventilador</category><category>tagcloud</category><category>linkedin</category><category>lua</category><category>memoria</category><category>HELO</category><category>unknown</category><category>pmd</category><category>euruko</category><category>dell</category><category>euruko berlin</category><category>acts_as_attachment</category><category>evictions</category><category>excel</category><category>event delegation</category><category>dell mini 10v</category><category>epson</category><category>python</category><category>content-type</category><category>rails</category><category>vdi</category><category>windows</category><category>foreign key migrations</category><category>iconv</category><category>rmagick</category><category>imagemagick</category><category>vostro</category><category>redhill</category><category>rails charla beruby</category><category>mechanize</category><category>nil</category><category>amsterdam</category><category>dx8400</category><category>linux</category><category>IE7</category><category>router</category><category>virtualbox</category><category>simple-rss</category><category>resize_to</category><category>mysql</category><category>wifi</category><category>ckeditor</category><category>FreeImage</category><category>moblin</category><category>conferenciarails</category><category>cpd</category><category>escaner</category><category>tabledefinition</category><category>vertical-align</category><category>imagen</category><category>exim</category><category>migracion</category><category>dlink</category><category>RFC2821</category><category>div</category><category>IE8</category><category>aspgems</category><category>presentación</category><category>memcached</category><category>image_science</category><category>TIOBE</category><category>ubuntu</category><category>maps</category><category>iptables</category><category>nvidia</category><category>prototype</category><category>google</category><category>mysqlbinlog</category><title>Un programador cualquiera</title><description>ruby, rails, mysql, linux, ...</description><link>http://diec123.blogspot.com/</link><managingEditor>noreply@blogger.com (Diego Rodriguez)</managingEditor><generator>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/diegorodriguez" /><feedburner:info uri="diegorodriguez" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>40.481</geo:lat><geo:long>-3.664</geo:long><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-33497524640765267</guid><pubDate>Sun, 30 Sep 2012 10:52:00 +0000</pubDate><atom:updated>2012-10-10T16:31:19.083+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">dell</category><category domain="http://www.blogger.com/atom/ns#">vostro</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>Instalando Ubuntu en Vostro 3500 (parte 2)</title><description>&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Hace año y medio escribí una entrada en el &lt;a href="http://diec123.blogspot.com.es/2011/04/instalando-ubuntu-en-vostro-3500.html"&gt;blog&lt;/a&gt; explicando los problemas que había tenido con la instalación de Ubuntu Maverick en mi &lt;a href="http://portatiles.es/dell/dell-vostro-3500"&gt;Dell Vostro 3500&lt;/a&gt;. Por los comentarios que tuve, parece que había bastante gente con los mismos problemas que yo (y que tambien me ayudaron a arreglar mis problemas), así que ahora que hace unos meses que actualicé a Ubuntu Precise (12.04), llegó el momento de actualizar la entrada.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;Tarjeta gráfica&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;&lt;br /&gt;&lt;/b&gt;
Como comenté en entrada anterior, este portátil tiene una tarjeta híbrida que no está soportada en ubuntu por defecto. Hace algo más de un año probé &lt;a href="https://wiki.ubuntu.com/Bumblebee"&gt;Bumblebee&lt;/a&gt;, pero estaba bastante verde, me dio muchos problemas y acabé por desinstalarlo. En cambio ahora es un proyecto bastante estable y llevo utilizándolo varios meses sin ningún problema.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
Usando Bumblebee, por una parte, se consigue una mejor gestión del consumo de energía desactivando la tarjeta cuando no se usa (lo que se nota bastante trabajando con batería) y por otra permite activarla manualmente ejecutando las aplicaciones desde consola anteponiendo el comando optirun&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
He leído en &lt;a href="http://www.pcworld.com/article/261874/coming_soon_to_linux_nvidia_optimus_graphics_support.html#tk.rss_news"&gt;pcworld&lt;/a&gt; y en &lt;a href="http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTE3MzY"&gt;phoronix&lt;/a&gt; que nvidia ha empezado a trabajar en un driver para este tipo de tarjetas, pero todavía no hay fechas, así que por ahora la mejor opción sin duda es Bumblebee.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;HDMI&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: -webkit-auto;"&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;He probado a conectar el portátil a la tele con un cable HDMI y detecta la tele, pero no se ve el vídeo (con un cable VGA funciona sin problema).&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;No he investigado el problema, así que no se si es un problema de configuración o si realmente no se puede.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;Lector de huellas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;&lt;br /&gt;&lt;/b&gt;
El lector de huellas integrado (VFS300) todavía no está soportado. Hay un error abierto en &lt;a href="https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/744310"&gt;launchpad&lt;/a&gt;&amp;nbsp;desde hace bastante tiempo y en el comentario &lt;a href="https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/744310/comments/51"&gt;#51&lt;/a&gt;&amp;nbsp;hay un paquete que añade soporte para este lector.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
Ejecutando las instrucciones del comentario en la configuración del usuario se puede activar su uso. &amp;nbsp;Pero me he encontrado varios problemas. El primero es que no va muy fino (la mayoría de las veces me da error al reconocer la huella) y el segundo es que al hacer login vuelve a pedir la contraseña para desbloquear el keyring (el keyring es donde ubuntu guarda las contraseñas, p.e. las de las wifis).&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
En la descripción del PPA oficial de &lt;a href="https://launchpad.net/~fingerprint/+archive/fprint"&gt;fprint&lt;/a&gt; está muy bien explicado que es el keyring y como desactivar que pida contraseña (sección 'Note on keyrings and passwordless login') aunque esta última parte no la he probado.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;strike&gt;Volviendo a launchpad, en el último comentario de final de agosto, pone que el bug ya está corregido, pero todavía no está aplicado en la versión de ubuntu. En resumen, seguiré con el lector desactivado por ahora hasta que esté mejor integrado.&lt;/strike&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;La última versión de fprint ya incluye el soporte para el lector, así que instalándolo según las instrucciones, ya se puede usar sin problemas, aunque con las limitaciones que he comentado antes.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;strike&gt;&lt;br /&gt;&lt;/strike&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;
&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;Unity&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;&lt;br /&gt;&lt;/b&gt;
Otro de los grandes cambios al actualizar ubuntu fue cambiar gnome por unity, al principio es todo un poco raro, pero a la que llevas un tiempo usándolo se nota la mejora, queda bastante más espacio libre en la pantalla al tener los menús integrados en la barra superior y no tener la barra inferior de aplicaciones y a la que te acostumbras a buscar las aplicaciones por nombre (pulsando la tecla windows) es mucho más cómodo que la búsqueda por menú de gnome.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Con Unity desaparecen todos los indicadores del menú superior (por ejemplo el icono de skype), pero se pueden activar fácilmente tal y como explican en &lt;a href="http://www.webupd8.org/2011/04/how-to-re-enable-notification-area.html"&gt;webupd8&lt;/a&gt; ejecutando desde consola&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-color: #e0e0e0; border: 0px; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;&lt;span style="background-color: transparent;"&gt;gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Otro problema para mi era no tener los applets de gnome, que usaba varios. Los que me he instalado son:&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="https://launchpad.net/indicator-multiload"&gt;System Load Indicator&lt;/a&gt;&amp;nbsp;para tener monitorizado el uso de memoría, cpu y carga del sistema&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-color: #e0e0e0; border: 0px; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;sudo add-apt-repository ppa:indicator-multiload/stable-daily
sudo apt-get update
sudo apt-get install indicator-multiload&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.jupiterapplet.org/"&gt;Jupiter&lt;/a&gt;&amp;nbsp;para la gestión automática del consumo cuando se trabaja con batería. Tiene más opciones, pero no las uso normalmente&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-color: #e0e0e0; border: 0px; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;sudo add-apt-repository ppa:webupd8team/jupitersudo apt-get update
sudo apt-get install jupiter&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;a href="https://launchpad.net/indicator-sensors"&gt;Hardware Sensors Indicators&lt;/a&gt; para tener monitorizar los sensores, principalmente el de temperatura&lt;/span&gt;&lt;/div&gt;
&lt;pre style="background-color: #e0e0e0; border: 0px; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;sudo add-apt-repository ppa:alexmurray/indicator-sensors
sudo apt-get update
sudo apt-get install indicator-sensors&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;Previamente a instalar esta última aplicación ejecuté &lt;a href="http://freecode.com/projects/xsensors"&gt;xsensors&lt;/a&gt;&amp;nbsp;que detecta los sensores disponibles y instala los módulos necesarios para los sensores detectados.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre style="background-color: #e0e0e0; border: 0px; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;sudo apt-get install xsensors
sudo sensors-detect&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
&lt;/span&gt;&lt;/code&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;En &lt;/span&gt;&lt;a href="http://askubuntu.com/questions/30334/what-application-indicators-are-available" style="font-family: Arial, Helvetica, sans-serif;"&gt;AskUbuntu&lt;/a&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt; hay una lista bastante completa de applets.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Ventilador&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;El ventilador ya no se puede gestionar como en gnome usando las alarmas de sensors applets, así que he optado por la solución que me propuso &lt;a href="http://diec123.blogspot.com.es/2011/04/instalando-ubuntu-en-vostro-3500.html?showComment=1312352378389#c8301166361470126607"&gt;samsagax&lt;/a&gt; en mi post anterior, gracias de nuevo!&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;La solución consiste en installar i8kutils y arrancar el módulo (para que arranque automáticamente al reiniciar se debe añadir i8k en /etc/modules)&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-color: #e0e0e0; border: 0px; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;sudo apt-get i8kutils&lt;/span&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;
sudo modprobe i8k&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Una vez instalado, editamos el fichero .i8kmon en el home del usuario, con los umbrales de temperatura adecuados para nuestra instalación (en man i8kmon los explica perfectamente)&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;pre style="background-color: #e0e0e0; border: 0px; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;more ~/.i8kmon&amp;nbsp;
set config(0) {{- 0} &amp;nbsp;-1 &amp;nbsp;55 &amp;nbsp;-1 &amp;nbsp;60}
set config(1) {{- 1} &amp;nbsp;50 &amp;nbsp;65 &amp;nbsp;55 &amp;nbsp;70}
set config(2) {{- 1} &amp;nbsp;50 &amp;nbsp;65 &amp;nbsp;55 &amp;nbsp;70}
set config(3) {{- 2} &amp;nbsp;60 128 &amp;nbsp;65 128}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;Si no se configura tiene unos valores por defecto de temperatura, que en mi caso creo que son demasiado altos. Tambien se puede configurar en &lt;/span&gt;&lt;/code&gt;&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;/etc/default/i8kmon. aunque prefiero la opción de ponerlo en mi home, ya que tengo particiones separadas para home y / y si formateo / no pierdo la configuración.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;Y ya solo queda arrancarlo (-a para que controle la velocidad del ventilador a parte de monitorizar y -d para que arranque en modo demonio)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre style="background-color: #e0e0e0; border: 0px; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;i8kmon -a -d&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;code style="border: 0px; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"&gt;Bueno, pues por ahora esto es todo respecto a mi configuración. Como en la entrada anterior, iré actualizando a medida que vaya descubriendo nuevas configuraciones....&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b style="background-color: white; color: #333333; font-size: large; line-height: 16px; text-align: left;"&gt;&lt;br /&gt;&lt;/b&gt;
&lt;/span&gt;
&lt;b style="background-color: white; color: #333333; font-family: Verdana, Arial, sans-serif; font-size: large; line-height: 16px; text-align: left;"&gt;&lt;br /&gt;&lt;/b&gt;&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/uj5sr1ttqB8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/uj5sr1ttqB8/instalando-ubuntu-en-vostro-3500-parte-2.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2012/09/instalando-ubuntu-en-vostro-3500-parte-2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-1312111790633495211</guid><pubDate>Fri, 15 Jun 2012 08:31:00 +0000</pubDate><atom:updated>2012-06-15T10:31:32.277+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">euruko</category><category domain="http://www.blogger.com/atom/ns#">amsterdam</category><title>Euruko 2012 - Impresiones</title><description>&lt;a href="http://2.bp.blogspot.com/-xXsWdUMIQZ4/T9rwyVHWsSI/AAAAAAAAAXE/VYXBoTLz7jc/s1600/img035.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-xXsWdUMIQZ4/T9rwyVHWsSI/AAAAAAAAAXE/VYXBoTLz7jc/s640/img035.jpg" width="235" /&gt;&lt;/a&gt;Para no perder la tradición, de nuevo he estado en &lt;a href="http://www.euruko2012.org/"&gt;Euruko&lt;/a&gt;, este año en Amsterdam.&lt;br /&gt;
&lt;br /&gt;
Aprovechando que hemos puesto en común las impresiones en &lt;a href="http://aspgems.com/"&gt;ASPgems&lt;/a&gt; (agradecido porque de nuevo me financió este año el viaje) y que acaban de publicar los vídeos en &lt;a href="http://vimeo.com/euruko/videos"&gt;vimeo&lt;/a&gt;, es el momento de reflexionar un poco sobre la conferencia.&lt;br /&gt;
&lt;br /&gt;
La verdad es que este año me ha decepcionado un poco. Es una conferencia a la que he ido ya varias veces y la tenía un poco idealizada, como una conferencia pequeña, en la que siempre me sorprendían las conferencias, con multitud de aplicaciones curiosas de ruby fuera del mundo web que es el que conozco y uso habitualmente.&lt;br /&gt;
&lt;br /&gt;
Pero este año me encontré con una conferencia multitudinaria, demasiado rígida, en la que preferían cortar las preguntas antes de retrasar cinco minutos la siguiente charla, demasiado 'enterprise' (el señor jruby contando la maravillas de su producto, idem el señor rubinius, ...) y sin nada que me sorprendiera especialmente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Espero que el año que viene en &lt;a href="http://euruko-athens.github.com/euruko13/"&gt;Atenas&lt;/a&gt; le vuelvan a dar el toque de frescura que ha perdido.&lt;br /&gt;
&lt;br /&gt;
A pesar de que parece muy negativo todo lo que he puesto, porque tenía unas espectativas demasiado altas, la conferencia ha sido interesante y ha habido unas cuantas charlas recomendables. Si me tuviera que quedar con cinco elegiría:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://vimeo.com/44025029"&gt;Bruno Aguirre - The Future is Dead: Long live the Past&lt;/a&gt;, filosofando un poco sobre programación&lt;br /&gt;
&lt;a href="http://vimeo.com/43977312"&gt;Mitchell Hashimoto - Building a Ruby Library, the Parts No One Talks About&lt;/a&gt; dando buenos consejos sobre como hacer una librería en ruby&lt;br /&gt;
&lt;a href="http://vimeo.com/43848347"&gt;Roy Tomeij - The Joy of Front-End, A Journey with Bob Ross&lt;/a&gt; con más interesantes consejos, en este caso de front-end&lt;br /&gt;
&lt;a href="http://vimeo.com/43698187"&gt;Sean Cribbs - A Case of Accidental Concurrency&lt;/a&gt; planteando un problema real de concurrencia y el proceso de resolución&lt;br /&gt;
&lt;a href="http://vimeo.com/43981884"&gt;Martin Rehfeld - Ruby &amp;amp; Erlang, At Scale with Style&lt;/a&gt; aunque no fue de las mejores charlas, siempre es interesante ver como resuelven en &lt;a href="http://www.wooga.com/"&gt;wooga&lt;/a&gt; sus problemas de escalabilidad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nos vemos en Atenas :)&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/l6wBnjRjs4I" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/l6wBnjRjs4I/euruko-2012-impresiones.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><media:thumbnail url="http://2.bp.blogspot.com/-xXsWdUMIQZ4/T9rwyVHWsSI/AAAAAAAAAXE/VYXBoTLz7jc/s72-c/img035.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2012/06/euruko-2012-impresiones.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-3906511628754811849</guid><pubDate>Thu, 25 Aug 2011 16:50:00 +0000</pubDate><atom:updated>2011-08-25T18:50:40.262+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">imagen</category><category domain="http://www.blogger.com/atom/ns#">rails</category><title>Borrando imágenes no usadas en un proyecto Rails</title><description>Para acabar el rediseño de un proyecto, estoy en la fase final de limpieza de código y me he encontrado que habían muchísimas imágenes antiguas que ya no se utilizan&lt;br /&gt;
&lt;br /&gt;
En lugar de ir buscando una por una si se usaba, que me iba a llevar demasiado tiempo, he hecho un script en ruby que busca las imágenes no usadas y las borra de subversión:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="line" id="LC1" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="n"&gt;images&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Dir&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;glob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'public/images/*'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;directory?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Checking &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;..."&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="no"&gt;IO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;popen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"ack-grep -1 -G '(app|public)' --ruby --html --css &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;basename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;eof?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="no"&gt;IO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;popen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"svn delete &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"  Deleted"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC11" style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Es tan simple como buscar todas las imágenes del directorio images y aplicar sobre cada una de ellas un &lt;a href="http://betterthangrep.com/"&gt;ack-grep&lt;/a&gt; que me busca en ficheros de ruby (.rb, .erb), html y css de los directorios app y public. El párametro -1 hace que al encontrar el primer resultado deje de buscar, con lo que conseguimos que vaya un poco más rápido.&lt;br /&gt;
&lt;br /&gt;
Luego, sobre cada una de las imágenes no usadas hace un svn delete y ya solo nos queda revisar la lista de borrados para asegurarnos de todo ha ido bien y un commit al repo.&lt;br /&gt;
&lt;br /&gt;
La modificación para que busque tambien en subdirectorios de images sería&amp;nbsp; usar 'public/images/**' como parametro en Dir.glob y igual de simple sería cambiarlo para que use git, cambiando la llamada del segundo IO.popen&lt;br /&gt;
&lt;br /&gt;
Pues nada, aquí dejo el &lt;a href="https://gist.github.com/1170410"&gt;gist&lt;/a&gt; con el script para quien le pueda ser de utilidad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/9SgFx6Nq-iE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/9SgFx6Nq-iE/borrando-imagenes-no-usadas-en-un.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2011/08/borrando-imagenes-no-usadas-en-un.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-105565103560163700</guid><pubDate>Fri, 17 Jun 2011 07:00:00 +0000</pubDate><atom:updated>2011-06-17T09:00:05.428+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">euruko berlin</category><title>Euruko 2011 - Impresiones</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-2tk1aZjv_9M/Tfp91aCqXxI/AAAAAAAAAPU/Xw6mb-p1v2g/s1600/euruko.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-2tk1aZjv_9M/Tfp91aCqXxI/AAAAAAAAAPU/Xw6mb-p1v2g/s320/euruko.jpg" width="231" /&gt;&lt;/a&gt;&lt;/div&gt;Manteniendo la tradicción de contar mis impresiones de las conferencias a las que asisto, le toca el turno a &lt;a href="http://euruko2011.org/"&gt;Euruko&lt;/a&gt;, que fue en Berlín a final de Mayo (ya me vale tardar casi 3 semanas en escribirlo...)&lt;br /&gt;
&lt;br /&gt;
Este año me han gustado bastante las charlas, más que el año pasado. De todas formas Euruko es una conferencia que nunca defrauda.&lt;br /&gt;
&lt;br /&gt;
La organización fue magnífica, con una sala impresionante, la wi-fi más rápida y la pantalla más grande que nunca he visto en una conferencia. Y litros y litros de &lt;a href="http://www.clubmate.de/cws/en/about-club-mate/what-is-club-mate.57.html"&gt;Club Mate &lt;/a&gt;para recuperarnos de las largas noches berlinesas.&lt;br /&gt;
&lt;br /&gt;
Por criticarles algo, el infierno que supuso conseguir un ticket para asistir, y en la sala de conferencias se les olvidó que existe mundo aparte de los mac. La única forma de conectar un portátil era con DVI, y más de uno tuvo que hacer su lighting talk sólo hablada sin poder proyectarla.&lt;br /&gt;
&lt;br /&gt;
Eso si, ese olvido nos proporcionó en una ligthing talk una extraña pareja en el escenario: un MacBook Air y&lt;a href="http://javier-ramirez.com/"&gt; Javi Ramírez&lt;/a&gt; :p&lt;br /&gt;
&lt;br /&gt;
Por destacar 3 charlas:&lt;br /&gt;
&lt;br /&gt;
* Para mi la estrella sin duda de este año fue &lt;a href="http://ducktypo.blogspot.com/"&gt;Paolo Perotta&lt;/a&gt; y su magnífica charla sobre &lt;a href="http://www.slideshare.net/paoloperrotta/the-revenge-of-methodmissing"&gt;method missing&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
* &lt;a href="http://karmi.cz/en"&gt;Karel Minařík&lt;/a&gt; hablando sobre &lt;a href="http://www.slideshare.net/karmi/your-data-your-search-elasticsearch-euruko-2011"&gt;ElasticSearch&lt;/a&gt; y su gema &lt;a href="https://github.com/karmi/tire"&gt;Tire&lt;/a&gt; , que ahora mismo creo que son la mejor alternativa para usar &lt;a href="http://lucene.apache.org/java/docs/index.html"&gt;Lucene&lt;/a&gt; desde ruby (los que esteis usando &lt;a href="http://lucene.apache.org/solr/"&gt;Solr&lt;/a&gt; vale la pena echarle un vistazo)&lt;br /&gt;
&lt;br /&gt;
* Tambien destacaría la charla de &lt;a href="http://www.wooga.com/"&gt;wooga&lt;/a&gt; sobre escalar &lt;a href="http://www.slideshare.net/wooga/games-for-the-masses-scaling-rails-to-the-extreme"&gt;juegos&lt;/a&gt; en Facebook, con muy buenos consejos, y lo mejor, todos apoyados en datos reales y su experiencia.&lt;br /&gt;
&lt;br /&gt;
Que destaque esas tres no quiere decir que fueran lo único interesante, y igual si lo escribiera dentro de unos meses eligiría otras. Hubo mucha variedad de temas, filosofía sobre patrones de diseño, eventos, concurrencia, javascript, procesado de imagen....&lt;br /&gt;
&lt;br /&gt;
En definitiva, vale la pena dedicarle unas horitas a ver los vídeos cuando se publiquen.&lt;br /&gt;
&lt;br /&gt;
Por último, parece que&amp;nbsp;&lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt; y &lt;a href="http://adhearsion.com/"&gt;Adhearsion&lt;/a&gt; se han hecho un hueco en muchas conferencias por la variedad de temática que ofrecen respecto al resto de charlas. Y de nuevo por criticar algo, al final todas las charlas que he visto de esos dos temas son muy parecidas, y me producen un sentimiento encontrado de 'como molan' y 'otro año más más de lo mismo'. &lt;br /&gt;
&lt;br /&gt;
Agradecerle a &lt;a href="http://aspgems.com/"&gt;ASPgems&lt;/a&gt; que me financiara el viaje y la estancia y nos vemos en &lt;a href="http://lasteuruko.org/"&gt;Amsterdam&lt;/a&gt; en la última Euruko antes del fin del mundo....&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/7RLN_eB90P8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/7RLN_eB90P8/euruko-2011-impresiones.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><media:thumbnail url="http://4.bp.blogspot.com/-2tk1aZjv_9M/Tfp91aCqXxI/AAAAAAAAAPU/Xw6mb-p1v2g/s72-c/euruko.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2011/06/euruko-2011-impresiones.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-1296497962396590173</guid><pubDate>Sat, 02 Apr 2011 19:16:00 +0000</pubDate><atom:updated>2012-10-10T16:40:16.447+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">dell</category><category domain="http://www.blogger.com/atom/ns#">ventilador</category><category domain="http://www.blogger.com/atom/ns#">vostro</category><category domain="http://www.blogger.com/atom/ns#">wifi</category><category domain="http://www.blogger.com/atom/ns#">nvidia</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>Instalando Ubuntu en Vostro 3500</title><description>&lt;br /&gt;&lt;pre style="background-color: #e0e0e0; border: 0px none; color: #333333; line-height: 17px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; text-align: left; vertical-align: baseline; width: auto;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;code style="border: 0px none; color: #222222; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;b&gt;Actualización 10/12&lt;/b&gt;: He creado una entrada complementaria a ésta explicando las novedades en la instalación en Ubuntu 12.04&amp;nbsp;
&lt;/code&gt;&lt;a href="http://diec123.blogspot.com.es/2012/09/instalando-ubuntu-en-vostro-3500-parte-2.html"&gt;http://diec123.blogspot.com.es/2012/09/instalando-ubuntu-en-vostro-3500-parte-2.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
Hace un par de meses cambié mi Dell Inspiron 6400, al que después de 4 años ya le tocaba descansar un poco, por un Dell Vostro 3500. Iba a poner un link a las especificaciones, pero veo que ya no lo venden y ahora está el &lt;a href="http://www1.euro.dell.com/content/products/productdetails.aspx/vostro-3550"&gt;Dell 3550&lt;/a&gt;, que es muy similar pero la tarjeta gráfica en lugar de ser nVidia GeForce es una ATI Radeon.&lt;br /&gt;
&lt;br /&gt;
Lo primero que hice al encenderlo despues de ver que funcionaba con el Windows 7 de serie, fue instalar Ubuntu 10.10.&lt;br /&gt;
&lt;br /&gt;
Tengo un par de compañeros de oficina que tienen ubuntu 32bits en este mismo ordenador, pero yo he probado con el de 64bits a ver que tal funciona.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Estos son los problemas que me he encontrado con el portátil:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Wi-Fi&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
La wi-fi conecta sin problemas, pero la conexión a internet no va todo lo rápida que debería ir (conectando directamente por cable al router me da 50Mbps y por wi-fi nunca me daba más de 7 o 8 Mbps). Además iwconfig siempre me daba como Bit Rate 1Mbps, así que me puse a investigar un poco...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Según las especificaciones del ordenador es una Dell Wireless 1501 (802.11b/g/n), pero según donde miraba me decía que es una Broadcom 4727 o una Broadcom 4313&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;$ dmesg | grep Wireless&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 8.954673] eth1: Broadcom BCM4727 802.11 Hybrid Wireless Controller 5.60.48.36&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;$ lspci -nn| grep Network&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;12:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g LP-PHY [14e4:4727] (rev 01)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la web de Broadcom aclaré ese lío de nombres, la respuesta está en el &lt;a href="http://www.broadcom.com/docs/linux_sta/README.txt"&gt;readme.txt&lt;/a&gt; del driver. Dell 1501 es el nombre que le da Dell a la tarjeta, que realmente es una Broadcom 4313 y el 4727 es el vendor id. Al ejecutar lspci con la opción -nn muestra el id del fabricante (14e4) y de la tarjeta (4727).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En ese mismo readme.txt en la sección 'what's new' hay varios cambios que afectan a esta tarjeta que no están en el driver que instala ubuntu por defecto, así que me descargué el &lt;a href="http://www.broadcom.com/support/802.11/linux_sta.php"&gt;driver&lt;/a&gt;, compilé y instalé siguiendo las instrucciones.&lt;br /&gt;
&lt;br /&gt;
Con el nuevo driver ha subido bastante la velocidad de conexión y iwconfig ya da la velocidad de conexión real. Problema resuelto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Tarjeta gráfica&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Este ordenador lleva una tarjeta gráfica híbrida, por lo que parece cuando hace falta poca potencia gráfica o en modo de bajo consumo utiliza sólo la tarjeta integrada y cuando se necesita toda la potencia utiliza la nVidia.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;$ lspci |grep VGA&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 18)&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;01:00.0 VGA compatible controller: nVidia Corporation GT218 [GeForce 310M] (rev a2)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
pero el driver de nVidia no se lleva bien con ubuntu, y al instalarlo se queda frito el entorno gráfico&lt;br /&gt;
&lt;br /&gt;
Hay un error abierto en launchpad &lt;br /&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;span style="color: blue; font-size: x-small;"&gt;&lt;a href="https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers/+bug/643895"&gt;https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers/+bug/643895&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Pero los últimos drivers siguen sin funcionar bien, así que seguiremos esperando....&lt;br /&gt;
&lt;br /&gt;
Además da un error de la tarjeta integrada al arrancar:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;$ dmesg |grep intel&lt;br /&gt;
...&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 7.382308] intel ips 0000:00:1f.6: failed to get i915 symbols, graphics turbo disabled&lt;br /&gt;
...&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Y tambien hay un error abierto en launchpad que dicen en los comentarios que se soluciona con la última versión del kernel&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/651104" style="color: blue;"&gt;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/651104&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Y para acabar de liarla, hay algún error más en el log de arranque&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;$ dmesg |grep Graphics&lt;br /&gt;
[&amp;nbsp;&amp;nbsp; 12.717458] agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset&lt;br /&gt;
[&amp;nbsp;&amp;nbsp; 13.011187] [drm] MTRR allocation failed.&amp;nbsp; Graphics performance may suffer.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Así que por ahora he decidido no darle más vueltas a la tarjeta y esperar a ver si se soluciona. Será por todos estos problemas por lo que han cambiado de nVidia a ATI en el nuevo modelo???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Lector de huellas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Tiene integrado un lector de huellas que en windows funciona sin problemas, pero que ubuntu no lo reconoce:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue; font-size: x-small;"&gt;$ lsusb&lt;br /&gt;
Bus 001 Device 004: ID 138a:0008 DigitalPersona, Inc &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actualizando la lista de Ids, al menos se entera de que es un lector de huellas&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;$ sudo update-usbids&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;$ lsusb&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;Bus 001 Device 004: ID 138a:0008 Validity Sensors, Inc. VFS300 Fingeprint Reader&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Instalé &lt;a href="http://www.n-view.net/Appliance/fingerprint/"&gt;fingerprint-gui&lt;/a&gt; desde ppa a ver si lo reconoce&lt;br /&gt;
&lt;div style="color: blue;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;$ sudo add-apt-repository ppa:fingerprint/fingerprint-gui&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: blue;"&gt;
&lt;span style="font-size: x-small;"&gt;$ sudo apt-get install fingerprint-gui&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
pero no reconoce el lector, y de nuevo en launchpad encontramos otro error abierto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/285089" style="color: blue;"&gt;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/285089&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Por lo que dicen, parcheando y compilando la última versión de libfprint funciona, pero todavía no lo he probado.&lt;br /&gt;
&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Ventilador&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
Otro problema que me he encontrado es el ventilador, que una vez que arranca, ya no para nunca. No es un ruido insoportable y en un ambiente de oficina ni se nota, pero estando en casa si que se nota.&lt;br /&gt;
&lt;br /&gt;
Con &lt;a href="http://dellfand.dinglisch.net/"&gt;Dellfand&lt;/a&gt; se puede modificar la velocidad del ventilador en función de la temperatura, que parece que tiene 3 estados (parado, velocidad lenta y velocidad rápida).&lt;br /&gt;
&lt;br /&gt;
Al ejecutarlo detecta la temperatura y la velocidad del ventilador, pero no es capaz de actualizarla. En el ejemplo intenta actualizar del estado 2 al 0 pero le da error&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue; font-size: x-small;"&gt;$ sudo ./dellfand 0 5 45 50 55&lt;br /&gt;
Fan 0 Status 2-&amp;gt;0 Speed 138000 CPU Temp 42C&lt;br /&gt;
dellfand: warning: set fan 0 status to 0 last cycle, it's now 2 (BIOS interference ?)&lt;br /&gt;
Fan 0 Status 2-&amp;gt;0 Speed 138000 CPU Temp 42C&lt;br /&gt;
Fan 0 Status 2-&amp;gt;0 Speed 138000 CPU Temp 45C&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Así que conviviremos con el ventilador por ahora...&lt;br /&gt;
&lt;br /&gt;
&lt;strike&gt;He encontrado muchas quejas por foros, pero ninguna solución.&lt;/strike&gt; Gracias a Mr. Anónimo (ver comentarios) he resuelto el problema&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se debe instalar &lt;a href="http://packages.ubuntu.com/hardy/i8kutils"&gt;i8kutils&lt;/a&gt; (la descripción del paquete es 'utilities for Dell Inspiron and Latitude laptops' pero funciona sin problemas en mi Vostro), y i8kfan nos va a permitir cambiar la velocidad del ventilador.&lt;br /&gt;
&lt;br /&gt;
Para que funcione hay que cargar el módulo (y añadirlo en /etc/modules para que lo cargue al arrancar)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;sudo modprobe i8k&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
i8kfan admite 2 parámetros (para controlar 2 ventiladores), como este ordenador sólo tiene un ventilador, le pasamos -1 en el primer parámetro y en el segundo parámetro la velocidad (0, 1 o 2), aunque el 0 no funciona y en pocos segundos pasa al 2 (parece que la bios no permite pararlo).&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue; font-size: x-small;"&gt;i8kfan -1 1&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Y por último añadimos un par de alarmas en el &lt;a href="http://sensors-applet.sourceforge.net/"&gt;sensors applet&lt;/a&gt; tal y como está explicado perfectamente en los comentarios.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Actualización 07-08-2011&lt;/b&gt;:&amp;nbsp; samsagax explica en los comentarios como monitorizar automáticamente con i8kmon sin necesidad de definir las alarmas. Gracias!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En resumen podría parecer que es un desastre de ordenador, igual es que soy muy sufrido, pero la verdad es que estoy bastante contento con él y seguiré comprando Dell a pesar de todos estos problemas :)&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/Eoyni74GHRI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/Eoyni74GHRI/instalando-ubuntu-en-vostro-3500.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>20</thr:total><feedburner:origLink>http://diec123.blogspot.com/2011/04/instalando-ubuntu-en-vostro-3500.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-8538740630926557343</guid><pubDate>Tue, 18 Jan 2011 00:11:00 +0000</pubDate><atom:updated>2011-01-18T09:18:40.233+01:00</atom:updated><title>Sobre la (in)competencia médica...</title><description>Aunque este blog normalmente sólo escribo de cosas técnicas, este tema me apetece explicarselo a la humanidad (bueno, a la infinitesima parte de la humanidad que lea esta entrada, que con lo larga que es será muy infinitesimal...)&lt;br /&gt;
&lt;br /&gt;
La historia empieza hace 15 ó 20 años, ya no recuerdo la fecha. Empecé a tener molestias en la articulación del femur con la cadera cuando me sentaba en mala postura o cuando forzaba más de la cuenta. Una vez la molestia fue a más y después de andar unos días cojo decidí ir al médico.&lt;br /&gt;
&lt;br /&gt;
Me hicieron una radiografía y me dijeron que tenía &lt;a href="https://secure.wikimedia.org/wikipedia/es/wiki/Calcificaci%C3%B3n"&gt;calcificación&lt;/a&gt; en la cabeza del femur y que tomara un &lt;a href="https://secure.wikimedia.org/wikipedia/es/wiki/Antiinflamatorio_no_esteroideo"&gt;antiinflamatorio no esteroide&lt;/a&gt;, concretamente &lt;a href="http://www.prospectos.net/airtal_comprimidos"&gt;Airtal&lt;/a&gt;. Al cabo de una semana se me quitó el dolor y me quedé con la idea de que tenía un defecto de fábrica en la pierna.&lt;br /&gt;
&lt;br /&gt;
A lo largo de estos años me ha ido molestando puntualmente y cuando iba a mayores me drograba un poco. Pero el problema apareció de nuevo en Enero del año pasado, en un intento fallido de aprender a esquiar, el primer día me molestó un poco la pierna, al segundo día andaba cojo y al tercer día cuando ya iba cojo de las dos piernas tuve que dejarlo.&lt;br /&gt;
&lt;br /&gt;
Fui al médico de cabecera, le conté la historia y me dijo que debía ser una &lt;a href="https://secure.wikimedia.org/wikipedia/es/wiki/Bursitis"&gt;bursitis&lt;/a&gt; y me dio antiinflamatorios, al igual que n años antes, esta vez &lt;a href="http://www.prospectos.net/enantyum_25_mg_comprimidos"&gt;Enantyum&lt;/a&gt;. A la semana siguiente volví porque no se me acababa de curar y me dió la solución mágica 'toma pastillas otra semana más', así que le pedí que me mandara a un especialista, ya que me preocupaba tantos días andando cojo y me dieron hora para radiografía y para especialista mes y medio despues.&lt;br /&gt;
&lt;br /&gt;
Un par de semanas despues empecé a correr un poco (uno de mis objetivos del 2010), y aunque eran entrenamientos muy cortos me empezó a molestar de nuevo la pierna.&lt;br /&gt;
&lt;br /&gt;
El día que fui al especialista me estuvo haciendo giros para ver donde me dolía y me dijo que no veía nada, que podía ser una &lt;a href="https://secure.wikimedia.org/wikipedia/en/wiki/Synovitis"&gt;sinovitis&lt;/a&gt; (que bien, ya llevamos tres problemas, calcificación, bursitis y sinovitis) o otro nombre que no recuerdo, me mando otras dos radiografías y hasta que tuviera el resultado reposo y si me dolía ibuprofreno.&lt;br /&gt;
&lt;br /&gt;
Al cabo de dos semanas volví al especialista, esta vez me tocó otro diferente, miró todas las radiografías y como ya no me dolía me dio la solución mágica:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;'No veo ningún problema en las radiografías, si te duele al correr, búscate un deporte que no te duela, y si te duele, tómate enantyum o ibuprofeno'.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Ahí me di cuenta que llevaba más de dos meses perdiendo el tiempo para nada. Unos días después mi amiga &lt;a href="http://molimpop.com/"&gt;Marta&lt;/a&gt; me recomendo una &lt;a href="https://secure.wikimedia.org/wikipedia/es/wiki/Osteopat%C3%ADa"&gt;osteópata&lt;/a&gt; que conocía. Como no tenía nada que perder pedí hora, fuí con las radiografías y le explique mis penas.&lt;br /&gt;
&lt;br /&gt;
Mirando las radiografías me dijo que en el fémur no veía nada y que lo único que veía era una vértebra mal puesta. Así que después de tres sesiones de masajes (la primera de las cuales me dejó hasta un morado en la espalda colocando la columna vertebral en su sitio) ya estaba perfectamente de la pierna, sin absolutamente ninguna molestía en ninguna postura, cosa que no me pasaba hacía años.&lt;br /&gt;
&lt;br /&gt;
Volví a empezar a correr, y durante el año habré vuelto tres o cuatro veces más a darme masajes para recolocarme la espalda y con un pequeño problema de &lt;a href="https://secure.wikimedia.org/wikipedia/es/wiki/Fascitis_plantar"&gt;fascitis&lt;/a&gt; por no estirar lo suficiente &lt;br /&gt;
&lt;br /&gt;
y para entrar al 2011 con buen pie, corrí la San Silvestre con unos compañeros de trabajo, tal y como contó Dani Mata en &lt;a href="http://lohagopor.com/es/users/18-daniel-de-la-mata/challenges/24-san-silvestre-2010"&gt;LoHagoPor&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y despues de este rollo llega el momento de la reflexión ya que si le hubiera hecho caso a la última doctora que ví, habría dejado de correr cuando ahora estoy saliendo 2 o 3 veces a correr por semana sin problemas.&lt;br /&gt;
&lt;br /&gt;
- ¿ Por qué los médicos lo arreglan todo recetando drogas ?&lt;br /&gt;
- ¿ Por qué son tan cuadriculados los médicos? a ninguno se le ocurrió buscar la causa real del problema en otro sitio, ¿no saben que el origen de un dolor no tiene que estar justo en el punto que duele?&lt;br /&gt;
- ¿ Por qué ninguno de los médicos me recomendó que me probara con un masaje? ¿Es que son profesiones enfrentadas? ¿Tienen miedo a que les quiten la clientela?&lt;br /&gt;
- ¿ Por qué ese aire de superioridad y esa prepotencia? si simplemente han estudiado una carrera que consiste en memorizar muchas cosas ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Afortunadamente voy muy poco al médico, y espero que si algún día me toca ir por un problema grave de verdad, no por un simple dolor de pierna, encontrarme otro tipo de médicos, que seguro que debe haberlos....&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/svqDSnyxtyY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/svqDSnyxtyY/sobre-la-incompetencia-medica.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>7</thr:total><feedburner:origLink>http://diec123.blogspot.com/2011/01/sobre-la-incompetencia-medica.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-656389688601079370</guid><pubDate>Wed, 22 Dec 2010 22:03:00 +0000</pubDate><atom:updated>2010-12-22T23:04:21.320+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ckeditor</category><category domain="http://www.blogger.com/atom/ns#">imagemagick</category><category domain="http://www.blogger.com/atom/ns#">rmagick</category><title>Upload de ficheros con CKEditor</title><description>Hace unos días, en un proyecto en el que estamos usando &lt;a href="http://ckeditor.com/"&gt;CKEditor&lt;/a&gt; para que los administradores puedan gestionar el contenido de la web, me pidieron añadir upload de imágenes.&lt;br /&gt;
&lt;br /&gt;
La opción más simple que encontré fue utilizar el plugin &lt;a href="https://github.com/galetahub/rails-ckeditor"&gt;rails-ckeditor&lt;/a&gt;, que integra la funcionalidad de subida de imágenes de una forma bastante elegante usando &lt;a href="http://www.swfupload.org/"&gt;SWFUpload&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Como siempre, en local funcionaba todo perfectamente, pero al instalar en la máquina de integración dio un poco de guerra.&lt;br /&gt;
&lt;br /&gt;
Para empezar, el primer problema fue con la versión de &lt;a href="https://github.com/rmagick/rmagick"&gt;RMagick&lt;/a&gt;, instalando la última versión disponible (2.13.1) me daba un bonito error&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: #f3f3f3; color: blue; font-size: x-small;"&gt;Updating installed gems&lt;br /&gt;
Updating rmagick&lt;br /&gt;
Building native extensions.&amp;nbsp; This could take a while...&lt;br /&gt;
ERROR:&amp;nbsp; Error installing rmagick:&lt;br /&gt;
ERROR: Failed to build gem native extension.&lt;br /&gt;
...&lt;br /&gt;
checking for ImageMagick version &amp;gt;= 6.4.9... no&lt;br /&gt;
Can't install RMagick 2.13.1. You must have ImageMagick 6.4.9 or later.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
El problema es que la máquina de integración tiene Ubuntu Hardy, y la versión de &lt;a href="http://packages.ubuntu.com/hardy/imagemagick"&gt;ImageMagick&lt;/a&gt; de Hardy es la 6.3.7:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;$ convert -version&lt;br /&gt;
Version: ImageMagick 6.3.7 06/04/09 Q16 http://www.imagemagick.org&lt;br /&gt;
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Así que mirando en github las dependencias de la Rmagick en el fichero &lt;a href="https://github.com/rmagick/rmagick/blob/RMagick_2-12-2/ext/RMagick/extconf.rb"&gt;extconf.rb&lt;/a&gt; se encuentra que la última versión que se puede usar es la 2.12.2, actualizamos bundler y instalación superada.&lt;br /&gt;
&lt;br /&gt;
El siguiente problema aparece al probar la subida de imágenes y ver que da simplemente un alert de javascript, a veces con un 401 y otras con un 2038 sin ninguna más información.&lt;br /&gt;
&lt;br /&gt;
Mirando en el log de apache se encuentra el error&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;84.79.196.203 - - [11/Nov/2010:11:16:03 +0100] "POST /es/ckeditor/create/image?.... HTTP/1.1" 401 350 "-" "Shockwave Flash"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
El problema es debido al Flash de subida de imágenes, que no es capaz de gestionar la autentificación básica del servidor de integración y da un &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2"&gt;Unathorized&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
La solución, permitir el acceso a esa carpeta del servidor de integración en Apache añadiendo en el virtual host&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;  &lt;br /&gt;
&amp;lt;Location /*/ckeditor/create/image*&amp;gt;&lt;br /&gt;
Satisfy Any&lt;br /&gt;
Allow from all&lt;br /&gt;
&amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
El * porque utilizamos el plugin &lt;a href="https://github.com/svenfuchs/routing-filter"&gt;routing filter&lt;/a&gt; para gestionar el multilenguaje. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Y con estos dos pequeños cambios, prueba superada. Aquí lo dejo por si a alguien le sirve de ayuda....&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/64jDY6_1290" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/64jDY6_1290/upload-de-ficheros-con-ckeditor.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2010/12/upload-de-ficheros-con-ckeditor.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-5442321282652936362</guid><pubDate>Mon, 15 Nov 2010 23:34:00 +0000</pubDate><atom:updated>2010-11-16T00:34:38.113+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conferenciarails</category><title>Conferencia Rails 2010 - Impresiones</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ZH3Nx8bKkcE/TOG4xxGza_I/AAAAAAAAAMQ/wMbvgSUCcCo/s1600/conferencia_rails.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_ZH3Nx8bKkcE/TOG4xxGza_I/AAAAAAAAAMQ/wMbvgSUCcCo/s320/conferencia_rails.jpg" width="216" /&gt;&lt;/a&gt;&lt;/div&gt;Retomo mi abandonado blog desde hace meses para hablar un poco de la &lt;a href="http://conferenciarails.org/"&gt;conferencia rails&lt;/a&gt; que se celebró en Madrid hace un par de semanas.&lt;br /&gt;
&lt;br /&gt;
No se como explicarlo, pero me ha dejado una sensación extraña esta conferencia. En las dos primeras que asistí, en 2007 y 2008, la mayoría de conferencias a las que fui estaban centradas exclusivamente en rails (funcionalidades, escalabilidad, buenas prácticas, ....) y en testing de aplicaciones desarrolladas con rails&lt;br /&gt;
&lt;br /&gt;
El año pasado cambió un poco la cosa, se introdujeron algunas charlas en inglés, se habló de las novedades (rack, sinatra, rails 3),&amp;nbsp; y se filosofó mucho sobre programación&lt;br /&gt;
&lt;br /&gt;
En cambio este año, tengo la impresión de que no se ha hablado practicamente nada de rails y no acabo de entender muy bien el motivo. Puede ser porque la comunidad rails española ya es bastante madura y interesa más explorar otros temas, que no se presentaran propuestas interesantes de charlas centradas en rails, pero no acabo de entenderlo, y de ahí esa sensación extraña de la conferencia (rails?) &lt;br /&gt;
&lt;br /&gt;
Aunque todas las charlas han sido en inglés, la mayoría de los asistentes eran locales, supongo que en parte debido a que en fechas muy cercanas, se ha celebrado la primera &lt;a href="http://rubyconfuruguay.org/"&gt;RubyConf Uruguay&lt;/a&gt; y la &lt;a href="http://rubyandrails.eu/"&gt;Ruby And Rails&lt;/a&gt; en Amsterdam&lt;br /&gt;
&lt;br /&gt;
A destacar las charlas sobre &lt;a href="http://www.slideshare.net/christkv/nodejs-and-ruby-5701395"&gt;node.js&lt;/a&gt; y de &lt;a href="http://joyeur.files.wordpress.com/2010/11/html5-web-sockets-ruby-nodejs-2010-11-05.pdf"&gt;WebSockets&lt;/a&gt;, que son temas a tener en vista y que pueden dar mucho juego dentro de un tiempo, y los siempre brillantes Pablo Delgado hablando de &lt;a href="http://www.slideshare.net/pablete/neo4j-for-ruby-and-rails"&gt;neo4j&lt;/a&gt; y Cavallé sobre &lt;a href="http://www.slideshare.net/cavalle/the-cqrs-diet"&gt;CQRS&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A ver que nos depara la conferencia 2011... allí estaremos para verlo...&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/23WbSll_tFU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/23WbSll_tFU/conferencia-rails-2010-impresiones.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><media:thumbnail url="http://4.bp.blogspot.com/_ZH3Nx8bKkcE/TOG4xxGza_I/AAAAAAAAAMQ/wMbvgSUCcCo/s72-c/conferencia_rails.jpg" height="72" width="72" /><thr:total>5</thr:total><enclosure url="http://joyeur.files.wordpress.com/2010/11/html5-web-sockets-ruby-nodejs-2010-11-05.pdf" length="623050" type="application/pdf" /><media:content url="http://joyeur.files.wordpress.com/2010/11/html5-web-sockets-ruby-nodejs-2010-11-05.pdf" fileSize="623050" type="application/pdf" /><feedburner:origLink>http://diec123.blogspot.com/2010/11/conferencia-rails-2010-impresiones.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-8502332436953559164</guid><pubDate>Thu, 03 Jun 2010 18:39:00 +0000</pubDate><atom:updated>2010-11-15T23:34:13.973+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">euruko</category><title>Euruko 2010</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ZH3Nx8bKkcE/TAfr3-iEuhI/AAAAAAAAAKA/GP7lelB5dI0/s1600/euruko_logo_final.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ZH3Nx8bKkcE/TAfr3-iEuhI/AAAAAAAAAKA/GP7lelB5dI0/s320/euruko_logo_final.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Para no perder la costumbre, como cada vez que voy a una conferencia, unas notas sobre la &lt;a href="http://euruko2010.org/"&gt;European Ruby Conference&lt;/a&gt; de este año, que ha sido en Cracovia.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En cuanto a las &lt;a href="http://euruko2010.org/agenda"&gt;charlas&lt;/a&gt;, por citar unas cuantas, son destacables:&lt;br /&gt;
- El keynote tardío de Matz&lt;br /&gt;
- Jose Valim con una charla algo filosófica sobre cuando usar &lt;a href="http://en.wikipedia.org/wiki/Domain-specific_language"&gt;DSL&lt;/a&gt;&lt;br /&gt;
- Karel Minařík, hablando sobre como enseñar a programar usando ruby&lt;br /&gt;
- Sven Fuchs explicando las novedades de i18n en Ruby&lt;br /&gt;
- Jason Goecke y su presentación de &lt;a href="http://tropo.com/"&gt;Tropo&lt;/a&gt;, para añadir voz a las aplicaciones&lt;br /&gt;
- Piotr Szotkowski y profiling en Ruby 1.9&lt;br /&gt;
- Florian Hanke que está desarrollando un buscador en ruby&lt;br /&gt;
- Florian Glicher contando como funciona el Character encoding in Ruby 1.9 &lt;br /&gt;
&lt;br /&gt;
&lt;strike&gt;(tengo que añadir links a todas las charlas, los añadiré en breve...)&amp;nbsp; &lt;/strike&gt;Los vídeos de las charlas están publicados en &lt;a href="http://www.vimeo.com/agilece"&gt;Vimeo&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La representación española estuvo en las lightning talks, a cargo de &lt;a href="http://javier-ramirez.com/"&gt;javi&lt;/a&gt;, que nos contó como documentar usando las plantillas de las&lt;a href="http://guides.rails.info/"&gt; rails guides&lt;/a&gt; y anunció que la &lt;a href="http://conferenciarails.org/"&gt;Conferencia Rails&lt;/a&gt; de este año será en inglés, invitando a participar a los asistentes y de &lt;a href="http://www.fernandoguillen.info/"&gt;fernando guillén&lt;/a&gt;, con una de las presentaciones más aplaudidas y divertidas de toda la conferencia hablando de un &lt;a href="http://oneofzombies.com/"&gt;juego&lt;/a&gt; que hizo con &lt;a href="http://www.libgosu.org/"&gt;gosu&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Y de las que no vi, que fueron pocas, me supo mal perderme la de &lt;a href="http://tomash.wrug.eu/"&gt; Tomasz&lt;/a&gt;, que dio una gran charla el año pasado&lt;br /&gt;
&lt;br /&gt;
He encontrado estas notas de &lt;a href="http://twitter.com/cypher"&gt;@cypher&lt;/a&gt; sobre el &lt;a href="http://nuclearsquid.com/writings/euruko-day1.html"&gt;primer&lt;/a&gt; y &lt;a href="http://nuclearsquid.com/writings/euruko-day2.html"&gt;segundo&lt;/a&gt; día donde hay un resumen bastante completo de las conferencias &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y comparando con &lt;a href="http://diec123.blogspot.com/2009/05/euruko-2009.html"&gt;Euruko 2009&lt;/a&gt;, me han gustado menos las charlas, el año pasado fueron mucho más variadas y tocaron muchos temas. En cambio, en las de este año, en casi todas tenía la impresión de que aunque ninguna hablaba de rails, casi todo era aplicable a rails, por lo que me llevo la sensación de que ha sido más monotemática, aunque no lo parezca por los contenidos.&lt;br /&gt;
&lt;br /&gt;
Tampoco me gustó que no se publicará ninguna información sobre las charlas aparte del título, aunque sólo había un track y no se podía elegir charlas, siempre es interesante saber de que van a ir...&lt;br /&gt;
&lt;br /&gt;
En cambio, las actividades 'extraescolares' fueron bastante mejores, con zumos, bebida y comida disponibles prácticamente durante todo el día, las conferencias en el centro de la ciudad de forma que nos pudimos mover a pie durante todo el fin de semana y un gran ambiente nocturno, donde el triunfador absoluto fue el &lt;a href="http://www.jazzrockcafe.pl/"&gt;Jazz Rock Cafe &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Nos vemos en Berlin el año que viene en la &lt;a href="http://euruko2011.org/"&gt;Euruko 2011&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/0yoSusMe3QI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/0yoSusMe3QI/euruko-2010.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><media:thumbnail url="http://1.bp.blogspot.com/_ZH3Nx8bKkcE/TAfr3-iEuhI/AAAAAAAAAKA/GP7lelB5dI0/s72-c/euruko_logo_final.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2010/06/euruko-2010.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-4367303019615001750</guid><pubDate>Wed, 28 Apr 2010 22:38:00 +0000</pubDate><atom:updated>2010-04-29T00:43:25.079+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">maps</category><category domain="http://www.blogger.com/atom/ns#">google</category><title>Actualizando Google Maps API de la v2 a la v3</title><description>Me ha tocado actualizar unos mapas que estaban utilizando la &lt;a href="http://code.google.com/apis/maps/documentation/index.html"&gt;versión 2&lt;/a&gt; de la API de Google Maps a la &lt;a href="http://code.google.com/apis/maps/documentation/v3/"&gt;versión 3&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Algunas de las novedades de la versión 3 son el soporte a iPhone y Android, mejora de la velocidad de carga, ya no es necesaria una clave de acceso y siguiendo la línea del resto de aplicaciones de Google ya no soporta IE6.&lt;br /&gt;
&lt;br /&gt;
La idea de este post es hacer una guía rápida de migración, con el código de la v2 y el equivalente de la v3, no he utilizado ninguna nueva funcionalidad.&lt;br /&gt;
&lt;br /&gt;
Suponiendo que tenemos definidas las variables &lt;i&gt;longitude&lt;/i&gt;, &lt;i&gt;latitude&lt;/i&gt;, &lt;i&gt;zoom_level&lt;/i&gt;, &lt;i&gt;image_path, html_content &lt;/i&gt;y &lt;i&gt;div_element&lt;/i&gt; (autoexplicativas todas)&lt;br /&gt;
&lt;br /&gt;
Primero de todo incluimos el JS de google, que ha pasado de&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;key=API_KEY&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
a &lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue; font-size: x-small;"&gt;http://maps.google.com/maps/api/js?sensor=false&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Donde &lt;a href="http://code.google.com/apis/maps/documentation/#SpecifyingSensor"&gt;sensor&lt;/a&gt; indica si la aplicación utiliza un sensor para localizar al usuario.&lt;br /&gt;
&lt;br /&gt;
La creación de un mapa en la v2 era&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue; font-size: x-small;"&gt;var myLatlng = new GLatLng(latitude, longitude)&lt;br /&gt;
map = new GMap2(div_element);&lt;br /&gt;
map.setCenter(myLatlng, zoom_level);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Y en la nueva versión&lt;br /&gt;
&lt;div style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;span style="color: blue; font-size: x-small;"&gt;var myLatlng = new google.maps.LatLng(latitude,longitude);&lt;br /&gt;
var myOptions = {&lt;br /&gt;
&amp;nbsp; zoom: zoom_level,&lt;br /&gt;
&amp;nbsp; center: myLatlng,&lt;br /&gt;
}&lt;br /&gt;
map = new google.maps.Map(div_element, myOptions);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por una parte se ha sustituido la &lt;i&gt;'G&lt;/i&gt;' del nombre de los objetos por el namespace &lt;i&gt;'google.maps&lt;/i&gt;.' y por otra parte, las propiedades se asignan a través de un objeto (myOptions en este caso) en lugar de utilizando métodos.&lt;br /&gt;
&lt;br /&gt;
Una vez creado el mapa, se le pueden cambiar / asignar nuevas propiedades con el método setOptions, p.e. los controles del mapa, que en la versión 2 se asignaban con&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: blue;"&gt;&lt;span style="font-size: x-small;"&gt;map.addControl(new GSmallMapControl());&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Ahora se asignan&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;map.setOptions({&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; navigationControl: true,&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL}&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;})&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
No es exactamente el mismo control, pero todavía no están implementados todos en la nueva versión.&lt;br /&gt;
&lt;br /&gt;
A la hora de crear un marcador con imagen personalizada pasamos de&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue; font-size: x-small;"&gt;var icon = new GIcon(G_DEFAULT_ICON);&lt;br /&gt;
icon.image = image_path;&lt;br /&gt;
marker = new GMarker(new GLatLng(latitude, longitude), icon);&lt;br /&gt;
map.addOverlay(marker);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
a&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;marker = new google.maps.Marker({&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; position: point,&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; map: map,&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; icon: image_path&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Igual que en la creación del mapa, por medio de un objeto pasamos todas las propiedades al marker.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al borrar elementos de pantalla la cosa se complica. En la versión anterior simplemente llamando a &lt;span style="color: blue;"&gt;map.clearOverlays()&lt;/span&gt; limpiabamos el mapa. En la nueva versión hay que guardar la referencia a los objetos para borrarlos manualmente aplicando el método &lt;span style="color: blue;"&gt;setMap(null)&lt;/span&gt;. En la documentación hay un &lt;a href="http://code.google.com/apis/maps/documentation/v3/overlays.html#RemovingOverlays"&gt;ejemplo&lt;/a&gt; bastante completo &lt;br /&gt;
&lt;br /&gt;
Por último tambien ha cambiado tambien la creación de mensajes (bubbles), antes era:&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;var myLatlng = new GLatLng(latitude, longitude)&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;map.openInfoWindowHtml(myLatlng, html_content)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Y ahora&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="color: blue;"&gt;var myLatlng = new google.maps.LatLng(latitude,longitude);&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;var infowindow = new google.maps.InfoWindow({&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; content: html_content,&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;nbsp; position: myLatlng&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;});&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Disclaimer: No he pretendido hacer una guía exhaustiva de migración, simplemente explicar los cambios que me aplicado migrando un mapa ya existente. Es posible que tanto la implementación anterior como la nueva no fueran de la forma más óptima o canónica, ya que como en la mayoría de las cosas, no soy experto en el tema....&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/MCGH8NBDVlU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/MCGH8NBDVlU/actualizando-google-maps-api-de-la-v2.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>4</thr:total><feedburner:origLink>http://diec123.blogspot.com/2010/04/actualizando-google-maps-api-de-la-v2.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-6865282952163312854</guid><pubDate>Mon, 29 Mar 2010 21:46:00 +0000</pubDate><atom:updated>2010-04-12T09:36:13.457+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">dell mini 10v</category><category domain="http://www.blogger.com/atom/ns#">moblin</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>Ubuntu Remix Edition en Dell Mini 10v</title><description>Hace algo más de un mes compré un &lt;a href="http://www1.euro.dell.com/es/es/domestica/Port%C3%A1tiles/laptop-inspiron-10/pd.aspx?refid=laptop-inspiron-10&amp;amp;s=dhs&amp;amp;cs=esdhs1"&gt;Dell mini 10v&lt;/a&gt;. Viene con Windows 7 starter y con 1GB de RAM y al ver lo lento que iba todo, lo que tardaba en arrancar, ... decidí formatearlo y instalarle Linux.&lt;br /&gt;
&lt;br /&gt;
Dell tiene algunos modelos con Ubuntu, así que buscando un poco encontré que tienen una versión de &lt;a href="http://moblin.org/"&gt;Moblin&lt;/a&gt; para descargar en su &lt;a href="http://en.community.dell.com/wikis/linux/ubuntu-9-04-moblin-remix-developer-edition.aspx"&gt;wiki&lt;/a&gt;, que se instala sin ningún problema desde USB y que funciona perfectamente.&lt;br /&gt;
&lt;br /&gt;
Eso si, despues de unas semanas de uso no me convenció la interfaz gráfica de Moblin, no me parece cómoda de usar, así que decidí instalar &lt;a href="http://www.ubuntu.com/GetUbuntu/download-netbook"&gt;Ubuntu Remix Edition&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Una vez instalado todo funciona perfectamente, todo... menos la wi-fi... que es una Broadcom BCM4312 (se puede ver el modelo con lspci). Parece que no se instala el driver por defecto porque es un controlador no libre suministrado por el fabricante&lt;br /&gt;
&lt;br /&gt;
Y para instalar el driver, de nuevo buscando un poco, en la sección de &lt;a href="https://help.ubuntu.com/community/WifiDocs"&gt;WifiDocs&lt;/a&gt; de la ayuda de Ubuntu hay una &lt;a href="https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx"&gt;página&lt;/a&gt; donde lo explica todo paso a paso.&lt;br /&gt;
&lt;br /&gt;
Simplemente hay que instalar un par de paquetes (dkms y patch, tambien dicen que hace falta fakeroot pero a mi me funcionó sin instalarlo), instalar bcmwl-kernel-source y habilitar el controlador privativo&lt;br /&gt;
&lt;br /&gt;
Y si os pasa como a mi, que a mi router wi-fi le han dejado de funcionar los puertos ethernet para poder conectarlo directamente, pues os tocará bajaros los ficheros desde otro ordenador uno a uno desde la web de &lt;a href="http://packages.ubuntu.com/karmic/"&gt;ubuntu&lt;/a&gt; y luego instalarlos a mano...&lt;br /&gt;
&lt;br /&gt;
Eso es todo, relativamente sencillo y realmente me gusta mucho más el entorno de Ubuntu Remix Edition que el de Moblin y va mucho más rápido que con Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;ACTUALIZACIÓN 12/04/2010&lt;/b&gt;: En los comentarios me recomiendan &lt;a href="http://www.jolicloud.com/"&gt;Jolicloud&lt;/a&gt;, no lo he probado, pero tiene buena pinta. Gracias por la sugerencia!&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/f4Cu_WjlcZI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/f4Cu_WjlcZI/ubuntu-remix-edition-en-dell-mini-10v.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>1</thr:total><feedburner:origLink>http://diec123.blogspot.com/2010/03/ubuntu-remix-edition-en-dell-mini-10v.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-4252923882731502123</guid><pubDate>Sat, 27 Feb 2010 10:45:00 +0000</pubDate><atom:updated>2010-02-27T12:38:40.393+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">event delegation</category><category domain="http://www.blogger.com/atom/ns#">prototype</category><title>Event Delegation en Javascript</title><description>Hace unos días haciendo una página que básicamente es un listado con 3 radio buttons por fila (si, &lt;a href="http://twitter.com/porras"&gt;porras&lt;/a&gt;, aunque en tu &lt;a href="http://github.com/porras/madrid-rb-feb-2010"&gt;charla&lt;/a&gt; del &lt;a href="http://groups.google.com/group/madrid-rb"&gt;madrid-rb&lt;/a&gt; del jueves dijeras que no sabes para que se usan, a veces son útiles), quería que se enviara el formulario al seleccionar uno de los radio-buttons sin tener que pulsar en submit.&lt;br /&gt;
&lt;br /&gt;
Para hacerlo un poco limpio, lo hice con&lt;a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript"&gt; javascript no intrusivo&lt;/a&gt; y &lt;a href="http://www.prototypejs.org/"&gt;prototype&lt;/a&gt; de la siguiente forma, donde cada uno de los input tiene definida la clase radio_submit&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;document.observe("dom:loaded", function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $$('input.radio_submit').each(function(item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.observe('click', function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item.parentNode.submit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
});&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Pero no me gustaba esa solución donde tengo 3 function anidados, así que le pedí consejo a &lt;a href="http://twitter.com/pacoguzman"&gt;Paco&lt;/a&gt; a ver si se le ocurría una mejor solución.&lt;br /&gt;
&lt;br /&gt;
Y evidentemente había una solución mejor, basada en Event Delegation&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;document.observe("dom:loaded", function() {&lt;br /&gt;
&amp;nbsp; $('user_source_list').observe('click', function(event){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var element = event.target;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (element.match('input.radio_submit')){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; element.up('form').submit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; });&lt;br /&gt;
});&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
La idea es que en lugar de crear un evento en cada uno de los elementos, se crea sólo un evento en un objeto que los contiene a todos (en este caso es un div con el id 'user_source_list'), y capturamos el click sobre ese objeto.&lt;br /&gt;
&lt;br /&gt;
Otra mejora que me propuso es que en lugar de usar parentNode para ir al elemento padre usara &lt;a href="http://www.prototypejs.org/api/element/up"&gt;up('form')&lt;/a&gt;, de esa forma, si cambia el diseño de la página y se introduce algún elemento intermedio en el dom de la página, el código seguirá funcionando.&lt;br /&gt;
&lt;br /&gt;
Paco tambien me pasó este &lt;a href="http://github.com/rails/prototype-ujs/blob/master/src/rails.js"&gt;enlace&lt;/a&gt; donde se ve como en &lt;a href="http://guides.rails.info/3_0_release_notes.html"&gt;Rails 3&lt;/a&gt; se utilizará la misma técnica de javascript no intrusivo con delegación de eventos.&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/F3TiN7YpS18" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/F3TiN7YpS18/event-delegation-en-javascript.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>8</thr:total><feedburner:origLink>http://diec123.blogspot.com/2010/02/event-delegation-en-javascript.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-8160749886482814784</guid><pubDate>Mon, 18 Jan 2010 16:29:00 +0000</pubDate><atom:updated>2010-11-15T23:37:12.358+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">rails charla beruby</category><title>Notas sobre webs un poco grandes</title><description>En &lt;a href="http://www.aspgems.com/"&gt;ASPgems&lt;/a&gt; desde hace bastante tiempo vamos dando charlas internas para compartir el conocimiento entre nosotros, y desde hace unos meses las charlas son abiertas a todo el que quiera apuntarse.&lt;br /&gt;
&lt;br /&gt;
Las charlas se publican en el &lt;a href="http://blog.aspgems.com/"&gt;blog&lt;/a&gt; y en &lt;a href="http://twitter.com/aspgems"&gt;twitter&lt;/a&gt; y la inscripción es en &lt;a href="http://aspgems.stagehq.com/"&gt;stage&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La última charla me ha tocado a mi, en la que he hablado un poco sobre mi experiencia durante más de dos años desarrollando &lt;a href="http://www.beruby.com/"&gt;BeRuby&lt;/a&gt;, un proyecto que ha pasado en este tiempo a ser el mayor proyecto de &lt;a href="http://rubyonrails.org/"&gt;Rails&lt;/a&gt; en España y entre los 40 mayores del mundo (según en ranking de Alexa en la lista de &lt;a href="http://rails100.pbworks.com/Alexa+Rankings"&gt;rails100&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Repasando la presentación me he dado cuenta de que hablé muy poquito de Rails y mucho de MySQL, así que va a ser que uno de los puntos más importantes a la hora de escalar es un buen diseño y uso de base de datos, por mucho que las malas lenguas digan por ahí que Rails no escala :-)&lt;br /&gt;
&lt;br /&gt;
La presentación tambien se grabó en vídeo (es la primera que grabamos y todavía está pendiente de retocar porque el audio no se oye muy bien), así que por ahora publico las transparencias, aunque sin la explicación algunas páginas no aportan mucho ....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="451" src="http://docs.google.com/present/embed?id=ddswt7rh_0g4mv4hgz&amp;amp;size=m" width="555"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De todas formas, entre nosotros, el orador no se puede decir que sea un comunicador nato, así que no espereis una gran charla cuando se publique el vídeo.... eso si, si hay cualquier duda o sugerencia sobre la presentación, aquí estoy para contestarla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTA: La charla al final se publicó en el canal de &lt;a href="http://vimeo.com/channels/aspgems"&gt;Vimeo&lt;/a&gt; de ASPgems&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/TC6Xch7T0I8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/TC6Xch7T0I8/notas-sobre-webs-un-poco-grandes.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2010/01/notas-sobre-webs-un-poco-grandes.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-2249108335200301021</guid><pubDate>Sat, 28 Nov 2009 18:38:00 +0000</pubDate><atom:updated>2009-11-30T14:10:04.043+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">conferenciarails</category><title>Conferencia Rails 2009 - Impresiones</title><description>&lt;a href="http://3.bp.blogspot.com/_ZH3Nx8bKkcE/SxF1Jo0FM7I/AAAAAAAAAG0/wlvbjb98nbo/s1600/img022.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5409233435883811762" src="http://3.bp.blogspot.com/_ZH3Nx8bKkcE/SxF1Jo0FM7I/AAAAAAAAAG0/wlvbjb98nbo/s400/img022.jpg" style="cursor: pointer; float: left; height: 209px; margin: 0pt 10px 10px 0pt; width: 300px;" /&gt;&lt;/a&gt;Por tercer año he asistido a la &lt;a href="http://app.conferenciarails.org/calendar"&gt;conferencia rails&lt;/a&gt; y este año he salido con la sensación de que la conferencia ya se ha consolidado y se ha hecho mayor.&lt;br /&gt;
&lt;br /&gt;
Los años anteriores se hablaba de como trabajar con rails, plugins y herramientas que facilitan el trabajo, bastante sobre buenas prácticas de programación y escalabilidad y muchísimo de BDD, TDD y cualquier cosa relacionada con testing.&lt;br /&gt;
&lt;br /&gt;
Pero este año ha sido diferente. Ha habido mucha filosofía sobre como trabajar en magníficas conferencias como la de &lt;a href="http://twitter.com/supercoco9"&gt;javi&lt;/a&gt; (&lt;a href="http://www.slideshare.net/supercoco9/the-ultimate-development-tool"&gt;La herramienta de desarrollo definitiva&lt;/a&gt;) y la de &lt;a href="http://twitter.com/porras"&gt;porras&lt;/a&gt; (&lt;a href="http://www.slideshare.net/sergio.gil/el-desarrollador-total"&gt;El desarrollador total&lt;/a&gt;) e incluso la última keynote de Obie fue sobre el mismo tema, aunque no comparto sus ideas y forma de trabajar ....&lt;br /&gt;
&lt;br /&gt;
Por otra parte tuvimos la parte social con una apasionada e inspiradisima conferencia de &lt;a href="http://twitter.com/aitorgarciarey"&gt;Aitor García Rey&lt;/a&gt; (&lt;a href="http://www.slideshare.net/aitor.garcia/hack-politics"&gt;Hacks! Politics&lt;/a&gt;) y el entusiasmo de &lt;a href="http://twitter.com/voodoorai2000"&gt;Rai&lt;/a&gt; hablando del &lt;a href="http://partidodeinternet.es/"&gt;Partido de Internet&lt;/a&gt; en una lighting talk.&lt;br /&gt;
&lt;br /&gt;
Y no podía faltar la parte tecnológica, con mensajería y colas por Joshua Sierles (&lt;a href="http://app.conferenciarails.org/talks/10-amqp-ruby-en-tiempo-real"&gt;AMQP: Ruby en tiempo real&lt;/a&gt;), una introducción a &lt;a href="http://incubator.apache.org/cassandra/"&gt;CassandraDB&lt;/a&gt; por parte de Pablo Delgado (&lt;a href="http://app.conferenciarails.org/talks/42-cassandra-db-que-tienen-facebook-twitter-y-digg-en-comun"&gt;Cassandra DB: ¿Qué tienen Facebook, Twitter y Digg en común?&lt;/a&gt;), Raul nos contó sobre Rack y Sinatra (&lt;a href="http://app.conferenciarails.org/talks/47-charla-o-taller-alternativas-a-rails-para-sitios-y-servicios-web-ultraligeros"&gt;Alternativas a Rails para sitios y servicios web ultraligeros&lt;/a&gt;), John Leach explicando interesantes conceptos de unix (&lt;a href="http://app.conferenciarails.org/talks/58-unix-rediscovering-the-wheel"&gt;UNIX: Rediscovering the wheel&lt;/a&gt;), David Calavera nos enseñó como se especifica ruby gracías a &lt;a href="http://rubyspec.org/"&gt;RubySpec&lt;/a&gt; (&lt;a class="title" href="http://www.slideshare.net/calavera/rubyspec-y-el-largo-camino-hacia-ruby-19"&gt;Rubyspec y el largo camino hacia Ruby 1.9&lt;/a&gt;), Ron Evans aplicando Ruby y &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt; en el vuelo de dirigibles (&lt;a href="http://app.conferenciarails.org/talks/48"&gt;Flying Robot&lt;/a&gt;), .... y paro aquí que al final voy a poner el listado completo de conferencias&lt;br /&gt;
&lt;br /&gt;
Otro tema a destacar es la internacionalización de la conferencia. Este año ha habido muchas conferencias en inglés y ha desaparecido la coletilla 'Hispana' del nombre de la conferencia, supongo que ocupando parte del hueco que ha dejado la RailsConf Europe que organizaba O'Reilly.&lt;br /&gt;
&lt;br /&gt;
En resumen, enhorabuena a la organización, que van mejorando año a año.&lt;br /&gt;
&lt;br /&gt;
Nos vemos en la Conferencia Rails 2010 (si no aparece nada mejor que Rails el próximo año...)&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/DlUUO-17MrY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/DlUUO-17MrY/conferencia-rails-2009-impresiones.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><media:thumbnail url="http://3.bp.blogspot.com/_ZH3Nx8bKkcE/SxF1Jo0FM7I/AAAAAAAAAG0/wlvbjb98nbo/s72-c/img022.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/11/conferencia-rails-2009-impresiones.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-7515424173974742194</guid><pubDate>Thu, 29 Oct 2009 08:21:00 +0000</pubDate><atom:updated>2009-10-29T11:26:05.858+01:00</atom:updated><title>Las webs y la televisión</title><description>Por variar un poco,  una entrada de opinión&lt;br /&gt;&lt;br /&gt;Siempre he tenido la idea de que una campaña de televisión sobre una web lo que consigue es montones de visitas mientras que se emite el anuncio y al desaparecer el anuncio, desaparecen las visitas. Si el producto es bueno, lo que conseguirá tráfico continuo es el boca a boca, entradas de blog, noticias online, comentarios de usuarios satisfechos con el producto....&lt;br /&gt;&lt;br /&gt;Y hace poco he visto la confirmación de mi teoría. &lt;a href="http://www.zonzoo.es/"&gt;Zonzoo&lt;/a&gt; hizo una campaña en televisión este verano en la que se debió gastar una millonada, luego ha estado un par de meses sin campaña y ha vuelto a hacer otra.&lt;br /&gt;&lt;br /&gt;Mirando el ranking en &lt;a href="http://www.alexa.com/siteinfo/zonzoo.es"&gt;Alexa&lt;/a&gt; de zoonzo se ve que tal como subió desapareció y con la nueva campaña ha vuelto a aparecer.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZH3Nx8bKkcE/SulWUjLu-jI/AAAAAAAAAFk/HdfQej6oXN8/s1600-h/zonzoo.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 162px;" src="http://4.bp.blogspot.com/_ZH3Nx8bKkcE/SulWUjLu-jI/AAAAAAAAAFk/HdfQej6oXN8/s400/zonzoo.png" alt="" id="BLOGGER_PHOTO_ID_5397940539422079538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Aunque el &lt;a href="http://www.alexa.com/help/traffic_learn_more"&gt;ranking Alexa&lt;/a&gt; no es fiable 100%, porque se basa principalmente en los datos de los usuarios que tienen la Toolbar Alexa, es un buen indicativo del tráfico y importancia de una web.&lt;br /&gt;&lt;br /&gt;La idea es buena, y es probable que tengan éxito, pero en mi opinión habría sido mucho mejor hacer una buena campaña online y ofrecer mejores tarifas por los móviles, que les habría salido infinitamente más barato, y habrían crecido ordenadamente, consiguiendo tráfico y ingresos poco a poco&lt;br /&gt;&lt;br /&gt;Y además, para soportar esa campaña habrán tenido que montar una buena infraestructura de servidores y logística que no habría sido necesaria inicialmente si hubieran apostado por el crecimiento lento y ordenado.&lt;br /&gt;&lt;br /&gt;Bueno, no tengo ni idea de marketing y igual me equivoco, pero para eso están las opiniones, para equivocarse :)&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/jD-tzbWSS78" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/jD-tzbWSS78/las-webs-y-la-television.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><media:thumbnail url="http://4.bp.blogspot.com/_ZH3Nx8bKkcE/SulWUjLu-jI/AAAAAAAAAFk/HdfQej6oXN8/s72-c/zonzoo.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/10/las-webs-y-la-television.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-576796926780948311</guid><pubDate>Tue, 20 Oct 2009 10:15:00 +0000</pubDate><atom:updated>2009-10-30T12:44:06.579+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">memcached</category><category domain="http://www.blogger.com/atom/ns#">evictions</category><title>Evictions en memcached</title><description>En la aplicación en la que estoy trabajando tenemos &lt;a href="http://www.danga.com/memcached/"&gt;memcached&lt;/a&gt; distribuido entre varias máquinas. Normalmente voy comprobando periódicamente que el tamaño usado sea menor al máximo tamaño disponible y lo teniamos configurado a 64 MB por máquina, ya que parecía suficiente.&lt;br /&gt;&lt;br /&gt;En la traza se puede ver como tiene algo más de 40 MB (bytes) ocupados de los 64MB disponibles (limit_maxbtyes). El estado se puede consultar utilizando el método stats de la gema &lt;a href="http://github.com/mperham/memcache-client"&gt;memcache-client&lt;/a&gt; o directamente haciendo un telnet al puerto donde está levantado tal y como contaba &lt;a href="http://twitter.com/therobot/"&gt;Jacobo&lt;/a&gt; hace unos meses en su &lt;a href="http://robotplaysguitar.com/2009/01/21/consultar-el-estado-de-memcached/"&gt;blog&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;  bytes: 44140784&lt;br /&gt;pid: 27269&lt;br /&gt;connection_structures: 223&lt;br /&gt;threads: 1&lt;br /&gt;evictions: 215279&lt;br /&gt;time: 1255950371&lt;br /&gt;pointer_size: 32&lt;br /&gt;limit_maxbytes: 67108864&lt;br /&gt;cmd_get: 12315783&lt;br /&gt;version: 1.2.2&lt;br /&gt;bytes_written: 48564944477&lt;br /&gt;cmd_set: 1505495&lt;br /&gt;get_misses: 563019&lt;br /&gt;total_connections: 643702&lt;br /&gt;curr_connections: 61&lt;br /&gt;curr_items: 15957&lt;br /&gt;uptime: 9589358&lt;br /&gt;get_hits: 11752764&lt;br /&gt;total_items: 582809&lt;br /&gt;rusage_system: 172.8108&lt;br /&gt;rusage_user: 67.872241&lt;br /&gt;bytes_read: 19210833034&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pero leyendo lo que significa cada uno de los parámetros de memcached en la web de escalabilidad de &lt;a href="http://dev.mysql.com/doc/mysql-ha-scalability/en/ha-memcached-stats-general.html"&gt;MySQL&lt;/a&gt;, me he dado cuenta de que el parámetro importante a comprobar es evictions. Eviction (que se puede traducir como desalojo), indica el número de elementos válidos de la caché borrados para liberar memoria para nuevos elementos y que debería ser cero o un número muy pequeño.&lt;br /&gt;&lt;br /&gt;Así que hemos ampliado la memoria de memcached en todos los servidores a 128MB y efectivamente, nos habiamos quedado muy cortos.... ahora están ocupando sobre 90MB cada uno y a partir de ahora el parámetro a monitorizar es evictions :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actualizacion 30/10/2009:&lt;/span&gt; Acabo de leer en &lt;a href="http://oreilly.com/catalog/9780596102357"&gt;Building Scalable Web Sites&lt;/a&gt; una forma alternativa de ver el status de memcached utilizando netcat. Suponiendo que está instalado en localhost en el puerto 11211&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;echo -ne "stats\r\n" | nc -i1 localhost 11211&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Otra opción es utilizar &lt;a href="http://code.google.com/p/memcache-top/"&gt;memcache-top&lt;/a&gt; para ver las estadísticas en formato top  (gracias a &lt;a href="http://twitter.com/pacoguzman"&gt;Paco&lt;/a&gt; por el enlace)&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/wOi-V8KrUyU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/wOi-V8KrUyU/evictions-en-memcached.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>4</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/10/evictions-en-memcached.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-8608104634872762886</guid><pubDate>Wed, 07 Oct 2009 10:28:00 +0000</pubDate><atom:updated>2009-10-07T13:25:41.243+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IE8</category><category domain="http://www.blogger.com/atom/ns#">IE7</category><category domain="http://www.blogger.com/atom/ns#">virtualbox</category><category domain="http://www.blogger.com/atom/ns#">vdi</category><title>IE7 y IE8 con VirtualBox - Duplicar discos virtuales</title><description>Para probar las aplicaciones con Internet Explorer, hasta ahora tenía IE6 con &lt;a href="http://www.tatanka.com.br/ies4linux/page/Main_Page"&gt;ie4linux&lt;/a&gt; y IE7 con una máquina virtual de XP con &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La instalación por defecto en Ubuntu es VirtualBox OSE (Open Source Edition) que no tiene soporte para USB, así que la que utilizo es la versión estándar tal y como explican en &lt;a href="http://www.tuxguides.com/2009/05/07/virtualbox-with-usb-support/"&gt;TuxGuides&lt;/a&gt;, para poder utilizar el software original de algunos perifericos en Windows.&lt;br /&gt;&lt;br /&gt;El tema es que IE8 ya tiene una cuota de mercado lo suficientemente alta para probarlo todo tambien en IE8, por lo que me hacía falta otra máquina virtual. Claramente la opción crearla desde cero instalando de nuevo Windows, instalando n mil parches y reiniciando otras n mil veces no es buena opción, así que he investigado un poco como duplicar el disco ya existente.&lt;br /&gt;&lt;br /&gt;Por defecto, los discos virtuales se crean en el directorio  ~/.VirtualBox/HardDisks y tienen extensión .vdi, y desde línea de comando se pueden duplicar (en mi caso el disco anterior era WindowsXP y el nuevo es WindowsXP_IE8)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;cd ~/.VirtualBox/HardDisks&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;diego@diego-laptop:~/.VirtualBox/HardDisks$ VBoxManage clonehd WindowsXP.vdi WindowsXP_IE8.vdi&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;VirtualBox Command Line Management Interface Version 2.2.4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;(C) 2005-2009 Sun Microsystems, Inc.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Clone hard disk created in format 'VDI'. UUID: 8545bc77-6aa4-4594-b1a1-d1aa886abd40&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se toma su tiempo, pero una vez duplicado, simplemente creamos una nueva máquina virtual y en lugar de crear un nuevo disco seleccionamos el disco que acabamos de crear. Y una vez arrancado Windows simplemente actualizamos IE a la nueva versión y listo, ya tenemos las dos versiones para probar.&lt;br /&gt;&lt;br /&gt;La configuración de la máquina virtual no se copia (memoria, usb, audio, ...), pero como es algo que se hace en 1 minuto no he perdido tiempo en ver como se haría automáticamente.&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/TkTDcGc1UWg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/TkTDcGc1UWg/ie7-y-ie8-con-virtualbox-duplicar.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/10/ie7-y-ie8-con-virtualbox-duplicar.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-9109635016457494219</guid><pubDate>Tue, 28 Jul 2009 22:14:00 +0000</pubDate><atom:updated>2009-11-29T19:15:58.168+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">dlink</category><category domain="http://www.blogger.com/atom/ns#">router</category><category domain="http://www.blogger.com/atom/ns#">linkedin</category><category domain="http://www.blogger.com/atom/ns#">iptables</category><title>LinkedIn no me funciona</title><description>Hace un tiempo que &lt;a href="http://www.linkedin.com/"&gt;LinkedIn&lt;/a&gt; me hacía cosas raras, sólo me mostraba algunas páginas y se me quedaba pensando eternamente en el resto de páginas al intentar cargarlas. &lt;a href="http://www.loscuenca.com/"&gt;Agustín&lt;/a&gt; me dió la solución, el culpable es el router D-Link DSL-G624T de ya.com, tal y como cuentan &lt;a href="http://marzoa.com/2009/03/08/d-link-dsl-g624t-and-linkedincom/"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;El problema es debido a una regla que tiene definida el router con el tamaño máximo de segmento (&lt;a href="http://en.wikipedia.org/wiki/Maximum_segment_size"&gt;MSS&lt;/a&gt;) y la solución que dan es borrarla.&lt;br /&gt;&lt;br /&gt;Se puede conectar al router por telnet (con el mismo usuario que se accede al interfaz web), para ver todas las reglas&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;iptables -L -n&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 255);"&gt;....&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;Chain FORWARD (policy ACCEPT)&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt; target     prot opt source               destination      &lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt; TCPMSS     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp flags:0x06/0x02 TCPMSS set 1360&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 255);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 255);"&gt;.....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y se debe borrar la primera regla de tipo FORWARD (que define el MSS)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;iptables -D FORWARD 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Borrando esa regla me funcionaba LinkedIn, pero empezó a dar problemas con otras web, p.e. las imagenes de ebay, que no me las cargaba. Así que opté por leerme el infernal man de iptables a ver que se contaba....&lt;br /&gt;&lt;br /&gt;Parece ser que lo habitual es definir el tamaño máximo de segmento con un tamaño 40 bytes menor a la unidad máxima de transferencia (&lt;a href="http://en.wikipedia.org/wiki/Maximum_transmission_unit"&gt;MTU&lt;/a&gt;) en lugar de un tamaño fijo como está asignando el router, y eso se puede hacer automáticamente con una regla de iptables&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;iptables -R FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Donde el -R FORWARD 1 indica que reemplace la primera regla de tipo FORWARD (la incorrecta) por esta.&lt;br /&gt;&lt;br /&gt;El único inconveniente es que la regla se borra cada vez que se reinicia el router y se debe asignar de nuevo&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ACTUALIZACION Nov. 2009:&lt;/span&gt; En los comentarios Jose Luis Domingo propone otra solución más elegante, donde la modificación se aplica sólo a los paquetes de linkedIn, no a todos los paquetes. Gracias !!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para quien le interese un poco más, la parte del man donde lo cuenta...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  tcpmss&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       This  matches  the  TCP MSS (maximum segment size) field of the TCP header.  You can only use this on TCP SYN or SYN/ACK packets, since the&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       MSS is only negotiated during the TCP handshake at connection startup time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       [!] --mss value[:value]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;              Match a given TCP MSS value or range.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  TCPMSS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       This  target allows to alter the MSS value of TCP SYN packets, to control the maximum size for that connection (usually limiting it to your&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       outgoing interface’s MTU minus 40 for IPv4 or 60 for IPv6, respectively).  Of course, it can only be used in conjunction with -p  tcp.   It&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       is only valid in the mangle table.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       This  target  is  used  to overcome criminally braindead ISPs or servers which block "ICMP Fragmentation Needed" or "ICMPv6 Packet Too Big"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       packets.  The symptoms of this problem are that everything works fine from your Linux firewall/router, but machines  behind  it  can  never&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       exchange large packets:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        1) Web browsers connect, then hang with no data received.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        2) Small mail works fine, but large emails hang.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        3) ssh works fine, but scp hangs after initial handshaking.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       Workaround: activate this option and add a rule to your firewall configuration like:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;        iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;                    -j TCPMSS --clamp-mss-to-pmtu&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       --set-mss value&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;              Explicitly set MSS option to specified value.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       --clamp-mss-to-pmtu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;              Automatically clamp MSS value to (path_MTU - 40 for IPv4; -60 for IPv6).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;       These options are mutually exclusive.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/Duqb49o7WMw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/Duqb49o7WMw/linkedin-no-me-funciona.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>5</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/07/linkedin-no-me-funciona.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-1017890826132684017</guid><pubDate>Tue, 07 Jul 2009 16:08:00 +0000</pubDate><atom:updated>2009-07-08T13:44:05.923+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">unknown</category><category domain="http://www.blogger.com/atom/ns#">content-type</category><category domain="http://www.blogger.com/atom/ns#">mechanize</category><title>Mechanize y content-type unknown</title><description>En una aplicación, tengo que integrar un informe que se no puede obtener a partir de un Web Service o REST ni nada parecido, así que la única forma  es haciendo login en una web y navegando hasta bajarse un CSV. La integración se hace sin problemas con &lt;a style="font-style: italic; color: rgb(51, 102, 255);" href="http://github.com/tenderlove/mechanize/tree/master"&gt;Mechanize&lt;/a&gt;, pero me he encontrado con que recibo estas cabeceras en la página del  CSV:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;Content-Type: unknown; charset=UTF-16LE&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;&lt;br /&gt;Content-Disposition: attachment; filename=report.csv&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El problema está en la forma en que Mechanize parsea los datos recibidos. Decide que clase va a utilizar en función del Content Type. Para texto y html utiliza la clase &lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;WWW::Mechanize::Page&lt;/span&gt;, y si no sabe que utilizar, por defecto utiliza &lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;WWW::Mechanize::File&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;En mi caso como no reconoce el Content-Type unknown, me devuelve un objeto de tipo &lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;WWW::Mechanize::File&lt;/span&gt;, a partir del cual no puedo parsear correctamente el CSV, ya que me devuelve un objeto binario sin ningún método fácil para procesarlo.&lt;br /&gt;&lt;br /&gt;La primera solución que se me ocurrió a partir de la documentación de la clase &lt;a style="font-style: italic; color: rgb(51, 102, 255);" href="http://github.com/tenderlove/mechanize/blob/0cb78c906ea339e16829636be47fe35b5dc8be6f/lib/www/mechanize/pluggable_parsers.rb"&gt;PluggableParser&lt;/a&gt; es añadir unknown en la lista de Content-Type soportados por Page&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 255);"&gt;agent.pluggable_parser['unknown'] = WWW::Mechanize::Page&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pero eso no vale, porque dentro de &lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;WWW::Mechanize::Page &lt;/span&gt;hay un chequeo adicional:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;font-size:100%;" &gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'content-type'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=~&lt;/span&gt; &lt;span class="sr"&gt;/^(text\/html)|(application\/xhtml\+xml)/i&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Así que la solución para mi caso ha sido crearme una nueva clase que extiende a Page en la que su initialize es tan simple (y tan ñapa)  como llamar a super y ignorar la excepción de content type inválido&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;font-size:100%;" &gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;require 'mechanize'&lt;br /&gt;module WWW&lt;br /&gt;class Mechanize&lt;br /&gt;  class Unknown &amp;lt; WWW::Mechanize::Page&lt;br /&gt;    def initialize(uri=nil, response=nil, body=nil, code=nil, mech=nil)&lt;br /&gt;      begin&lt;br /&gt;        super(uri, response, body, code)&lt;br /&gt;      rescue Mechanize::ContentTypeError&lt;br /&gt;        # Do nothing&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Y hacer que el Content-Type unkown lo procese esta clase&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 255);"&gt;agent.pluggable_parser['unknown'] = WWW::Mechanize::Unknown&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y con esto arreglado. Ya me devuelve un objeto que puedo parsear sin problema con &lt;a style="color: rgb(51, 102, 255); font-style: italic;" href="http://fastercsv.rubyforge.org/"&gt;FasterCSV&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/yFL5z1zC29M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/yFL5z1zC29M/mechanize-y-content-type-unknown.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>1</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/07/mechanize-y-content-type-unknown.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-1379671348033584872</guid><pubDate>Fri, 12 Jun 2009 14:00:00 +0000</pubDate><atom:updated>2009-07-07T19:34:17.842+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">dx8400</category><category domain="http://www.blogger.com/atom/ns#">epson</category><category domain="http://www.blogger.com/atom/ns#">escaner</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>Epson DX8400 en Ubuntu</title><description>Como ya comenté en mi última &lt;a href="http://diec123.blogspot.com/2009/04/adios-vista-hola-ubuntu.html"&gt;entrada&lt;/a&gt;, lo que más guerra me dió al migrar a Ubuntu fue instalar la impresora multifunción Epson DX8400.&lt;br /&gt;&lt;br /&gt;En la web de Epson te redirigen a &lt;a href="http://www.avasys.jp/lx-bin2/linux_e/spc/DL1.do"&gt;Avasys&lt;/a&gt; para bajar los drivers. Seleccionando el modelo se pueden bajar los paquetes para la instalación. En mi caso pipslite_1.3.0-2_i386.deb para la impresora y iscan_2.19.2-1_i386.deb para el scanner&lt;br /&gt;&lt;br /&gt;La impresora funciona perfectamente, pero lo del scanner es más divertido....&lt;br /&gt;&lt;br /&gt;El paquete da un error de instalación ya que depende de libltdl.so.3 y en las últimas versiones de ubuntu se utiliza libltdl.so.7&lt;br /&gt;&lt;br /&gt;Se puede arreglar simplemente con un link simbólico, como explican &lt;a href="http://www.nabble.com/iscan-and-apt-dependencies-td21645571.html"&gt;aquí&lt;/a&gt;:&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;font-size:85%;" &gt;&lt;br /&gt;sudo dpkg -i --ignore-depends=libltdl3 iscan_2.19.2-1_i386.deb&lt;br /&gt;sudo ln -s /usr/lib/libltdl.so.7 /usr/lib/libltdl.so.3&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;El problema es que aunque con esto ya funciona el scanner, dejan de funcionar las actualizaciones automáticas de ubuntu, que dan un error de paquete roto. Y si le dices que lo arregle, desinstala iscan y te vuelves a quedar sin scanner.&lt;br /&gt;&lt;br /&gt;Así que la solución es compilar el paquete para que utilice la librería correcta. Los fuentes se pueden bajar de la misma página donde está el paquete.&lt;br /&gt;&lt;br /&gt;Mi primera opción fue el clásico make / configure / sudo make install.... pero como seguía sin reconocer el escáner, no tuve más remedio que hacer eso que sólo se hace en casos extremos.... leerme el README del paquete. En el README explica que se debe generar el paquete con&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;font-size:85%;" &gt;dpkg-buildpackage -rfakeroot&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y instalar el paquete generado&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;font-size:85%;" &gt;sudo dpkg -i iscan_2.19.2-1_i386.deb &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para poder compilar tuve que instalar unas cuantas librerias, que dependerán de lo que ya tengas instalado, en mi caso fueron:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;"&gt;sudo apt-get install gdk-imlib11-dev libsane-dev libgtk2.0-dev libgimp2.0-dev cdbs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y esto si que funcionó y ya tengo el escáner funcionando como un campeón.&lt;br /&gt;&lt;br /&gt;Por último unos cuantos comandos para chequear el escáner:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-style: italic;font-size:85%;" &gt;diego@diego-laptop:~$ lsusb |grep Epson&lt;br /&gt;Bus 001 Device 022: ID 04b8:0839 Seiko Epson Corp. CX8300/CX8400/DX8400&lt;br /&gt;&lt;br /&gt;diego@diego-laptop:~$ sane-find-scanner&lt;br /&gt;found USB scanner (vendor=0x04b8, product=0x0839) at libusb:001:022&lt;br /&gt;&lt;br /&gt;diego@diego-laptop:~$ scanimage -L&lt;br /&gt;device `epkowa:usb:001:022' is a Epson Stylus CX8300/CX8400/DX8400 flatbed scanner&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/ZjvpEvl4USA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/ZjvpEvl4USA/epson-dx8400-en-ubuntu.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>4</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/06/epson-dx8400-en-ubuntu.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-513414941070891579</guid><pubDate>Fri, 29 May 2009 11:49:00 +0000</pubDate><atom:updated>2009-05-29T13:49:10.803+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">migracion</category><category domain="http://www.blogger.com/atom/ns#">windows</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>Adios Vista..... Hola ubuntu</title><description>Después de muchos años utilizando Windows como S.O. de trabajo, hasta hace un par de años por obligación y despues por la simplicidad de seguir utilizando lo mismo... llegó el momento de migrar a Ubuntu.&lt;br /&gt;&lt;br /&gt;Inicialmente, la idea de este post antes de migrar era explicar los problemas que me he encontrara en la migración, que aplicaciones de Windows echaba en falta...&lt;br /&gt;&lt;br /&gt;Pero la verdad es que después de una semana ubuntera no me he encontrado prácticamente con ningún problema, la práctica totalidad de las aplicaciones que uso en el día a día (Netbeans, Firefox, Thunderbird, Pidgin, Gimp, Thwirl, Filezilla, OpenOffice, ...) no es que funcionen igual, funcionan mejor y más rápido&lt;br /&gt;&lt;br /&gt;Con respecto a la instalación, en Windows habría tardado 2 días en instalarlo todo, yendo de web en web para bajarme las diferentes aplicaciones (ruby, subversion, ...) y reiniciando n mil veces. En cambio en Ubuntu casi todo lo he podido instalar con Synaptic / apt-get y sin reiniciar ni una sóla vez.&lt;br /&gt;&lt;br /&gt;Y además Spotify,  que no tiene versión para linux, funciona perfectamente con wine :-)&lt;br /&gt;&lt;br /&gt;Caso aparte el de los periféricos, la impresora multifuncion Epson DX-8400 no hubo manera de instalarla con los .deb que recomienda Epson y los tuve que compilar para que funcionaran, pero bueno, esto es tema para otro post...&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/m9GUjCU-H18" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/m9GUjCU-H18/adios-vista-hola-ubuntu.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>4</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/04/adios-vista-hola-ubuntu.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-6375641551222146019</guid><pubDate>Mon, 11 May 2009 15:46:00 +0000</pubDate><atom:updated>2009-05-11T19:27:43.606+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ruby</category><category domain="http://www.blogger.com/atom/ns#">euruko</category><title>Euruko 2009</title><description>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZH3Nx8bKkcE/SghKXNfAHpI/AAAAAAAAAB0/ANSw_WEHCGQ/s1600-h/img140.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5334595521237491346" alt="" src="http://3.bp.blogspot.com/_ZH3Nx8bKkcE/SghKXNfAHpI/AAAAAAAAAB0/ANSw_WEHCGQ/s320/img140.jpg" style="margin: 0px 15px 5px 0pt; float: left; cursor: pointer; width: 300px; height: 191px;" border="0" /&gt;&lt;/a&gt;Este fin de semana,  junto a otros 250 desarrolladores he estado en la &lt;a href="http://app.euruko2009.org/"&gt;EuRuKo&lt;/a&gt; en Barcelona.&lt;br /&gt;&lt;br /&gt;Hasta ahora mi relación con Ruby ha sido siempre en desarrollo web y asociado a Rails. Lo que más me ha gustado es ver como Ruby es mucho más que eso. Prácticamente ni se ha nombrado a Rails en toda la conferencia y hemos visto otras interesantes aplicaciones.&lt;br /&gt;&lt;br /&gt;Con ruby se pueden hacer &lt;a href="http://app.euruko2009.org/talks/9-fun-with-ruby-and-without-r-s-program-your-own-games-with-gosu"&gt;juegos&lt;/a&gt; con &lt;a href="http://code.google.com/p/gosu/"&gt;Gosu&lt;/a&gt; y &lt;a href="http://code.google.com/p/chipmunk-physics/"&gt;Chipmunk&lt;/a&gt; como explico &lt;a href="http://www.twitter.com/supercoco9"&gt;Javi &lt;/a&gt;en una de las conferencia más aplaudidas, se pueden procesar &lt;a href="http://app.euruko2009.org/talks/18-building-crossplatform-mobile-apps-in-ruby-with-the-rhodes-framework"&gt;imágenes&lt;/a&gt;,  hacer aplicaciones de &lt;a href="http://app.euruko2009.org/talks/17-adhearsion"&gt;telefonía &lt;/a&gt;con &lt;a href="http://adhearsion.com/"&gt;Adhearsion&lt;/a&gt;, desarrollos multiplataforma para &lt;a href="http://app.euruko2009.org/talks/18-building-crossplatform-mobile-apps-in-ruby-with-the-rhodes-framework"&gt;móviles&lt;/a&gt; con &lt;a href="http://www.rhomobile.com/"&gt;Rhodes&lt;/a&gt;, hacer &lt;a href="http://app.euruko2009.org/talks/19-ruby-archaeopteryx"&gt;música&lt;/a&gt; de esa que yo nunca escucharía con &lt;a href="http://wiki.github.com/gilesbowkett/archaeopteryx"&gt;Aarchaeopteryx&lt;/a&gt;, ....&lt;br /&gt;&lt;br /&gt;Además tuvimos la &lt;a href="http://app.euruko2009.org/talks/6-matz-keynote"&gt;keynote&lt;/a&gt; de &lt;a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto"&gt;Matz&lt;/a&gt;, una introducción a &lt;a href="http://cukes.info/"&gt;Cucumber&lt;/a&gt; por el &lt;a href="http://twitter.com/aslak_hellesoy"&gt;padre&lt;/a&gt; de la criatura que me ha venido muy bien porque voy a empezar a usarlo en breve, y como broche final una impresionante y metálica introducción a &lt;a href="http://digitalmars.com/d/"&gt;D&lt;/a&gt; y a &lt;a href="http://app.euruko2009.org/talks/21-announcing-rudy-write-ruby-native-extensions-in-d-programming-language"&gt;RuDy&lt;/a&gt; por &lt;a href="http://tomash.wrug.eu/"&gt;Tomasz Stacheviwz&lt;/a&gt; , sin olvidarnos de las Lighting Talks.&lt;br /&gt;&lt;br /&gt;En resumen, vuelvo con la sensación de que la conferencia ha valido la pena y con las pilas puestas para seguir aprendiendo y hacer las cosas un poco mejor día a día.&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/6_s4dFfPUq4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/6_s4dFfPUq4/euruko-2009.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><media:thumbnail url="http://3.bp.blogspot.com/_ZH3Nx8bKkcE/SghKXNfAHpI/AAAAAAAAAB0/ANSw_WEHCGQ/s72-c/img140.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/05/euruko-2009.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-7276475611966210161</guid><pubDate>Thu, 30 Apr 2009 13:58:00 +0000</pubDate><atom:updated>2011-05-04T00:13:33.319+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">imagen</category><category domain="http://www.blogger.com/atom/ns#">div</category><category domain="http://www.blogger.com/atom/ns#">vertical-align</category><title>Centrar verticalmente una imagen en un div</title><description>Aparentemente una cosa tan trivial como esa tiene un poco más de miga de lo que parece, y buscando soluciones se encuentran muchas divagaciones y ejemplos interminables.&lt;br /&gt;
&lt;br /&gt;
La primera idea es usar el atributo &lt;a href="http://msdn.microsoft.com/en-us/library/ms531179%28VS.85%29.aspx"&gt;vertical-align&lt;/a&gt;, pero sólo es válido para alinear la imagen con el texto adjacente. Sin embargo, se puede usar una solución simple basada ese atributo.&lt;br /&gt;
&lt;br /&gt;
Si definimos el &lt;a href="http://msdn.microsoft.com/en-us/library/ms530784%28VS.85%29.aspx"&gt;line-height&lt;/a&gt; del div igual a su altura y le ponemos un espacio en blanco delante de la imagen para que tenga una referencia donde alinearse, ya lo tenemos:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #3366ff; font-size: 85%;"&gt;&amp;lt;div style="border: 1px solid #AA0000; text-align: center; line-height: 100px; width: 100px; height: 100px;"&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;lt;img style="vertical-align: middle;" src="http://www.blogger.com/logo.gif" /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="border: 1px solid rgb(170, 0, 0); height: 100px; line-height: 100px; text-align: center; width: 100px;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5330498649305381026" src="http://2.bp.blogspot.com/_ZH3Nx8bKkcE/Sfm8R4OL-KI/AAAAAAAAABs/SwFypg7-YfU/s320/logo.gif" style="height: 61px; vertical-align: middle; width: 51px;" /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Actualizacion 04/05/2009: &lt;/span&gt;Fer propone en los comentarios posibles alternativas a mi solución. Gracias!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Actualización 12/06/2009:&lt;/span&gt; He probado en &lt;a href="http://browsershots.org/"&gt;Browsershots&lt;/a&gt; esta solución y los resultados son que funciona en&lt;br /&gt;
&lt;br /&gt;
- Navegadores basados en &lt;a href="https://developer.mozilla.org/en/Gecko"&gt;Gecko&lt;/a&gt; (todas las versiones probadas de &lt;a href="http://www.mozilla.com/firefox/"&gt;Firefox&lt;/a&gt;, &lt;a href="http://www.seamonkey-project.org/"&gt;Seamonkey&lt;/a&gt;, ...)&lt;br /&gt;
- Navegadores baseados en &lt;a href="http://www.konqueror.org/features/browser.php"&gt;KHTML&lt;/a&gt;/&lt;a href="http://webkit.org/"&gt;Webkit&lt;/a&gt; (todas las versiones probadas de &lt;a href="http://www.konqueror.org/"&gt;Konqueror&lt;/a&gt;, &lt;a href="http://www.apple.com/safari/"&gt;Safari&lt;/a&gt;, &lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt;, ...)&lt;br /&gt;
- Todas las versiones de &lt;a href="http://www.opera.com/"&gt;Opera&lt;/a&gt; a partir de la 7.54 incluida la 10 beta&lt;br /&gt;
- &lt;a href="http://www.microsoft.com/windows/internet-explorer/default.aspx"&gt;Internet Explorer&lt;/a&gt; 8.0&lt;br /&gt;
&lt;br /&gt;
Y no funciona en:&lt;br /&gt;
- Versiones de IE inferiores a la 8.0 (7.0, 6.0, 5.5)&lt;br /&gt;
- &lt;a href="http://www.avantbrowser.com/"&gt;Avant&lt;/a&gt;&lt;br /&gt;
- &lt;a href="http://www.dillo.org/"&gt;Dillo&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Actualización 7/10/2009:&lt;/span&gt; En &lt;a href="http://www.codeproject.com/KB/scripting/Centering_of__div__object.aspx"&gt;CodeProject&lt;/a&gt; dan una solución basada en javascript&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Actualización 4/5/2011&lt;/b&gt;: 2 años después sigue dando guerra el mismo problema y en los comentarios apuntan un enlace que resuelve un caso particular. Gracias&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.jakpsatweb.cz/css/css-vertical-center-solution.html"&gt;http://www.jakpsatweb.cz/css/css-vertical-center-solution.html&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/Dg3Ni64wwmw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/Dg3Ni64wwmw/centrar-verticalmente-una-imagen-en-un.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><media:thumbnail url="http://2.bp.blogspot.com/_ZH3Nx8bKkcE/Sfm8R4OL-KI/AAAAAAAAABs/SwFypg7-YfU/s72-c/logo.gif" height="72" width="72" /><thr:total>9</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/04/centrar-verticalmente-una-imagen-en-un.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-1661891407797484932</guid><pubDate>Tue, 31 Mar 2009 13:48:00 +0000</pubDate><atom:updated>2009-04-01T13:33:04.894+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">free</category><category domain="http://www.blogger.com/atom/ns#">memoria</category><title>Memoria en Linux</title><description>Últimamente, el aumento de tráfico en una aplicación nos ha llevado a migrar de servidores para poder escalar con más facilidad.&lt;br /&gt;&lt;br /&gt;Ayer por la tarde, mirando el estado de los nuevos servidores me encontré con esto en un free&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;$ free -m&lt;br /&gt;         total      used     free   shared   buffers   cached&lt;br /&gt;Mem:          2048     1996       51        0       599      364&lt;br /&gt;-/+ buffers/cache:     1032     1015&lt;br /&gt;Swap:            0        0        0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y entré en modo semi-pánico porque tenía menos de un 5% de memoría libre y estos servidores virtualizados no tienen swap... pero investigando un poco y con la ayuda de &lt;a href="http://robotplaysguitar.wordpress.com/"&gt;Jacobo&lt;/a&gt;, encontré que la máquina está perfectamente, no estaba interpretando bien los datos.&lt;br /&gt;&lt;br /&gt;buffers es la cantidad de memoria usada por el kernel para cachear I/O de disco y cached indica la memoría usada recientemente, pero que actualmente no está en uso y que está cacheada.&lt;br /&gt;&lt;br /&gt;Así que la cantidad de memoría disponible en el servidor para aplicaciones es la suma de free + buffers + cached (la cantidad que pone en la columna free en la segunda fila), en el ejemplo 1.015 MBytes, casi el 50% de la RAM total.&lt;br /&gt;&lt;br /&gt;Por último un enlace a un &lt;a href="http://mail.nl.linux.org/linux-mm/2003-03/msg00077.html"&gt;HowTo&lt;/a&gt; sobre la memoría en Linux, tiene sus añitos, pero es perfectamente válido&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/ge1PAEo035M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/ge1PAEo035M/memoria-en-linux.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>0</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/03/memoria-en-linux.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-2461576666827389205.post-3378626781048133393</guid><pubDate>Fri, 23 Jan 2009 18:09:00 +0000</pubDate><atom:updated>2009-01-23T19:33:46.656+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">aspgems</category><category domain="http://www.blogger.com/atom/ns#">conferenciarails</category><title>Is Everyone Better Than You? Good!</title><description>Hace tiempo que tenía ganas de leer algún libro técnico 'filosófico', que hablará más sobre la forma de trabajar y buenas prácticas que sobre programación sin más.&lt;br /&gt;&lt;br /&gt;En la &lt;a href="http://www.conferenciarails.org/"&gt;Conferencia Rails&lt;/a&gt;, &lt;a href="http://www.lacoctelera.com/porras"&gt;Sergio Gil&lt;/a&gt; en su charla recomendó un par de libros, y finalmente me he comprado &lt;a href="http://www.pragprog.com/titles/pad/practices-of-an-agile-developer"&gt;Practices of an Agile Developer.&lt;/a&gt; Supongo que tarde o temprano tambien me acabaré leyendo el otro (&lt;a href="http://www.pragprog.com/the-pragmatic-programmer"&gt;The Pragmatic Programmer&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;No habla de nada revolucionario ni reinventa la rueda, pero te explica todo eso que ya sabes y que no siempre aplicas. Y después de leerlo dan ganas de intentar hacer las cosas un poco mejor, que era mi objetivo al leerlo&lt;br /&gt;&lt;br /&gt;El libro tiene una frase que me ha gustado mucho y que he puesto de título en esta entrada&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Is Everyone Better Than You? Good!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ya que me he sentido muy identificado tanto con esa frase como con el parrafo que viene despues en el libro. Viniendo de la tierra de los ciegos donde el tuerto era el rey, cuando empecé a trabajar en  &lt;a href="http://www.aspgems.com/"&gt;ASPgems&lt;/a&gt;, una de las cosas que más me gusto fue ese sentimiento de 'soy el más torpe de todos, cuanto por aprender!!!'&lt;br /&gt;&lt;br /&gt;Y el día que ya no me pase... pues me tendré que plantear cambiar de trabajo :)&lt;img src="http://feeds.feedburner.com/~r/diegorodriguez/~4/NDagX-7nNBY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/diegorodriguez/~3/NDagX-7nNBY/is-everyone-better-than-you-good.html</link><author>noreply@blogger.com (Diego Rodriguez)</author><thr:total>1</thr:total><feedburner:origLink>http://diec123.blogspot.com/2009/01/is-everyone-better-than-you-good.html</feedburner:origLink></item><language>en-us</language><media:credit role="author">Diego Rodriguez</media:credit><media:rating>nonadult</media:rating></channel></rss>
