El crecimiento de Internet no sería sustensable si el mundo no intentara girar cada vez mas rápido. Esto genera la necesidad de computadores en cualquier parte y para que estos sean realmente útiles requieren los archivos usuales de los usuarios.
Este proyecto aborda el problema de la necesidad de poder contar con un sistema que permita recordar los vinculos que el usuario desee, desde cualquier parte del mundo.
Los casos de uso brindarán información fundamental para poder desarrollar el proyento.
Para realizar esta acción el usuario tipicamente tendrá que tener un username y un pasword que lo autorizarán a ingresar al sistema y con ello poder administrar sus datos.
El agregar un link debe ser una acción fácil de realizar, por lo que el usuario debe tener un formulario directo donde ingresar su nuevo link y agregarlo a la lista sin necesidad de pasar a otras vnetanas que hagan mas dificil el trabajo. El usuario deberá informar el URL de la página y si eventualmente lo desea podría colocarle un nombre identificados, una descripción y si el vinvulo lo pueden ver mas personas o solo queda en acceso para el.
Nuevamente esta acción debe ser simple para el usuario ya que corresponde al tema de especialización del sistema. Simplemente con un ícono al lado del vinculo el usuario pueda acceder a opciones concedidas por este, siendo una de ellas eliminar el vinculo del registro. Por seguridad deberá aparecer una ventana de pop-up pidiendo confirmación de la elminación.
usu | |
Administra los datos del Usuario | lin |
Administra el almacenamiento de los links | per |
lin | |
Almacena los datos de un link |
per | |
Almacena el perfil del usuario |
plog | |
Permite la manipulación de todos los datos mediante lineas de comando | usu |
Autentifica los accesos y establece el protocolo de manipulación de los datos | MD5 |
Genera el archivo que guarda los datos |
MD5 | |
Permite la encriptación por MD5 |
Como el resultado final del proyecto es una aplicación web, se separará el desarrollo de este en una parte interna, el manejo de los datos, guardarlos, procesarlos etc. Y una parte externa, la aplicación web. Dada esta situación se tendrá pruebas diferentes dependiendo del area el proyecto que se esté evaluando.
La primera prueba será crear un nuevo usuario, para esto se debe pasar como parametro a plog el nombre del usuario, su contraseña y su correo electrónico. Obiamente bajo el programa ejecutado en java, por lo que queda:
>java plog 0 1234 max a@b.c enter #043 num=565615795
El resultado 043 corresponde a usuario correctamente creado y tambien entrega el numero de autorización para la siguiente operación.
La segunda prueba será crear un nuevo link, para esto solo debemos pasar la instrucción correctamente y el sistema entregará la pocición del nuevo link dentro del array de todos los links que posee.
>java plog 2 81dc9bdb52d04dc20036dbd8313ed055 565615795 max enter #105 num=1824653799 ind=0
El resultado 105 indica link correctamente creado, ind nos indica la pocicion en el array (dato que se requerirá para editar el link). La contraseña debió ser colocada en MD5 ya que el sistema una vez que recive la clave original, por seguridad nunca mas vuelve a recivir alguna contraseña no codificada.
La tercera prueba será editar la dirección del nuevo link creado anteriormente, para esto solo debemos pasar la instrucción correctamente, esto significa indicar cual elemento del array se cambiará y el valor de la nueva dirección url.
>java plog 3 81dc9bdb52d04dc20036dbd8313ed055 1824653800 max 0 http://www.google.com enter #077
El resultado 077 indica que la autentificación a caducado, esto se debe a que el numero de operación que se ha utilizado no corresponde. Supongamos que se ha perdido el numero de operación, por lo tanto lo primero es encontrarlo, esto se resuelve volviendo a autentificar:
>java plog 1 81dc9bdb52d04dc20036dbd8313ed055 0 max enter #033 num=133210176
El resultado 033 indica autentificación correcta y nos entrega el actual numero de operación, por lo que ahora se reintenta hacer el cambio del url del link 0
>java plog 3 81dc9bdb52d04dc20036dbd8313ed055 133210176 max 0 http://www.google.com enter #106 num=-15499876
El resultado 106 indica dirección cambiada correctamente y entrega el nuevo numero de operación.
El desarrollo de esta parte del proyecto, que es la principal, no tuvo grandes complicaciones ni dificultades, ya que se tenía un manejo bastante aceptable de Java.
Para el usuario este programa no tiene ningun bug detectado, aunque actualmente no se puede respaldar que no lo tenga. Eso si, tiene un detalle para el administrador: Para guardar los datos se emplea el metodo de serialización, pero cuando java guarda los datos le agrega un numero identificador de la clase de donde vino. Si esta clase se recompila cambia el "id" y los archivos ya no pueden ser leidos por el metodo de serialización. Se debe tener cuidado al momento de realizar mejoras ya que una manipulación desprolija del codigo puede generar que tosos los usuarios pierdan sus datos. La solución que se ha encontrado a este problema es el de llevar las clases usu, lin y per como clases externas a plog y no internas como está desarrollado actualmente.
La primera prueba será acceder a la cuenta de "max", por lo que nos vamos a la ventana principal tecleamos los datos e ingresamos obteniendose el acceso. Si se prueba una contraseña incorrecta se obtendrá nuevamente la ventana de inicio con los campos en blanco nuevamente, como esta habilitado el modo buscabug aparecerá en la parte superior del frame del formulario que linea se escribió en el servidos y cual fué el resultado.
Aunque la parte princila del programa se suponía gastaría mucho mas tiempo fué al revez. Las dificultades de implementar en web un sistema de datos como el diseñado de forma interna traen muchas complicaciones inesperadas, como el pasar el numero de operación a todas las operaciones posibles que tome el usuario, y actualizarlas nuevamente luego de una nueva operación. Esto fué generando una sorprendente maraña de javascript con PHP que aunque util es poco eficiente del punto de vista programador.
Otra dificultad importante fué las grandes diferencias poco aparentes de los distintos browsers, por lo que al final se decidió implementar solo para Mozilla Firefox
Finalmente, los formularios web son bastante mas complicados de tratar que lo que parecen. En este proyecto se intento hacer que la página principal no se recargara, sino que solo se fuera modificando con los eventos. Esto es muy complicado de hacer con formularios ya que hay un conjunto de eventos no descritos al momento de realizar un submit que acarrean en una pila de soluciones parche poco elegantes mas que en soluciones reales. Por lo anterior se termino utilizando los elementos de los formularios sin emplear los formularios, asociandolos en vez de un <form> por un <div> y administrando todos los eventos a travez de funciones javascript.