Extendiendo los procesos de automatización

Para automatizar los procesos de una aplicación web lo mejor es usar un esqueleto y escribir código a partir de él. Aunque muchas veces el problema es como se dice en todos sitios, la curva de aprendizaje de un método.
Con cualquiera de las formas de pensar a la hora de hablar de programación encontramos similitudes porque los humanos pensamos de la misma manera XD ¿Qué quiero decir con esto? Pues ,pasa lo mismo que con las ideas que se tienen implementando capas de redes, cuando a alguien se le ocurre una idea para proteger,enviar o recibir, encriptar,…lo que sea!, seguramente se le ha ocurrido a otra persona antes, y si no se le ha ocurrido se le ocurrirá pronto 🙂 y me explico, a mi se me ocurren ideas que me parecen muy buenas y dada mi experiencia con programación orientada a objetos para programar páginas web considero que debo compartir lo que he aprendido y he de mezclarlo con los conocimientos ya adquiridos y puestos en la red con libertad de uso…lo que a mi se me ha ocurrido se le puede haber ocurrido a cualquiera otra persona en cualquier otro momento, sin embargo lo voy a publicar, para que cualquier otra persona no tenga que implementar lo que en mi caso, con más experiencia, me cuesta menos expresar en líneas de código. El resultado es un conjunto de clases llamadas librerías que están muy organizadas y disponen de un sistema de comunicación entre sí que permite seguir las normas de la programación estructurada fácilmente gracias a la documentación asociada a estas librerías asi como seguir los ejemplos propuestos.
La fases de los procesos de automatización de un Sistema Gestor de Contenidos fueron expuestas en anteriores artículos de este mismo blog. Lo que ahora es más interesante es preguntarse de qué forma se puede implementar un SGC para que no se convierta en la desconfianza de Joomla en cuanto a sus módulos y la desorganización entre versión tras versión que hace chocar implementaciones entre si e imposible reutilizar código por joven que éste parezca…y la respuesta es el generador de código, que mantiene la sincronización actualizada de los procesos de automatización, en otras palabras, se encarga, una vez actualizado, de compilar los paquetes de módulos contenidos en uno/s cartucho/s para generar una salida adaptada a la versión más reciente, a partir de ahi el código final puede surgir cambios pero sólo si no se está usando en modo de programación orientada a aspectos, esto permite realizar cambios directamente en el cartucho y obtener la versión actualizada del framework en ese momento.

Las primeras pruebas las estoy utilizando para proyectos simples y en los que me baso para ir mejorando poco a poco.

Asi es como se puede extender un proceso de automatización sin riesgos.

Ahora estoy aprendiendo un poco de ASP, y creo que me va a resultar difícil encontrar un SGC de código libre en condiciones…:P

Resultados de la encuesta sobre el generador de código fuente

Bueno, aquí están los resultados de la encuesta sobre el generador de código fuente.

La gráfica que sale es algo parecido a esto:

Aclaro las leyendas:

  • Verde claro: Aplicación con administración
  • Morado: Sólo esqueleto de aplicación
  • Naranja claro: Configurar campos en los modelos con XML
  • Rojo: Interfaz para configurar
  • Azul oscuro (arriba): Usarlo sólo para empezar como base entre PHP y el SDK
  • Verde olivo: Usar clases propias con ayuda
  • Naranja oscuro: Usarlo como CMS (Gestor de contenidos)
  • Azul claro (abajo): Generador con interfaz web

Está claro que el generador necesita que se ponga todo su empeño en generar clases simples que le sirvan al programador para empezar con el framework, añadiendo comentarios y documentación con enlaces a los manuales y ejemplos para que “pique” su propio código con total libertad.

Hay un nuevo vídeo del generador, estoy formateándolo para que no ocupe tanto….

Administrador mySQL en PHP/GTK

He avanzado con el editor PHP/GTK del generador de aplicaciones de zen php, en esta ocasión he puesto a punto el administrador de bases de datos de mySQL.
Para verlo funcionar sólo hay que crear un fichero XML donde se especifique una aplicación y la parte de configuración referente a la base de datos.

Un ejemplo se puede ver en el svn.

<?xml version=”1.0″ encoding=”utf-8″?>
<!DOCTYPE cartucho SYSTEM “./zen_cartucho.dtd”>
<cartucho>
<previsualizacion>portal/previo.jpg</previsualizacion>
<aplicacion nombre=”Portal”>
<configuracion>
<basedatos servidor=”localhost” usuario=”root” contrasena=”” nombre=”” tipo=”mysql”>
Base de datos para el Portal
</basedatos>
</configuracion>
</aplicacion>
</
cartucho>
A continuación una captura del administrador mysql para PHP/GTK embebido en el editor del generador de aplicaciones.

Imagen del generador con el administrador mysql en PHP/GTK

El XML del cartucho define las base de datos, que se cargan en el generador PHP/GTK y se muestra la interfaz de administración mysql, donde se crea una base de datos llamada zenphp y una tabla en ella de usuarios con una tupla, después se hace la selección de todas las tuplas y se muestra la información…

Progreso del generador de aplicaciones PHP/GTK

Hoy he estado avanzando en el trabajo con el generador de aplicaciones PHP/GTK de zenphp, estoy aprendiendo un montón de GTK, bueno como dos imágenes valen más que dos mil palabras, pasamos a las capturas mejor 🙂

Otra imagen del entorno inicial:

No hagais mucho caso a las capturas,son los primeros avances del diseño del configurador de modelos y parámetros del generador a partir de un XML…

La última versión del generador está en el directorio trunk/zenphp/generador/gtk del SVN de la Forja:
svn checkout https://forja.rediris.es/svn/csl2-zenphp/trunk zenphp
y recordar que se carga con una orden del tipo:
php zen_generador_gtk.php
Ahora mismo estoy desarrollando la parte en que se carga el fichero XML con todas las opciones y se interpretan en la interfaz de usuario para ser editadas, de forma que se puede utilizar el entorno gráfico para con varios clicks generar una aplicación web ( sencillamente ) compleja con conexión a la base de datos.
Hay editor para ver las bases de datos mysql, que encontré en la red y lo he adaptado al generador porque me parece muy útil.
Además he incluido un visor de objetos de PHP-GT de kksou

¿Cómo funciona?

Continue reading

Compilador y generador terminados

He dejado de estudiar Matemáticas por un día justo la semana del examen…,pero no podía dejar de pensar en que podría acabar el compilador basado en el Paradigma orientado a Aspectos antes de esta semana!…sin él, el generador no es nadie 😉

Me ha llevado mucho porque el analizador sintáctico me estaba dando problemas y no sabía por qué no me añadía los puntos de corte automáticos a la clase del fichero original ,al final ,después de mucho depurar resultó que sólo era un constructor mal declarado…¡qué típico! jaja 😀

He añadido un documento explicando la idea y acabo de terminar el compilador con “pica código” incluido 😀 ,si,si….pica código…por tí, jejeje…, ahora los proyectos web se puede crear con un par de definiciones en XML (XAD) e incluso montar un repositorio de clases,módulos y funcionalidades con todo lo que una web necesita.

Por ejemplo si necesitáramos una cesta de la compra bastaría con descargarnos, como en CakePHP, el módulo, sin embargo aquí se añaden muchas más funcionalidades porque se permite cambiar (antes de generar) el código,todo lo que tenga nuestro proyecto de “extra”, i.e.: campos, funciones que necesitemos en cualquier lenguaje,etc…

Todo se pueden añadir en el XML como definiciones y se le pasa a zenphp para que genere las clases del proyecto, que cargará los orígenes de las definiciones y creará los ficheros.

Dejo una captura del compilador y generador funcionando.

Eso es todo por hoy, si quieres saber puedes leer más sobre Programación Orientada a Aspectos.