Correo electrónico: benjamin DOT ginouves AT gmail DOT com
Fecha: 18/7/2010
El uso de diversos equipos computacionales, fijos y móviles, o el trabajo conjunto entre varias personas conlleva siempre a tener una gran cantidad de versiones de los mismos archivos, a enviar numerosos correos electrónicos con estas diferentes versiones, el que luego se transforma en un problema a la hora de definir el archivo final y distribuirlo a quienes lo requieren. O simplemente poder replicar de modo permanente los archivos esenciales de trabajo, sin la necesidad de utilizar pendrives o similares distrayendo a las personas de sus actividades normales.
NO contar con una distribución actualizada y permanente de los archivos de registros de proyectos tanto contables como técnicos en múltiples computadores, ya sea como respaldo, o para trabajo en diferentes equipos sin la necesidad de utilizar discos externos o recurrir a transferencias por correo electrónico a sí mismo, o dedicar tiempo a respaldar gran cantidad de datos, es parte esencial del motivo del desarrollo del este software.
La implementación de la solución se basa en un software pendiente a cualquier cambio en los archivos dentro de una carpeta definida (y subcarpetas).Inicialmente el programa calcula una matriz con los archivos de forma de obtener la información de:
[ruta relativa][Nombre del archivo][tamaño][fecha][hora][atributos][SHA256][Permisos]
Una vez obtenida la matriz, se comunica con los equipos remotos previamente configurados y transmite la solicitud de sus listas con el hash de la última lista recibida, en proceso separado se envía la lista propia, separando el sistema en Cliente-Servidor. El programa evalúa quien tiene la versión más actualizada de cada uno de los archivos, e inicia un subproceso para cada conexión con las solicitudes, las que son solicitas de forma distribuida, es decir, el programa rechaza* solicitudes en caso de estar bajo una conexión limitada o de baja velocidad.
(*implementación en una versión posterior)
A continuación se indica el diagrama de clases que se espera obtener una vez el sistema está totalmente desarrollado o en una iteración avanzada con funcionalidades de sincronización en funcionamiento.
Debido a que el desarrollo del sistema está aún en la fase de programación, se incluye un diagrama de lo que se tiene a la fecha desarrollado, y es posible probar en el código.
El sistema se encuentra aún en desarrollo debido a que por el tiempo que se pudo disponer para el desarrollo del programa, sólo se pudo implementar la interfaz gráfica del sistema, configuración y la clase de detección de cambios en el directorio monitoreado.
No se avanzó en el desarrollo desde la última presentación debido al empleo de este tiempo en la preparación de otro Curso, debido al resultado por el cálculo de la nota final. Pese a que ya no será resultado del ramo, se espera tener una versión funcional el 2 de Julio (2 semanas de dedicación 4 horas diarias), ya que se aplicará esta solución en el corto tiempo en un ambiente real de trabajo diario.
Las funcionalidades restantes para una primera iteración funcional son:
- Entrega del nombre y ruta de los archivos cambiados por la detección del cambio en los archivos.
- Cálculo de sha256 y generación del archivo de lista de archivos.
- Programación del manejo del protocolo para errores en la conexión y transmisiones.
- Funciones de conexión y entrega de punteros a éstas conexiones en el inicio de los subprocesos encargados de la transmisión y solicitud de datos.
- Funciones de verificación de archivos. (librería de funciones)
- Proceso paralelo para la solicitud de archivos.
- Proceso paralelo para la recepción de solicitudes por los archivos.
- Control por eventos en el cierre de la aplicación y/o terminación de las conexiones de forma inesperada o por errores.
La solución se encuentra desarrollada en Visual C++ 2010 (VC++), el cual puede ser compilado directamente en el ambiente de trabajo Visual (F7 compilación). Se han omitido archivos de la MFC pre-compilados para la solución estática a éstas, lo que puede mostrar un error al no encontrar tales archivos, los que serán generados por el sistema sin problemas.
A continuación se indican los archivos que se encuentran disponibles, cabe señalar que el software aún está en desarrollo, por lo que es una versión no totalmente funcional.
(archivos .cpp con sus respectivos archivos de encabezamiento .h)