Delirios de un Informático

Cómo añadir el locale gallego en Mac OS X

Apple no proporciona el locale gallego para Mac (el listado puede obtenerse con locale -a) por lo que al desarrollar aplicaciones que utilicen fechas en gallego se mostrarán las fechas en el idioma por defecto.

Añadir este locale es fácil (duplicar el español y editarlo) pero un script que lo automatice es mucho más cómodo. Por eso he añadido el repositorio Galician locale for Mac a mi GitHub con lo necesario.

Para hacerlo aún más rápido:

curl -fsSL https://raw.githubusercontent.com/vaites/galician-locale-for-mac/master/install.sh | bash

Lógicamente esto no añade las traducciones de la interfaz de Mac, sólo las definiciones para su uso en desarrollo….

Cómo listar todos los correos “catch all” utilizados en un dominio

Llevo utilizando Google Apps con mi dominio prácticamente desde que se lanzó de forma gratuíta (hoy en día no lo es) porque una de las mejores características es el uso del catch all, es decir, el poder direccionar todas los correos electrónicos que no existan en tu dominio a un único correo centralizado.

El problema es que, pasados los años, uno se olvida de todas las direcciones utilizadas y el spam empieza a llegar a cientos de direcciones inexistentes, por lo que lo mejor es anular el catch all y crear los alias correspondientes. Pero, ¿cómo listar todas las direcciones utilizadas?. Es necesario procesar todos los correos recibidos y extraer las direcciones y eso es posible utilizando un cliente de correo electrónico que tire de IMAP y guarde los correos en disco. He optado por utilizar Apple Mail (aunque serviría Mozilla Thunderbird):

find ~/Library/Mail -name '*.emlx' | xargs egrep '^Delivered-To:' | awk '{print $2}' > mails.txt
sort mails.txt | uniq -c | sort -n -r

Estos dos comandos escanearán todos los correos extrayendo la dirección de destino y ordenando por las más usadas. De este modo, resulta fácil ver las direcciones utilizadas para crear los alias y también localizar los correos recibidos para dar de baja o modificar el correo asociado a cada servicio.

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.

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 :).

Cómo obtener el PID de un proceso lanzado desde Bash

Al crear scripts en Bash puede ser de utilidad lanzar programas y controlar su ejecución. Eso puede hacerse de diversos modos pero lo más fácil es gestionar los procesos mediante su identificador único. Este PID puede obtenerse filtrando la salida del comando ps pero Bash nos proporciona la variable $! donde se almacena el PID del último proceso lanzado en background. Por ejemplo:

/usr/bin/ejecutable &
PID=$!
echo $PID

Sencillo y muy útil :).