12 November, 2007

Aportación española a OpenMoko

Neo1973
Vía barrapunto me entero de que ya tenemos españolitos colaborando con openmoko. Los sujetos en cuestión, kernel-labs, disponen en su web de información técnica muy interesante sobre la plataforma.

Open Moko es un una comunidad cuyo objetivo es crear el primer sistema operativo open source para teléfonos móviles. En un principio OpenMoko está diseñado para Neo1973 de FIC, el teléfono mas parecido al ya por todos conocido iphone que he visto hasta la fecha, tan parecido que a veces a uno le entran dudas acerca de la autenticidad de cada cual.

Para quien le entre el gusanillo y se lo pueda permitir ya podemos encargarlo desde https://direct.openmoko.com/ su precio ronda entre 300$ y 450$. Quien sabe, quizás dentro de no mucho tiempo podamos hacer algo como apt-get install gnome-mobile en nuestro teléfono sin tener que firmar un contrato de 3 años con la respectiva compañía telefónica.

En el wiki y el repositorio de proyectos oficial de openmoko tienen toda la información disponible sobre esta plataforma.

7 November, 2007

Automatizar copias de seguridad con rsync

Esta semana me he decidido por fin y he terminado de automatizar las copias de seguridad de mi escritorio ubuntu "Gutsy Gibbon" a un servidor debian "etch".

He utilizado rsync para transmitir todos mis ficheros, herramienta muy versátil con la que realizo mis copias de seguridad de forma incremental en un único sentido, para mantener sincronizados 2 directorios en ambos sentidos podemos utilizar unison.

Partimos de que los scripts los ejecutaremos desde la máquina cliente hacia el servidor. Lo primero que debemos conseguir para transferir los ficheros de forma programada es tener acceso al servidor sin que sea necesaria nuestra intervención. Para ello debemos generar un par de claves publica/privada sin palabra de paso en la máquina cliente y autorizar nuestra clave pública en el servidor. Ejecutamos la utilidad ssh-keygen y generamos las claves:

  1. javi@javi-dell:~/.ssh$ ssh-keygen -d
  2. Generating public/private dsa key pair.
  3. Enter file in which to save the key (/home/javi/.ssh/id_dsa): hola
  4. Enter passphrase (empty for no passphrase):
  5. Enter same passphrase again:
  6. Your identification has been saved in hola.
  7. Your public key has been saved in hola.pub.
  8. The key fingerprint is:
  9. cf:f5:d1:58:52:20:1a:4d:17:70:4c:fa:fc:e0:fc:f5 javi@javi-dell

Hemos generado 2 ficheros: hola (clave privada) y hola.pub (clave pública). Con la opción -d indicamos que utilice el algoritmo dsa (ssh v1 utiliza claves rsa, mientras que ssh v2 utiliza claves dsa), a la primera pregunta respondemos con "hola" que será el nombre de nuestra clave, a continuación nos pedirá la palabra de paso, pulsaremos enter ya que no la necesitamos.

Ahora le mostraremos a nuestro servidor cual es la clave pública con la que nos vamos a conectar. Para ello copiamos el contenido del fichero hola.pub (nuestra clave pública) a una nueva linea del fichero /home/usuario/.ssh/authorized_keys de nuestro servidor, si no existe lo creamos.
Y probamos a conectar utilizando la clave creada:

  1. ssh -i /home/usuario/.ssh/hola host

Podemos utilizar la opción -v para imprimir los pasos que se realizan para conectar y la opción -2 para forzar a que conecte mediante ssh2 si este no es nuestro protocolo por defecto.

Con esto ya deberíamos tener nuestros equipos autentificados mediante claves dsa.

Procedemos a crear el script que ejecutará los backups backup.sh

  1. #!/bin/bash
  2.  
  3. # ARRAY con los directorios origen a copiar
  4. ORG[1]="/home/usuario/_TEMP/org1";
  5. ORG[2]="/home/usuario/_TEMP/org2";
  6. ORG[3]="/home/usuario/_TEMP/org3";
  7.  
  8. # ARRAY con los directorios destino
  9. DEST[1]="/home/usuario/_TEMP/dest1";
  10. DEST[2]="/home/usuario/_TEMP/dest2";
  11. DEST[3]="/home/pepe/";
  12.  
  13. # Usuario y host de la conexion, dejar en blanco para copiar al mismo equipo o unidad extraible
  14. conn[1]="";
  15. conn[2]="";
  16. conn[3]="pepe@picaso:";
  17.  
  18. # Opciones de rsync
  19. opts[1]=" -ah";
  20. opts[2]=" -ah";
  21. opts[3]=" -avhe";
  22.  
  23. # Especificamos el fichero de clave para autentificación, dejar en blanco si no se utiliza
  24. key[1]="";
  25. key[2]="";
  26. key[3]="ssh -i /home/pepe/.ssh/hola";
  27.  
  28. fecha=`date`
  29.  
  30.  
  31. # Recorremos los arrays con los directorios a copiar
  32. i=1;
  33. for j in ${ORG[*]}; do
  34.  
  35.     if (rsync ${opts[i]} "${key[i]}" ${ORG[i]} ${conn[i]}${DEST[i]} --log-file=backup.log ) then
  36.         echo "$fecha Sincronización terminada con EXITO">> backup.log;
  37.     else
  38.         echo "$fecha se ha producido un ERROR durante la sincronización">> backup.log;
  39.     fi
  40.     echo "-----------------------------------------------------------">> backup.log;
  41.  
  42.     i=`expr $i + 1`  #Incrementamos contador en 1
  43. done

Y finalmente lo añadimos a nuestro cron para que se ejecute periódicamente, por ejemplo:

  1. crontab -e
  2.  
  3. # m h  dom mon dow   command
  4. 00 22 * * * /home/usuario/backup.sh

Le decimos que se ejecute todos los días a las 22h.

30 October, 2007

Rememberthemilk - Gestor de tareas online

Mi situación profesional de una tiempo a esta parte incluye tanto proyectos en pleno desarrollo como multitud de pequeñas tareas de mantenimiento, sistemas, estimaciones e investigación de nuevas herramientas para hacer que nuestro trabajo diario sea más productivo, esto, junto con mis estudios en la uoc hacen que la organización de mi tiempo sea algo fundamental para no agobiarme y terminar sin hacer nada bien y a tiempo.

Desde hace tiempo vengo utilizando diferentes gestores de tareas, evolution; gtodo; el outlook de mi axim x50; los gadgets de igoogle; hasta que me he topado con rememberthemilk.
Rememberthemilk

Rememberthemilk es otra web etiquetada beta/2.0 con la que podremos gestionar nuestras tareas desde cualquier lugar. La interfaz que nos ofrece es de lo mas sencilla e intuitiva que nos podamos encontrar. Prueba del gran nivel de usabilidad lo constatamos al insertar una fecha de vencimiento o repetición, solo nos acepta cadenas del tipo ayer,ahora,mañana,el lunes a la 1, etc., no os imaginais lo intuitivo que es insertar una fecha de esta forma.

Además de la web, en rememberthemilk nos ofrecen la posibilidad de integrar nuestras tareas con windows mobile, google gears, igoogle gadget, netvides y otros servicios que podemos consultar en esta dirección http://www.rememberthemilk.com/services/.

Como mejora a veces echo en falta la posibilidad de añadir algún nivel mas de prioridad y el poder agrupar tareas.

27 October, 2007

Atajos de teclado en XFCE

Gnu linux

Hace una semana, tan solo una semanita que he instalado xfce y ya no puedo vivir sin el. Esta taaan ligero, tan tan sencillo, tiene esa barrita de menús tan pequeñiiita.

Barra de menu XFCE

Menú principal XFCE
La verdad es que no me he complicado lo mas mínimo, venia utilizando ubuntu-gnome y simplemente ejecute un apt-get install xfce4 y listo, mi nuevo gestor de ventanas preparado para trabajar 100%, todos los menús de gnome/kde integrados y todas las herramientas de configuración de gnome listas para ser utilizadas, que mas quiero.

Algo que si me gusta configurar cada vez que me inicio en una nueva distribución/escritorio linuxero son los atajos de teclado. En xfce tenemos una bonita interfaz para ello Configuración -> Configuración del teclado -> Atajos de teclado, pero como esto no siempre funciona con todas las combinaciones de teclas aquí os dejo el siempre fiable método manual:

Lo primero será conocer como codifica el sistema las teclas que queremos utilizar, para ello utilizaremos el comando xev que ejecutamos desde una terminal y comenzamos a toquetear el teclado. Con cada pulsación obtendremos una salida como esta:

Codigos salida xev tecla escape

En este caso hemos pulsado la tecla escape.

Conocida la codificación de nuestra tecla ahora vamos a crear nuestros atajos. En xfce tenemos un ficherillo en /home/usuario/.config/xfce4/shortcuts/personal.xml donde se definen los atajos de teclado

  1. <shortcuts-theme name="personal">
  2.         <shortcut command="xfce4-popup-menu" keys="Super_L"/>
  3.         <shortcut command="xfce4-popup-menu" keys="Control+Escape"/>
  4.         <shortcut command="xfhelp4" keys="Alt+F1"/>
  5.         <shortcut command="xflock4" keys="Control+Alt+Delete"/>
  6.         <shortcut command="xfrun4" keys="Alt+F2"/>
  7.         <shortcut command="xkill" keys="Control+Alt+Escape"/>
  8. </shortcuts-theme>

Simplemente tendréis que añadir las lineas que necesitéis, yo por el momento he atajado mi tecla de menú windor <shortcut command="xfce4-popup-menu" keys="Super_L"/>.

Seguiré contado mis experiencias con este fantástico escritorio. Por cierto tengo ganas de probar esto http://fluxbox.sourceforge.net/ a ver si encuentro el momento.

17 October, 2007

Configurando wordpress

Wordpress

Despues de un post de presentación dejo 4 apuntes para poder tener un blog como este funcionando. Configuración de wordpress:

El fichero de configuración se encuentra en la raíz wp-config.php, en el podremos cambiar los datos de conexión con nuestra BD o el conjunto de caracteres con el que serviremos nuestro blog.

  1. // ** MySQL settings ** //
  2. define('DB_NAME', 'wordpress');    // The name of the database
  3. define('DB_USER', 'demo');     // Your MySQL username
  4. define('DB_PASSWORD', 'demo'); // ...and password
  5. define('DB_HOST', 'localhost');    // 99% chance you won't need to change this value
  6. define('DB_CHARSET', 'utf8');
  7. define('DB_COLLATE', '');
  8.  
  9. // You can have multiple installations in one database if you give each a unique prefix
  10. $table_prefix  = 'wp_';   // Only numbers, letters, and underscores please!

Si necesitamos cambiar el prefijo de las tablas de nuestro blog, no es suficiente con modificar el parametro $table_prefix = 'wp_'; en wp-config.php, necesitaremos además realizar los siguientes cambios o de lo contrario nos aparecerá un mensaje "You do not have sufficient permissions to access this page." al acceder al panel de administración.

  • Cambiar en la tabla ${NEW_WP_PREFIX}_options la opción ${OLD_WP_PREFIX}_user_roles por ${NEW_WP_PREFIX}_user_roles.
  • En la tabla ${NEW_WP_PREFIX}_usermeta cambiar las opciones ${OLD_WP_PREFIX}_capabilities,${OLD_WP_PREFIX}_user_level,${OLD_WP_PREFIX}_autosave_draft_ids por las mismas pero con el NEW_WP_PREFIX.
  • Si tienes en tu blog otros plugins instalados es posible que tengas que realizar alguna otra modificación.

Si como yo tenéis pensado incluir posts con ejemplos de código fuente este plugin http://blog.igeek.info/wp-plugins/igsyntax-hiliter/ os puede ser de ayuda para el formateo y resaltado del mismo. He aquí algún ejemplo:

  1. public class Main {
  2. private static BufferedReader   reader = new BufferedReader(new InputStreamReader(System.in));
  3.  
  4. private static long readLong() throws IOException {
  5. return Integer.valueOf(readln()).longValue();
  6. }
  7.  
  8. private static String readln() throws IOException {
  9. return reader.readLine();
  10. }
  11.  
  12. private static void printMenu() {
  13. System.out.println("Probando plugin");
  14. }
  15. }

12 October, 2007

Mi primer post

Personal

Con este post inauguro este blog. Espero obtener el tiempo suficiente para poder postear y documentar periódicamente mis aventuras y descubrimientos diarios sobre programación, gnu linux, internet, proyectos, etc...

Powered by WordPress
Bajo licencia Creative Commons
Contacto sanroman.javier at gmail.com