Introducción a Sistemas Distribuídos (75.43)
Trabajo Práctico Número 1
10
lb10
sisdis10
Nombre | Padrón | Módulo desarrollado |
---|---|---|
Leandro Lucarella | 77891 | Actualización de socios y administración de créditos |
Jonathan Schein | COMPLETAR | COMPLETAR |
Sebastián Arena | COMPLETAR | COMPLETAR |
Esta página es el punto de partida del sistema. Normalmente se encarga de mostrar el login, pero puede encargarse también de resumir la sesión o de ir directo a la asociación de administradores si correspondiese (por ejemplo, si se cerró el navegador y se vuelve a abrir en un corto período de tiempo; o si es la primera vez que se usa el sistema y todavía no hay 2 administradores asignados; respectivamente).
Es la página que realmente se encarga de hacer el login. Debe ingresarse el código de usuario (sea socio o asesor) y el password. Si el usuario no existe, o si está mal el password, etc, se muestra el correspondiente mensaje de error.
Esta página, al igual que index.php, no tiene contenido propio, sino que se encarga de borrar todos los datos de la sesión del usuario y luego muestra la pantalla de login ingresarse el código de usuario (sea socio o asesor) y el password. Si el usuario no existe, o si está mal el password, etc, se muestra el correspondiente mensaje de error.
Esta página asocia a un integrante del grupo (presente en el archivo int_2005.txt si es socio o ase_2005.txt si es asesor). Si el sistema todavía no tiene 2 administradores asignados, los usuarios que se asocien, serán administradores (el sistema lo advierte, si es el caso). Una vez asignados 2 administradores, la única forma de cambiarlos es a través de la página para ceder los permisos de administración (accesible sólo por los administradores).
Esta página muestra el log de actividades del usuario. Permite elegir la fecha desde la cual se quieren ver las actividades.
En esta página el administrador puede agregar créditos a los usuarios. Para realizar esta tarea el administrador debe ingresar su password para corroborar su identidad como un mecanismo de seguridad extra (ya que de todas formas sólo un usuario con permisos de administrador puede realizar esta tarea). De esta manera, si por alguna razón un usuario se quedara sin créditos para preguntar, podría solicitar al administrador que le asigne algunos créditos. Las razones de aprobación y la cantidad de créditos otorgados, queda enteramente a consideración del administrador.
A través de esta página un administrador puede ceder sus permisos de administración. Una vez cedidos, este usuario dejará de ser administrador y comenzará a serlo el nuevo usuario asignado. Al ser esta acción de un compromiso considerable, el administrador debe volver a ingresar su password para confirmarlo (aunque ya esté logueado y sólo los administradores puedan realizar esta acción).
Todos los archivos del sistema se almacenan en el directorio data. Varios archivos son creados en tiempo de ejecución por el servidor web, por lo tanto este directorio debe tener permisos de escritura para el usuario con el que corre dicho servidor. Además las fotos de los usuarios se guardan en el directorio fotos y también se crean en tiempo de ejecución, por lo tanto este directorio también debe tener permisos de escritura para el servidor web. El nombre del archivo de la foto de un usuario es su número de registro (si es socio) o código (si es asesor).
A continuación se describe el formato de cada archivo.
Este archivo tiene formato CSV y está cargado previo a la ejecución del sistema con todos los integrantes que potencialmente serán socios del sistema. Los campos del archivo son:
Este archivo tiene formato CSV y está cargado previo a la ejecución del sistema con todos los integrantes que potencialmente serán asesores del sistema. Los campos del archivo son:
Este archivo tiene formato CSV y se crea en tiempo de ejecución. En él se almacenan los usuarios registrados en el sistema. Los campos del archivo son:
Este archivo tiene formato de texto plano y almacena un número de registro o código (según sea socio o asesor) por línea (aunque también puede ser visto como un archivo CSV con un sólo campo). Su función es almacenar los identificadores de los 2 administradores del sistema y es creado en tiempo de ejecución.
Este archivo tiene formato CSV modificado, ya que incluye en los primeros 11 bytes un índice a la última entrada. Es decir, en los primeros 11 bytes se almacena la posición del archivo en la que se encuentra el último registro CSV. Dicha posición, se almacena en codificación ASCII como un número de 10 cifras (con ceros delante) y un caracter de fin de línea al final. Como normalmente sólo importa el último registro del archivo, esto acelera mucho, ya que no hay que recorrerlo completo para obtener dicho registro. De esta manera el acceso es casi directo y se conserva la historia de la variación de los créditos.
Este archivo se crea en tiempo de ejecución, uno por cada socio, en el momento en que se registra en el sistema. El nombre del archivo incluye el número de registro del socio (creditos.[nro_registro].csv) y en él se almacena la historia de créditos de dicho usuario. Los campos del archivo son:
Este archivo se actualiza en etapas distintas. Cuando el usuario ingresa al sistema, se recalculan los créditos para ver si se le deben restar por cantidad de días sin preguntar. Se resta 1 crédito por cada 30 días sin responder. El cálculo realizado es el siguiente:
Llamaremos FECHA al campo 1 del registro del archivo leído, CREDITOS
al campo 2 y DIAS al campo 4. Llamaremos FECHA_ACTUAL a la fecha del
instante del login. Ambas fechas expresadas como timestamps. Para
calcular la diferencia en días entre 2 fechas, simplemente se restan
y se divide por 86400 (cantidad de segundos en un día). Entonces
para saber la cantidad de días que hace que no se pregunta en el
instante del login (DIAS_NUEVO), se realiza: DIAS_NUEVO =
DIAS + (FECHA_ACTUAL - FECHA) / 86400
. Luego, si DIAS_NUEVO
es más que 30, se calculan los nuevos créditos (CREDITOS_NUEVO) como
CREDITOS_NUEVO = CREDITOS - (DIAS_NUEVO / 30)
y la
nueva cantidad de días sin preguntar restantes (DIAS_RESTO) como
DIAS_RESTO = DIAS_NUEVO % 30
(siendo % el resto de la
división entera), ya que estos días sin pregutnar extra que
todavía no llegan a sumar 30 como para restar créditos, deben ser
considerados para futuros cálculos. Finalmente en el archivo de
créditos se guarda un nuevo registro con los datos CREDITOS_NUEVO y
DIAS_RESTO en los campos 2 y 4 respectivamente. El resto de los
campos (exceptuando la fecha, que siempre se guarda con la fecha de
modificación del archivo) quedan intactos.
El otro caso en donde se actualiza este archivo (se actualizan los créditos) es cuando un socio realiza una pregunta. En este caso, solamente se resta un crédito (campo 2) y pone se resetean los días sin preguntar (el campo 4 se pone en cero).
Finalmente, el último caso en donde se actualiza este archivo (se recalculan los créditos) es cuando un usuario califica una respuesta con un valor igual o superior a 2. En este caso se suma uno al campo 3 y se verifica si es igual o superior a 5 (en realidad jamás será superior a 5). Si lo es, se pone en cero y se agregan 5 créditos.
Este archivo tiene formato CSV. y se crea en tiempo de ejecución, uno por cada usuario, en el momento en que se registra en el sistema. El nombre del archivo incluye el número de registro del socio o código del asesor según el caso (log.[nro_registro/codigo].csv) y en él se almacena la el log de actividades (es decir, cada vez que el usuario realiza una acción en el sistema, se agrega una entrada a este archivo que la describe). Los campos del archivo son:
Cada integrante eligió herramientas de desarrollo propias, más allá de las herramientas obligatorias que había que usar indefectiblemente para realizar el TP (como PHP y Apache). A continuación se enumeran las herramientas utilizadas por cada integrante.
Mozilla Firefox, w3m
VIM
Herramientas de w3c: tidy y el servicio de validación online (http://validator.w3.org/)
Ninguna
COMPLETAR!!! Por ahora nada, sólo que ande PHP.
COMPLETAR!!! Supongo que es suficiente con copiar los archivos de src/ al public_html, ponerle permisos de lectura para el apache en todo y permisos de escritura en el directorio data/ y fotos/.
COMPLETAR!!! Mucho de esto por ahora está en la descripción del diseño...