Entradas

Presentacion "Build and Deploy - Concepto"

Hicimos la tercer reunión del grupo para mejorar las tareas de BUILD y DEPLOY. Me tocó exponer como hacemos dichas tareas en CONCEPTO. Espero que la próxima semana alguien mas pueda presentar como lo hacen en otras empresas. El intercambio de ideas estuvo muy bueno y creo que vamos a poder sacar algunas conclusiones interesantes. Se van delineando la necesidad de varias herramientas básicas (que deberían realizar una tarea especifica y poder correrse como MSBuild Task) y luego poder orquestarlas. Les dejo la presentación por si a alguien le interesa verlo. Build and deploy from Enrique Almeida

Bug Tracker integrado con #GeneXus Server.

Imagen
En los  últimos días he mantenido conversaciones informales con varios colegas sobre metodologías de desarrollo y evaluando que cosas parecen de mayor prioridad para profesionalizar el desarrollo de grandes aplicaciones. Un tema que surge con bastante frecuencia, es la necesidad de tener un Bug Tracker integrado en el proceso de desarrollo. Lo básico seria tener una lista de los incidentes/errores/requerimientos a implementar, poder clasificarlos, hacer seguimiento y tener referencias cruzadas entre objetos modificados y dichos incidentes. Desde mi punto de vista el lugar natural para implementar esto, es GeneXus Server . Me gustaría que junto a cada KB/versión que tengo en el GXServer pudiera tener los incidentes pendientes y cuando hago un COMMIT, poder especificar a que incidente corresponde. Esto le daría mucho mas valor al GXServer y además es que sirve de base para otras herramientas que participan en el ciclo de desarrollo, por ejemplo para poder disparar las pr...

Movimiento Pro-Respetabilidad de las tareas de Build y Deploy en la Comunidad #GeneXus

Imagen
Si miramos la historia de la forma en que desarrollamos aplicaciones con GeneXus dentro de la comunidad, vemos que dentro del ciclo de vida de las aplicaciones le hemos dado mucha importancia a las etapas de diseño y programación desde hace mucho tiempo. El motivo de ésto supongo que es porque GeneXus está pensado para ser usado en esa etapa fundamentalmente. Hace unos años, dentro de la comunidad empezamos a movernos para darle al Testing la importancia que se merece y han aparecido empresas y herramientas para encararlos. Lo miso sucedió con el tema de Seguridad, que al principio cada uno lo resolvia a su manera y luego de una formalizacion, aparecieron herramientas como el Security Scanner, el GAM , etc. La mejor señal de la evolución de estos temas dentro de la comunidad, es que ambas ameritan tracks propios de charlas en el Evento Internacional GeneXus. Otro signo es que hay personas que se dedican 100% a la prueba de las aplicaciones y hasta le gusta. Creo que es el mom...

Manejo de las interfaces de nuestros sistemas GeneXus. (Manejando cambios de WSDL)

Imagen
En los tiempos que corren, es muy común que nuestros sistemas tengan que exponer sus servicios o sus datos a través de servicios web. Si bien existen varias formas de implementarlos, en las aplicaciones GeneXus es común hacer procedimientos con la propiedad CALL PROTOCOL como SOAP o también tener objetos Transaction o DataProvider expuestos como web services . Una vez que se publican dichos servicios web y empiezan a ser usados por otras aplicaciones, si algo cambia generalmente las aplicaciones dejan de funcionar correctamente. Al desarrollar con GeneXus, el WSDL es generado en forma dinámica y es difícil lograr que el mismo no cambie o enterarse que cambio. Que cosas puede hacer que cambie el WSDL? Cambios en namespace de los procedures Cambios en namespace de SDT Cambios de nombres en SDT (incluye mayúsculas o minúsculas).  Agregar parámetros Agregar IN: y OUT: en parámetros Generar el WSDL con la URL en mayúsculas y en minúsculas Cambiar de versión de Ge...

PiensoPienso: Cual for each tiene mejor performance? #GeneXus

Imagen
En una base de datos, se tiene la tabla  Logs * LogId   (autonumber)    LogDate    LogObservation Tiene un millón de registros y una distribución uniforme en los diferentes meses. Tiene un indice de usuario por LogDate, que es del tipo DATE. Tengo el siguiente código, en un procedure GeneXus, main, command line. &ServerDate = ServerDate() &UnMesAtras = &ServerDate - 30 Msg('Caso 1: where LogDate > ServerDate() - 30 ',status) for each where LogDate > ServerDate() - 30 do 'Algo' endfor Msg('Caso 2: where LogDate > &ServerDate - 30 ',status) for each where LogDate > &ServerDate - 30 do 'Algo' endfor Msg('Caso 3: where LogDate > &UnMesAtras ',status) for each where LogDate > &UnMesAtras do 'Algo' endfor Msg('Caso 4: if LogDate > &UnMesAtras ',status) for each If LogDate > &UnMesAtras do 'Algo' endif endfor Msg('Caso 5: if LogD...

KBDoctor - Comparador de Navegaciones.

Imagen
Desde hace tiempo, existe una herramienta para Comparar Navegaciones  en KB GeneXus. La misma esta pensada para ser usada comparando navegaciones de objetos en diferentes versiones de GeneXus. Es de mucha utilidad, cuando se realizan cambios de versiones, pero no me resultaba practico para el uso diario con GeneXus X. Decidí usabilizar un poco la herramienta y agregarle al KBDoctor (versión 10.8 o superior), las opciones de generar una foto de las navegaciones es un momento dado y luego utilizar alguna herramienta de comparación de archivos de texto para realizar la comparación (es la misma metodología que se usaba con la herramienta anterior). Que ventaja tiene este enfoque? El resultado es exactamente el mismo que antes, pero resulta un poco menos engorroso el procesamiento de los archivos de navegación. Ademas para KB con varios generadores, con la herramienta anterior se tenian que realizar tantas comparaciones como generadores, pero ahora unifico todo en una misma car...

Encontrar objetos con errores y warnings en GeneXus.

Imagen
Para saber que objetos tienen Warnings o Errors en GeneXus, se logra si se hace un BUILD ALL o un REBUILD ALL y l lista de los objetos se pierde al hacer la primera especificación posterior al BUILD ALL. Cuando se trabaja con KB grandes, este proceso de build all puede demorar varias horas, lo cual hace muy difícil el ciclo de corregir los objetos que tienen warnings.  Para tratar de solucionar esto, desarrollé una opción del KBDoctor , que permite ver cuales son los objetos que tienen errores, warnings y agregué también los objetos que tienen navegación no optimizada que se resuelve en el cliente que son bien difíciles de detectar, pues solo muestran un iconito en la navegación. La forma de usarlo es:  Esta opción, utiliza una heurística (no siempre correcta) recorriendo los archivos de navegación y buscando en ellos determinados patrones que indiquen si hay algún problema.  Como se base en los archivos XML que están en los directorios NVG (de las ...

PiensoPienso: Cual es el estado de la base de datos luego de la corrida de este programa?

Imagen
Tengo el siguiente procedure main GeneXus (C# o Java). y Actualizo es                                  parm(in:&Clave); Al comezar a ejcutar el contenido de la tabla es: Cual es el contenido luego de ejecutar el programa 1)  2) 3)  4)  No se puede predecir el resultado de la corrida.  Justifique su respuesta. 

Basura tecnológica y renovación de equipos.

Imagen
Pasan los años y seguimos sin tener una forma prolija de eliminar las computadoras que se sustituyen y no se utilizan mas. Los monitores se cambian por planos y las computadoras por otras mas potentes y mas chicas.  Estaría bueno encontrar una forma de donar estos equipos a otras instituciones que las puedan aprovechar, pues están funcionales, pero las experiencias de donaciones anteriores, no fueron nada buenas, pues algunos avivados terminaron vendiendo dichos equipos. Por otro lado veo noticias como esta , y me da lastima que no pueda compatibilizarse las computadoras que sobran con las necesidades de otros organismos.

GeneXus Data Providers - Segunda Parte

Imagen
Hace unos meses publiqué el post GeneXus Data Providers , en el que comentaba que si bien son objetos muy poderosos, no son fáciles de entender, al menos para mi nivel. Intentaba mostrar como era muy poco intuitivo realizar rankings, en un modelo de datos sencillo (el mas sencillo que se me ocurrió) y tratar de hacer un poco de ruido en la comunidad GeneXus con los Data Providers, que me parece que son objetos que podrían ser mucho mas usados, si fueran mas faciles de entender. Tuve una charla con  Gaston y Nicolas  para intercambiar ideas sobre este tema y de la misma salieron varias conclusiones valiosas. En la misma, hablamos sobre solución con los objetos actuales y también sobre el enfoque en versiones posteriores de Genexus, con Transacciones dinámicas y sus cambios. CASO 1: Ranking por Local. Ordenar por una formula.  Este caso parece sencillo de solucionar, pues  es una limitación en la sintaxis de GeneXus, que no permite escribir y salvar el orde...