En esta práctica implementaremos el cliente DeliciAM para teléfonos con sistema operativo Symbian S60 (3ª Edición en adelante) utilizando el lenguaje Python. Con esto podremos aprender:
Para familiarizarse con el lenguaje Python y más concretamente con PyS60 se aconseja, además del material presentado en la clase de teoría, el libro Mobile Python: Rapid Prototyping of Applications on the Mobile Platform (hace falta una suscripción a Safari para acceder).
Como en la versión usando Android, en este módulo se hace imprescindible la interfaz gráfica, y su intuitividad y facilidad de uso tendrá peso en la calificación.
Implementando la funcionalidad básica se puede alcanzar un máximo de 10 puntos.
Se proporcionan el módulo oauth.pyc y su documentación correspondiente:
Para que vuestro script pueda localizar el fichero del módulo oauth, o cualquier otro script (incluso cuando están en la misma carpeta) debéis incluir lo siguiente:
import sys
sys.path.append("C:\\Data\\python")
para el caso en que los ficheros estén todos en la carpeta C:\Data\python del emulador. Esta llamada se puede repetir tantas veces como carpetas diferentes queráis tener accesibles.
A continuación se puede importar el módulo oauth (antes no):
import oauth
Usar el módulo oauth es más sencillo que en las prácticas anteriores. En primer lugar, se deben proporcionar las claves con el método oauth.set_secrets(secrets), donde el argumento es un diccionario, tal como se explica en la documentación. Por ejemplo:
secrets = {}
secrets["consumer_key"] = consumer_key
secrets["shared_secret"] = shared_secret
oauth.set_secrets(secrets)
La autorización se verifica, o en caso necesario se refresca, o bien directamente se inicia, la primera vez que se llama al método oauth.touch(), por lo que basta con lo siguiente antes de hacer llamadas a la API de Delicious:
if oauth.touch() == True:
...
Después, ya se pueden generar las cabeceras Authorization con este método:
createauthorizationheader(method, url, xparams)
Se ha observado que el timestamp del emulador puede estar (aunque de forma bastante estable) fuera del rango de timestamp admitido por el servidor de Yahoo y haría que la negociación de autorización fallase. Para que esto no cause problemas, si esto ocurre será fácil de detectar porque aparecerá este mensaje de error en la consola de Python:
El número marcado con el cuadro rojo es el timestamp enviado en la petición, y lo anterior es el mensaje devuelto por Yahoo. Si esto ocurre, hay que calcular qué número habría que sumar a nuestro timestamp (también puede ser un número negativo) para que esté en una posición segura dentro del rango de valores admitidos, y ajustarlo con esto:
oauth.tune_timestamp(seconds)
Para desarrollar en Python, en la máquina virtual está instalado el SDK de Nokia S60 5th Edition el cual incluye emulador, el plugin de PyS60 y el empaquetador de instalables SIS para el teléfono. Cualquier editor como Notepad vale para escribir los scripts.
Para probar un script en el emulador hay que hacer lo siguiente:
En general, los cambios que se hacen en el script se reflejarán automáticamente la siguiente vez que lo abráis en el intérprete. Sin embargo, podría pasar en algún caso anormal que quede guardado el script compilado en la caché del intérprete y cargue esa versión antigua. Si sospecháis que no se están reflejando los cambios, cerrar el emulador y volved a lanzarlo.
Se debe entregar mediante el formulario al final de la página un fichero ZIP que contenga lo siguiente:
A las prácticas que no cumplan estos simples requisitos de entrega se les restará 2 puntos de la nota total del módulo.
El plazo termina el 11 de Mayo a las 23:59.
El 12 de Mayo, la clase de prácticas tendrá lugar en el aula de teoría (4.0.E.06), y cada grupo dispondrá de 5 minutos para hacer una presentación tipo comercial de su producto. Las presentaciones deben ser dinámicas y resaltar los puntos fuertes de la aplicación.
¿Sabías que...
el creador de Python, Guido van Rossum, lo bautizó así
por su afición al grupo humorístico "Monty Python"?
Editado: 19/04/2010 13:35