sábado, 15 de marzo de 2008

Contenido y Forma

En todo proyectos, tanto en grandes como pequeños, es necesario dividir el trabajo en sectores para una mejor distribución de los recursos y organización del proyecto. Sin embargo, esto es particularmente difícil cuando estas en la etapa de inicio, sobre todo si el grupo de desarrolladores es pequeño y no se puede dividir el trabajo adecuadamente.

Una de las formas modernas de dividir una aplicación en sectores es a través del Modelo Vista Controlador que separa la aplicación en procesamiento de datos, interfaz de usuario y lógica del sistema. Este modelo es bastante utilizado en la creación de sitios y aplicaciones web, que es el área en la que más estoy involucrado últimamente, y por supuesto esta aplicado en mayor o menor medida en proyectos como MoonDragon.

Uno de los errores típicos de un programador es prestar demasiada atención al contenido y poca a la forma, y estos errores se reflejan en situaciones que a veces no nos imaginamos. Al empezar a trabajar en MoonDragon solamente considere cuales eran las necesidades de los programadores y oriente el proyecto a suplir esas necesidades, sin embargo no tome en cuenta al diseñador gráfico y no le proporcione ninguna herramienta.

La organización de un proyecto y las estructuras establecidas para el software son las herramientas que nos ayudan a considerar esos detalles que se salen de nuestra visión del problema. Incluso con estas herramientas, muchas veces nos enfretaremos con un factor que no fue considerado en el diseño inicial, y nuestra capacidad de adaptarnos a las circunstancias sera el factor que decida el éxito del sistema. Hay que recordar siempre que un software que no evoluciona, es un software que muere.

martes, 22 de enero de 2008

Universidad Don Bosco no apoya al proyecto

La universidad no ha sido capaz de darle un apoyo claro al plan de desarrollo, el proceso burocrático es demasiado largo y proyectos como MoonDragon ya estan caminando y buscando aire para respirar.

Por el momento no hay una estrategia definida para continuar con el proyecto, estoy considerando la creación de una comunidad o un proyecto parecido, pero eso necesitará tiempo con el que actualmente no cuento. Lo que si es seguro es que tratare de levantar este blog y utilizarlo para llevar actualizaciones sobre MoonDragon y cualquier proyecto futuro

A más tardar a finales de febrero espero tener lista la página web oficial de MoonDragon, para todos los que esten interesados en el proyecto.

martes, 8 de enero de 2008

MoonDragon

Moondragon es un framework desarrollo en php y un gestor de contenidos para un sitio web moderno. Actualmente se encuentra en fase inicial de desarrollo y todavía me encuentro integrando las características principales del sistema.

Desde el punto de vista técnico, el proyecto avanza lento pero seguro, tomando en cuenta la situación actual de la internet y el desarrollo web. Existen muchas tecnologías para escoger dentro del ámbito web moderno, pero hemos decidido optar por php por su versatilidad y estabilidad añadiendo algo de ajax para crear efectos más placenteros para el usuario.

Desde el punto de vista organizativo todavía tenemos mucho camino por delante. Por el momento el proyecto se encuentra alojado en sourceforge.net, sin embargo muchas de las herramientas del sitio son confusas y no permiten seguir un orden limpio en el desarrollo. Por el momento estoy considerando una organización más simple, basándonos simplemente en un lista de correo o similar, y tentativamente cambiando a otro servicio más eficiente y menos confuso, como launchpad, pero todavía falta decidir al respecto.

lunes, 1 de octubre de 2007

Esperando aprobacion

Finalmente se va a entregar el documento al decanato. Si quieres ver el documento final lo puedes ver aqui. Esperamos recibir una respuesta dentro de esta semana, confiamos en que se va a aprobar el plan y podremos empezar a organizarnos formalmente, probablemente el decanato quiera incluir sus propias ideas también.

Daré la noticia de la respuesta cuando se reciba, mientras tanto cualquiera que este interesado puede enviarme un correo y será tomado en cuenta para organizar el equipo de trabajo en cuanto recibamos el visto bueno.

martes, 18 de septiembre de 2007

Borrador del plan DesarrolladorUDB

Actualmente el plan todavía no se encuentra aprobado, pero el borrador ya se encuentra bastante avanzado y se ha discutido ampliamente con el Lic. Coto y se espera será presentado al decanato entre esta semana y la siguiente. Pueden ver el borrador actual del plan aquí.

Se tiene pensado iniciar la ejecución del plan a partir del primer ciclo del siguiente año. Por el momento se cuentan con dos proyectos piloto y un número limitado de colaboradores, pero para impulsar el plan como es debido necesitamos más gente involucrada en el proyecto.

En este momento estamos buscando miembros para el equipo de desarrollo de los respectivos pilotos. Aquellos estudiantes interesados en el desarrollo de software y que deseen hacer sus horas sociales pueden contactarme a odin.frikicoder@gmail.com. También se aceptan ideas para más proyectos pilotos, siempre y cuando estén dispuestos a respaldar sus sugerencias con apoyo como desarrolladores.

A aquellos alumnos interesados en desarrollar módulos como proyecto de cátedra para el siguiente ciclo los mantendremos informados. Por el momento los pilotos nos permiten trabajar en la materia de Programación IV, y se tiene pensado tratar de agregar un piloto para la materia de Php.

Les recuerdo que el objetivo principal de este plan va más allá de ganar horas sociales u obtener una buena nota, sino que se trata de aprender y de superarnos a nosotros mismos como desarrolladores en un ambiente similar al que encontraremos en un ambiente laboral.

Cambio de Políticas

Ha pasado ya cierto tiempo desde el inicio de este blog, y no ha progresado significativamente desde entonces.

Quiero disculparme al respecto, pero tengo que admitir que escribir tutoriales es un trabajo mucho más agotador del que cualquiera pudiera imaginar, tengo que reconocer el esfuerzo de toda la gente en toda la web que se dedica a hacer tutoriales día a día. Sin embargo, también ha fallado la propaganda que se debía de hacer al blog, y en un proyecto de este tipo el alcance es realmente importante.

Finalmente, no he podido mantener los proyectos LibTad ni Frikicoder como es debido debido a falta de tiempo y de colaboradores. Esto no me sorprende debido a que es la primera vez que inició un proyecto de esta naturaleza, y en general cualquier tipo de proyecto. Por ello he llegado a la conclusión de que ambos proyectos se cancelan tal como se conocen actualmente, esto es debido a que he preferido dedicarle todo mi tiempo y esfuerzo a un proyecto mejor organizado y con mayor apoyo dentro de mi universidad.

Por lo tanto, a partir del día de hoy, Frikicoder pasa a ser el blog extraoficial del plan DesarrolladorUDB que se esta impulsando dentro de la Universidad Don Bosco. Probablemente se seguirán publicando algunos tutoriales pero en general me dedicaré a documentar lo mejor posible todo lo relacionado con el plan para que este blog sea un punto de referencia para todo el que quiera participar.

Lamento el cambio tan drástico pero me parece que todo es para mejorar.

sábado, 11 de agosto de 2007

** TAD PILAS **

Hola a todos… primero quiero agradecer a la persona que me invito a se parte de esta vaina y espero que sirva mucho esta información, son materiales que prepare hace un par de años con la esperanza que pudieran facilitar el aprendizaje de los TAD espero que las personas que tengan contacto con estos materiales puedan utilizarlos y les facilite el estudio de los mismos, yo recopile información de muchas buenas paginas en Internet y la que mas utilice fue la “Aclamada c.conclase” excelente sitio lo recomiendo abrió para mi todo un panorama de los TAD la verdad es como mi mas grande y profunda fuente de inspiración, e hizo que el estudio de estos para mi fuera fácil y divertido porque cualquiera que antes haya trabajado con ellos no me dejara mentir en cuanto a que son un VERDADERO PASATIEMPOS y te ayudan a desarrollar la lógica de una manera sorprendente no hacen milagros... pero si te facilita el pensamiento y como que se activa la materia gris, el análisis y todas esas ondas se facilitan.

Quiero advertir que si alguien estuvo en la UDB habrán visto estos materiales pues si para aquellos que me odiaron profundamente o me apreciaron en Progra 3 y 4 “I say you Hi…. =)” son mis materiales de clases….whatever no mas palabras y la acción yo pienso estructurar la info. Así:

1- Comenzar escribiendo algunos conceptos básicos.
2- Mostrar una explicación en forma grafica.
3- Y posteriormente ejemplos de aplicación de los TAD PILA.



Obviamente esto no sera algo que este listo ya hoy...no!, sera poco a poco y obvio los comentarios son bienvenidos aunque no creo que estos cambien mi forma de pensar =) pero sientanse libres de liberar sus emociones..... ¬¬


***********************+++++++++++++++++++++++++++++++++++****************++

PILAS

Una pila es una lista ordenada de elementos en la que todas las inserciones y supresiones se realizan por un mismo extremo de la lista. A una pila se le pueden añadir y retirar nuevos nodos únicamente de su parte superior. Por esta razón, se conoce una pila como una estructura de datos LIFO por last-in, first-out, es decir último en entrar primero en salir.

Se referencia una pila mediante un apuntador al elemento superior de la misma. El miembro de enlace en el último nodo de la pila se define a NULL, para indicar que se trata de la parte inferior de la pila misma. Vea una representación gráfica de la PILA:


Note que las pilas y las listas enlazadas se representan en forma idéntica. La diferencia entre las pilas y las listas enlazadas es que en una lista enlazada las inserciones y borrados pueden ocurrir en cualquier parte, pero en una pila únicamente en su parte superior.

Las funciones primarias utilizadas para manipular una pila son push y pop. La función push crea un nuevo nodo y lo coloca en la parte superior de la pila (tope). La función pop sirve ya sea para leer o elimina un nodo de la parte superior de la pila, liberando la memoria que fue asignada al nodo retirado, y regresando el valor retirado.

Las pilas pueden implementarse con arrays pero este debe ser lo suficientemente amplio para poder contener el máximo previsto de elementos de la pila. Un extremo del array se considera el fondo de la pila, que permanecerá fijo. La implementación dinámica de una pila se hace almacenando los elementos como nodos de una lista enlazada, con la particularidad de que siempre que se quiera meter (empujar) un elemento se hará por el mismo extremo que se extraerá. Esta realización tiene la ventaja de que el tamaño se ajusta exactamente a los elementos de la pila. Sin embargo, para cada elemento es necesaria más memoria, ya que hay que guardar el campo de enlace.



Antes de analizar el código quiero advertir que en algunos casos las imagenes tienen un literal en color rojo entre parentesis o un literal encerrado en cuadrito en rojo, seguido de la imagen que contenga estos literales esta la explicación o el significado de la línea de código junto a la cual esta el literal. Es decir vean la imagen y luego la explicación para que sepan que hace cada línea de código , obviamente el programa tiene comentarios pero para entrar mas en detalle he querido colocar una explicación extra. A continuación analizaremos el código en c++ que permite implementar una pila:







Representación gráfica

La clase nodo contiene el código que permitirá crear cada nodo para implementar la pila. Cada nodo tendrá un valor (dato que se almacena dentro del nodo en la pila) y un puntero apuntando al siguiente nodo o elemento de la pila. Graficamente podriamos decir que esta clase genera una serie de cajitas que se iran uniendo unas a otras para formar la pila, estas cajitas podrian ser algo como lo siguiente:






La clase Pila encierra el código de la Pila este código permitirá crear la pila dentro de la cual se colocara cada nodo. Esta clase es la base de la pila gracias a ella sabemos donde comienza la pila y donde acaba y solamente genera un puntero que apuntará a la primera cajita de la pila si no crearamos esta clase no sabriamos donde comienza la pila. Recuerden que estamos trabajando con memoria dinamica lo que implica el necesario uso de los lindos PUNTEROS que son los responsables de decirme cual es la ubicacion de mis elementos dentro de la memoria, una memoria que no puedo controlar igual que controlo un vector, arreglo o array. Es igual pero en el vector yo digo posición 0,1,2,...n y en la memoria dinamica se asigna dinamicamente y no exactamente si mis elementos estan en la ubicación de memoria FFX001, etc. Por esto necesito saber donde comienza mi pila y luego me voy desplazando por cada nodo de la pila gracias al puntero que cada nodo tiene.




**Bueno algo enrredadito ¿no? =( al principio suena bien macabro pero despues se entiende bien esta
vaina es cuestion de practica =). Pero animo que estamos al principio conforma avancemos se facilita la
cosa. Y a medida que lo entiendan se van a sentir bien poderosos....**


...En fin graficamente la clase pila genera algo como lo siguiente:









ANALISIS DE FUNCION CONSTRUCTOR





Representación gráfica




1- El constructor inicializa el fondo de la pila, poniendo a ultimo (puntero de la pila) apuntado a NULL. Ahora ya esta creada la pila.


ANALISIS DE FUNCION PUSH (INSERTAR NUEVO NODO A LA PILA EN EL TOPE)

( A continuación se muestra la representación grafica de este segmento de código ubique el (1) y el (2) en la imagen para que sepan la presentación de estas lineas de codigo y en la respectiva explicación el significado de las mismas. )

Representación gráfica

(1) Para las pilas solo se pueden insertar elementos al tope, por lo tanto lo único que hacemos es crear el nuevo nodo pasando como parámetro el valor que guardar y pasándole el valor al que apunta en ese momento ultimo, como ultimo antes de agregar el nodo apunta a NULL entonces siguiente apuntara a NULL.
(2) Le indicamos a ultimo (puntero de la pila) que apunte al nodo que se acaba de agregar.


Bueno por hoy es todo .......continuara....