Más de 12 años en Internet
->No hagas click en esta frase.

30 julio, 2011

Qué cuco me ha quedado...



En su día os comenté que se podía instalar una Ubuntu en el Folio 100. Esta semana intenté montar mi propio tarball desde cero, con sólo las aplicaciones que necesitaba (haciendo uso de rootstock), pero no hubo forma de hacerlo funcionar. Finalmente cogí la distribución montada por Akta77 (que esa sí que arranca) y a base de apt-get installs y removes lo dejé totalmente a mi gusto. Nada de GNomes, Uninties o Xfces: Le he puesto el gestor de ventanas Lxde, el navegador Chromium y el cliente de chat pidgin.

Compilando el kernel no he conseguido hacer funcionar el módulo de bluetooth, ni la tarjeta de sonido, ni que la wifi coja claves wpa2. Pero en fin, para ir tirando compré un hub de USB 2.0 que me permite tener conectados un mini teclado, un ratón y un modem 3G.

25 julio, 2011

Grabando sesiones de X11 con ffmpeg y x11grab


Si en GNU/Linux queréis grabar una sesión de escritorio la mejor herramienta que podéis utilizar es ffmpeg (haciendo uso el parámetro x11grab como fichero de entrada). Podéis instalarlo en entornos Ubuntu/Debian con un simple "sudo apt-get install ffmpeg".

No obstante mi experiencia dice que el ffmpeg compilado por Ubuntu es lentísimo a más no poder. Para haceros una idea, con dicho ffmpeg apenas superaba los 15 frames por segundo en un netbook que compré el año pasado por 230 euros. Está claro que es hardware barato, pero ni mucho menos es obsoleto o anticuado.

Aquí mi netbook: procesador Atom de doble núcleo a 1.6GHz... 
¿¡Y no pasa de 15 frames con el ffmpeg de Ubuntu!?

Puede que 15 fps dentro de lo que cabe sea una velocidad aceptable, pero me extraña muchísimo el malísimo rendimiento que obtiene esta aplicación sobre mi netbook. Me puse a googlear y vi que no era el único al que le pasaba y en una de las soluciones que observé se aseguraba que compilando tu mismo el ffmpeg conseguías un rendimiento muy superior. 

Así que hice eso y creo que el siguiente vídeo habla por sí sólo. Aquí me veis grabando una sesión de X11 mientras juego con mi PSP Go al MotorStorm:


Comando empleado para hacer la grabación:
~$ ffmpeg -f alsa -ac 1 -i pulse -f x11grab -r 30 -s 1024x600 -i :0.0 -s 480x272 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 video_psp.mkv


Bueno, por si os pudiera interesar aquí os dejo los pasos que he seguido para compilar por mi cuenta el ffmpeg:

# Nos hacemos root e instalamos las dependencias que usaremos para compilar:
~$ sudo bash
~$ apt-get update 
~$ apt-get install build-essential checkinstall git checkinstall libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev

# Compilamos e instalamos el códec x264
~$ cd /tmp 
~$ git clone git://git.videolan.org/x264 
~$ cd x264 
~$ ./configure --enable-static 
~$ make 
~$ checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes --fstrans=no --default

# Compilamos e instalamos libvpx
~$ cd /tmp 
~$ git clone git://review.webmproject.org/libvpx 
~$ cd libvpx 
~$ ./configure 
~$ make 
~$ checkinstall --pkgname=libvpx --pkgversion="1:$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default 

# Compilamos e instalamos la última versión de ffmpeg
~$ cd /tmp 
~$ git clone git://git.videolan.org/ffmpeg 
~$ cd ffmpeg 
~$ ./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab 
~$ make 
~$ checkinstall --pkgname=ffmpeg --pkgversion="5:$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default 
~$ hash x264 ffmpeg ffplay ffprobe 

# En el mismo directorio que compilamos ffmpeg, compilamos la herramienta qt-faststart:
~$ make tools/qt-faststart 
~$ checkinstall --pkgname=qt-faststart --pkgversion="$(date +%Y%m%d%H%M)-git" --backup=no \--deldoc=yes --fstrans=no --default install -D -m755 tools/qt-faststart /usr/local/bin/qt-faststart

23 julio, 2011

Ya juego a la PSP en mi netbook ;)


Tras patearme todos los centros comerciales de mi ciudad, finalmente he encontrado una capturadora AV por USB que tiene soporte oficial del fabricante para los sistemas GNU/Linux. Se trata de la AVerMedia Volar HD Video Capture M y la broma tiene un coste aproximado de 80 euros. Eso sí, aparte de capturar AV me permite utilizar el dispositivo como decodificador DVB-T.

El driver es descargable para las arquitecturas x86 y x64 desde la web del fabricante, pero el contenido del paquete sólo posee shellscripts y fuentes en C, por lo que debería de ser compilable desde otras arquitecturas. Según el "Readme" el driver ha sido testeado por el fabricante para la distrubición Ubuntu en su versión 10.04, 10.10 y 11.04, bajo los programas MPlayer, VLC y MythTV. A pesar de ser testeado sólo en Ubuntu, entiendo que el driver debería de funcionar para cualquier sistema con kernel superior al 2.6.29 (inclusive).

La instalación es sencilla, basta con descomprimir el paquete y ejecutar el H830_LinuxDrv_x86_V1.0.28-beta_Install_OEM.sh. Si ves que la instalación falla revisa que tengas instalado el paquete build-essential y las cabeceras de los módulos (del kernel de Linux) videodev, videobuf-core, v4l2-common, videobuf-vmalloc, dvb-core, i2c-core, tda18271, snd_pcm, snd_timer, snd_page_alloc, snd y soundcore.

En cuanto a su función de capturadora AV notarás que se han instalado dos nuevos dispositivos: /dev/video1 (o /dev/video0 si no tienes webcam) que funciona con el driver v4l2 y el hw:1,0 de alsa (siendo el 0,0 tu tarjeta de sonido). Vale, suena a chino, pero en la práctica se traduce en esto:

#Visualizar AV
~$ vlc v4l2:///dev/video1

#Activar sonido
~$ cvlc alsa://hw:1,0

¿Por qué ejecutamos dos comandos distintos para audio y video? Porque alguien de VLC andaba carente de ideas diabólicas y ha decidido que en las últimas versiones del reproductor sea muy chungo el poder ejecutar distintas interfaces de hardware en una única instancia. Vamos, que con esto ejecutamos dos instancias de vlc donde cada una reproduce una interfaz distinta (video por v4l2 y audio por alsa).

Si lo que quieres es meterle mano al sintonizador DVB-T, lo que tienes que hacer es abrir el VLC y seleccionar "Medio>Abrir dispositivo de captura", seleccionar el modo de captura DVB y DVB-T como tipo de captura.

21 julio, 2011

Los leones al circo, por favor.

Ayer salió a la venta el nuevo Mac OS X 10.7, alias "Lion". Como tenía derecho a una copia gratuita me ha dado por instalarlo y así comprobar por qué hay tanto hype por él.


Así luce el nuevo Mac OS X:



Atentos a la copiada de los escritorios GNU/Linux, el nombre de usuario en la esquina superior derecha:


Bueno, realmente ya existía esto en Mac OS X, pero por defecto no se aplicaba. A primera vista la novedad más importante es que ahora puedes hacer "gestos" en el trackpad para desplazarte entre los distintos escritorios. Utilizando estos "gestos" la navegación entre escritorios resulta ser muy cómoda y fluida. Vamos, que queda genial:



Si el primer movimiento del trackbar es un movimiento hacia la izquierda, en vez de otro escritorio lo que visualizaremos será el dashboard (ese horrendo invento que nos colocaron con calzador en Tiger):



Muy cuco todo eso de los gestos, el problema es que yo tengo esto:


Se llama ratón y lo utilizan el 99% de los ordenadores, hasta los Mac's. Un ratón convencional es totalmente incompatible con los gestos del trackpad. Es decir, si quiero desplazarme a otro escritorio tengo que levantar la mano de mi ratón, estirar el brazo hasta el portátil y realizar el gesto de turno. Para mi que todo esto de los gestos es un invento diabólico porque a Apple le sigue sin salir de los cojones sacar un Macbook con pantalla táctil. La realidad es que la experiencia de la nueva tecnología de detección de gestos es preciosa si estás con el trackpad portátil, pero es horrenda si de normal trabajas con un ratón externo.

Otra de las principales novedades es la opción de poder emplear aplicaciones a pantalla completa. Mal vamos si en pleno 2011 vendemos esto como una novedad. Además, en antaño pensábamos que el botón "+" era el de maximizar, pero se ve que no, que hemos vivido engañados toda la vida por tito Jobs. Somos unos puñeteros noobs, maximizar ahora es esa flecha bidireccional que está arriba a la derecha:



Y así queda Chromium a pantalla completa. Es algo caótico, puesto que te ocultan hasta los bordes de la ventana. Si mueves el ratón arriba aparece de nuevo la barra del sistema, pero dependiendo de la aplicación puede ser más difícil de lo que parece restaurar el tamaño original de la ventana. En todo caso este "maximizar" consigue marear más que otra cosa.



Por cierto, si tenéis un ratón externo habréis notado que en Lion el scroll de navegación se invierte. Es decir, para desplazaros por las ventanas tendréis que mover la rueda en sentido contrario. Para solventarlo tendréis que ir a las opciones del trackpad y desactivar la opción de "Dirección del desplazamiento: natural":



Otra novedad es el Launchpad. Parece un parche aplicado a un sistema operativo futurista que en pleno año 2011 sigue careciendo de "Menú inicio". Una de las novedades de Snow Leopard era poder visualizar carpetas en el dock en formato de pila o matríz y la gente aplicaba eso para listar las aplicaciones. Ahora se ve que no, que lo más es hacer que tu ordenador de mil euros tenga menús con la potencia gráfica de un iPod.



Si nos fijamos, Launchpad por defecto nos muestra sólo las aplicaciones de Apple y sus third parties. ¿Dónde están las otras aplicaciones que tengo instaladas? Bueno, pues resulta que abajo tenemos un paginador:



O haces un gesto en el trackpad hacia la derecha, o bien haces click en ese diminuto circulo opaco del paginador con tu ratón. Ahí verás todas las aplicaciones "no Apple" que has instalado por tu cuenta:



Y así luce ahora el nuevo Finder, como siempre todo muy cuco. Nuevo diseño para el scroll, nuevas opciones como "Mostrar menos (items)", lavado de cara en los iconos de la izquierda, ect...



Por cierto, si eres padre y quieres saber donde guarda tu hijo el porno, puedes usar el nuevo marcador de "Todos mis archivos":



Por último, no deja de ser curioso que un sistema operativo llamado "Lion" sólo tenga una imagen de este animal entre sus wallpapers:



En definitiva, mucho hype, pijería y colorines... pero he visto novedades más grandes entre versiones de Ubuntu del mismo año... ¡y gratis!

20 julio, 2011

Camps dimite

Ha estallado la bomba en Valencia:


- Víctor Campos, exvicepresidente de la comunidad autónoma se declaró culpable delito de cohecho impropio en el Tribunal Superior de Justicia. ¿El motivo? Haber recibido regalos de la trama Gurtel por valor de 5.500 euros.

- Rafael Betoret, el exjefe de gabinete de la Consejería de Turismo también se ha declarado culpable de cohecho impropio por recibir regalos de la trama Orange Market tasados en unos 13.000 euros. Tanto él como Víctor deberán de pagar una multa de 49.500 euros.

- Francisco Camps, presidente de la Comunitat Valenciana irá a juicio por no declararse culpable de cohecho al presuntamente recibir regalos de la trama Gurtel por valor de 14.000 euros y esta tarde ha anunciado su dimisión.

- Ricardo Costa, ex secretario general del Partido Popular de la Comunitat Valenciana acudió al Tribunal Superior de Justicia pero no se declaró culpable de financiar ilegalmente el partido con fondos de la trama Gurtel. Al igual que Camps irá a juicio.

Épico, confundir Campos con Camps y morir en el intento


19 julio, 2011

El día que me sentí como Saw por culpa de una Somagic

Mi idea era simple, jugar con mi PSP Go en la pantalla de mi netbook. ¿Por qué? Porque una pantalla de netbook tiene el tamaño ideal para poder disfrutar de videojuegos a "baja" resolución. Y por qué negarlo... porque mola y punto.

PSP Go en mi TV con un cable AV.

Así que en una web china me compré un cable para mi PSP Go con salida a AV y una capturadora de vídeo Easycap por USB. Me la compré porque cláramente era una Easycap DC60, la cual es compatible con GNU/Linux. Cual fue mi sorpresa al enchufar la capturadora y ver que no era DC60, era un clon barato con un chip fabricado por Somagic, el cual no tiene driver alguno para GNU/Linux. Por suerte el cable de PSP Go a AV sí que funciona a las mil maravillas.

Diferencias entre el Easycap original y el clon Somagic.
Foto realizada por el usuario afterburner para el foro de easycap.co.uk.

Estuve un par de días buscando por la red y no encontré absolutamente nada sobre cómo poder elaborar un driver para esta capturadora, así que aprovechando que por ahí tenía un DVD original de Windows decidí crear una máquina virtual en VirtualBox para poder sacar partido a la capturadora.

¿Por qué utilizar una máquina virtual y no una real? Primero porque no quiero tocar mi disco duro; Segundo porque al almacenarse en una carpeta, puedo trasladar la misma máquina virtual a otros ordenadores de mi casa; Tercero porque no quiero nunca reiniciar un equipo para arrancar otro sistema por el sólo de tener que encender una única aplicación; Y cuarto porque no quiero que este Windows tenga ningún tipo de tarjeta de red/wifi, todos sabemos lo propenso que es este sistema a atrapar virus o malware.

Lo primero es lo primero, yo tengo un DVD... pero mi netbook no tiene ninguna unidad lectora. De todas formas por experiencia sabía que el VirtualBox puede montar imágenes de CD/DVD ("iso") como unidades lectoras, así que haciendo uso de otro PC generé una iso de mi DVD original y lo copié a un disco duro externo. Aunque no lo parezca, esto era el inicio de una tortuosa tarea.

Así que instalé el VirtualBox-OSE del respositorio de mi distribución, el susodicho Windows y sus respectivas "guest-utils" (las cuales sólo podían instalarse en el "Modo a prueba de fallos"). Lo gracioso vino cuando me di cuenta que todo esto no me sirvió de nada, puesto que el VirtualBox que tiene soporte para compartir dispositivos USB es el de código cerrado. Lo peor es darte cuenta una vez tienes el Windows instalado y la máquina virtual ya funcionando. Tuve que desinstalar el OSE ("Open Source Edition") y añadir el respositorio oficial de VirtualBox para instalar la versión "comercial".

Una vez con la versión privativa funcionando, resulta que tengo que reinstalarme una versión más nueva de las guest-utils y bajarme una extensión de VirtualBox para poder hacer uso de dispositivos USB. Lo primero significa tener que arrancar otra vez el Windows en "Modo a prueba de fallos" y lo segundo implica apagar la máquina para poder aplicar los cambios. Para más inri, una vez conseguida la extensión no me funcionaba porque mi cuenta de usuario no estaba definido en el grupo de "virtualboxusers" del sistema. Ale, me añadí con un "sudo usermod -a -G virtualbox sebas" y reinicié el equipo (el tema de aplicar cambios en grupos requiere realizar un nuevo log-in).

Después de todo este tortuoso camino se ve que había incongruencias entre mi máquina virtual creada en OSE y la comercial, debido a tanto cambio a nivel de guest-utils y extensiones... lo cual en la práctica se tradujo en un bucle infinito al iniciar el puñetero Windows de la maldita máquina virtual. Sí amigos, tuve que reinstalar Windows otra vez, entrar a modo a prueba de fallos e instalarle los guest-utils definitivas.

Ale, perfecto, ya tenía un Windows virtual con soporte para puertos usb reales. Pero pobrecito de mi que los drivers del CD de instalación eran para el modelo DC60... el de la Easycap original y no la de este clon barato. No pasa nada, googleando encontré los drivers correctos para mi chip. Ahora bien, este chip no me funcionaba directamente sobre DirectShow (dispositivo DirectX), por lo que adiós a mi idea de emplear VLC como reproductor de la capturadora. Tenía que emplear por narices el software privativo del CD de instalación. Sí, también tuve que hacer una "iso" de este CD.



Cuando nada podía ser más kafkiano, monto el CD, ejecuto el programa de instalación... y va y el condenado me pide que inserte un serial de instalación. Por suerte este serial iba impreso en el mismo CD de instalación pero al ser un producto chino extremadamente barato desconozco si el serial facilitado era real o bien había sido sacado de alguna web de de internet. Mis dudas se disiparon al insertar el serial cinco veces y comprobar que no era válido. Finalmente opté por entrar en una famosa web de seriales y ahí encontré un serial extremadamente parecido. Hacía años que no violaba una licencia de software (¿os recuerdo que esta máquina virtual es de un Windows original?), pero lo hice al considerarlo una solución temporal. No descarto desmontar todo este tinglado una vez encuentre una solución libre.

Foto subida por un comprador de DealExtreme.
Me descojoné al ver que tenía el mismo serial que yo.

En todo caso instalé el programa de reproducción, pero al intentar ejecutarlo va y me salta un dialog con el texto de "La resolución mínima para ejecutar esta aplicación debe de ser 1024x768"). Problema: Estoy trabajando con un netbook y VirtualBox con las guest-utils me adapta la resolución de la pantalla al tamaño de la ventana. Es decir, ni de coña puedo alcanzar ese tope de "768", puesto que la altura máxima real de la resolución de mi netbook es de 600 píxeles. Encima sin las guest-utils sólo puedo poner una resolución de 800x600 (y además me quedo sin soporte para puertos USB).


Finalmente conseguí hacer que la capturadora tuviera soporte por DirectShow instalando el Windows Media Coder y reinstalando de nuevo los drivers del dispositivo. No obstante, fue ejecutar el VLC y obtener una pantalla negra como una catedral:


En pocas palabras, esta capturadora no puede funcionar en GNU/Linux ni en una máquina virtual. Sólo en máquinas Windows reales. Me da a mi que me voy a montar un collar con esta Somagic...

14 julio, 2011

Apuntes de shell script

- Emplear argumentos:
Al igual que en C o en Java, a la hora de invocar una shell puedes pasar argumentos. Por defecto en Bash  la variable $0 equivale al nombre del binario, el $1 al primer argumento, el $2 al segundo... y así hasta $n. Ejemplo:
./fprintf.sh Hola
Donde el código del script sería:
#!/bin/bash
echo $1

- Definir y emplear variables:
Para crear una variable basta con poner el operador "=" después del nombre. Por defecto todos los valores que asignes serán strings, pero Bash es lo suficientemente inteligente para saber diferenciar strings de enteros:
nombre=Sebas
edad=28
argumento=$1
No obstante, siempre que queramos emplearlas deberemos de poner delante el símbolo $:
echo "Hola ${nombre}. Tienes $edad años"
Cabe destacar que por defecto en un script de Bash todas las variables son locales. Es decir, distintas instancias de una shell pueden tener distintos valores para una misma variable. Además, una vez finalice el script esta variable no aparecerá en la lista de variables inicializadas en el sistema. Si necesitas crear una variable "global" que pueda ser empleado en otros scripts del sistema, tendrás que usar el comando export:
export nombre=Sebas 

- Realizar cálculos:
Para realizar operaciones simples (como sumar o restar enteros) podemos emplear el comando let. Su funcionamiento es simple:
operador_A=1
operador_B=2
let resultado_suma=${operador_A}+${operador_B}
Si por el contrario necesitas emplear decimales, o realizar mutiplicaciones o divisiones, tendrás que emplear awk:


division=`awk -v dividendo=$dividendo -v divisor=$divisor  'BEGIN{printf "%d",dividendo/divisor}'`
division_con_decimales=`awk -v dividendo=$dividendo -v divisor=$divisor  'BEGIN{printf "%.2f",dividendo/divisor}'`


- Manejar strings:

Si os fijáis en el ejemplo echo "Hola ${nombre}. Tienes $edad años", he puesto nombre entre llaves. ¿Por qué? Esto es porque Bash piensa que la varaible que quieres emplear no es "nombre", si no "nombre." y al no existir esta variable Bash nos printaría sólo por pantalla "Hola  Tienes 28 años". Es decir, cuando veas que el nombre de una variable pueda estar comprometido debes emplear llaves para que Bash sepa cuando empieza y cuando acaba el nombre de variable. Esto nos permite, por ejemplo, componer nuevos strings a partir de otros ya existentes:

nombre_maximizado="Hola ${nombre}món"

También podemos recortar un string ponínendolo entre llaves e indicando dos valores: el caracter inicial que nos interesa y la longitud que tendrá el substring:
nombre_recortado=${nombre:0:3}
iniciales=${nombre:0:1}.${apellido1:0:1}.${apellido2:0:1}

- Utilizar condiciones:
Todo el que sepa programar no tendrá problemas con esto:
if [ condición ]
then
(...)
else
(...)
fi
Bash emplea muchos operadores para analizar condiciones. Os resumo los más comunes: -eq para comprobar que un entero es igual a otro; -lt para comprobar que un entero es menor a otro; -gt para comprobar que el entero es mayor al otro; == para comprobar que dos strings son iguales; Y por último ! al principio para negar el resultado. Unos ejemplos:

if [ $edad -gt 100 ]
then
echo "Es un milagro que sigas vivo"
fi


if [ ! $nombre == "Sebas" ]
then
echo "No eres Sebas"
fi


Si elaboras scripts de gran tamaño, a lo mejor te conviene revisar que las variables que empleadas están inicializadas. Esto se puede hacer con una negación lógica del contenido de la variable:
if [ ! $edad ]
then
echo "La varibale edad no está inicializada"
edad=18
fi
Nota: si trabajas con variables que contienen decimales puedes tener problemas a la hora de manejar condiciones. O bien empleas awk (como hicimos para calcular divisiones), o bien la entrecomillas la variable para tratarla como un string:

if [ ! "${nota_media}" ]
then
nota_media=0.00
fi



- Asignar valores a variables a partir de resultados de comandos:
Con la comilla invertida podemos invocar comandos dentro de una shell y asignar a una variable el valor de su salida estándar. En este ejemplo la variable resultado_ls tendrá como valor el archivo txt más reciente del directorio actual:
resultado_ls=`ls -lrt *txt | tail -1`
Si necesitamos almacenar un valor de un comando dentro de una comilla invertida, podemos utilizar la comilla simple:
resultado_ls=`ls -lrt *'echo ${fecha}'.txt | tail -1`

- Arrays:
Sí, en Bash también existen vectores. No hace falta definir ninguna talla, símplemente defines índices al vuelo:
palabra[0]=Hola
palabra[1]=estimado
palabra[2]=lector
numero=2
echo "${palabra[${numero}]}"

- Bucles:
Bash emplea los dos bucles más famosos: while y for.
while [ condición ]
do
(...)
done


for ((  i = 0 ;  condición ;  i++  ))
do
(...)
done

Ejemplos:


while [ ! "$j" == "AAAA" ]
do
j=${j}A
done



for ((  i = 0 ;  i <= 50 ;  i++  ))
do
echo  "-"
done

while true
do
df -h
sleep 1
clear
done



- Leer un fichero línea a línea:
Basta con generar un bucle while facilitando la ruta del archivo como entrada estándar.
while read linea
do
nombre=`echo ${linea}`
(...)
done < /tmp/mi_lista_de_nombres


- Manejar señales:
Si eres un entendido en señales posix entonces quiere decir que eres un maestro del C puro. Que sepas que todo el tema de máscaras y manejadores en shell script se resume en un sólo comando: trap. Esta sentencia te permite invocar comandos o funciones cuando el proceso recibe la señal que le indiques:
trap "echo Noooooooo" INT
trap "rm $archivos_temporales" EXIT

En este caso, cuando recibimos un control+c de teclado nuestro shell script mostrará por su salida estándar el texto Noooooooo. Si por el contrario finaliza el script este borrará antes todos los archivos temporales que tenemos definidos en la variable archivos_temporales.


- Lanzar comandos en segundo plano:
Pon entre paréntesis la lista de comandos que quieres que trabajen en segundo plano. Esto significa que el "proceso hijo" definido entre paréntesis trabajará de forma concurrente con el proceso padre (tu shell script). Detrás del paréntesis de cierre debes poner un &. Ten en cuenta que si no aplicas redirecciones la salida estándar de los procesos hijo serán la misma que la del proceso padre.
echo "Calculamos las notas de 2009 y 2010"
(calcular_notas.sh 2009 ; echo "FIN calculo notas 2009") &
(calcular_notas.sh 2010 ; echo "FIN calculo notas 2010") &

13 julio, 2011

#!/bin/bash

El otro día me encontraba programando un gigantesco script de bash cuando un compañero de trabajo le dio por ojear mi pantalla. El chico trabaja en otro departamento y se quedó extrañado al ver una shell maximizada funcionando con vi... y más con el set number activo y con más de varios centenares de líneas contadas.

- ¿Eso no será un script en bash?
- Sí, no hay nada mejor que bash.
- Ahora mismo te podría decir cincuenta lenguajes mejores.
- Te desafío a hacerlo.

Y fue nombrando lenguajes y lenguajes... y debo reconocer que quedó cómica la conversa, pero a día de hoy sigo considerando que los scripts de bash son un objeto de culto que merecen el mejor de los reconocimientos.

Meditad, un shell script es lo más parecido que existe a la filosofía del software libre. Por un lado sabes que tu código puede funcionar en cualquier plataforma Unix sin necesidad de ser compilado, ya sea en un Intel a 32 bits, un AMD a 64, un PowerPC o un ARM. Por otro puedes editarlo, modificarlo, mejorarlo y redistribuirlo, puesto que nada te impide ojear su código fuente.

Además como herramienta es terríblemente potente y cuando en C o en Java necesitas incluir la librería de turno (incluso para hacer un printf), aquí simplemente puedes hacer uso de los programas disponibles en cualquier sistema Unix: que si echo, awk, grep, expect, tail, redirecciones... sin hablar de poder lanzar hijos sin necesidad de crear un fork al que ejecutarle un exec. Incluso con la sentencia trap puedes programarle comandos para que se disparen al saltar una señal del sistema. Y todo eso sin requerir de ningún SDK al más puro estilo .net.

Por favor, hagan un monumento a los creadores de Bash.

12 julio, 2011

Valencia CF: 2011/2012

Un poco de offtopic nunca hace daño, hoy me apetecía hablar de fútbol :P


Vendidos a otros equipos:

  • Isco: El Málaga ha pagado finalmente su cláusula de recisión de 6 millones de euros. Pese a ser malagueño, llevaba jugando en las categorías inferiores del Valencia desde los 14 años. Esta temporada ha jugado 4 partidos con el primer equipo pero sus buenas actuaciones en el filial no han pasado desapercibidas.

  • Joaquín, se va también al Málaga por 4,5 millones de euros. El veterano extremo derecho fichó hace cinco temporadas por la friolera de 25 millones (en el mandato del derrochador Juan Soler). Durante todo este tiempo ha rendido a muy buen nivel pero seamos realistas, recibir casi cinco millones de euros por un jugador de 30 años es muy buen precio.

  • Manuel Fernandes, vendido al Besiktas turco por 2,2 millones de euros. Otro de los fichajes estrella de Soler: el expresidente apostó fuerte por su fichaje, gastándose nada menos que 18 millones de euros por él. Llevaba en el equipo desde 2007 y en ningún momento el internacional portugués demostró la calidad técnica que se presuponía que tenía.



Jugarán cedidos la próxima temporada:

  • Moyá: El Valencia lo fichó la temporada pasada por cinco millones de euros. No obstante el técnico Unai Emery prefirió alinear siempre a Guaita o a César. Además, el reciente fichaje del brasileño Diego Alves ha dejado las cosas claras... Moyá no cabe en este equipo y se marcha un año al Getafe.

  • Míchel: El joven centrocampísta de Burjassot ya jugó cedido el año pasado en el Deportivo. Se espera mucho de él, pero a día de hoy lo tiene muy difícil para jugar con el Valencia. Se marcha cedido un año al Hércules.



Finalizan contrato (no renuevan):

  • César Sánchez. El veteranísimo portero de 39 años ha rendido a un excelente nivel durante sus dos temporadas en el Valencia CF. Vino gratis para cubrir la lesión de Renan Brito y acabó siendo el portero titular. La directiva fichó a Moyá para "jubilarle" y el técnico decidió continuar usándolo como titular... sólo el joven Guaita consiguió quitarle el puesto tras sufrir una lesión a mitad de temporada. Jugará en el Villareal la próxima temporada.

  • Marius Stankevičius. El central lituano vino cedido con opción de compra. Pese a rendir a buen nivel la directiva no está dispuesta a desembolsar los cuatro millones de euros que pide la Sampdoria por él, por lo que jugará en segunda división italiana la próxima temporada.

  • Vicente Rodríguez. Fichó por el Valencia CF en el año 2000. En su día fue conocido por que siendo un chaval el Levante UD le obligó a firmar una cláusula de recisión de 30.000 millones de pesetas (180 millones de euros), pero finalmente fue vendido al Valencia CF por cuatro millones y medio de euros. Durante sus primeras temporadas el extremo izquierdo deslumbró a toda Europa, despertando el interés de equipos como el Manchester United. No obstante era muy propenso a las lesiones y desde 2004 rara vez disputaba partidos con el Valencia. Actualmente está buscando equipo.

  • Stephen Sunday "Sunny". En 2007 fue fichado con 19 años por 1,5 millones de euros... pero en ningún momento ha contado para ningún entrenador del Valencia. Le queda un año de contrato, el cual finalizará cedido al Numancia.



Se van por recisión de contrato:

  • David Navarro. El canterano de 31 años apenas ha contado esta temporada para Unai Emery. El club ha rescindido su contrato para que fiche gratis por el Neuchâtel suizo.

  • Renan Brito. El joven portero brasileño de 25 años fue fichado en la temporada 2008/2009 por cuatro millones de euros. El primer año jugó a buen nivel, pero era muy propenso a cantar goles de novato y una lesión a mitad de campeonato propició que fuera relegado al banquillo el resto de la temporada. La temporada siguiente fue cedido al Xerez CD, equipo que aquel año descendió de categoría. Este año empezó como tercer portero y acabó siendo cedido a su club de procedencia en Diciembre. Finalmente se le ha rescindido su contrato para que pueda quedarse en el Internacional de Porto Alegre. Los datos de la recisión no están nada claros, puesto que se presupone que se ha hecho para saldar la deuda que tenía el Valencia con el Internacional (se sabe que en 2010 el equipo ché aún debía 2 de los 4 millones del traspaso), pero a su vez se sabe que se ha firmado una cláusula por la cual si Renan es vendido antes de 2013, el Valencia recibiría el 10% del precio del transfer.

  • "Chori" Domínguez. El delantero argentino vino gratis del Rubín Kazán ruso para cubrir la futura venta de David Silva... y se convirtió en un suplente de lujo, pero no por capricho del técnico, ¡si no por méritos propios! En dos temporadas sólo ha metido un gol. Se ha rescendido su contrato para que fiche gratis por el River Plate argentino.

  • Aarón Ñíguez. El caso de Aarón merece un estudio en detalle, puesto que el canterano subió al primer equipo en 2006, pero nunca se ha estrenado con el primer equipo. De hecho, desde que ascendió al primer equipo ha jugado cedido en el Xerez, en el Iraklis griego, en el Rangers escocés, en el Celta de Vigo y en el Recreativo de Huelva. Visto el panorama se le ha rescindido el contrato para que fiche gratis por el Almería.

  • Asier Del Horno. El Valencia lo compró al Chelsea por 7 millones de euros. Se esperaba una gran estrella y obtuvimos un cojo. Sobran palabras, desde 2006 apenas ha disputado partidos. De hecho, nada más ser fichado se leisionó de gravedad y estuvo 8 meses de baja. Finalmente debutó en marzo de 2007 y su rendimiento fue tan malo que no le agradó a ninguno de sus entrenadores. Entró en clonficto rápidamente con Emery, el cual le cedió al Athletic de Bilbao en su primer año, al Valladolid el segundo y al Levante UD la temporada pasada. Finalmente el club ha optado por despedirle para ahorrarse su salario astronómico de 2 millones de euros anuales. Debido a su elevado salario, ningún equipo parece haberse interesado por su contratación.

  • Nacho Gonzalez. Tras una buena campaña en el Mónaco francés, en 2008 el Valencia lo fichó aprovechando que Nacho finalizaba contrato con el Danubio uruguayo. No obstante fue llegar al equipo de Mestalla y marcharse cedido al Newcastle inglés, donde apenas jugó dos partidos debido a una lesión. En 2009 se fue cedido al Levadiakos griego donde apenas jugo 13 partidos. En 2010 se marchó cedido al Levante UD donde sufrió otra grave lesión. Finalmente el cuerpo técnico ha decidido rescindir el contrato del internacional uruguayo tras no haber jugado ni un sólo partido con el Valencia CF.

Podrían irse este verano:
  • Juan Mata: Según la prensa inglesa el mundialista estaría en la órbita del Arsenal. También se rumorea sobre el interés del Barcelona y del Real Madrid por él. En los tres casos la oferta ronda los 25 millones de euros. Llorente lo ha declarado intransferible.

  • Jordi Alba: La prensa catalana asegura que el Barcelona está interesado en él. El Valencia estaría dispuesto a venderlo por 5 millones.

  • Banega: El Inter ofrece 9 millones de euros por él y el jugador, pese a ser importante, no está declarado como intransferible. El club esperaba revalorizarlo tras finalizar la Copa América, pero la mala actuación de Argentina complica la situación.

  • Miguel Brito: Las propensas aventuras y locuras del portugués no han gustado nada a la directiva, pero actualmente la primera plantilla sólo cuenta con él y con Bruno para cubrir el puesto de lateral derecho. Su recisión de contrato podría producirse si el equipo encuentra otro lateral.


Nuevas incorporaciones:
  • Pablo Piatti: Delantero argentino con pasaporte italiano de 22 años. Ha costado la friolera de 7,5 millones de euros y sus detractores seguramente remarcarán que en tres temporadas con el Almería sólo ha metido 22 goles (aunque diez de ellos esta última temporada). Es muy joven, el tiempo dirá si es buena inversión.

  • Adil Rami: El Valencia ha pagado nada menos que 6 millones de euros por este defensa francés de origen marroquí. Este año ha hecho doblete con el Lille (campeón de copa y de liga) y además se ha convertido en internacional francés. Mide 1'90m, tiene 25 años y está llamado a ser uno de los referentes europeos en defensa. También fue votado en su país como el jugador más guapo de la liga francesa.

  • Dani Parejo: Mediapunta español de 22 años que se formó en las categorías inferiores del Real Madrid. Tras cuajar dos temporadas a muy alto nivel con el Getafe, se marcha al equipo ché por cuatro millones de euros.

  • Diego Alves: Portero brasileño de 26 años con pasaporte italiano. Al igual que Pablo Piatti procede del recién descendido Almeria, donde a pesar de los resultados ambos obtuvieron muy buenas actuaciones. De hecho esta temporada fue el portero que más tiempo aguantó sin encajar un gol: 677 minutos. El traspaso es de 3 millones de euros.

Regresan tras cesión:
  • Sofiane Feghouli: Extremo francés de origen argelino de 21 años. La temporada pasada fue fichado del Grenoble francés por ser joven y rápido (además la prensa gala lo bautizaba como "el nuevo Zidane"), pero no le cuajó a Unai Emery. Tras jugar sólo 5 partidos con el equipo se marchó cedido al Almeria... donde apenas jugó ocho partidos. Le quedan aún 3 años de contrato y dice que quiere ser titular este año en el Valencia.

--------------------------
Y así queda la plantilla (por ahora):


Portería:
  • Diego Alves (Brasileño, 26 años, 1'88m).
  • Vicente Guaita (Español, 24 años, 1'90m).

Defensa:
  • Jérémy Mathieu (Francés, 27 años, 1'89m, lateral izquierdo).
  • Jordi Alba (Español, 22 años, 1'69m, lateral izquierdo).
  • Hedwiges Maduro (Nerlandés, 26 años, 1'85m, central).
  • Adil Rami (Francés, 25 años, 1'90m, central).
  • Ángel Dealbert (Español, 28 años, 1'85m, central).
  • Ricardo Costa (Portugués, 30 años, 1'83m, central).
  • Bruno Saltor (Español, 30 años, 1'80m, lateral derecho).
  • Miguel Brito (Portugués, 31 años, 1'79m, lateral derecho).

Centrocampistas:
  • Éver Banega (Argentino, 23 años, 1'74m, pivote).
  • Mehmet Topal (Turco, 25 años, 1'87m, pivote).
  • David Albelda (Español, 33 años, 1'81m, pivote).
  • Tino Costa (Argentino, 26 años, 1'76m, pivote).
  • Dani Parejo (Español, 22 años, 1'80m, media punta).
  • Juan Mata (Español, 23 años, 1'70m, media punta).
  • Feghouli (Francés, 21 años, 1'78m, extremo derecho).
  • Pablo Hernández (Español, 26 años, 1'73m, extremo derecho).

Delanteros:
  • Pablo Piatti (Argentino, 22 años, 1'63m).
  • Roberto Soldado (Español, 26 años, 1'79m).
  • Aritz Aduriz (Español, 30 años, 1'80m).
  • Jonas Gonçalves (Brasileño, 27 años, 1'83m).

10 julio, 2011

Mis nuevas gafas

Me han llegado ya a casa las gafas chinas que compré el otro día. Como veis tienen una pinta bastante "cool":


Pero lo gracioso de estas gafas no son su diseño, si no que las "Mobile Eyewear Recorder" incorporan una cámara para grabar vídeo, audio y que permite realizar fotos.


Los controles no son para nada "plug and play", vamos que hace falta leerse el manual de instrucciones para saber utilizarlas. Lo gracioso es que las mías llegaron sin dicho manual, por lo que tuve que buscar por internet cómo funcionan.

La patilla izquierda, en su cara interior, posee dos botones (power y play/pause) y dos leds (naranja y azul). Si presionamos power no pasa absolutamente nada, de hecho eso me hizo pensar que la batería debía de estar agotada y me puse a cargarla como un tonto durante horas. Lo que hay que hacer es presionar power durante cinco segundos, hasta que el led naranja se encienda.


Una vez con el led encendido, presiona power levemente para sacar una foto. Sabrás que ha funcionado por que brillará brevemente el led azul. Debes de hacerlo brevemente, puesto que si lo haces de forma prolongada el dispositivo entenderá que quieres apagar las gafas. El por qué de no poner otro botón independiente para hacer fotos es un misterio.

Por otro lado, si lo que quieres es grabar un vídeo (con audio) lo que debes de hacer es darle levemente al botón play/pause. Si en vez de hacerlo de hacerlo así lo presionas de forma prolongada, lo que harás será una grabación de sólo audio. En ambos casos se encenderá el led azul de forma intermitente hasta que finalices la grabación (dando otra vez a play/pause)

Pese a que el fabricante asegura que la cámara trabaja a 720p, realmente aparenta ser una webcam barata que reescala el tamaño de las fotos, aplicando un filtro para que no se noten pixeladas.




Respecto al vídeo, se almacenan en formato AVI sin compresión. Esto quiere decir que un vídeo de 2 minutos puede ocupar perféctamente más de 300 MB, por lo que en caso de comprarlas os recomiendo tener una micro SD bastante amplia (el máximo que acepta este dispositivo es de 8GB).


Vídeo subido a Youtube por MK1967J28

Dragon Age II: Legacy


26 de Julio, vía DLC. La versión de PS3 se retrasará a Agosto.

09 julio, 2011

Busco nombres =)


Esta noche mis amigos me han regalado una pareja de hamsters rusos. Aún no les he puesto nombre por lo que estoy abierto a sugerencias =)

Un regalito para mi Folio 100

Últimamente habréis observado que están apareciendo en el mercado distintos modelos de tabletas que se transforman en netbook mediante la inserción de un dock. Los más famosos son el Iconia Tab de Acer y el Eee Pad de Asus, ambos con un precio recomendado de casi 500 euros.

Puede que en el apartado técnico valgan realmente ese precio, pero resulta una solución sangrante para el bolsillo de la gente de a pie. De hecho, yo soy de los que piensan que es totalmente inviable sacar al mercado una tableta de más de 400 euros, por muchas pijerías que traiga.

No obstante me sedujo bastante la idea de poder usar una tableta como si se tratase de un ordenador portátil y tras pensar un poco encontré una solución bastante económica. Digamos que básicamente mi "vieja" Folio 100 tiene conectividad Bluetooth y que Android es 100% compatible con ratones y teclados genéricos.

Así que no me calenté mucho la cabeza y a través de una famosa web de gadgets chinos me compré un ratón bluetooth de 13 dólares, un teclado de 28 cm también bluetooth por 30 y un soporte plegable de 10 dólares. En total, contando los gastos de envío, me ha salido por unos 43 euros.





Por cierto, funciona de lujo. Eso sí, para que el ratón funcionara bien tuve que instalar esta actualización para la FolioMod 1.3.

05 julio, 2011

04 julio, 2011

Google+, primera toma de contacto


Este es el aspecto de la página principal de Google+, la nueva red social de Google. Físicamente aparenta ser un Google Buzz con skin de Facebook, no obstante esto es una red social completamente nueva y carece de integración con Buzz. Esto se debe a que en la práctica son dos productos distintos: "Plus" busca competir de Facebook, Tuenti y Orkut (pese a que este último pertenece también a Google) y Buzz no es más que un timeline integrado en GMail.

En cuanto a colores por todas partes predomina el color blanco y es muy remarcable la falta absoluta de publicidad, ofreciendo una gran sensación de elegancia.

Tal y como pasa en Facebook, en el centro de la página podremos leer las publicaciones de nuestro muro, comentarlas e incluso volverlas a compartir. Ahora bien, aquí no se dice muro, se llama "Novedades". También se diferencia respecto a Facebook en que el "Me gusta" se ha sustituido por "+1" y que a demás de la "@" puedes emplear el "+" para referenciar a uno de tus contactos.



A la izquierda del todo, veremos que las "Novedades" pueden ser filtradas por círculos de amigos. Un "círculo de amigos" es, ni más ni menos, que una lista de contactos. Es decir, si haces clic en "Familia" sólo verás los contenidos publicados por la gente que tienes agregada en esa lista:

Debajo del filtro de "Novedades" está la categoría de intereses. Estás categorías te mostrarán todos los contenidos públicos de Google+ que hacen referencia a una palabra clave que te interesa.



Por ejemplo, haciendo clic en GNU/Linux me sale lo siguiente:


También a la izquierda encontraremos el chat de GMail:

Ahora pasemos a la barra de la derecha, donde veremos 3 apartados: "En tus círculos", "Quedadas" y "Servicios móviles". El primero muestra todos los contactos que has invitado a usar Google+ (tanto los que han aceptado la invitación como los que no lo han hecho). Haciendo click en "Ver y modificar" serás redirigido a la página de gestión de contactos, donde podrás añadir, quitar, bloquear y reorganizar tus círculos. En "Quedadas" podrás realizar sesiones de videochat y "Servicios móviles" por ahora sólo nos da información sobre cómo descargar la aplicación de Google+ para Android.
Encima de nuestro muro veremos una barra gris con cuatro botones y una caja de texto. El primer botón nos redirige a nuestro muro, el segundo a la sección de fotos, el tercero a nuestro perfil, el cuarto a la gestión de círculos (contactos) y la caja de texto nos permite buscar personas para visitar su muro. Por cierto, a diferencia de Facebook, no es posible escribir publicaciones en el muro de otras personas: sólo puedes comentar las ya existentes o referenciarlas en tu propio muro.


Desde la semana pasada todas las webs de Google lucen una nueva barra negra, situada arriba del todo. Si tienes cuenta de Google+ verás que la primera opción es tu nombre precedido de un "+". Esto no es ni más ni menos que un acceso directo a la página de inicio de Google+.


Además a la derecha, precediendo a la típica rueda de configuración de Google, veremos tres novedades: Nuestro nombre con un avatar, una caja que contiene un número y un cuadro de texto:


El primero no es ni más ni menos que la configuración de nuestra cuenta de Google+:


El número representa la cantidad de notificaciones no leídas de dicha red social:


Y el cuadro de texto nos permite compartir contenido en Google+ incluso si no nos encontramos en dicho sitio web:



La rueda ya era famosa en las web de Google por que permitía la configuración total del sitio web de turno: GMail, Google Docs... En Google+ esto no será ninguna excepción:



Si nos fijamos, el "Enviar comentarios" que vemos dentro del "engranaje" también aparece en la esquina inferior derecha del sítio:


Tanto si escribes un contenido desde Google+ como desde la caja de texto de Google, podrás seleccionar el grado de privacidad de la publicación, seleccionando uno o varios círculos, círculos ampliados (amigos de amigos) e incluso hacer que sea 100% público.


Estos círculos pueden ser editados de forma simple. Por defecto verás listados a todos tus contactos de GMail y se irán agregando a tu red de Google+ conforme los insertes en un círculo (grupo). La interfaz es 100% drag and drop, por lo que la tarea de organización de contactos es muy simple y visualmente resulta incluso hermoso.


Haciendo clic en la pestaña de fotos verás listadas todas las fotografías publicadas en los muros de tus contactos. Por defecto no podrás ver sus fotos de Picasaweb o Buzz, sólo las fotos que vayan subiendo a los muros o a sus perfiles.


Al hacer clic en una foto la maximizarás y podrás leer todo el historial de comentarios que ha recibido:



Si instalas la aplicación de Google+ para Android, cuando hagas una foto y tengas conexión a internet por defecto será subida automáticamente a Google+, sin mostrarte ningún tipo de pregunta o aviso. Ahora bien, esas fotos serán privadas y nadie tendrá acceso a ellas. La idea es que estén en la nube y cuando te conectes a Google+ vía ordenador seas tu quien decida publicarla en tu muro o descartarla:


Por último también tendrás acceso a todos tus álbumes de Picasaweb por si te interesa publicarlas en Google+.


Por último nos queda el perfil. Su pantalla principal nos mostrará todas las publicaciones que hemos realizado, además de las personas que hemos agregado y las que nos han agregado a nosotros.


Aquí no hay "mensajes privados". Si nos fijamos cuando entres en un perfil podrás enviar un correo electrónico, pero en ningún caso podrás saber su dirección (a no ser que lo facilite él en su perfil). Esto es una buena idea, puesto que en Facebook se produce bastante duplicidad, obligándote por defecto a leer los mensajes en tu bandeja de entrada de e-mail y de Facebook:

Debajo de este botón de "Enviar correo electrónico" veremos nuestro círculo de amistades. El primer grupo representa a toda la gente existente den Google+ que has mandado una invitación. Para aclararnos, equivale al "follower" de Twitter. Es decir, tu sigues las publicaciones de estas personas. En el segundo grupo verás la gente que te sigue:

Una gran decepción es que no hay integración ninguna con Google Buzz, de forma que todo lo que publiques en Google+ no saldrá en Buzz y todo lo que publiques en Buzz no saldrá en Google+. Como ya he dicho antes esto se debe a que técnicamente son dos productos distintos: Buzz es un timeline y "Plus" es una red social nueva. No obstante, dentro de un perfil de Google+ podrás revisar todas las publicaciones que ha hecho el usuario en Buzz:



A diferencia de Buzz, "Plus" tiene unos niveles de privacidad bastante elevados (aunque requiere que los modifiques dentro de la configuración de tu cuenta, para evitar que todo lo que hagas sea "público"). Si alguna vez desconfías y piensas que tus datos sensibles están mal protegidos, al igual que en Facebook puedes previsualizar como verá tu perfil un usuario concreto: