Ginga y TVD
Tarea Redes de Computadores II

Tarea

1. Instrucciones

La tarea consiste en desarrollar una aplicación interactiva utilizando NCL, Lua y las herramientas de GINGA-NCL, con el fin de responder la pregunta al público del programa quién quiere ser millonario, y mostrar la estadística de las respuestas hasta ese momento. La selección de la respuesta debe realizarse a través del control remoto (o en este caso a través de las teclas en el teclado de la máquina virtual que simulan su uso).

La pregunta

Origen
La pregunta, junto a las cuatro alternativas, tendrá que descargarla a través de su aplicación GINGA (con la ayuda del módulo tcp) desde la dirección web <http://www2.elo.utfsm.cl/~elo323/survey/get_question.php>. Revise el código fuente de la respuesta para comprender el formato de las etiquetas, las cuales tendrá que leer en el script LUA y parsear de acuerdo a si es pregunta u alternativa.
Las preguntas cambian cada una hora para que así pueda probar su software con diferentes preguntas.

Despliegue
Para el despliegue de la pregunta tendrá que desarrollar un sistema en el que la pregunta permanezca como máximo 20 segundos visible, para luego desplegar los resultados. Si una respuesta es seleccionada antes de estos 20 segundos, la alternativa seleccionada debe quedar remarcada y esperar el tiempo restante para completar los 20 segundos. Recuerde que una aplicación audiovisual debe ser atractiva visualmente, así como también clara en su ejecución. Se sugiere que agregue mensajes de espera, o de indicaciones si así lo estima necesario.

El voto

El voto tendrá que ser subido a la web a través de http://www2.elo.utfsm.cl/~elo323/survey/set_vote.php?opt=X, donde X equivale al número de la respuesta. Así, si el espectador elige la segunda alternativa para una determinada pregunta, (alternativa B), esta petición web se escribiría <http://www2.elo.utfsm.cl/~elo323/survey/set_vote.php?opt=2>. Usted tiene que encontrar la forma de generar dinámicamente la URL que transporta la opción seleccionada (opt=1, opt=2, opt=3 u opt=4). Note que el voto enviado se asignará a la pregunta de turno en el servidor, y que se debe permitirle al usuario votar sólo una vez por ejecución de la aplicación.

El resultado

Obtención
El resultado de las votaciones de la pregunta de turno en el servidor se puede obtener mediante la consulta a la web <http://www2.elo.utfsm.cl/~elo323/survey/get_results.php>. Nuevamente, revise el código fuente de esta respuesta para comprender el formato de las etiquetas retornadas. Básicamente, se entrega en un string la cantidad de votos por cada una de las alternativas en orden: opt1,opt2,opt3,opt4.

Despliegue
Para el despliegue de los resultados, se considerarán no más de 20 segundos. Este se deberá entregar en forma de porcentaje junto a un gráfico de barras de las votaciones. Este gráfico debe mostrar los porcentajes de votación de cada alternativa con respecto al total de los votos emitidos.

En resumen, el ciclo de ejecución de la aplicación es el siguiente:

ciclo de ejecución

Screenshots

A continuación algunos screenshots de la implementación de referencia para esta tarea. Se espera que sea capaz de implementar algo que cumpla una funcionalidad similar a la expuesta.

Antes de la votación
pre voto
Al realizar la votación
voting
Luego de la votación - luego de los 20 segundos transcurridos desde el inicio
voted

 

Evaluación

90% al desarrollo de la tarea

* Programa NCL
(50%): Interfaz gráfica e interactividad
* Programa Lua
(40%): Recolección de datos desde internet
(10%): Despliegue gráfico de los resultados

10% a la documentación

- Código adecuadamente comentado
- Archivo de texto con una explicación general del funcionamiento, incluyendo el ambiente utilizado, y comentarios.

 

Formato de entrega

Archivo comprimido en .zip, .rar, .tar, etc., de nombre: apellido1_apellido2_apellido3.zip
Enviar al correo del ayudante.
Debe contener, al menos, los siguientes archivos:

- Archivo NCL
- Archivo(s) Lua(s)
- Archivo de texto, con explicaciones
- Carpeta con los archivos de media (imágenes, audio, video, etc.)

2. Ejemplos

Básicos
Menú e interacción lua sencilla
Conexión TCP (uso de tcp.lua)

Detalles:
-Este ejemplo ya no funciona en su totalidad, por algún problema en la página a la que se conecta. Sin embargo, el código a utilizar funciona correctamente al aplicarlo a la tarea.
-Si utiliza la VM, podrá ver los "print" enviados por el código Lua.
- No compatible con Ginga4Windows(se cae por el problema mencionado anteriormente).

Ejemplos más complejos en una página de la comunidad brasilera.


3. Recomendaciones y Observaciones

- Usar la VM de Telemidia o Ginga4Windows para el desarrollo, preferiblemente. Las razones: son los más simples de usar y ya fue comprobado que permiten cumplir los objetivos. Esto no prohibe el uso de las otras alternativas expuestas, que son tan válidas como las recomendadas, pero se sugieren solo para aquellos interesados en el tema y que deseen comparar las facultades de cada una.
- Revise ejemplos y ejecútelos, son la mejor manera de comprender el funcionamiento de las aplicaciones ginga. Mantenga la documentación a mano para agilizar el proceso de aprendizaje.
- Cualquier duda, consultar al ayudante.