Wednesday, March 24, 2010

Avances del domingo

Saludos a todos =D

Algo tarde pero mejor que nunca. En esta ocasión vengo a contarles los avances y percances que tuvimos el domingo pasado. Nos reunimos Ana y yo(Gianfranco) para poder ver cómo cargar la información en la base de datos.

El problema que teníamos y que nos contó otro equipo, era que si creabas la JTable con los valores entonces ya no se podía modificar. Luego de experimentar y buscar mucho entendimos que para poder hacer funcionar la JTable teníamos que implementar el AbstractTableModel. Para lograrlo tuvimos que usar un proxy. Después el otro detalle que solucionamos fue convertir un mapa a un arreglo de 2 dimensiones que es lo que necesita el AbstractTableModel.

Una vez logrado eso generalizamos todo en una función que recibe los records(de una búsqueda por ejemplo) que se convierten a un modelo de ahí se cargan en la JTable. Al principio suponíamos que era algo muy difícil, pero una vez que funcionaba nos dimos cuenta que era fácil. ¡YAY!

Otro de los detalles que en este momento estamos solucionando y que no funciona tan bien, es el hecho que queremos poner un identificador a los registros para que a la hora de borrarlos se fácil.

Sunday, March 21, 2010

Cambio en el diseño y RandomAccessFile


Hola a todos

Empezare por detallarles un poco nuestro diseño actual. En esta parte lo que teníamos como ya dijimos en otro post era un Cliente ligero que se comunicaba con el servidor el cual sera pesado. En el servidor se hacia la parte de Networking y de Comunicación a la base de datos. El problema es que todas estas funciones estaban en el modulo del servidor, lo cual hace que pierda cohesión

El viernes tuvimos una pequeña junta, donde llegamos a la solución que debíamos separar esto en dos módulos, es decir el servidor el cual es el que se encargara de la parte de networking y probablemente de locking después y la parte del manejador de base de datos. Estos cambios se reflejaran mas tarde, ya que hay que hacer algunas modificaciones para que puedan ser llamados desde el server y no directamente.

En este habíamos tenido un pequeño problema y es que pensábamos que no podíamos editar directamente el archivo donde esta la base de datos. Esto es por que nuestra elección de herramientas estaba mal, ya que intentábamos usar un DataOutputStream, ya que muchas cosas las estamos manejando a nivel Byte. Para lograr realizar nuestro objetivo investigando con diversas personas y en diversos lugares, descubrimos que lo que realmente necesitábamos era un RandomAccessFile, la cual es una clase que tiene métodos como seek(long v) que te permite poner un apuntador en el archivo y que empiece a escribir o leer desde ahí Así que todos los que en los foros decían que con Java(y por lo consiguiente con Clojure) para poder modificar una parte de un archivo, tenias que reescribirlo todo, creo que esta solución es algo mas interesante en nuestro caso. Claro que no aplica si tienes que usar delimitadores para poder leer lineas, ya que las lineas generalmente son de diferente tamaño, pero cuando todo esta bien delimitado, RandomAccessFile es bastante útil.

La liga al API de Java donde se encuentra la descripción de RandomAccessFile: http://java.sun.com/javase/6/docs/api/java/io/RandomAccessFile.html


Aclaraciones y presentación


Hola a todos

Tal vez sea un poco tarde para esto, considerando cuanto tiempo llevamos trabajando en el proyecto, pero mas vale tarde que nunca. Nosotros somos el equipo dev-it, pero eso no dice mucho. ¿Exactamente qué hacemos?. Desarrollamos un proyecto, una aplicación en un escenario ficticio donde sirve para hacer preservaciones en un hotel, la aplicación se llama URLyBird. Es ficticio ya que es un proyecto académico, desarrollado en el ITESM-CEM para la clase de proyecto de desarrollo de software.

Y que tiene de especial que necesite un blog el proyecto. Pues muchas cosas, la primera es el lenguaje en el cual estamos desarrollando, siendo este Clojure, un lenguaje de programación funcional que trabaja sobre la maquina virtual de Java. Es un lenguaje muy interesante a consideración mía en desarrollo, pero que tiene mucho potencial. Tenemos un blog ya que puede que encontremos alguna solución ingeniosa y nos gustaría que el conocimiento que obtengamos se pueda compartir. También es interesante el observar como se desarrolla un proyecto, que aunque esta limitado un poco por ser de carácter académico, tiene los elementos necesarios para ser completamente un proyecto de desarrollo de software y personalmente me parece interesante ver los pasos que se realizan, así como los pensamientos del equipo que esta desarrollando.

De este blog pueden esperar pedazos de código que consideremos interesantes en clojure, anecdotas de como vamos desarrollando el proyecto. Es importante resaltar que el código esta disponible a todo el que quiera revisarlo, ya que le puede ser útil en algún momento. Si desean hacer esto, lo único que tienen que hacer es visitar nuestra pagina en Google Code, ademas de respetar la licencia GPL con la que estamos liberando el proyecto.

La pagina de Google code: http://code.google.com/p/dev-it/

Se pueden preguntar quienes somos y por que dev-it, por mi parte me presento, soy Jorge, aunque la mayoría me dice Soren. Aunque compartimos todo el código y intentamos todos revisar el trabajo de los demás, para seguir con la practica de desarrollo ágil de que no solo una persona sea la que tenga el control sobre cierto código, estoy encargado principalmente de la parte del servidor, la conexion con la base de datos y el networking que es mi área favorita, ademas de hacer una parte del diseño principal, el cual comentare en otro post. Elegí trabajar con esas áreas, ya que personalmente el desarrollo de interfaces gráficas se me hace complicado en demasía, ademas de que no es un área que me atraiga mucho. En el caso de dev-it, tiene un significado mas serio, derivado de develop it, o sea desarrollarlo y el mas comico que seria las siglas de: la Dama, el Extranjero y el Vagabundo, siendo yo el Vagabundo(lo dejo a la imaginación del lector el porque).

En cuanto al blog, la razón por la que esta en español es debido a que creemos que mucha información se genera para las personas que hablan el idioma ingles y muchas personas que solamente hablan español se pueden perder de información que es interesante difundir y aprender, ademas de que les podría interesar o ser útil. El código esta en ingles por especificaciones, pero es totalmente entendible con un poco de conocimiento de Clojure. Esperamos que encuentren información útil.

Soren out.

Monday, March 15, 2010

¡Una piedrita en el desarrollo!

Para el avance del proyecto se ha realizado un mapa general de cómo quedaría nuestra aplicación, por el momento se está definiendo la parte del cliente y del servidor, el servidor será pesado por lo que se encargará de la parte fuerte del sistema, permitiendo al usuario ser ligero y se facilite su distribución. Del lado del servidor se implementarán métodos de crear, modificar y eliminar; también se está haciendo una búsqueda para los records.

Pero, ¡ups! hemos encontrado una piedra mas en el camino, al parecer no se puede modificar un archivo en la base de datos, por lo que tendremos que reescribirla cada vez que modifiquemos la información, esto nos añade tiempo extra a la programación y un poco más de esfuerzo para el método modificar y borrar.

Estamos en la búsqueda de una solución óptima o al menos una más sencilla.

Equipo Dev-it


Tuesday, March 2, 2010

Licencia e implicaciones filosóficas

La razón por la cual elegimos una licencia GNU, es debido a que está en nuestro interés que el código que realicemos siempre esté disponible a quien lo quiera consultar. Aun cuando existiera alguna aplicación que implementara parte de lo que estamos realizando, no nos agradaría que ésto se convirtiera en código propietario como se puede hacer con una licencia BSD.

Creemos que en especial en lenguajes como clojure, que se están desarrollando y obteniendo seguidores (ya que aun probablemente no sea un lenguaje bien establecido), es importante tener programas que sirvan de ejemplo. Que se pueda mostrar las capacidades del lenguaje y que mejor que con un programa que incluya su código así como su desarrollo. Esto es para que los nuevos programadores en este lenguaje se puedan beneficiar de ejemplos ya hechos y probados como pretendemos que sea nuestro proyecto. Además dar la posibilidad de correrlo cuando y donde sea si le es útil a alguien.

Es por eso que preferimos la licencia GNU, aun en su característica vírica, ya que esto asegura que la permanencia al acceso de la información. Otra razón un poco menos importante es que al tener una licencia GNU damos nuestro apoyo a la filosofía del software libre, que es la filosofía que implementan GNU y la Free Software Fundation (http://www.gnu.org/philosophy/philosophy.html). Esto da las libertades de correr el software, estudiarlo a fondo (obteniendo el código fuente), además de que se pueda distribuir libremente el programa, tanto el original como modificaciones hechas por otros.

Equipo Dev-It