Archive for the ‘Internet’ Category

Actualización automática de los plugins de Wordpress por SSH

Saturday, July 11th, 2009

Las versiones recientes de Wordpress te permiten actualizar los plugins instalados con un simple click. Aunque interesante, nunca había usado esa funcionalidad porque requería tener instalado y configurado un servidor FTP o FTPS. Y, la verdad, me daba mucha pereza tener que mantener un servicio sólo para esto.

Pero hoy, tras actualizar a la versión 2.8.1, por casualidad he lanzado un grep en un directorio que no tocaba y he descubierto el fichero wp-admin/includes/class-wp-filesystem-ssh2.php. Resulta que Wordpress también puede usar SSH para realizar esas actualizaciones. Normalmente esa opción no aparece por que no disponemos de todo el software necesario para que funcione, pero es bastante sencillo conseguirlo. Veamos como hacerlo en una Debian:

$ sudo aptitude install libssh2-1 libssh2-1-dev php5-dev
$ sudo pecl install -f ssh2
$ sudo vi /etc/php5/conf.d/ssh2.ini
    extension=ssh2.so
$ sudo /etc/init.d/apache2 restart

Una vez tenemos instalada la extensión ssh2.so de PHP, podemos desinstalar los paquetes de desarrollo que instalamos en el primer paso.

$ sudo aptitude remove libssh2-1 libssh2-1-dev php5-dev

Listo, ya podemos actualizar los plugins desde la comodidad de nuestro navegador sin necesidad de tener un servidor FTP o FTPS. Seguramente también se puede usar para actualizar el propio Wordpress, aunque no lo puedo confirmar ya que yo lo actualizo usando subversión.

Como se puede ver es bastante sencillo. De todas formas, os dejo un screencast que he hecho sobre la instalación (inaugurando mi cuenta de YouTube).

Optimizaciones en el blog

Sunday, May 24th, 2009

Desde que Xisco me pidió consejo tras probar varias de sus páginas con YSlow tenía pendiente escribir este post. YSlow es un plugin para Firefox que analiza distintos aspectos que pueden afectar al rendimiento de páginas webs y realiza recomendaciones. Todos los aspectos que se tienen en cuenta giran alrededor del tiempo de carga de la web. No entran en temas como optimización de base de datos y otros aspectos internos del servidor.

De todas las reglas, las más sencillas de corregir son:

Otras reglas pueden suponer reescribir parte de la aplicación pero para solventar estas tres basta con añadir algunas líneas al final del .htaccess del directorio raíz de nuestra web. Hay que tener en cuenta que los modulos necesarios deben estar instalados y la configuración del servidor nos debe permitir establecer esta configuración (directiva AllowOverride)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Add Expires Header
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
</IfModule>
 
# Compress CSS files
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/html text/xml application/rss+xml application/atom_xml
AddOutputFilterByType DEFLATE text/css application/javascript
</IfModule>
 
# ETag only use file time and size, but no inode
FileETag MTime Size

En las líneas 2 a 9 configuramos que las imágenes, hojas de estilo y javascripts tengan una fecha de expiración de una semana a partir del momento en que se ha visitado la página web. Esto significa que el navegador del usuario usará la copia local (fichero cacheado) durante una semana. Este comportamiento puede suponer un problema si tenemos ficheros de estos tipos que vamos modificando sin cambiarle el nombre (p.e. un banner) ya que los navegadores de algunos de los usuarios mantendran las versiones antiguas.

Desde la 12 a la 15 configuramos la compresión de las páginas HTML, feeds (text/xml, application/rss+xml y application/atom_xml), hojas de estilo y javascripts. De esta forma conseguimos ahorrar tráfico (importante si estamos en un hosting con limitaciones de tráfico)  y que el tiempo de transmisión sea menor.

Finalmente, en la última línea configuramos los ETags generados por el propio servidor Apache para los ficheros estáticos. Por defecto, Apache tiene en cuenta tres aspector para generar el ETag: el inodo, fecha de modificación y tamaño. Pero se recomienda no usar el inodo para generarlo ya que si nuestra web empieza a ser conocida y tenemos que distribuir la carga entre varios servidores, es muy poco probable que un fichero tenga el mismo inodo en todos los servidores de la granja. Entonces, el ETag variaría en funcion del servidor que lo generara por lo que no se sacaría provecho a esta cabecera. Para resolverlo, configuramos el Apache para que genere el ETag sólo considerando la fecha de modificación y el tamaño del fichero.

Con esta simple configuración yo conseguí pasar de una puntuación de 74 a 89.

A medida que pueda escribiré algún post más sobre optimización web y como resolverlo en el caso concreto de un blog que usa Wordpress.

Posteando desde el iPod Touch

Saturday, April 11th, 2009

Como ya es bien conocido, Apple inició una revolución en el campo de los dispositivos móviles cuando presentó la última generación de los iPod (incluyendo su teléfono móvil, el iPhone) y dió el siguiente paso al publicar la versión 2.x del software de esos dispositivos al añadir el App Store. Gracias a lo cual la funcionalidad de estas plataformas móviles ha aumentado enormemente al permitir que terceras partes publiquen aplicaciones.

Una de estas aplicaciones, Wordpress for iPhone, es la que me ha permitido publicar este post desde mi iPod Touch. Todavía le faltan algunas funcionalidades como, por ejemplo, la de un editor enriquecido que permita añadir enlaces o algo de estilo (listas, negrita, etc.) a los post, pero seguro que sólo es questión de tiempo.

Zenphoto: galería minimalista

Saturday, November 1st, 2008

Aquellos de vosotros que lleváis más tiempo visitando mi blog, os habréis dado cuenta de que he cambiado el software con el que gestiono mi galería de fotografías. Anteriormente usaba Gallery2 por su integración con Wordpress mediante el plugin WPG2 (para el que desarrollé una mejora). Pero si bién era una solución válida, resultaba demasiado compleja. Era como matar moscas a cañonazos. Sólo necesitaba una mínima parte de las características de Gallery2.

Por eso, un día empecé a evaluar alternativas que se ajustaran mejor a mis necesidades. Las únicas características que me interesaban eran que pudiera organizar las fotografías en álbumes, que se pudiera mostrar los datos EXIF de las fotografías, poder etiquetarlas, valorarlas y comentarlas, que se integrara con Wordpress y que fuera una herramienta libre. Finalmente encontré Zenphoto, que cumple con todas esas necesidades excepto la integración con Wordpress. En su web lo definen como:

Zenphoto is an answer to lots of calls for an online gallery solution that just makes sense. After years of bloated software that does everything and your dishes, zenphoto just shows your photos, simply. It’s got all the functionality and “features” you need, and nothing you don’t. Where the old guys put in a bunch of modules and junk, we put a lot of thought. We hope you agree with our philosopy: simpler is better. Don’t get us wrong though –zenphoto really does have everything you need for your online gallery, and you’ll even stare in awe at some of the innovative innovations we innovated upon.

Con el plugin ZenphotoPress para Wordpress conseguí poder añadir fotos de la galería en los posts de forma simple. Pero integrar la apariencia me lo tuve que currar yo, usando como guía este post de Steffen Rusitschka. Pero con ese método Google no indexaba las páginas de la galería, aunque se visualizaban correctamente, porque todas devolvían un status 404. Además, compartían el título (tag <title> del HTML) haciéndolo muy poco Search Engine Friendly. Para solucionarlo tuve que modificar un poco el código de Steffen. Este es el index.php de mi theme integrado con el Wordpress:

<?php if (!defined('WEBPATH')) die(); normalizeColumns(3, 6); ?>
<?php require($_SERVER['DOCUMENT_ROOT'].'/wp-blog-header.php'); ?>
<?php
// set the HTTP status
status_header('200');
 
// add the zen headers to the wordpress header
function zentitle() {
  echo '&raquo; '.strip_tags(getGalleryTitle());
}
function addzen() {
  global $_zp_themeroot;
  echo '<link rel="stylesheet" type="text/css" media="screen, projection" href="'.$_zp_themeroot.'/css/master.css" />';
  zenJavascript();
  printRSSHeaderLink('Gallery','Gallery RSS');
}
add_action('wp_head', 'addzen');
add_action('wp_title', 'zentitle');
?>
<?php get_header(); ?>
 
<div class="index">
  <!-- Código original de Zenphoto -->
</div>
 
<?php get_footer(); ?>

Lo más extraño es que yo tengo las bases de datos del blog y de la galería separadas pero no he necesitado hacer lo que comenta Steffen de conectarnos a una base de datos y luego a la otra. Por eso, si comparáis mi trozo de códico con el de Steffen veréis que falta esa parte. Lo siguiente será integrar el login de las dos aplicaciones, para lo que he visto que hay plugins, pero de momento no lo he mirado.

Como las URL de los álbumes han cambiado, también he añadido reglas de redirección en el .htaccess para no perder los enlaces que pudiera haber desde otras páginas.

Al final he conseguido dejarlo bastante bien integrado y estoy muy contento, tanto del resultado como de la aplicación en sí. Tiene justo lo que necesito. Ni más, ni menos. :-D

Warriors of The Net

Monday, October 13th, 2008

Como me suele ocurrir a menudo, mientras navegaba un poco por youtube he encontrado por casualidad un vídeo divulgativo donde se explica cómo funciona Internet para los no técnicos.


Versión en inglés | Sitio original

La verdad es que está bastante bien, pero hay determinados momentos que no me han gustado tanto. Uno de ellos es cuando aparece el router por primera vez: por la forma en que lo explican parece que el router funciona de forma transparente, mientras que en la realidad los paquetes deben ir destinados al router para que este los dirija hacia el siguiente salto. Otro de esos momentos es cuando hablan del ping de la muerte, ya que me parece un poco sensacionalista y más cuando hace algunos años que los fabricantes solucionaron la vulnerabilidad.

Pero a parte de estos detalles me parece muy interesante.

The adventures of Ace, DBA

Tuesday, October 7th, 2008

The adventures of Ace, DBA” es el título de una tira cómica que descubrí a principios de verano cuyo protagonista es Ace, un DBA de Oracle. El aspecto es similar al de xkcd, como reconoce el autor, y hay alguna tira que es para troncharse. Eso sí, no es para el público en general ya que el humor es muy geek, y en algunos casos puede ser difícil pillar la gracia totalmente si nunca has trabajado con Oracle.

La lástima es que desde finales de Agosto no ha publicado ninguna tira nueva.

Los primeros routers: Interface Message Processor

Wednesday, November 9th, 2005

Interface Message Processor photographyA finales de los ‘60, principio de los ‘70, la agencia estadounidense ARPA se propuso conectar los mainframes de varias universidades norteamericanas usando conmutación de paquetes, creando la red que se conocería como ARPANET y que sería la precursora de la Internet actual.

En un principio se propuso que fueran los propios mainframes de las universidades los que se encargasen del enrutado de paquetes, pero en aquellos tiempos la potencia de cálculo era extremadamente preciosa y los administradores de los mainframes estaban preocupados por el efecto negativo que podría tener ese trabajo extra en sus máquinas. Por eso, finalmente se decidió que el trabajo duro de enrutado lo llevase a cabo un dispositivo externo que se conoció como IMP, que era un minicomputador (supongo que en aquellos tiempos tenían un concepto diferente de lo que es mini porque, a mi, algo del tamaño de una nevera no me parece pequeño :-D ), en concreto un Honeywell 516 como el que se puede ver en la foto de al lado. El desarrollo de los IMP fue llevado a cabo por la empresa BBN Technologies que, sorprendentemente, todavía existe.

Los IMP estaban conectados mediante lineas dedicadas de 50kbps fullduplex. En un momento determinado, se decidió que era necesario conectar esta red a otras como SATNET y ALOHANET, entre otras. Cada una de estas redes tenía sus protocolos y había que encontrar una forma de que todas ellas pudieran comunicarse, lo que impulso la creación del protocolo TCP, que posteriormente se partió en dos: TCP e IP.

Digo que fueron los primeros “routers” porque, hasta entonces, la conmutación de paquetes no había sido nada más que un ejercicio teórico. De hecho, ARPA le ofreció a AT&T el desarrollo de la red pero esta declinó la oferta ya que consideraba que la conmutación de paquetes no funcionaría nunca.

Todo esto y más (como por qué usamos la @ en las direcciones de correo) lo podéis encontrar en el libro “Where wizards stay up late”, lectura que os recomiendo.

Como curiosidad, el último IMP fue apagado en 1989.

Logos de Google

Monday, October 31st, 2005

Es sabido por todos que Google tiene la costumbre de alterar el logo de su página en fechas señaladas. Por ejemplo, hoy lo han cambiado para celebrar el día de Halloween. Bien, pues hoy he encontrado la galería con todos esos logos que Google ha usado desde 1999.

Mientras miraba los logos del 2004, en concreto el del 1 de abril ;-) , he visto que Google quiere abrir una oficina en la luna y buscan empleados. Si os animáis, podéis enviarles un correo a lunarjobs@google.com.

Para finalizar, mientras leía esa “oferta de empleo” he encontrado un listado con mil y una formas de buscar “Britney Spears”.

Nueva “broma” de Google

Thursday, October 27th, 2005

Supongo que todos recordaréis que ocurría cuando buscabas “conejito” o “hell” en Google. Yo acabo de descubrir una nueva, al menos para mi ;-) , en un blog (WRT) que me he encontrado por casualidad: en Google, buscas failure y pulsas sobre “I’m feeling lucky”. Es para partirse. Como no creo que le haga mucha gracia a según que pez gordo, me he guardado unas capturas de pantalla que colgaré por aquí si lo quitan.

Por cierto, para aquellos que no lo recuerden, cuando buscabas “conejito” en Google, te salia un mensaje de “Quiso decir c**o”. Y al buscar “hell”, el primer enlace era a Microsoft.

The Internet Protocol Journal

Tuesday, October 25th, 2005

Hace unas semanas descubrí la existencia de la publicación técnica de The Internet Protocol Journal. A pesar de ser una revista hecha por Cisco, no es una publicación publicitaria, como mínimo los números que yo he leído no lo son. La revista está disponible en su web en HTML o PDF (incluidos los números anteriores), pero podemos suscribirnos gratuitamente para que nos envíen un ejemplar en papel. Yo ya me he suscrito, pero como la publicación es trimestral, todavía no he recibido ninguno así que no os puedo contar que tal.

Para que os hagáis una idea de la temática, en los pocos ejemplares que he tenido tiempo de leer he encontrado artículos como “A pragmatic report on IPv4 address space consumption”, “Practical uses of SSH tunneling in the internetworking”, “High Availability in Routing”, “IPv6 Autoconfiguration”, etc. Tampoco penséis que se centran en una plataforma en concreto (estoy pensando en sus routers). Por ejemplo, en el artículo de túneles SSH se ve como se configura un Putty en un Windows, en el de autoconfiguración de IPv6 hablan de una RedHat.

Bueno, algo más que leer en el tiempo libre. Si alguien lo lee, que cuente lo que le ha parecido.