Delirios de un Informático

Komodo Edit, un excelente editor de código

Hace años que probé un pequeño IDE llamado Komodo que prometía pero estaba bastante verde. Pero con la versión 6 ha evolucionado muchísimo y tiene una versión simplificada llamada Komodo Edit, un editor Open Source pensado para desarrollo web (XHTML, XML, CSS, JavaScript…) con lenguajes dinámicos (PHP, Perl, Python, Ruby…). La lista de características es pequeña comparada con Komodo IDE pero como editor sin más es una maravilla. Es ideal para todos pequeños scripts o proyectos que no requieren de todas las complejas herramientas que proporcionan Eclipse o NetBeans. Es además muy personalizable (hasta en esquemas de colores) y multiplataforma (Linux, Mac y Windows).

Uso Vim desde hace años para programar todos los pequeños scripts que realizo en Bash, Perl o Python pero es una tortura configurarlo para hacer ciertas cosas, y la implementación de otras caracteríticas nunca me ha gustado. Por eso Komodo ha ganado muchos puntos y prácticamente es lo único que uso.

Cómo instalar Bugzilla en Debian Squeeze

Bugzilla es uno de los más veteranos y completos sistemas de seguimiento de errores. Está perdiendo fuerza frente a proyectos como Trac, Redmine o soluciones en la nube como Jira, pero sigue teniendo una cantidad de opciones y una integración con IDEs que ningún otro software tiene, y por eso lo sigo usando para mis proyectos personales.

Está desarrollado en Perl por lo que se necesitará un servidor web con soporte para CGI, así como un servidor de bases de datos (MySQL, PostgreSQL u Oracle) y sus correspondientes librerías de acceso de Perl (para MySQL basta instalar mysql-server y libdbd-mysql-perl). También es necesario instalar unos cuantos módulos Perl, pero personalmente odio llenar el sistema de módulos CPAN, PEAR y similares cuando es posible instalarlos únicamente para el usuario que los necesita. Esto también evita posibles problemas si se actualizan módulos ya instalados con versiones específicas que necesitan otras aplicaciones.

Asumo Apache, la raíz del servidor web en /var/www y www-data como usuario:

su www-data
cd /var/www
wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-4.0.2.tar.gz
tar xzvf bugzilla-4.0.2.tar.gz
mv bugzilla-4.0.2 bugzilla && cd bugzilla
./install-module.pl --all
./checksetup.pl
vim localconfig
./checksetup.pl

El comando install-module.pl instalará todos los módulos necesarios en el subdirectorio .cpan de la carpeta del usuario (¡¡159MB!!). El penúltimo comando edita la configuración, donde se deberán añadir los datos de acceso a la base de datos, así como modificar el elemento $webservergroup para que coincida con el usuario que ejecuta el servidor web. El último comando es el que crea las tablas en la base de datos, y en caso de haber algún error lo mostrará claramente (generalmente es la falta de un módulo).

Por último, es necesario añadir al .htaccess unas líneas para que el servidor web interprete los archivos Perl, pero sólo si no se tiene ya configurado para eso:

Options +ExecCGI -MultiViews
AddHandler cgi-script .cgi

Estas instrucciones sirven para cualquiera de las versiones 4.x (y seguramente para la rama 3.x), y pronto saldrá la versión 4.2 con una rama denominada Pretty en la que se implementará una nueva interfaz.

Cómo instalar Tracks 2.0 con SQLite en Debian Squeeze

Tracks es un sencillo pero potente software de gestión de tareas que sigue la metodología GTD. Está programado en Ruby y es de código abierto. La instalación resulta un poco problemática y he querido documentar un poco el proceso, ya que las guías que he encontrado están hechas para la anterior versión (la 1.7, de inicios del 2009).

El primer paso es asegurarse de que Apache está preparado. Es necesario instalar y habilitar el módulo libapache2-mod-fastcgi y activar AllowOverride All en la configuración para que no sea necesario añadir ningún vhost o configuración específica para Apache, haciendo uso únicamente de .htaccess.

Después hay que descargar y descomprimir Tracks en el directorio raiz del servidor (asumo /var/www):

wget https://github.com/TracksApp/tracks/tarball/v2.0
tar xzvf v2.0 && rm -f v2.0
mv TracksApp-tracks-22a0c94 tracks
cd tracks
cp db/tracks-20-blank.sqlite3.db db/tracks.db
cp config/database.yml.tmpl config/database.yml
cp config/site.yml.tmpl config/site.yml

Estos dos últimos archivos contienen la configuración. Para usar SQLite hay que indicar en el campo database la ruta completa al archivo .db que se acaba de copiar, y después personalizar los campos que se desee en site.yml.

Después es necesario instalar los paquetes de Ruby, sus dependencias y las gemas. Es necesario instalar varios paquetes dev pero que se pueden desinstalar una vez se hayan instalado las gemas:

sudo apt-get install ruby libruby rubygems rake
sudo apt-get install libxslt1-dev libxml2-dev libsqlite3-dev libfcgi-dev ruby1.8-dev
gem install RedCloth sqlite3 fcgi
gem install sanitize -v 1.2.1
sudo apt-get remove --purge libxslt1-dev libxml2-dev libsqlite3-dev libfcgi-dev ruby1.8-dev
sudo apt-get autoremove --purge
script/server -e production

Este último comando inicia el servidor WEBrick que permite comprobar si todas las dependencias están correctamente instaladas. Si todo va bien, debería aparecer algo similar a esto:

[2011-08-24 07:26:04] INFO  WEBrick 1.3.1
[2011-08-23 04:26:04] INFO  ruby 1.8.7 (2011-06-30) [x86_64-linux]
[2011-08-23 04:26:04] INFO  WEBrick::HTTPServer#start: pid=10333 port=3000

En este punto, tenemos Tracks funcionando en el puerto 3000 se podrá acceder desde a http://localhost:3000 pero también estará accesible desde http://localhost/tracks/public.

Cómo añadir remitentes “wildcard” en Google Apps

Google Apps permite gestionar el correo electrónico de un dominio mediante GMail, lo que es una gran ventaja por la cantidad de funcionalidades que tiene. Para mí, lo más importante es el poder disponer de direcciones de correo ilimitadas, de forma que todos los correos enviados a cualquier cosa tipo loquesea@midiominio.com se reciban en una única cuenta. Esto, unido a la potencia de GMail para clasificar correo por etiquetas es una maravilla a la hora de organizarse pero tiene un problema: no puedes responder como remitente desde una dirección que no sea la central.

La solución pasa por añadir las cuentas que nos interese como una nueva cuenta:

  • Acceder a Configuración » Cuentas » Añadir otra dirección de correo tuya
  • Indicar el correo y pulsar en Enviar mediante Correo de [tu nombre] (más sencillo de configurar)
  • Se necesitará confirmar la dirección pulsando en Enviar verificación y utilizando el código recibido para verificarla

Con esto podremos responder desde la misma cuenta que se haya recibido sin tener que crearla en el panel de Google Apps (y que salga más caro si se usa la versión de pago). Por comodidad, puede marcarse la opción Responder desde la misma dirección a la que se ha enviado el mensaje para evitar tener que seleccionar la cuenta remitente cada vez :).

Aumentar el tamaño del lienzo de un bloque de imágenes

Me acabo de topar con una enorme cantidad de imágenes que tienen todas un tamaño distinto pero que tienen una proporción entre sí. Debido a que deben mostrarse en un espacio de tamaño fijo, el aplicar las mismas dimensiones a todas provoca distorsiones por lo que lo ideal sería disponer de todas las imágenes con un tamaño idéntico, pero requiere aumentar el lienzo o fondo de la imagen al tamaño de la más grande y centrarla. Por ejemplo, para una imagen de 18x28px habría que aumentarla a 32x32px dejando 7px a izquierda y derecha y 2 arriba y abajo.

Como siempre en los casos que tengo que tratar imágenes en bloque, he recurrido a Imagemagick:

convert img.png -background transparent -gravity center -extent 32x32 ext-img.png

Este comando extiende una única imagen, centrándola y forzando el fondo transparente. Para un bloque de imágenes bastaría con:

for i in *.png; do convert "$i" -gravity center -extent 32x32 "ext-$i"; done;

Pueden verse más opciones en la documentación de Imagemagick :).