martes, 27 de octubre de 2009

Automatic Pattern Generator, lanzamiento del proyecto colaborativo

En una nota anterior, comentaba una idea para presentar en los Collaborative Projects 2.0, de hacer un generador de patterns basado en código que ya existe en una base de conocimiento.

Por suerte en la nota había dicho que no lo iba a hacer... lo que demuestra una vez más que lo único constante es el cambio. Con Enrique queríamos presentar algo, y decidimos presentar este proyecto.

Desde ya damos la bienvenida a todos los que quieran sumarse al proyecto. Se necesitan desarrolladores, documentadores, testers, beta testers, etc. También se aceptan ideas y sugerencias.

El primer paso ahora va a ser definir el alcance y hacer una primera iteración, con una versión que genere un pattern a partir de una instancia compuesta por un único procedimiento, lo más sencillo posible. Cuando eso esté pronto, vamos a tener más claro el panorama y podremos repartir tareas entre los interesados.

En breve estaremos publicando el proyecto en el Wiki de la comunidad.

martes, 20 de octubre de 2009

Neptuno.net Open Source

Concepto acaba de hacer público el proyecto Neptuno.net, que consiste en una aplicación que permite ver en un árbol de llamadas los objetos que hacen commit, de forma de poder buscar problemas de integridad transaccional.

Hay una descripción un poco más amplia en esta otra nota del blog.

El proyecto está en Assembla, se puede obtener mediante SVN de http://code.assembla.com/neptuno_net.

Si alguien lo quiere probar, tiene que bajar el proyecto y hacer un Build. Yo lo tengo funcionando con Visual C# 2008 Express, con el .Net Framework 3.5.

La idea es colaborar con otro proyecto en el marco de los Collaborative Proyects 2.0, planteado por Edgar Jimenez Demestri y titulado "Analizador de UTLs". Espero que Neptuno.net sirva como punto de partida.

Quienes bajen el proyecto, tengan en cuenta que era un desarrollo interno, por lo que no se caracteriza por la prolijidad...

Si alguien le quiere hacer alguna mejora, será bienvenida. Por el momento el único que puede hacer commits en este proyecto soy yo, así que si alguien quiere colaborar me debería mandar el código modificado para que yo lo suba.

Actualización:  Me olvidé de decir que solo funciona con GeneXus9.0...

jueves, 8 de octubre de 2009

Automatic Pattern Generator, idea para los proyectos colaborativos

Motivación
Una de las cosas que veo que pasa bastante seguido, es que hacemos cosas que resultan repetitivas, pero no lo suficiente como para desarrollar un pattern que las haga más automáticas.

Por ejemplo, ahora estoy trabajando en una aplicación para transferir datos del sistema a la base de datos local de un PDA. Son varias cosas las que hay que transferir, y todos los programas son iguales:
  • una pantalla de selcción con filtros, paginado y un link en la grilla para agregar el elemento a una tabla intermedia que luego va al PDA
  • un web panel para ver los datos agregados
  • un web panel y un procedimiento para agregar los datos
  • un web panel y un procedimiento para borrar algún dato que se agregó.
Ahora lo estoy haciendo a mano, entro a cada uno de los 6 objetos de una de las "instancias", le doy Save as..., le pongo el nombre adecuado y le cambio las partes que son variables.

Es claramente un pattern. Pero entonces, ¿por que no desarrollo uno que se que me va a hacer la vida más fácil? Porque desarrollar un pattern nuevo es muy complicado. Porque el tiempo que me llevaría no justifica la inversión, porque haciéndolo a mano lo hago mucho más rápido para las 4 o 5 instancias que necesito ahora.

La idea
La idea sería entonces hacer una herramienta que tome varias instancias de un pattern (que todavía no existe, en realidad sería de un proyecto de pattern), saque factor común, y genere los XMLs, DKTs y demás cosas que se precisan para crear el pattern.

En el ejemplo anterior, tomaría las 2 o3 "instancias" que ya tengo hechas, cada una compuesta por 6 objetos, le diría a la herramienta como son las correspondencias (que objeto de cada instancia corresponde a que objeto de la otra, se podría hacer con expresiones regulares), y el programa dejaría fijas las cosas que son comunes y pondría como variables las cosas que están distintas.

No es trivial, pero pienso que se puede lograr algo bastante interesante.

El proyecto colaborativo
Como comentaba en otra nota, no tengo tiempo para liderar un proyecto, así que no lo voy a hacer. Si a alguien le interesa presentarlo, me anoto para definir el alcance, la arquitectura y colaborar en el desarrollo.

Entonces, lo que se necesitaría es:
  • Alguien que lidere el proyecto, debería definir el alcance (junto conmigo), las tareas a realizar y coordinar el equipo de desarrollo.
  • Uno o más desarrolladores, porque si bien yo podría participar, no voy a poder hacer todo el desarrollo.
  • Uno o más beta testers.
Si a alguien le interesa, le ve potencial, le parece que es factible, y quiere participar, que me avise. Así vemos si el proyecto es viable o no.

lunes, 5 de octubre de 2009

Tema por defecto en un modelo GeneXus 9.0


En un modelo de una KB GeneXus 9.0 (upgrade 4) quería cambiar el tema por defecto... Esto que parece trivial fue más complicado de lo que pensaba.

Lo primero que hice fue ir a las propiedades del modelo, pero ahí no hay nada.

En el modelo de diseño hay una propiedad con el tema, pero lo cambié y no me cambió el tema por defecto en el modelo de prototipo.

Después de darle varias vueltas sin encontrar nada, busqué con el KBQuery en las propiedades del modelo, y encontré que ahí sí aparecía...

Al final, encontré que la propiedad está en el archivo model.ini.

Debería ser más fácil de cambiar, tendría que estar en las propiedades del modelo.