23 mar. 2008

Ejemplo XML-RPC en python

XML-RPC permite crear un webservice que recibe unos parámetros y devuelve un resultado. Es como una función pero los datos viajan a través de la red.

El ejemplo es un webservice que recibe un valor y devuelve el doble de ese valor. Algo sencillo.

El servidor.


#Se importa el módulo XMLRPC
from SimpleXMLRPCServer import SimpleXMLRPCServer
#Se asocia a un puerto en este caso 4242
s = SimpleXMLRPCServer(("", 4242))
#La función que toma x y devuelve el doble de x.
def twice(x):
return x*2
#se registra la función
s.register_function(twice)
#se inicia el servidor
s.serve_forever()



El cliente


#Se importa el módulo ServerProxy de xmlrpclib.
from xmlrpclib import ServerProxy
#Se conecta al equipo por el puerto 4242
s = ServerProxy('http://localhost:4242')
#Se llama a la función pasandole x y devuelve el doble de x
s.twice(2)
4
s.twice(3)
6
s.twice(15)
30



En el servidor se muestra los siguientes mensajes:
localhost - - [24/Mar/2008 00:13:38] "POST /RPC2 HTTP/1.0" 200 -
localhost - - [24/Mar/2008 00:14:23] "POST /RPC2 HTTP/1.0" 200 -
localhost - - [24/Mar/2008 00:14:36] "POST /RPC2 HTTP/1.0" 200 -

Son las respuestas a la conexiones del cliente.
Este programa se puede mejorar evaluando el tipo de datos que envia el cliente para así evitar errores al mandar un string en vez de un número.

Hola mundo 2da versión con hildon y python

La segunda versión del hola mundo se basará en el framework hildon el cual permite manejar el look,temas del entorno de maemo, acceso a barra de herramientas y menus.



#!/usr/bin/env python2.5

import gtk
import hildon

window = hildon.Window()
window.connect("destroy", gtk.main_quit)
label = gtk.Label("Hola mundo!")
window.add(label)

label.show()
window.show()

gtk.main()


Captura de pantalla del script:

Creando el primer programa para Maemo-sdk

Ahora que ya se tiene el ambiente de desarrollo de maemo instalado probare un script básico hola mundo con gtk.
Es necesario agregar un repositorio al ambiente de maemo.
/scratchbost/login
nano /etc/apt/sources.list
deb http://repository.maemo.org/extras chinook free non-free

Luego ejecutar apt-get update e instalar todos los paquetes de python2.5 en especial a python2.5-runtime.
Con esto ya se tiene todo lo necesario para el primer programa en python sobre maemo.
El script lo llamaremos holamundo1.py con el siguiente contenido:



#!/usr/bin/env python2.5
import gtk

window = gtk.Window(gtk.WINDOW_TOPLEVEL)

label = gtk.Label("Hello World!")
window.add(label)

label.show()
window.show()

gtk.main()


Se hace ejecutable el script y con el entorno del servidor X xephyr y maemo funcionando, se ejecuta el script logrando lo que se muestra es la captura de pantalla.

Instalando Maemo-SDK shinook en Debian

Continuando con los post sobre el Nokia N810, ahora a explicar el proceso de instalación del kit de desarrollo en Debian.
Me basé en una guía donde explican la instalación del ambiente de desarrollo para el OS2008 en Ubuntu.

Instalación de scratchbox
1.Bajar Maemo-scratchbox
wget http://repository.maemo.org/stable/4.0.1/maemo-scratchbox-install_4.0.1.sh
2.Colocarle permisos de ejecución
chmod +x maemo-scratchbox-install_4.0.1.sh
3.Ejecutar el script
./maemo-scratchbox-install_4.0.1.sh -d
Se instalará scratchbox adaptado para usarlo con maemo.
Se creará un directorio en la raíz del FS con el nombre de scratchbox. En el estará toda la estructura necesaria para trabajar con la arquitectura que usa el Nokia N810.
4.Crear el usuario que trabajará con scratchbox
/scratchbox/sbin/sbox_adduser USERNAME yes
El USERNAME es el usuario que trabajará con el kit de desarrollo, preferiblemente un usuario con cuenta en el equipo.
5. Actualizar la lista de usuarios relacionada al archivo /etc/groups
newgrp sbox
6.Iniciar sesión en scratchbox
Desde el usuario que se le creo la cuenta en scratchbox ejecutar:
/scratchbox/login
Si no dió mensajes de error la instalación fue perfecta.
Se sale con el comando exit.
7.Editar nsswitch.conf
Ejecutar como root
nano /scratchbox/etc/nsswitch.conf
Tiene que aparecer la siguiente línea
hosts: files dns
8.Agregar los servidores de nombres en el resolv.conf de scratchbox
/scratchbox/login
nano /etc/resolv.conf
En mi caso:
nameserver 200.47.79.2
nameserver 200.47.79.3
Ya con esta se tiene todo listo para instalar maemo.

Instalación de maemo-sdk.
Todo esto se hace desde el usuario que tiene la cuenta en scratchbox.
1.Bajar el script maemo-sdk-install
wget http://repository.maemo.org/stable/4.0.1/maemo-sdk-install_4.0.1.sh
2.Colocar el script ejecutable
chmod +x maemo-sdk-install_4.0.1.sh
3.Ejecutar el script
./maemo-sdk-install_4.0.1.sh
En este punto se va a crear el ambiente para la instalación. Se acepta la licencia de los binarios de nokia y se recomienda hacer una instalación de maemo con el ambiente de desarrollo sin los paquetes de depuración.
Se tardará un tiempo en la instalación de paquetes, al terminar ya se tiene un ambiente de desarrollo.
7.Instalar
xserver-xephyr en el equipo.
8.Actualizar maemo.
/scratchbox/login
apt-get update
apt-get dist-update
8.Iniciar el servidor X xephyr.
Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac
Con este comando se arranca un servidor X xephyr para maemo.
Aparecerá un servidor X con la resolución de 800x480 como en la captura de pantalla.

9.Visualizar maemo en el servidor X xephyr.
Ejecutar en la sesión de scratchbox lo siguiente:
export DISPLAY=:2
af-sb-init.sh star
t
En la siguiente captura de pantalla se muestra el entorno de maemo.



Ya con este entorno en los siguientes post explicaré como crear un programa para maemo usando python.

Actualizando el firmware al Nokia N810

En esta Semana Santa me dedique a actualizar mis dispositivos que manejan Linux (nslu2 y nokia n810). Sólo me falta comprar una memoria al PSP para instalar Linux también.
Este post es dedicado al Nokia N810 y la actualización del firmware.

El firmware que viene con el equipo tiene unos problemas con algunos paquetes y sus dependencias como por ejemplo skype y xchat. Así que lo primero que hay que hacer es actualizarlo antes de ponerse a instalar programas adicionales.
Los pasos son los siguientes:
  1. Bajar el programa flasher-3.0 .
  2. Bajar el firmware para el Nokia N810. Puede bajarse la última versión del firmware aquí.
  3. Asegurarse que la bateria del Nokia tiene full carga.
  4. Desconectar el Nokia de la alimentación de corriente y apagarlo.
  5. Conectar el Nokia al puerto USB del computador sin encenderlo.
  6. Ejecute como root el siguiente comando:
    ./flasher-3.0 -F  RX-44_2008SE_2.2007.51-3_PR_COMBINED_MR0_ARM.bin -f -R
  7. En el computador aparecerá el siguiente mensaje en la consola :"Suitable USB device not found, waiting"
  8. Encienda el Nokia y se iniciará el proceso de actualización del firmware, en el tablet aparecerá el símbolo de conectado por USB.
  9. Al terminar se muestra en la consola el mensaje: you're done now!
  10. Ya el equipo está actualizado, ahora si la actualización no se hace cuando el equipo está recien comprado es necesario realizar un respaldo del mismo con las herramienta de recuperación y respaldo.

AddThis