<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El blog de Lucas &#187; Internet</title>
	<atom:link href="http://lucas.di-pentima.com.ar/wordpress/category/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://lucas.di-pentima.com.ar/wordpress</link>
	<description>Software Libre, Aikido, y demás cosas interesantes...</description>
	<lastBuildDate>Tue, 18 May 2010 18:22:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>¿Que tan rápido es Google Chrome? / How fast is Google Chrome?</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2010/05/05/google-chrome-speed-video/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2010/05/05/google-chrome-speed-video/#comments</comments>
		<pubDate>Wed, 05 May 2010 16:49:36 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[rápido]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[velocidad]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/?p=304</guid>
		<description><![CDATA[Yo diría que bastante! Wow!]]></description>
			<content:encoded><![CDATA[<p>Yo diría que bastante! Wow!</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/nCgQDjiotG0&amp;hl=es_ES&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/nCgQDjiotG0&amp;hl=es_ES&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2010/05/05/google-chrome-speed-video/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Despliegue de aplicaciones web Rails con Puppet y Capistrano (parte I)</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2009/05/15/despliegue-de-aplicaciones-web-rails-con-puppet-y-capistrano-parte-i/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2009/05/15/despliegue-de-aplicaciones-web-rails-con-puppet-y-capistrano-parte-i/#comments</comments>
		<pubDate>Fri, 15 May 2009 19:33:43 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/?p=265</guid>
		<description><![CDATA[Hace algunas semanas me puse a investigar un poco sobre el despliegue de aplicaciones hechas con Ruby on Rails, ya que en mi laburo vamos a comenzar a desarrollar algunas apps en esta plataforma, y quería tener cocinado el tema de infraestructura antes que sea necesario ponerlas en producción. Leyendo variados artículos en la blogósfera, [...]]]></description>
			<content:encoded><![CDATA[<p>Hace algunas semanas me puse a investigar un poco sobre el despliegue de aplicaciones hechas con <a href="http://rubyonrails.org/">Ruby on Rails</a>, ya que en mi laburo vamos a comenzar a desarrollar algunas apps en esta plataforma, y quería tener cocinado el tema de infraestructura antes que sea necesario ponerlas en producción.</p>
<p>Leyendo variados artículos en la blogósfera, he visto que una buena dupla como software <em>&#8220;plataforma base de Rails&#8221;</em> es el uso de <a href="http://mongrel.rubyforge.org/">Mongrel</a> y <a href="http://wiki.nginx.org/Main">Nginx</a>, siendo el primero el servidor de aplicaciones y el último el frontend HTTP. Esta combinación nos permite instalar una aplicación web en un servidor de recursos no muy abundantes, y aún así servir a una buena cantidad de usuarios concurrentes. Obvio que no he hecho métricas propias, pero Internet está lleno de este tipo de análisis.</p>
<p>El problema entonces se divide en dos:</p>
<ul>
<li>Instalar el software base necesario en los servidores</li>
<li>Realizar el despliegue (deploy) de la aplicación en si</li>
</ul>
<p>En este artículo vamos a ver cómo hago yo para mantener el software base (mongrel, nginx, gemas, &#8230;) instalado y configurado en los servidores que correspondan. Esta tarea la hago con <a href="http://reductivelabs.com/products/puppet/">Puppet</a>, una herramienta que <a href="http://lucas.di-pentima.com.ar/wordpress/2007/10/11/manejando-los-hilos-de-nuestra-infraestructura-it/">en un artículo anterior he comentado</a> que me permite administrar una gran cantidad de servidores sin tener que volverme un esclavo.<span id="more-265"></span>A modo de preámbulo, les voy a contar que mis servidores son todos <a href="http://www.debian.org">Debian</a> Lenny (stable) y usamos Rails 2.3.x.</p>
<p>Como primera medida, vamos a definir en Puppet lo necesario para que Ruby y Rails estén instalados, ya que son <em>el sistema operativo</em> de nuestra aplicación web.</p>
<p>Para poder instalar Rails 2.3.x desde el instalador de gemas, tenemos primero que instalar <em>rubygems </em>y<em> rubygems1.8</em>, pero Debian Lenny no trae la versión 1.3.1 que es la necesaria, por lo tanto acá es el único lugar donde vamos a hacer un poco de trampa, y vamos a instalar el paquete que podemos bajar desde la versión experimental <a href="http://packages.debian.org/experimental/all/rubygems/download">acá</a> y <a href="http://packages.debian.org/experimental/all/rubygems1.8/download">acá</a>.</p>
<p>¿Cómo instalar un paquete que no está en la distribución actual? Mi solución seguro no fue la mejor, pero anduvo! Lo que hago es vía Puppet envío el paquete al servidor en cuestión y después le digo que lo instale usando <em>dpkg</em>, de esta manera:</p>
<pre># Instalamos rubygems 1.3.1 desde paquetes de experimental, ya que Lenny no lo tiene
# La versión 1.3.1 es necesaria para rails 2.3.x

class rubygems {
    file {
        "/usr/src/rubygems1.8_1.3.1-1_all.deb":
            source =&gt; "puppet://puppet.marketingsur.com/files/packages/rubygems1.8_1.3.1-1_all.deb",
            owner =&gt; root,
            group =&gt; root,
            mode =&gt; 0644;
        "/usr/src/rubygems_1.3.1-1_all.deb":
            source =&gt; "puppet://puppet.marketingsur.com/files/packages/rubygems_1.3.1-1_all.deb",
            owner =&gt; root,
            group =&gt; root,
            mode =&gt; 0644;
    }

    package {
        "ruby1.8":
            ensure =&gt; installed;
        "ruby1.8-dev":
            ensure =&gt; installed;
        "make":
            ensure =&gt; installed;
        "rubygems1.8_1.3.1":
            source =&gt; "/usr/src/rubygems1.8_1.3.1-1_all.deb",
            provider =&gt; dpkg,
            ensure =&gt; installed,
            require =&gt; File["/usr/src/rubygems1.8_1.3.1-1_all.deb"];
        "rubygems_1.3.1":
            source =&gt; "/usr/src/rubygems_1.3.1-1_all.deb",
            provider =&gt; dpkg,
            ensure =&gt; installed,
            require =&gt; [ Package["ruby1.8"], Package["rubygems1.8_1.3.1"],
                         File["/usr/src/rubygems_1.3.1-1_all.deb"] ];
    }
}</pre>
<p>Con esto ya puedo definir la clase que me va a mantener instalado rails desde gemas:</p>
<pre># Instalamos rails desde gems porque la versión Debian es muy vieja
class rails {

    include rubygems

    package {
        "rails":
            provider =&gt; gem,
            ensure =&gt; installed,
            require =&gt; Package["rubygems_1.3.1"];
    }
}</pre>
<p>Nótese la libertad que Puppet no provee al mantenerse independiente del sistema de paquetes, mediante la palabra clave <em>provider</em> puedo decirle que instale paquetes desde otras fuentes, permitiendonos seguir tratando a ese recurso como un paquete abstracto.</p>
<p>Hasta aquí tenemos entonces el lenguaje ruby 1.8 instalado, y rails 2.3.x listo para ser usado.</p>
<h2>Mongrel Cluster</h2>
<p>Mongrel es una biblioteca Ruby que se usa para armar servidores web, está diseñada para tener buena performance sirviendo contenido dinámico, pero no estático&#8230; es por eso que lo último se lo dejamos a Nginx, como explico más abajo.</p>
<p>Volviendo a mongrel, la distribución Debian tiene un paquete llamado mongrel-cluster que nos deja todo bastante listo para usar, con scripts de inicio y apagado de los clusters, por lo que el trabajo adicional que hay que hacer es relativamente poco.</p>
<p>Primero armamos una clase para instalar el software y mantener funcionando el servicio:</p>
<pre>class mongrel {
    include rails

    package {
        "mongrel-cluster":
            ensure =&gt; installed,
            require =&gt; Package["rails"];
    }

    service {
        "mongrel-cluster":
            ensure =&gt; running,
            enable =&gt; true,
            hasrestart =&gt; true,
            hasstatus =&gt; true,
            require =&gt; Package["mongrel-cluster"];
    }
}</pre>
<p>Luego escribimos la definición que va a permitir dar vida a varios clusters mongrel:</p>
<pre>define mongrel-cluster-app ( $ipaddr="127.0.0.1",
                             $appdir="",
                             $port=8000,
                             $servers=3) {
    $root = $appdir ? {
        "" =&gt; "/var/www/${name}",
        default =&gt; "${appdir}",
    }

    include mongrel

    file {
        "/etc/mongrel-cluster/sites-available/${name}.conf":
            owner =&gt; root,
            group =&gt; root,
            mode =&gt; 0644,
            content =&gt; template("mongrel/cluster-app.conf.erb"),
            require =&gt; Package["mongrel-cluster"],
            notify =&gt; Service["mongrel-cluster"];

        "/etc/mongrel-cluster/sites-enabled/${name}.conf":
            ensure =&gt; "/etc/mongrel-cluster/sites-available/${name}.conf",
            require =&gt; File["/etc/mongrel-cluster/sites-available/${name}.conf"],
            notify =&gt; Service["mongrel-cluster"];
    }
}</pre>
<p>Esto configura el cluster mongrel en cuestión, activándolo y escribiendo el archivo de configuración a partir del siguiente simple template:</p>
<pre>---
address: &lt;%= ipaddr %&gt;
log_file: log/mongrel.log
port: "&lt;%= port %&gt;"
cwd: &lt;%= root %&gt;/current
environment: production
pid_file: tmp/pids/mongrel.pid
servers: &lt;%= servers %&gt;</pre>
<p>Con esto, tenemos el software mongrel-cluster instalado, y el cluster específico que va a ejecutar nuestra aplicación configurado y corriendo, listo para atender los requerimientos de los usuarios cuando le lleguen a través de nginx.</p>
<h2>Nginx</h2>
<p>Primero vamos a empezar con el webserver, el que se encarga de atender a los requests de los usuarios. Éste es un proyecto Ruso que está ganando popularidad por su gran velocidad y poco consumo de memoria. Mi anterior favorito era lighttpd, pero he tenido varios problemas de uso de memoria, y por lo que vi el proyecto está bastante frenado.</p>
<p>Del lado de Puppet, primero defino una clase que mantiene instalado y corriendo el servidor nginx, nada del otro mundo:</p>
<pre>class nginx {
    package {
        "nginx":
            ensure =&gt; installed;
    }

    service {
        "nginx":
            ensure =&gt; running,
            enable =&gt; true,
            hasrestart =&gt; true,
            hasstatus =&gt; false,
            require =&gt; Package["nginx"];
    }
}</pre>
<p>Luego, tengo una definición que me permite generar varias configuraciones de sitios basados en nginx y mongrel:</p>
<pre>define nginx-railsapp ( $rootdir="",
                        $ipaddr="",
                        $port=80,
                        $mongrels=["127.0.0.1, 8000, 3"] ) {
    $root = $rootdir ? {
        "" =&gt; "/var/www/${name}",
        default =&gt; "${rootdir}",
    }
    $listen = $ipaddr ? {
        "" =&gt; "${port}",
        default =&gt; "${ipaddr}:${port}",
    }
    $upstream_name = "mongrel-${name}"

    include nginx

    file {
        "${root}":
            ensure =&gt; directory,
            owner =&gt; www-data,
            group =&gt; www-data,
            mode =&gt; 0755;
        "/etc/nginx/sites-available/${name}":
            content =&gt; template("nginx/railsapp.conf.erb"),
            owner =&gt; root,
            group =&gt; root,
            mode =&gt; 0644,
            require =&gt; Package["nginx"],
            notify =&gt; Service["nginx"];
        "/etc/nginx/sites-enabled/${name}":
            ensure =&gt; "/etc/nginx/sites-available/${name}",
            require =&gt; File["/etc/nginx/sites-available/${name}"],
            notify =&gt; Service["nginx"];
    }
}</pre>
<p>Esta definición acepta 4 parámetros: el directorio raíz donde va a estar la app, la dirección IP en la que va a atender el webserver, su puerto, y las instancias mongrel que van a darle vida a la aplicación. Noten que por defecto todos los parámetros tienen un valor configurado, por lo que son opcionales.</p>
<p>Otro detalle a tener en cuenta es el parámetro <em>mongrels</em>, se puede ver que es una lista de <em>strings</em>, esa string define una tupla de 3 valores separados por coma, el primero corresponde al IP donde los mongrels atienden, el segundo es el puerto inicial, y el tercer valor la cantidad de instancias.</p>
<p>La receta configura un par de directorios y además el archivo de configuración de la aplicación, que obtiene a partir de un template (railsapp.conf.erb) que incluyo acá abajo:</p>
<pre>###
# ATENCION: Archivo de configuración manejado por Puppet!
###

upstream &lt;%= upstream_name %&gt; {
    #fair;
&lt;% mongrels.each do |mongrel| -%&gt;
&lt;% mongrel_ip, mongrel_port, mongrel_qty = mongrel.gsub(' ', '').split(',') -%&gt;
&lt;% mongrel_qty.to_i.times do |n| -%&gt;
    server &lt;%= mongrel_ip %&gt;:&lt;%= mongrel_port.to_i + n %&gt;;
&lt;% end -%&gt;
&lt;% end -%&gt;
}

server {
    listen &lt;%= listen %&gt;;
    server_name &lt;%= name %&gt; www.&lt;%= name %&gt;;
    charset off;

    # this rewrites all the requests to the maintenance.html
    # page if it exists in the doc root. This is for capistrano’s
    # disable web task
    if (-f &lt;%= root %&gt;/system/maintenance.html) {
        rewrite ^(.*)$ /system/maintenance.html last;
        break;
    }

    location / {
        root &lt;%= root %&gt;/current;
        index index.html index.htm;
    }

    # / -&gt; first search for local index.html then go to &lt;%= upstream_name %&gt;
    location ~ ^/$ {
        if (-f /index.html) {
            rewrite (.*) /index.html last;
        }
        proxy_pass http://&lt;%= upstream_name %&gt;;
    }

    # rails caching: searching first for $action.html local pages
    location / {
        if (!-f $request_filename.html) {
            proxy_pass http://&lt;%= upstream_name %&gt;;
        }
        rewrite (.*) $1.html last;
    }

    # serve static files directly
    location ~ .html {
        root &lt;%= root %&gt;/current/public;
    }

    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ {
        root &lt;%= root %&gt;/current/public;
    }

    # resend everything else to &lt;%= upstream_name %&gt;
    location / {
        proxy_pass  http://&lt;%= upstream_name %&gt;;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}</pre>
<p>Éste es un archivo de configuración que encontré <em>por ahi</em> y que lo adapté al formato de templates de ERB. Básicamente lo que hace es servir todo lo que sea contenido estático, y para lo dinámico (la aplicación web en si) hace de proxy ruteando los requests a el o los clusters mongrel que hayamos definido. Esto nos permitiría tener varios servidores atendiendo a la aplicación web, para repartir la carga.</p>
<h2>El toque final</h2>
<p>Luego de definir todos estos recursos, no nos queda más que usarlos. Ésto lo podemos hacer con una clase que defina la aplicación en cuestión, de la siguiente manera:</p>
<pre># midominio.com Web App (proxy balancer + backend)
class midominio-webapp {
    include rails
    include mongrel

    $mongrel_ipaddr = "127.0.0.1"
    $mongrel_port = 8000
    $mongrel_servers = 5

    $needed_gems = ["gema1", "gema2", "gema3"]

    nginx-railsapp {
        "midominio.com":
            ipaddr =&gt; "1.2.3.4",
            mongrels =&gt; ["${mongrel_ipaddr}, ${mongrel_port}, ${mongrel_servers}"];
    }
    mongrel-cluster-app {
        "midominio.com":
            ipaddr =&gt; "${mongrel_ipaddr}",
            port =&gt; "${mongrel_port}",
            servers =&gt; "${mongrel_servers}";
    }

    package {
        $needed_gems:
            provider =&gt; gem,
            ensure =&gt; installed,
            require =&gt; Package["rails"];
    }
}</pre>
<p>Luego esta clase la incluímos en el nodo que corresponda, y listo&#8230; al rato tenemos instalada la infraestructura para hostear nuestra aplicación web.</p>
<p>Espero se animen a usar Puppet si aún no lo han hecho. Su sintaxis no es de lo mas hermoso que puede existir, pero los beneficios que trae hacen ese tema algo insignificante.</p>
<p>En la segunda parte vamos a hablar de cómo automatizar la instalación de la aplicación en los servidores, usando <a href="http://www.capify.org/">Capistrano</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2009/05/15/despliegue-de-aplicaciones-web-rails-con-puppet-y-capistrano-parte-i/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cerrando la puerta a los crackers</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2009/05/13/cerrando-la-puerta-a-los-crackers/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2009/05/13/cerrando-la-puerta-a-los-crackers/#comments</comments>
		<pubDate>Wed, 13 May 2009 20:24:44 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/?p=255</guid>
		<description><![CDATA[No es noticia nueva que tener una computadora conectada a Internet la deja expuesta a una serie de riesgos de seguridad, y es por eso que los administradores de sistemas, normalmente tomamos una serie de medidas básicas preventivas para evitar un disgusto posterior. Si bien mis servidores normalmente tienen un nivel de seguridad más que [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-256" title="cyber-criminal" src="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2009/05/cyber-criminal.jpg" alt="cyber-criminal" width="600" height="400" /></p>
<p>No es noticia nueva que tener una computadora conectada a Internet la deja expuesta a una serie de riesgos de seguridad, y es por eso que los administradores de sistemas, normalmente tomamos una serie de medidas básicas preventivas para evitar un disgusto posterior.</p>
<p>Si bien mis servidores normalmente tienen un nivel de seguridad más que aceptable, los molestos <em>bots</em> de estas personas no dejan de intentar adivinar las claves de mis cuentas para poder acceder con privilegios de administrador a los servidores. Esto me causa un problema, pero no de seguridad, sino que me ocupan los recursos que tengo para otras cosas y a veces hasta producen enlentecimientos notables en los servidores virtuales mas pequeños.</p>
<p>Es por esto que me puse manos a la obra, a averiguar alguna manera de mantener a raya a estos muchachos, y lo que me encontré fue con un software pensado justamente para esto: <a href="http://www.fail2ban.org/">fail2ban</a>.</p>
<p>Este programa está ya listo para ser instalado y usado en mi <a href="http://www.debian.org">distribución favorita (Debian GNU/Linux)</a>, y al instalarse comienza a chequear los accesos fallidos de conexión por SSH, dejando 6 intentos y prohibiendo el acceso por IP por 10 minutos. Para prohibir el acceso utiliza reglas de iptables, y su funcionamiento es en modo <em>daemon</em>, un pequeño programa queda corriendo (muy chiquito, sirve hasta en VPS de 256 MB de RAM) revisando los distintos archivos de registros de sistema.</p>
<p>Lo interesante además es que trae una serie de plantillas para poder chequear otros tipos de servicios como FTP, SMTP, Web, etc. todo esto mediante reglas de análisis y acciones acordes, que se pueden personalizar para un uso específico.</p>
<p>En resumen, una muy simpática herramienta para los administradores de sistemas GNU/Linux, fácil de instalar y poner a funcionar, y el beneficio es enorme.</p>
<p>¡Que la disfruten!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2009/05/13/cerrando-la-puerta-a-los-crackers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Oops! Error en Google</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2009/01/31/oops-error-en-google/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2009/01/31/oops-error-en-google/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 14:59:00 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/?p=229</guid>
		<description><![CDATA[Parece que Google está probando o implementando su funcionalidad de Safe Browsing en los resultados de búsqueda, y quizás se le pasó un poquito la mano con lo estricto de su chequeo]]></description>
			<content:encoded><![CDATA[<p>Parece que Google está probando o implementando su funcionalidad de Safe Browsing en los resultados de búsqueda, y quizás se le pasó un poquito la mano con lo estricto de su chequeo <img src='http://lucas.di-pentima.com.ar/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="size-full wp-image-230 aligncenter" title="google-oops" src="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2009/01/google-oops.png" alt="google-oops" width="663" height="451" /></p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2009/01/31/oops-error-en-google/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Estrenando WordPress 2.7 con novedades!</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2008/12/19/estrenando-wordpress-27-con-fbconnect/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2008/12/19/estrenando-wordpress-27-con-fbconnect/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 21:29:56 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/?p=188</guid>
		<description><![CDATA[Bien, luego de varios meses de no escribir, me siento en la obligación de al menos informar que este blog corre en la última versión disponible de wordpress: la 2.7 ¿Mejoras con respecto a la anterior? Seguro debe haberlas, pero como no he sido usuario asiduo de la rama 2.5.x, a mi no me pregunten [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wordpress.org"><img class="alignleft size-thumbnail wp-image-191" style="margin-left: 3px; margin-right: 3px;" title="wordpress logo" src="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2008/12/wordpress1-150x150.jpg" alt="wordpress logo" width="150" height="150" /></a></p>
<p>Bien, luego de varios meses de no escribir, me siento en la obligación de al menos informar que este blog corre en la última versión disponible de wordpress: la 2.7</p>
<p>¿Mejoras con respecto a la anterior? Seguro debe haberlas, pero como no he sido usuario asiduo de la rama 2.5.x, a mi no me pregunten <img src='http://lucas.di-pentima.com.ar/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Lo que si, la interfaz está mejor organizada, da una sensación de tener todo a mano sin tener que <em>scrollear</em> mucho hacia abajo.</p>
<p>De paso, ya que andaba con ganas, cambié el tema por uno que soporte widgets, y le agregué el plugin que la gente de <a href="http://www.sociable.es/facebook-connect/">Sociable</a> ha escrito para darle capacidades de FacebookConnect, lo que permite a los usuarios loguearse a mi blog con su cuenta de <a href="http://www.facebook.com">Facebook</a>, y compartir contenidos del blog en esa red social.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2008/12/19/estrenando-wordpress-27-con-fbconnect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ohloh: Red Social de Software Libre</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2007/11/23/ohloh-red-social-de-software-libre/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2007/11/23/ohloh-red-social-de-software-libre/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 20:20:59 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/2007/11/23/ohloh-red-social-de-software-libre</guid>
		<description><![CDATA[En Internet, hoy la moda son las redes sociales, y las hay de todos los gustos y colores. Hace unos días llegué a Ohloh, una red social que centra su foco en developers y proyectos de Software Libre y la verdad es que me pareció muy interesante! Lo curioso de este sitio es que nos [...]]]></description>
			<content:encoded><![CDATA[<p>En Internet, hoy la moda son las <a href="http://es.wikipedia.org/wiki/Red_social">redes sociales,</a> y las hay de todos los gustos y colores. Hace unos días llegué a <a href="http://www.ohloh.net">Ohloh</a>, una red social que centra su foco en developers y proyectos de Software Libre y la verdad es que me pareció muy interesante!</p>
<p>Lo curioso de este sitio es que nos permite subir nuestros proyectos para luego hacer un análisis del código fuente, detectando los lenguajes utilizados, y sacando estadísticas. Como primera medida subí el proyecto <a href="http://www.ohloh.net/projects/9776">GNOME War Pad</a> a partir de mi <a href="git://gnomewarpad.com.ar/home/lucas/gwp.git">repositorio git público</a>,  y en un par de horas el sistema había importado el código fuente y había analizado su contenido, detectando los contribuidores y su nivel de actividad en el proyecto.</p>
<p>Pueden ver además que a partir del código fuente, el sitio arma una especie de perfil de cada desarrollador, con información sobre el nivel de experiencia en cada lenguaje, cantidad de commits, etc. En fin, me pareció una idea original armar una red de desarrolladores cuya información sea extraída directamente de su trabajo, puede ser una buena fuente de contactos a la hora de buscar gente para un nuevo proyecto.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2007/11/23/ohloh-red-social-de-software-libre/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cómo comprobar la configuración de un servidor DNS</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2007/11/17/como-comprobar-la-configuracion-de-un-servidor-dns/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2007/11/17/como-comprobar-la-configuracion-de-un-servidor-dns/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 18:35:34 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[dns report]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/2007/11/17/como-comprobar-la-configuracion-de-un-servidor-dns</guid>
		<description><![CDATA[Internet funciona gracias a un servicio, el más importante de todos: DNS (Domain Name Service). DNS no es más que una base de datos jerárquica y distribuída que permite a personas de distintos puntos del globo aportar datos de tal manera que los servicios que todos conocemos, funcionen correctamente. Gracias al DNS los servidores de [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Internet" href="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2007/11/internet_map_1024.jpg"><img style="margin-left: 6px; margin-right: 6px;" src="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2007/11/internet_map_1024.thumbnail.jpg" alt="Internet" hspace="5" width="128" height="128" align="left" /></a>Internet funciona gracias a un servicio, el más importante de todos: <strong>DNS (Domain Name Service)</strong>.</p>
<p>DNS no es más que una base de datos jerárquica y distribuída que permite a personas de distintos puntos del globo aportar datos de tal manera que los servicios que todos conocemos, funcionen correctamente. Gracias al DNS los servidores de correo electrónico pueden intercambiar mensajes, los navegadores web pueden encontrar los servidores donde pedir las páginas, etc.<span id="more-168"></span></p>
<p>Los administradores de sistemas tenemos como tarea, la de configurar los servidores de nombres para que los datos de nuestros dominios sean correctamente publicados en Internet. Lo cierto es que muy pocos administradores de sistemas conocen realmente la manera correcta de configurar un servidor de nombres, y muchas veces caemos en errores que luego sufrimos por cortes de servicio de correos y otros similares.</p>
<p>Por suerte, en GNU/Linux contamos con varias herramientas que nos ayudan a corroborar que la configuración de un dominio está correcta, hoy voy a comentar <a href="http://www.zonecheck.fr/"><em>&#8220;zonecheck&#8221;</em></a> una herramienta que tiene la particularidad de no necesitar analizar un archivo de configuración, sino que hace las consultas a los servidores de nombres públicos en Internet.</p>
<p>Zonecheck <a href="http://packages.debian.org/zonecheck">viene en Debian</a>, así que para aquellos felices usuarios de esta maravillosa distribución de Linux, solo hace falta ejecutar &#8220;apt-get install zonecheck&#8221; y comenzar a utilizarlo. El comando posee muchas opciones y realmente es conveniente leer con detenimiento su páginal de manual, pero para aquellas personas ansiosas, acá les va un ejemplo:</p>
<pre>$ zonecheck -4 -q -vi,x,d fileextensionunknown.com
ZONE  : fileextensionunknown.com.
NS &lt;= : ns1.name.com. [4.79.81.159]
NS    : ns2.name.com. [38.97.225.164]
NS    : ns4.name.com. [38.97.225.165]
NS    : ns3.name.com. [4.79.81.160]

w&gt; The format of the serial number is not YYYYMMDDnn
 | Ref: RFC1912 (p.3)
 |   The recommended syntax is YYYYMMDDnn (YYYY=year, MM=month, DD=day,
 | nn=revision number).
 `----- -- -- - -  -
 :   The serial 1 doesn't seem to be in the YYYYMMDDnn format.
 `..... .. .. . .  .
=&gt; ns2.name.com./38.97.225.164
=&gt; ns4.name.com./38.97.225.165
=&gt; ns3.name.com./4.79.81.160
=&gt; ns1.name.com./4.79.81.159

w&gt; [TEST delegated domain is not an open relay]: No route to host - connect(2)
=&gt; generic

w&gt; [TEST can deliver email to 'postmaster']: No route to host - connect(2)
=&gt; generic

w&gt; [TEST domain of the hostmaster email is not an open relay]: No route to host - connect(2)
=&gt; generic

f&gt; [TEST can deliver email to hostmaster]: No route to host - connect(2)
=&gt; generic

==&gt; FAILURE (and 7 warning(s))</pre>
<p>Zonecheck realiza numerosas pruebas, y nos va diciendo cuales son advertencias, cuales son errores fatales y en algunas ocasiones, cómo solucionarlo.</p>
<p>Además, para aquellos administradores que no usen GNU/Linux, acabo de poner en línea una herramienta web que utiliza zonecheck de fondo, para poder acceder a esta ventaja aún estando en un Windows: <a href="http://dnsreport.cooltoolonline.com">Free DNS Report</a>. ¡Que la disfruten!</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2007/11/17/como-comprobar-la-configuracion-de-un-servidor-dns/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Manejando los hilos de nuestra infraestructura IT</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2007/10/11/manejando-los-hilos-de-nuestra-infraestructura-it/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2007/10/11/manejando-los-hilos-de-nuestra-infraestructura-it/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 01:30:31 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/2007/10/11/manejando-los-hilos-de-nuestra-infraestructura-it/</guid>
		<description><![CDATA[El viernes pasado tuve la oportunidad de participar como orador en las 6tas Conferencias Abiertas de Software Libre de Capital Federal, organizadas por CaFeLUG, y lo que me permitieron exponer en esta ocasión es una herramienta que vengo mirando de hace relativamente poco tiempo, pero que me interesa muchísimo: Puppet. La administración de servidores involucra [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2007/10/puppet_96.png" title="Logo Puppet" alt="Logo Puppet" align="left" />El viernes pasado tuve la oportunidad de participar como orador en las <a href="http://cafeconf.org">6tas Conferencias Abiertas de Software Libre de Capital Federal</a>, organizadas por <a href="http://www.cafelug.org.ar">CaFeLUG</a>, y lo que me permitieron exponer en esta ocasión es una herramienta que vengo mirando de hace relativamente poco tiempo, pero que me interesa muchísimo: <a href="http://puppet.reductivelabs.com">Puppet</a>.</p>
<p>La administración de servidores involucra variadas tareas, desde la elección de hardware para un nuevo servidor, la instalación del sistema operativo, aplicaciones, su configuración, pruebas y puesta en producción, para luego terminar con el mantenimiento de dicho servidor, que puede incluir más tareas como por ejemplo: actualización periódica del software instalado, la corrección de mínimos errores que podamos haber tenido en la configuración inicial, el agregado de pequeñas herramientas que nos ayudan a mantener los servicios funcionando, copias de respaldo de datos, y quizás también del sistema base&#8230; la lista continúa pero creo que la idea está planteada: <strong>Administrar servidores no es una tarea simple.</strong><span id="more-146"></span></p>
<p>A medida que sumamos servidores a nuestra carga administrativa, cada uno con sus peculiaridades, servicios diferentes, configuraciones personalizadas, etc. nos vemos más y más inmersos en un problema latente:</p>
<ul>
<li>Nuestra carga horaria necesaria para tener todo funcionando es cada vez mayor, ya que por cada servicio en cada servidor, los problemas que aparecen son únicos y muy pocas veces se repiten en otros casos. Esto significa que con casi cualquier problema que surge, el tiempo que tenemos que dedicarle a la investigación y resolución del mismo es tanto como el tiempo que le vamos a tener que dedicarle al siguiente, y así.</li>
<li>Por más minuciosos que seamos, las soluciones que aplicamos en un servidor hace 1 año serán distintas a las que utilicemos en la implementación de servidores hoy en día, por más que la funcionalidad de ellos sea similar. Día a día pulimos métodos, mejoramos algoritmos, aprendemos nuevas formas de hacer lo mismo que nos ahorran tiempo, y todo eso lo aplicamos a los servicios que tenemos a cargo, pero actualizar esos métodos en servidores donde los tenemos funcionando en alguna manera hoy antigua, es o bien muy costoso o simplemente imposible. En consecuencia: los métodos que utilizamos a través de los años quedan dispersos en la línea temporal que forman los equipos generados por nosotros.</li>
<li>¿Y que me cuentan de la gestión de software? Habíamos visto que parte de nuestras tareas era la de mantener actualizado el software instalado en los equipos. Si bien hay administradores que tienen como política la frase <em>&#8220;Si funciona, no lo toques&#8221;</em>, yo creo que si la distribución te ofrece la estabilidad y confianza suficientes como para saber que las actualizaciones de seguridad no te van a romper nada, el actualizar es una necesidad, no sólo en los servidores expuestos a redes públicas como Internet. ¿Qué pasa cuando tenemos que actualizar 10 servidores? ¿Y cuando son 100? ¿Qué pasa cuando tenemos que instalar un nuevo software en 10, 50, o 100 servidores? Nos arremangamos, respiramos hondo, y o bien planeamos los siguientes 2 meses implementando el mismo software una y otra vez, o descartamos nuestros preciados fines de semana para acelerar el paso. De más está decir que si en vez de servidores hablamos de estaciones de trabajo&#8230;se complica un poquito más la cosa.</li>
<li>A medida que la infraestructura aumenta de tamaño, vamos necesitando gente que nos ayude. Si las políticas administrativas no están estandarizadas de alguna manera, lo único que haremos es sumar un ancla más sobre nuestro pescuezo, ya que las nuevas personas tendrán sus propios criterios y formas de hacer las cosas, multiplicando la variedad en la que los problemas son solucionados y por lo tanto, haciendo cada vez más necesaria gente altamente capacitada para el mantenimiento. De más está decir que es difícil conseguir gente con mucha experiencia que esté interesada en mantener un verdadero caos, ¡ellos tienen mejores cosas que hacer de su vida, y vos también deberías!</li>
</ul>
<p>En mi haber tengo casi 10 años de experiencia en la administración de servidores, y esto sólo lo digo para recalcar el hecho que las problemáticas arriba expresadas sólo se hicieron evidentes cuando ya era tarde, cuando tenía encima casi 40 servidores, todos <strong>configurados artesanalmente</strong> y cada uno con sus peculiaridades. Ni yo me acuerdo de todos los detalles que hay ocultos en cada servicio que todas esas máquinas dieron. Si alguien me hubiera advertido, es probable que haya empezado a planear una estandarización temprana que me hubieran permitido administrar 400 servidores sin mayores problemas.</p>
<p>Aquí es cuando entra Puppet al rescate, ésta es una herramienta que nos ayuda solucionar los problemas antes mencionados. Puppet tiene varios componentes, entre ellos se encuentra el <em>servidor</em>, que distribuye las <em>recetas</em> que los <em>clientes</em> deben aplicar en cada servidor. Y ya que hablamos de recetas, éstas están escritas en un lenguaje declarativo, es decir, un lenguaje que expresa el estado de cómo debería estar el servidor, sin caer en una receta paso a paso para llegar a ese estado. Una receta en Puppet se refiere entonces a recursos, y su estado en el equpo, como por ejemplo: <em>el paquete vim debe estar instalado y debe ser el editor por defecto</em>, entonces Puppet se encarga que esto sea aplicado, ya sea en un Debian, un Redhat, Ubuntu o SuSE, nosotros nos olvidamos de los detalles menores.</p>
<p>Este alto nivel de expresión nos permite escribir recetas que luego podemos compartir con otros colegas, tal cual el software libre! esto es algo que muy pocas veces se ha hecho ya que las herramientas que los administradores de sistemas realizamos son normalmente muy ad hoc, poco portables a otros entornos.</p>
<p>Entre los recursos que Puppet nos permite administrar, están los paquetes de software, archivos y directorios, usuarios, tareas de cron, etc. y además como la herramienta está escrita en el lenguaje <a href="http://www.ruby-lang.org/es/">Ruby</a>, es fácilmente extensible para agregar nuevos recursos.</p>
<p>El caso ideal luego de haber aprendido esta herramienta, sería que con cada servidor nuevo, lo único que haya que instalar sea el sistema base, el cliente Puppet, y luego éste se encarga del resto, manteniendo el estado que se expresa en las recetas a rajatabla, chequeando que se cumplan cada tanto, y nosotros mientras tanto pudiendo regresar a casa temprano, olvidandonos que estamos de guardia y que de un momento a otro, el celular podría sonar por algún incendio.</p>
<p>Les dejo disponible <a href="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2007/10/administracion-centralizada-con-puppet.pdf">los slides de mi charla</a> por si les sirve de algo.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2007/10/11/manejando-los-hilos-de-nuestra-infraestructura-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Software Freedom Day</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2007/09/15/software-freedom-day/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2007/09/15/software-freedom-day/#comments</comments>
		<pubDate>Sat, 15 Sep 2007 15:30:12 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/2007/09/15/software-freedom-day/</guid>
		<description><![CDATA[Hoy 15 de Septiembre festejamos el dìa del Software Libre, en donde se pretende promocionar su uso en todos los ámbitos, desde el hogareño hasta el gubernamental. Para esta oportunidad, el grupo de Software Libre de la Universidad Nacional del Litoral, UNLibre, organizó un evento con charlas e instalaciones de linux para el que quiera [...]]]></description>
			<content:encoded><![CDATA[<div><a href="http://softwarefreedomday.org/" target="_blank"><img src="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2007/09/softwarefreedom.png" alt="softwarefreedom.png" /></a></div>
<p>Hoy 15 de Septiembre festejamos el dìa del Software Libre, en donde se pretende promocionar su uso en todos los ámbitos, desde el hogareño hasta el gubernamental.</p>
<p>Para esta oportunidad, el grupo de <a href="http://unlibre.unl.edu.ar/index.php?title=OrganizacionSFD" target="_blank">Software Libre de la Universidad Nacional del Litoral, UNLibre</a>, organizó un evento con charlas e instalaciones de linux para el que quiera acercarce.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2007/09/15/software-freedom-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Reader</title>
		<link>http://lucas.di-pentima.com.ar/wordpress/2007/08/31/google-reader/</link>
		<comments>http://lucas.di-pentima.com.ar/wordpress/2007/08/31/google-reader/#comments</comments>
		<pubDate>Sat, 01 Sep 2007 02:16:10 +0000</pubDate>
		<dc:creator>Lucas Di Pentima</dc:creator>
				<category><![CDATA[Internet]]></category>

		<guid isPermaLink="false">http://lucas.di-pentima.com.ar/wordpress/2007/08/31/google-reader/</guid>
		<description><![CDATA[Durante varios meses he estado usando el servicio de Netvibes para la lectura de mis sitios favoritos, es un sitio que permite al usuario crear su página personalizada, agregando no sólo feeds RSS, sino también cantidad de cosas como calendarios, notas, metereología, etc. El problema que veo que tiene, es que es horrendamente lento&#8230;si bien [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://lucas.di-pentima.com.ar/wordpress/wp-content/uploads/2007/08/rss.jpg" title="rss.jpg" alt="rss.jpg" align="left" />Durante varios meses he estado usando el servicio de <a href="http://www.netvibes.com" target="_blank">Netvibes</a> para la lectura de mis sitios favoritos, es un sitio que permite al usuario crear su página personalizada, agregando no sólo <em>feeds RSS</em>, sino también cantidad de cosas como calendarios, notas, metereología, etc.</p>
<p>El problema que veo que tiene, es que es horrendamente lento&#8230;si bien mi máquina no es la gran cosa (AMD Sempron 2400+ con 512 MB de RAM), me di cuenta que cuantos más sitios sindicados tengo, más lerdo se pone. Además, al menos en mi experiencia de usuario, a netvibes lo uso sólo para la lectura de mis feeds, lo demás son chiches que no uso&#8230;<span id="more-136"></span></p>
<p>Luego de leer un artículo de un blog <em>de por ahi</em>, me propuse ver nuevamente que tal anda el <a href="http://google.com/reader" target="_blank">Google Reader</a>, hacía tiempo lo había probado y no me había gustado para nada, y me sorprendo al ver una interfaz de usuario completamente diferente. Aprovecho las funcionalidades de exportación e importación <a href="http://es.wikipedia.org/wiki/OPML" target="_blank">OPML</a> que tienen ambos sitios y rápidamente me migro a este lector.</p>
<p>Luego de pasar un día utilizandolo, debo decir que realmente me encantó. No sólo por su velocidad de manejo (que Google nos tiene acostumbrados en todas sus aplicaciones web), sino además le encontré tres funcionalidades que al menos a mi me parecen excelentes:</p>
<ul>
<li> <strong>Navegación por teclado:</strong> Muy al estilo <a href="http://gmail.com" target="_blank">GMail</a>, hace la experiencia de usuario mucho más ágil sólo con aprenderse un par de teclas.</li>
<li><strong>Compartir noticias:</strong> Si algún artículo nos da ganas compartirlo, luego podremos incluir el listado de noticias/artículos compartidos en nuestro sitio web (lo acabo de agregar en la barra lateral de mi blog)</li>
<li><strong>E</strong><strong>l enlace &#8220;Next&#8221;:</strong> Agregando el enlace &#8220;next&#8221; a la barra de bookmarks de nuestro navegador, podemos en cualquier instante ir a ver la siguiente noticia que no hayamos leído. Parecería una estupidez pero es realmente práctico.</li>
</ul>
<p>Si sos de leer noticias en RSS, realmente te recomiendo probarlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://lucas.di-pentima.com.ar/wordpress/2007/08/31/google-reader/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
