Durante las sesiones de prácticas implementaremos un cliente sencillo de delicious en distintos lenguajes de programación. Con esto pretendemos alcanzar los siguientes objetivos:
delicious.com (antes del.icio.us) es el servicio de enlaces a favoritos más popular de Internet y fue comprado por Yahoo! en diciembre de 2005.
La principal idea de este tipo de servicio web es que una persona pueda gestionar y acceder a su lista de marcadores/favoritos en cualquier navegador e incluso en cualquier ordenador.
La idea secundaria, que es común a la mayoría de servicios similares, es permitir que los usuarios (en algunos casos sólo quien añade el marcador, en otros cualquier miembro registrado en la comunidad) etiqueten los elementos de la lista. Este tipo de etiquetado o clasificación humana en comunidad se llama folksonomía y añade un rico valor semántico: permite, por un lado, a los usuarios buscar marcadores que pueden no haber sido introducidos por ellos pero están relacionados con un tema de su interés; por otro lado, a quien presta el servicio, proporcionar un medio de publicidad contextualizada (como el AdSense de Google).
En Delicious las entradas (llamadas posts) se identifican por su URL. Por lo tanto, al añadir una entrada con una URL que ya estaba guardada, o bien se sobreescribe con los nuevos datos (comportamiento por defecto), o bien se deja como estaba. Una etiqueta(en Delicious, tag) es una única palabra, nunca conjuntos de ellas.
La API de Delicious se basa en peticiones HTTP. Aunque pueda haber alumnos que tengan una cuenta de Delicious anterior a su compra por parte de Yahoo!, si quieren tener soporte en las prácticas deberán usar una cuenta de Yahoo! De cara a las llamadas a la API, utilizar las nuevas cuentas con usuario de Yahoo! implica:
Las llamadas de la API más relevantes para esta práctica son las siguientes:
Los parámetros deben ir correctamente codificados para su utilización en una URL.
Nuestra aplicación, que se va a llamar DeliciAM, debe ser capaz de:
gestionar las entradas de un usuario:
mantener información de perfil del usuario de forma persistente: usuario y sus correspondientes claves OAuth para un inicio de sesión rápido.
ser de utilización fácil y rápida: esto es de gran importancia siempre, pero en especial en dispositivos pequeños donde la interfaz física del usuario está muy limitada.
Se utilizarán tres lenguajes para la realización de esta práctica: JavaSE, que servirá para familiarizarnos con los distintos módulos de la aplicación en un lenguaje conocido, Android y PyS60.
Para afrontar el módulo en PyS60 son necesarios conocimientos básicos del lenguaje Python. En la sección de referencias y buscando en Internet se pueden encontrar manuales útiles.
Es un protocolo que permite obtener la autorización de un usuario para el tratamiento de sus datos en otra plataforma. Yahoo! lo utiliza para mantener una base de usuarios única, con acceso a diferentes servicios. Google utiliza una versión algo más simplificada.
En la web de Yahoo! Developer Network podemos encontrar información sobre el proceso de autenticación que implementan los servicios de Yahoo!, como es el caso de Delicious:
El paso 1 sólo será necesario una vez, cuando cada equipo de prácticas se registre en la Yahoo! Developer Network, ya que estas claves las pondrán reutilizar en los diferentes prototipos que realicen.
El proceso de intercambio de datos (pasos 2 y 3), así como la creación de las cabeceras Authorization (paso 5), suelen ser engorrosos de implementar, por lo que el código necesario será proporcionado en cada módulo en el lenguaje correspondiente.
El paso 4 de guardado de datos será realizado por el equipo de prácticas para cada módulo.
Las prácticas se realizarán obligatoriamente en parejas. Cada grupo de práticas debe enviar un correo a emglozan@it.uc3m.es indicando nombre, apellidos y NIA de los componentes antes del lunes 8 de Febrero. Ese día se publicará una lista en la página de la asignatura donde se indicarán los grupos y el número asignado a cada uno. Aquellos alumnos que no hayan formado grupos se asignarán aleatoriamente.
Una vez que se disponga de un número de grupo, éste debe conseguir una cuenta de Yahoo! si no disponía de una, y registrar su proyecto en la Yahoo! Developer Network siguiendo las indicaciones que se dan en el paso 1 del apartado referente a OAuth antes del 10 de Febrero.
Enunciado detallado:1 - Módulo JavaSE.
Fecha de entrega: 3 de Marzo.
Enunciado detallado: 2 - Módulo Android.
Fecha de entrega: 6 de Abril.
Presentaciones: 7 de Abril.
Enunciado detallado: 3 - Módulo PyS60.
Fecha de entrega: 11 de Mayo.
Presentaciones: 12 de Mayo.
La parte de prácticas significa un 60% de la nota global de la asignatura.
Se valorará cada módulo por separado con el siguiente peso:
Para poder calcular la nota global de prácticas no es necesario haber entregado y aprobado todas ellas. Las no presentadas se incluirán en el cómputo con nota igual a cero.
Cada módulo debe entregarse a través de su enunciado específico en la plataforma Aula Global 2 en la fecha indicada. El último día correspondiente a cada módulo se dedicará a que cada grupo haga una breve presentación (5 minutos) en clase de su cliente DeliciAM, resaltando las decisiones de diseño y los puntos fuertes de su implementación. Esta presentación es imprescindible para que la práctica se pueda calificar.
Se podrán tener en cuenta mejoras añadidas por la pareja de prácticas, siempre que se hayan cubierto satisfactoriamente los requisitos, hasta el 10% del peso de cada parte (sin superar la nota máxima). Por ejemplo, se valorará positivamente añadir seguridad a los datos almacenados de forma persistente.
El entorno de desarrollo para las prácticas se proveerá en la forma de una máquina virtual que correrá en los laboratorios 4.1.B.01-02 y 4.S.D03-04.
También se podrá distribuir una copia en DVD entre los alumnos a través del delegado del grupo.
Se puede abrir con VMWare Player (instalador incluido en el DVD para los alumnos) u otro reproductor compatible. Sus características son las siguientes:
Las versiones de la mayoría del software instalado no son las últimas sino las necesarias para que el entorno funcione correctamente. Es muy importante no actualizarlo.