Carátula

Introducción a Sistemas Distribuidos (75.43)

Trabajo Práctico Número 1

Grupo

Número de grupo:

10

Nombre del host:

lb10

Nombre de usuario:

sisdis10

Integrantes
NombrePadrónMódulo desarrollado
Leandro Lucarella 77891 Actualización de socios y administración de créditos
Jonathan Schein 80083 Actualización de información de FAQ's
Sebastián Arena COMPLETAR COMPLETAR

Índice

  1. Diseño de las páginas
  2. Desarrollo
  3. Herramientas de desarrollo
  4. Configuración del servidor
  5. Instalación
  6. Modo de uso

Diseño de las páginas

Modulo de Administración

index.php

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).

admin.login.php

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.

Captura de pantalla de admin.login.php

admin.logout.php

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.

admin.asociarse.php

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).

Captura de pantalla de admin.asociarse.php

admin.log.php

Esta página muestra el log de actividades del usuario. Permite elegir la fecha desde la cual se quieren ver las actividades.

Captura de pantalla de admin.log.php

admin.creditos.php

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.

Captura de pantalla de admin.creditos.php

admin.admin.php

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).

Captura de pantalla de admin.admin.php

Modulo de FAQs

faq.listarPreguntas.php

Esta página lista las preguntas ingresadas en el sistema. Para cada pregunta, se muestra la fecha de creación, el nombre de autor, con su correspondiente foto, la pregunta en si, la posibilidad de accederá a todas las respuestas para dicha pregunta, así como también la posibilidad de responder la pregunta ( solo en caso que quien esta logueado en el sistema no sea el mismo usuario que formulo la pregunta ). El listado de preguntas aparece paginado cada 2 ( se muestran dos preguntas por pantalla ). Debajo de las preguntas aparece el navegador. En caso que el usuario logueado sea un administrador, en la parte inferior de cada pantalla aparece un link que permite acceder a la página de baja de preguntas.

Captura de pantalla de faq.listarPreguntas.php

faq.listarRespuestas.php

El listador de respuestas muestra ordenadas por ranking las respuestas a una pregunta seleccionada. Utiliza el paginador, al igual que el listador de preguntas, y también lo hace de a dos respuestas por pantalla. Muestra la información del usuario que genero la respuesta ( foto y nombre ), la respuesta y el ranking de la misma. Si la respuesta todavía no fue evaluada por el autor de la pregunta, muestra un mensaje que indica que no hay ranking para esa pregunta. Si el usuario que esta accediendo a la lista de respuestas es el mismo que formulo la pregunta y todavía no calificó a la misma, aparece un botón que lo redirecciona a la página de calificación de preguntas.

Captura de pantalla de faq.listarRespuestas.php

faq.ingresarPregunta.php

Desde el menú de la aplicación se puede acceder a esta página. En caso de que el usuario logueado tenga los créditos para hacerlo, podrá formular una pregunta que se publicara en la lista de preguntas ( faq.listarPreguntas.php ). Si el usuario no contara con los créditos suficientes, un warning lo alertara y le sugerirá que pida créditos al administrador del sistema. El usuario podrá ingresas desde esta pantalla tantas preguntas como créditos tenga.

Captura de pantalla de faq.ingresarPregunta.php

faq.responderPregunta.php

Desde el listado de preguntas se puede acceder a la pantalla que permite responder la pregunta. La misma muestra en el encabezado la pregunta que se esta respondiendo. Al lograr un ingreso satisfactorio de una respuesta, aparece un mensaje que avisa al usuario que su respuesta fue dada de alta en el sistema. Esta respuesta quedara pendiente de calificar por parte del autor de la pregunta que se esta respondiendo. Cualquier usuario logueado en el sistema puede acceder a responder preguntas. Únicamente no podrá responder una pregunta el autor de la misma

Captura de pantalla de faq.responderPregunta.php

faq.calificarRespuesta.php

La pantalla de calificación de respuesta solo puede ser accedida por el autor de la pregunta que tiene dicho ítem como respuesta. En esta pantalla, desde un combo, se puede elegir alguna de las cuatro categorías de calificación ( a cada una le corresponde un puntaje ). Inmediatamente se le acreditara a quien pregunta tantos créditos como puntos valgan la calificación de la respuesta. La respuesta solo podrá ser calificada una vez, luego de ser calificada, desaparecerá el botón que permite acceder a la pantalla para ese ítem.

Captura de pantalla de faq.calificarRespuesta.php

faq.desactivarPregunta.php

Desde esta pantalla, los administradores pueden dar de baja una pregunta. De todas formas la pregunta seguirá existiendo, con sus respuestas, pero no sera mostrada mas por el listador. Para acceder a la pantalla de baja de preguntas, se debe hacer click sobre el link que aparece en la página listarPreguntas.php. Este link solo aparece en caso que el usuario logueado tenga privilegios de administrador.

Captura de pantalla de faq.desactivarPregunta.php

Modulo de Info

El siguiente menu es el que se le presenta al asesor o socio para interactuar con el modulo de info.

Captura de pantalla de info.menu.asesor.jpg

El siguiente menu es el que se le presenta al administrador para interactuar con el modulo de info.

Captura de pantalla de info.menu.administrador.jpg

info.ingresarTemas.php

Desde aquí el usuario puede ingresar nuevos temas. (Solo pueden acceder los usuarios administradores) Los campos a completar son: Tema: Nombre del Tema. Icono: Cada Tema tiene un ícono asociado. Descripción: Cada Tema tiene un descripción asociada. Una vez completados se procede a "Guardar Tema". Se mostrará un mensaje indicando si la operación fue exitosa o no. Se mantienen los datos en los campos, y se permite la modificación de lo recien insertado. De retirarse de la página, o presionar sobre "Nuevo Tema" se pierde la posibilidad de modificar.

Captura de pantalla de info.ingresarTemas.php

info.listarTemas.php

Desde aquí el usuario puede ver la lista de temas disponibles para ingresar informaciones. La página se muestra paginada de a 5 temas por vez, se puede acceder a las diferentes páginas navegando el menu superior. (La página actual queda marcada en negrita).

Captura de pantalla de info.listarTemas.php

info.ingresarInfo.php

Desde aquí el usuario puede ingresar nuevas informaciones. Los campos a completar son:

Una vez completados se procede a "Guardar Información" Se mostrará un mensaje indicando si la operación fue exitosa o no. Se mantienen los datos en los campos, y se permite la modificación de lo recién insertado. De retirarse de la página, o presionar sobre "Nuevo Información" se pierde la posibilidad de modificar.

Captura de pantalla de info.ingresarInfo.php

info.listarInfo.php

Desde aquí el usuario puede ver la lista de informaciones disponibles. La página se muestra paginada de a 5 informaciones por vez, se puede acceder a las diferentes páginas navegando el menu superior. (La página actual queda marcada en negrita). Se despliega el icono del tema al cual pertenece, así como la imagen del usuario que cargó dicha información. A continuación se muestra la URL correspondiente, con su comentario. Por último el ranking ( que es la cantidad de accesos que hubo a dicha URL ) y se puede acceder finalmente a la sección de comentarios sobre la información haciendo click en "Ver Comentarios". Esta sección está disponible ordenada por ranking de acceso a la URL, o, eligiendo en "Ver Tema", se listan las informaciones del tema, y luego dentro de ahi las mismas ordenadas por ranking.

Captura de pantalla de info.listarInfo.php

info.listarComentarios.php

Esta página es accedida desde "Ver Comentarios" que se encuentra disponible para cada información presente. La misma muestra los comentarios agregados hasta el momento. La página se muestra paginada de a 5 temas por vez, se puede acceder a las diferentes páginas navegando el menu superior. (La página actual queda marcada en negrita). Se presenta el ícono del tema al cual pertenece la información, y por supuesto el comentario en cuestión. Luego se presenta el ícono y apellido del usuario que cargó el comentario (si el usuario que cargó el comentario es el mismo que cargó la información entonces se muestra solamente el apellido), y finalmente se muestra el comentario. Se puede acceder a cargar un nuevo comentario desde "Ingresar Comentario" (esto solo puede ser realizado por los asesores o socios.

Captura de pantalla de info.listarComentarios.php

info.ingresarComentario.php

Desde aquí el usuario puede ingresar nuevos comentarios a informaciones existentes. El campo a completar es:

Una vez completados se procede a "Guardar Comentario". Se mostrará un mensaje indicando si la operacion fue exitosa o no. Se mantienen los datos en los campos, y se permite la modificación de lo recién insertado. De retirarse de la página, o presionar sobre "Nuevo Comentario" se pierde la posibilidad de modificar.

Captura de pantalla de info.ingresarComentario.php

info.mencionEspecial.php

En esta pagina se lista el o los usuarios que hayan publicado informaciones con alto ranking. Se suma para cada usuario los rankings de las páginas publicadas, y luego se muestran aquellos que con el ranking mas alto ( se muestra mas de uno cuando el ranking es el mismo para varios usuarios ).

Captura de pantalla de info.mencionEspecial.php

Desarrollo

AGREGAR DESCRIPCION DE LO HECHO!!!!

Formato de Archivos

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.

int_2005.txt

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:

  1. Número de registro
  2. Nombre del usuario
  3. Apellido del usuario

ase_2005.txt

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:

  1. Código (formato A+año+número correlativo)
  2. Nombre del usuario
  3. Apellido del usuario

users.csv

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:

  1. Número de registro/Código (dependiendo de si es socio o asesor)
  2. Contraseña del usuario
  3. Dirección de correo electrónico del usuario

admin.txt

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.

creditos.*.csv

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:

  1. Timestamp con la fecha en la que se creó la entrada
  2. Cantidad de créditos que tiene el socio
  3. Cantidad de respuestas con ranking 2 o más que le falta para obtener los 5 créditos extra
  4. Cantidad de días que lleva sin preguntar

Este archivo se actualiza en etapas distintas (siempre que se actualiza, se agrega un nuevo registro con los nuevos datos y se actualiza el índice). 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 preguntar 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. Se suma a CREDITOS la calificación de dicha respuesta y si la respuesta está calificada con un valor igual o superior a 2 se suma uno al campo 3 (BONUS) 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 BONUS y se suma 5 CREDITOS.

log.*.csv

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:

  1. Timestamp con la fecha en la que se creó la entrada
  2. Descripción de la acción realizada

preguntas.csv

Este archivo tiene formato CSV. y se crea en tiempo de ejecución. A medida que se van dando de alta las preguntas, se agrega una línea al final. Se guarda toda la información necesaria para poder operar con las preguntas. Cuando una pregunta se da de baja, no es eliminada de este archivo. De esta forma, queda un registro histórico de las preguntas que fueron dadas de alta en el sistema. Los campos del archivo son:

  1. Id de la pregunta
  2. Id del usuario autor de la pregunta
  3. Timestamp con la fecha de creación de la pregunta
  4. Texto de la pregunta

respuestas.csv

Este archivo tiene formato CSV. y se crea en tiempo de ejecución. Cuando se da de alta una respuesta a una pregunta, se da de alta un nuevo registro en este archivo. El id de las respuestas es simplemente el orden en el que fueron loguadas. Se guarda información de la pregunta que se esta respondiendo para que sea mas sencilla la operatoria con las respuestas, y pueda trabajar de manera independiente a las preguntas. Los campos del archivo son:

  1. Id de la pregunta que se esta respondiendo
  2. Id del usuario autor de la pregunta que se esta respondiendo
  3. Id del usuario autor de la respuesta
  4. Timestamp con la fecha de creación de la respuesta
  5. Texto de la respuesta

calificacion.csv

Este archivo tiene formato CSV. y se crea en tiempo de ejecución. Cuando un usuario autor de una pregunta califica las respuestas a dicha pregunta, se da de alta un registro en este archivo. Luego, se asociara al calificacion a la respuesta correspondiente. Si una respuesta no aparece en este archivo, es que todavía no fue calificada. Los campos del archivo son:

  1. Id de la respuesta calificada
  2. Puntaje

desactivadas.csv

Este archivo tiene formato CSV. y se crea en tiempo de ejecución. Cuando un administrador da de baja una pregunta, simplemente se ingresa el id de la misma en este archivo. A partir de ese momento, el listador la ignorará al momento de mostrar las preguntas por pantalla. Los campos del archivo son:

  1. Id de la pregunta
  2. Timestamp con la fecha de baja

temas.csv

Este archivo tiene formato CSV. Se va cargando por los administradores durante la ejecución del sistema. Los campos del archivo son:

  1. ID que identifica unívocamente a los temas.
  2. Usuario que cargo el mismo.
  3. Nombre del mismo.
  4. Ruta al icono del mismo.
  5. Breve descripción.
  6. Fecha de alta/modificación.

infos.csv

Este archivo tiene formato CSV. Se va cargando por los asesores/socios durante la ejecución del sistema. Los campos del archivo son:

  1. ID que identifica univocamente a las informaciones.
  2. ID del tema al cual pertenece.
  3. URL (link) a la información otorgada.
  4. Usuario que cargo el mismo.
  5. Breve descripción.
  6. Cantidad de visitas a la URL (link) proporcionada.
  7. Fecha de alta/modificación.

comentarios.*.csv

Este archivo tiene formato CSV. Se va cargando por los asesores/socios durante la ejecución del sistema. Los campos del archivo son:

  1. ID que identifica univocamente a las informaciones.
  2. Usuario que cargó el mismo.
  3. Comentario.
  4. Fecha de alta/modificación.

Herramientas de desarrollo

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.

Leandro Lucarella

Navegador

Mozilla Firefox, w3m

Editor de texto

VIM

Validador

Herramientas de w3c: tidy y el servicio de validación online (http://validator.w3.org/)

Herramientas de diseño de HTML

Ninguna

Jonathan Schein

Navegador

Mozilla Firefox, Internet Explorer 6

Editor de texto

HTML-Kit, Notepad

Validador

Herramientas de w3c: tidy y el servicio de validación online (http://validator.w3.org/)

Herramientas de diseño de HTML

Ninguna

Sebastián Arena

Navegador

Mozilla Firefox, Internet Explorer 6

Editor de texto

EmEditor

Validador

Herramientas de w3c: tidy y el servicio de validación online (http://validator.w3.org/)

Herramientas de diseño de HTML

Ninguna

Configuración del servidor

El servidor no debe ser configurado de ninguna forma en particular, sólo debe tener activado el módulo de PHP y la extensión user_dir de apache si va a ser instalado en el directorio public_html de un usuario. El resto de las configuración se realizan desde el mismo sistema, por lo que no es necesario hacer modificaciones ni a la configuración del apache ni a la del PHP.

Si no estuviera configurado el módulo user_dir, habría que agregar al apache las siguiente líneas:

LoadModule userdir_module libexec/mod_userdir.so
AddModule mod_userdir.c
UserDir public_html
        

Si no estuviera configurado el módulo de php, habría que agregar al apache las siguiente líneas:

LoadModule php4_module libexec/libphp4.so
AddModule mod_php4.c
AddType application/x-httpd-php .php
        

El archivo php.ini no necesita modificaciones a los valores por omisión que trae cuando se instala.

Instalación

Sólo debe ejecutar el script ./install.sh que se encuentra en el disquette. El script crea el directorio public_html en el directorio del usuario actual (si no existiese) y copia los archivos necesarios, con los permisos pertinentes para que el apache pueda leer o escribir según corresponda. Una vez instalado, el sistema se puede acceder en http://localhost/~sisdis10/ (si se instala con el usuario sisdis10, por supuesto).

Modo de uso

COMPLETAR!!! Mucho de esto por ahora está en la descripción del diseño... Habría que hacer una descripción de un circuito completo que vaya por toas las páginas...