Really useful software project management and source code hosting. tell me more...
Descripción
El cliente vende un aparato que reproduce contenido en la TV, el contenido (arhcivos de video) se sincroniza por Internet a través de una aplicación en la PC.
La aplicación sólo se encarga que mantener actualizados todos los archivos en cierto directorio preestablecido (con una estructura plana, sin subdirectorios)
Ruta típica
1. La aplicación se ejecuta al iniciar el S.O.
2. Se conecta a un servicio web remoto (XML-RPC ?) enviando la estructura actual del directorio local (arreglo con nombres de archivo y tamaños)
3. El servicio web responde con:
1. Una descarga de un .zip (o similar) con los archivos nuevos en caso de que existan
2. Una lista de archivos a eliminar en caso de que están en el directorio local pero que no están en el directorio remoto.
3. Timeout para la siguiente consulta (como medida para regular el ancho de banda)
4. Con la respuesta, la aplicación ejecuta los cambios:
1. Descomprime el .zip y coloca los nuevos archivos
2. Elimina los archivos a eliminar.
3. Espera el tiempo (timeout) obtenido de la última consulta para repetir desde paso 2.
Características
* La primera vez que la aplicación se ejecuta se pedirá un nombre de usuario y contraseña que se quedarán guardados para autentificarse en el servicio web
* Desafortunadamente hay que optimizar la aplicación para Windows, no estaría nada mal si de paso corre en OSX o Linux pero no es indispensable
* La aplicación no tendrá interfaz gráfica, mas que un icono en el "system tray" o similar que indique el estado (conectado, desconectado, descagando) y se permita cambiar el nombre de usuario/contraseña.
* En una segunda versión, el cliente pretende incorporar una interfaz gráfica para seleccionar el contenido (o algo así...)
* Originalmente pensaba en Java por la disponibilidad de código y librerías.. pero además del ícono en el system tray, no se requiere mucho, a lo mucho un wapper de XML-RPC, lo demás son sencillas operaciones en el sistema de archivos, así que creo que podría ser cualquier lenguaje, lo que resulte más práctico.