Archivo de Julio 2009

HowTo: Sockso en Ubuntu Server
27/07/09¿Recordáis aquel ordenador que tengo debajo del sofá con el MLDonkey? Pues he decidido exprimirlo un poco más: le he instalado el Sockso. Este programita no es otra cosa que un servidor que almacena y organiza tus emepetreses. No tiene GUI. Para acceder a la colección de música solo necesitas acceder al servidor por medio de un navegador web por lo que puede ser accesible desde cualquier ordenador que tenga Internet.
Al lío.
Instalación de MySQL y Java
El propio programa trae una BBDD embebida pero parece que cuando maneja colecciones grandes de música se ralentiza bastante por lo que me he decantado por usar MySQL:
root@elburro:~# aptitude install mysql-server sun-java6-bin sun-java6-fonts sun-java6-jre
Durante la instalación te pedirá la contraseña del usuario root de MySQL.
Ahora nos conectamos al MySQL para crear la BBDD. No es necesario crear ninguna elemento de la BBDD, el propio programa los creará la primera vez que arranca::
root@elburro:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> create database socksodb;
Query OK, 1 row affected (0.00 sec)mysql>
Instalación del Sockso
root@elburro:~# wget http://sockso.pu-gh.com/downloads/sockso-latest.zip
root@elburro:~# unzip sockso-latest.zip
root@elburro:~# cp -r sockso-1.1.8/ /opt/sockso
root@elburro:~# mkdir /var/sockso
root@elburro:~# chmod -R 0755 /var/sockso
Con estos comandos lo que hemos hecho es: bajarnos la última versión, descomprimir el zip, copiarlo a “/opt/sockso”, crear el directorio “/var/sockso” y darle premisos de ejecución.
Al ser nuestra instalación con MySQL necesitamos descargar e instalar unas librerías adicionales:
root@elburro:~# wget http://sockso.pu-gh.com/downloads/sockso-optionals.zip
root@elburro:~# unzip sockso-optionals.zip -d /opt/sockso/lib-opt
Ahora nos vamos a editar el script de arranque para acondicionarlo a nuestro entorno:
root@elburro:~# cd /opt/sockso/scripts/init.d/
root@elburro:/opt/sockso/scripts/init.d# cp -p sockso sockso.pl
root@elburro:/opt/sockso/scripts/init.d# vi sockso.pl
Basicamente, hay que editar las siguientes líneas para que queden así (cambiando micontraseña por la contraseña que pusiste en el MySQL):
use constant SOCKSO_DIR => “/opt/sockso/”;
system( ’sh linux.sh –nogui –datadir /var/sockso –dbtype=mysql –dbhost=localhost –dbuser=root –dbpass=micontraseña –dbname=socksodb > /dev/null 2>&1 &’ );
Pego el script completo para que quede más claro:
#!/usr/bin/perl
###########################################################
###########################################################
#
# Edit this constant to point to your Sockso directory
#
use constant SOCKSO_DIR => "/opt/sockso/";
#
###########################################################
###########################################################
use strict;
my $cmd = shift();
if ( $cmd eq "start" ) { start(); }
elsif ( $cmd eq "stop" ) { stop(); }
elsif ( $cmd eq "restart" ) { restart(); }
else { usage(); }
sub start {
chdir( SOCKSO_DIR );
system( 'sh linux.sh --nogui --datadir /var/sockso --dbtype=mysql --dbhost=localhost --dbuser=root --dbpass=micontraseña --dbname=socksodb > /dev/null 2>&1 &' );
}
sub stop {
my $pid = `ps x | grep sockso.jar | grep -v grep`;
$pid =~ s/^\s*(\d+) .*/$1/;
if ( $pid ) {
`kill -9 $pid`;
}
}
sub restart {
stop();
sleep( 2 );
start();
}
sub usage {
print <<EOF;
Usage: sockso (start|stop|restart)
EOF
}
Pues ya está todo lo básico. Vamos a probar si funciona:
root@elburro:~# cd /opt/sockso/scripts/init.d
root@elburro:/opt/sockso/scripts/init.d# ./sockso.pl start
Si todo ha ido bien debemos poder acceder desde el navegador al puerto 4444 de nuestra máquina:
http://IP:4444
Y veremos el home del Sockso:
¡A disfrutar! :)
Añadiendo repositorios de música
Para decirle al Sockso donde está nuestra música tenemos que hacerlo desde la consola. Primero nos aseguramos de que está parado:
root@elburro:~# cd /opt/sockso/scripts/init.d/
root@elburro:/opt/sockso/scripts/init.d# ./sockso.pl stop
Y ahora arrancamos el Sockso “manualmente” para acceder a la consola (ojo a la contraseña):
root@elburro:/opt/sockso/scripts/init.d# cd /opt/sockso/
root@elburro:/opt/sockso# sh linux.sh –nogui –datadir /var/sockso –dbtype=mysql –dbhost=localhost –dbuser=root –dbpass=micontraseña –dbname=socksodb
La línea de comandos del Sockso es muy sencilla (teclea help para ver los comandos). Para añadir un directorio en el que estén los MP3 escribimos:
#SoCkSo#> coladd /directorio/de/mis/emepetreses
Directory added!
#SoCkSo#>
Si accedemos ahora al Sockso deberíamos ver nuestra colección de MP3. Ya solo tenemos que salir y arrancar el Sockso de forma normal.
Arrancar / parar Sockso con la máquina
He creado el siguiente script para controlar Sockso como un servicio:
#!/bin/sh # ### BEGIN INIT INFO # Provides: Sockso # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Servidor de musica Sockso. # Description: Servidor de musica Sockso. ### END INIT INFO perl /opt/sockso/scripts/init.d/sockso.pl $1 exit 0
Para instalarlo sólo hay q copiarlo al “/etc/init.d” y añadirlo como servicio:
root@elburro:~# cd /etc/init.d
root@elburro:/etc/init.d# vi sockso
(Pegamos el contenido del script y salimos guardando)
root@elburro:/etc/init.d# update-rc.d sockso defaults
Adding system startup for /etc/init.d/sockso …
/etc/rc0.d/K20sockso -> ../init.d/sockso
/etc/rc1.d/K20sockso -> ../init.d/sockso
/etc/rc6.d/K20sockso -> ../init.d/sockso
/etc/rc2.d/S20sockso -> ../init.d/sockso
/etc/rc3.d/S20sockso -> ../init.d/sockso
/etc/rc4.d/S20sockso -> ../init.d/sockso
/etc/rc5.d/S20sockso -> ../init.d/sockso
root@elburro:/etc/init.d#
Pendiente
Si bien el programa está genial, tiene un pero bastante gordo que si no consigo solucionar lo hará inservible: todos los MP3 que tengan algún carácter raro (acentos, ñ, …) no se almacenan en la BBDD. Esto aplica tanto al nombre del archivo como a los MP3Tag.
Leyendo el foro he encontrado un alemán que solucionó el problema borrando la línea:
update( ” set names utf8 ” );
Del fichero MySQLDatabase.java y recompilando. Después de mucho googlear he conseguido recompilar pero no me funciona la aplicación… A ver si engaño a alguno de esos locos programadores para que me eche una mano…
Cualquier ayuda será bienvenida :)
Biliografía: Sockso, Samiux’s Blog.

Today was a good day
21/07/09Buenísimo anuncio de Nike con P. Rod y Ice Cube:
P. Rod es una máquina. Alguna escena parece 3D de lo perfecto que está hecho el truco. En yutub tienes muchos videos de este fiera.
Vía Nerviosismo.

Peor que satánico
20/07/09
United Breaks Guitars
14/07/09Esto de Internet sigue teniendo la capacidad de sorprenderme.
¿Qué puedes hacer si en un viaje en avión te rompen la guitarra que facturaste y la compañía aérea, después de nueve meses, sigue pasando de tu culo?
Pues a Dave Carrol, como músico que es, se le ocurrió colgar una canción contando su historia en el Youtube (he encontrado una versión con subtítulos en inglés, la original aquí):
Lo que no creo que se esperara es que su vídeo tuviera 2 millones de visitas la primera semana. Vamos, una feroz campaña viral anti United Airlines, la compañía aérea en cuestión.
Como decía el anuncio de Aquarius, los humanos somos imprevisibles.
Por supuesto, la United ya se ha puesto en contacto con Carrol. La historia completa.
Vía Webmaníacos.

Tuning II: la pantalla OLED
11/07/09Nota: este documento sólo pretende ser un guiaburros que me sirva de chuleta. Si copipasteas los comandos sin saber lo que significan no aprenderás nada. Tú decides.
Partimos de un Asus G50v con una openSUSE 11.1 y KDE 4.1. Además, necesitamos tener estas aplicaciones instaladas:
- java-1_6_0-sun (Java 6 Runtime Environment)
- subversion
- make
- gcc
- netcat-openbsd
Al lío. Nos bajamos la última versión del driver:
cd /usr/src/
svn co svn://svn.berlios.de/lapsus/asus_oled/trunk asus_oled
Y la instalamos:
cd asus_oled
make
sudo su
make install
rmmod usbhid
modprobe asus_oled
modprobe usbhid
dmesg | grep -i asus
Si todo ha ido bien, el último comando debe devolver algo similar a esto:
[ 23.216917] asus-oled 4-4:1.0: Attached Asus OLED device: G50 [width 256, pack_mode 1] [ 23.216933] usbcore: registered new interface driver asus-oled
Ya tenemos el driver instalado. Ahora vamos a instalar el demonio que controlará la pantalla.
cd /opt
wget http://asusg50oled.sourceforge.net/download/asusg50oled.tgz
tar -xzf asusg50oled.tgz
cd asusg50oled
./start.sh
cd utils
./install.sh
Si todo ha ido bien, nuestra pantallita oled debería tener un aspecto similar a este:

(Imagen tomada de MonALISA)
Amarok y Kafeine en la pantalla OLED
Con los siguientes comandos haremos que tanto el Amarok como el Kafeine muestren lo que están reproduciendo en la pantalla oled:
$ dcop –all-users amarok player title
$ dcop –all-users kaffeine KaffeineIface title
Lo sé, es una pijotada que no sirve para nada… pero es tan chulo… xD

(Imagen tomada de AsusG50OLED)
Kopete en la pantalla OLED
Nota: aún no he conseguido que el Kopete escriba en la pantalla OLED pero aquí cuento mis avances :)
Hay un problemilla con el script que hará que los nuevos mensajes de Kopete se muestren en la pantalla. Parece que la versión del netcat que usó el que hiciera el script es diferente de la que viene con openSUSE. El netcat original debía tener una opción “-q” q no existe en el que tengo yo. Cuando intento ejecutarlo, me peta porque no reconoce el parámetro “-q”. El script en cuestion es el “notify.sh”, y la única modificación que he hecho es esta:
#!/bin/bash while [ ! -z "$1" ]; do echo "text $1" shift #done | nc -u -q 0 -n 127.0.0.1 1196 done | nc -n 127.0.0.1 1196
Como ves, lo único que he hecho es quitarle el “-q 0″ por lo ya comentado y el “-u”. Este último parámetro sirve para utilizar UDP en vez de TCP pero el script no me devuelve el prompt si está este flag así que lo quitamos y listos.
Puedes comprobar si funciona ejecutando el típico:
./notify.sh Hola Mundo
Ahora vamos al Kopete, menú Preferencias -> Configurar las notificaciones. Buscamos en la columna de la izquierda “Mensaje entrante” y activamos la opción de “Ejecutar la orden” y escribimos:
/opt/asusg50oled/utils/notify_kopete.sh %s
Se supone que con esto debería funcionar pero, como he dicho al principio, a mi no me va. Queda pendiente trastear un poco más el Kopete.
Thunderbird en la pantalla OLED
Por lo visto se puede configurar el Thunderbird para que escriba también la pantalla OLED. Sin embargo yo no uso ningún cliente de correo así que a esta parte le he echado un vistazo rápido y poco más. En el README del demonio tienes más información si te interesa.
Bibliografía: AsusG50OLED, Asus OLED Driver

Made in China
9/07/09Qué poco pesan los derechos humanos frente al made in China.
Don Frenando, aka Fernando Ónega, esta mañana en Herrera en la Onda.

Como alegrar una mañana de lunes
6/07/09Una de las muchas listas de spam a las que estoy apuntado es la de portaldvdr.net. Esto no tendría nada de especial si no fuera por las risas que me he echado esta mañana al llegar a la oficina encontrarme la siguiente cadena de emilios:
Correo 1:
De: PortalDVDR
Para: lista
Típico correo de publicidad con diferentes ofertas.
Correo 2:
De: Fulanito.
Para: lista.
Hola,
Hasta el proximo lunes 13 de julio voy a estar fuera de la oficina. No voy a disponer de acceso a Internet y tendré limitaciones para el uso del telefono móvil.
Para cualquier asunto, puede ponerse en contacto con Pepito Pérez en el XXXXXXXX.
Siento las molestias. Gracias.
Correo 3:
De: Menganito.
Para: lista.
A mí lo que me gustaría saber es quién es el inútil que administra esta lista de correo que no hay manera de darse de baja, y cualquiera puede escribir mensajes cuando se supone que para lo único que debería servir es para enviar Spam por parte de portaldvdr.net.
En encargado de administrar la lista por favor que la revise y la ponga en orden, y ya que estamos que me de de baja.
No he podido contener la risa al leerlo. Muchas gracias a todos los participantes por alegrarme la mañana de lunes.





