Se abre Google Summer of Code 2011 !

Durante la sesión de introducción a la conferencia anual linux.conf.au (LCA) , Carol Smith, miembro de la oficina de programas Open Source de Google, acaba de dar el pistoletazo de salida al Google Summer of Code 2011.

Será el 7º año consecutivo que se organiza. No hace falta que repita qué es el SoC. Los pasados 6 años han sumado en total 4,500 estudiantes de más de 85 países distintos, o sea un éxito total y un gran esfuerzo por parte de Google para fomentar el Software Libre. Este año Google aumentará en un 25% el número de estudiantes y organizaciones aceptadas.

Ya se ha publicado el plan de fechas del GSoC2011

Si quieres aprender trabajando en un buen proyecto de software libre este verano, ayudar en el desarrollo de la comunidad y de paso ganarte unos dólares ($5000 para tí y $500 para la organización) no lo dudes, apúntate.

Touchégg : reconocedor de gestos multitáctiles

José Expósito, autor de Egg Window Manager nos escribe para darnos a conocer otro interesante proyecto en el que trabaja Touchégg ( (http://code.google.com/p/touchegg/). Esta vez más simple que EggWM, aunque más vistoso, de nuevo escrito en C++ usando Qt4….

José nos cuenta que «es difícil explicar que es Touchégg ya que creo que no hay nada por el estilo… Básicamente es un reconocedor de gestos multitáctiles, es decir, haces un gesto sobre tu trackpad (supongo que en una pantalla táctil funcionará, no tengo manera de probarlo :P) y Touchégg se encarga de reconocerlo y realizar una acción asociada a dicho gesto, podéis ver un vídeos en la página principal y todo quedará más claro.»

Anti bomba tar.gz

¿A quién no le ha ocurrido? Descargas un fichero.tar.gz en $HOME, invocas el conjuro para desempaquetar y descomprimir:

$ tar -xvzf fichero.tar.gz

Y cuando observas el resultado te das cuenta que el muy %$E/&% se ha descomprimido SIN crear un subdirectorio, o sea, ha dejado todo tu $HOME lleno de ficheros. Es lo que se conoce como una bomba tar.

Bien, el siguiente comando atb (anti-tar-bomb), encontrado en commandlinefu.com, analiza el tar.gz (o .bz2 o .tgz) ANTES de descomprimirlo. Si resulta que se trata de una bomba tar, crea un directorio con el mismo nombre X que el fichero X.tar.gz y luego lo descomprime en X. Magia!

atb() {shopt -s extglob ; l=$(tar tf $1); if [ $(echo "$l" | wc -l) -eq $(echo "$l" | grep $(echo "$l" | head -n1) | wc -l) ]; then tar xf $1; else mkdir ${1%.t@(ar.gz|ar.bz2|gz|bz|ar)} && tar xf $1 -C ${1%.t@(ar.gz|ar.bz2|gz|bz|ar)}; fi ; shopt -u extglob}

Backup-remoto con autolimitación de ancho de banda

El siguiente comando, de una única línea parece que hiciera magia:

 tar -cj /backup | cstream -t 777k | ssh host 'tar -xj -C /backup'

Explicación:

tar -cj : (j) comprime con bzip el directorio backup, (c) y lo empaqueta en un único archivo
cstream -t 777k : limita la transferencia del contenido que le llega (el archivo empaquetado) a 777 kbps
ssh host ‘tar -xj -C /backup’ : se conecta por ssh al host destino y desempaqueta+descomprime el archivo bzip de backup que le llega en un directorio con el mismo nombre.

cstream es una joya que acabo de descubrir, al igual que el comando que he explicado, gracias a la excelente base de datos de comandos para administradores Linux que es commandlinefu.com

Plegar y desplegar secciones de texto en Vim

Supongamos que tienes 4 secciones en tu documento de texto. Quieres centrar tu atención sólo en la sección 2, de tal forma que el resto de secciones, queden plegadas. Puedes ver en la imagen adjunta lo que buscamos. Esa funcionalidad se conoce como «Code folding». Pero para los no iniciados, mejor plegar o desplegar secciones de texto. ¿Cómo se hace en Vim? Fácil. Seleccionas las líneas que quieras plegar (en modo Visual) y pulsas zf (la z la puedes recordar porque su forma parece que forme un pliegue) Para abrir un pliegue, pulsa zo (open). Para cerrarlo de nuevo zc (close).

Si cierras Vim y lo vuelves a abrir con el mismo fichero de texto, ¿se mantienen los pliegues? Por defecto, NO. Si quieres que se mantengan debes de teclear esto en tu .vimrc:

" Save folds
au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview