Entradas

Estado de automatización del proceso del desarrollo con GeneXus (2023)

Imagen
  Hace 4 años publiqué una artículo sobre  Estado de automatización del proceso de desarrollo con Genexus. Con la aparición de los modelos LLM y el ChatGPT (y los modelos similares) se hace posible automatizar algunas tareas del ciclo de desarrollo que antes era imposible hacer en forma automática.  1 ) ANALISIS - Captura de Requerimientos Herramientas: Issue Tracking, Mind Mappers Dificultad: MEDIA Observaciones: En esta etapa, creo que la inteligencia artificial (IA) puede mejorar significativamente la etapa de análisis de requerimientos en el desarrollo de software de las siguientes maneras:   Automatización en la Captura de Requerimientos: Utilizando técnicas de procesamiento de lenguaje natural (NLP), la IA puede analizar y extraer requisitos clave automáticamente de documentos, correos electrónicos y notas.   Validación y Consistencia de Requerimientos: Los algoritmos de IA pueden revisar los requerimientos para detectar inconsistencias, ambigüedades o conflictos, aseg

KBLogAnalyzer - Analizando logs de aplicaciones Genexus (.NET).

Imagen
Problema: Tengo un conjunto de archivos de log, generados con GeneXus, generalmente bastante grandes y tengo que procesarlos para encontrar lentitudes, errores o cosas a mejorar.  Los registros son de la forma: 2023-10-09 16:01:28,930 [31] DEBUG GeneXus.Data.ADO. GxConnectionManager - GxConnectionManager. DecOpenHandles   handle '3799', datasource 'Default', openhandles 1 2023-10-09 16:01:28,991 [31] DEBUG GeneXus.Data.NTier. DataStoreProvider - gxObject:GeneXus.Programs. pxmlconceptos__default, handle '3799' cursorName:P00ME5 2023-10-09 16:01:28,991 [31] DEBUG GeneXus.Data.ADO.GxCommand - ExecuteReader: Parameters @ConId='53' Hice un pequeño utilitario que facilita o acelera el procesamiento Es un cmd llamado KBLogAnalyzer.cmd, que al correrlo pregunta el directorio de logs, el directorio de salida (procesa todos los archivos que estén en ese directorio) y que tipo de procesos se quiere realizar Con eso, procesa los archivos de log, y permite generar lo

Código mas facil de entender - Booleanos positivos

Imagen
Siempre que sea posible, queda mas claro el código para entenderlo mas rapido, cuando se cheque que un booleano sea verdadero (TRUE) en vez de chequear por falso (FALSE).  Por ejemplo, si tenemos // &Not_Authorized es booleano que indica que el usuario no esta autorizado.  if NOT &Not_Authorized      Operacion() else     Msg('Usuario no autorizado') endif es bastante mas difícil de leer que   //&User_Authorized es un boolean que indica si usuario esta autorizado if &User_Authorized    Operación() else    Msg('Usuario no autorizado') endif Tenemos que recordar que el codigo deberia ser lo mas simple posible de entender como cualquier texto en ingles o pseudocódigo y por lo tanto tener en cuenta el nombre y la semántica de las variables booleanas, es algo importante que ayuda entender más fácil.  Este es algo muy sencillo de hacer en el momento que defino la variable booleana, y simplifica su uso posterior.  Son los pequeños detalles que se sumados hacen l

Corregir Errores de Compresión en Archivos JavaScript en Genexus

Imagen
  En algunas ocasiones pasa (generalmente en cambios de versión de GeneXus) que da un error al comprimir los archivos javascript.  Si bien el mensaje es claro, es un warning y el proceso de build all termina con éxito. Por este motivo, a veces no se detecta el problema hasta que llega a producción y es mucho mas caro de corregir.  Por eso, recomiendo mucho sobre todo en las primeras especificaciones/generaciones/compilaciones de una KB en una nueva instalación, prestar especial atención a la compresión de los archivos javascript.  Un caso real Por ejemplo, el caso de la imagen, había un webpanel programado sin pattern que utilizaba un User Control que se instalaba con un Pattern.  Al cambiar la versión del Pattern, se actualizo el UC, cambiando de nombre y todos los objetos generados con el mismo pasaron a utilizar la nueva versión del UC, pero éste webpanel siguió usando el  UC viejo, que ya no estaba instalado.  Al especificarlo, no daba ningún warning y compilaba sin errores.  Solo

Configurar IIS para ejecutar aplicaciones .NET Core

Imagen
Tenía una aplicación GeneXus funcionando correctamente con el server Kestrel.  Cuando cambié la propiedad para ejecutar con el IIS (Internet Information Server) me empezó a dar el error Server Error in Application "application name" HTTP Error 500.19 – Internal Server Error HRESULT: 0x8007000d Description of HRESULT The requested page cannot be accessed because the related configuration data for the page is invalid. Este error me habia pasado antes en aplicaciones .NET Framework (con el generador viejo) y siempre eran por temas de web.config mal formados o por problemas en la configuración del IIS (por ejemplo, quedaba mal el ApplicationHost.config ). En este caso, no parecía ser este el problema y necesité ayuda para encontrarlo. No deja pistas en el Event Viewer ni en los logs mas típicos. Busque por el lado de los componentes de Windows del IIS y no encontré nada. Me faltaba instalar ASP.NET Core Hosting Bundle que se baja y se instala en forma independiente del IIS. Lu

Kestrel y https

Imagen
  Cuando se desarrolla con GeneXus y .NET, el server por default es Kestrel.  Es practico de usar, porque consume poco, y es fácil de configurar.  En caso de necesitar utilizar https en el ambiente de desarrollo (cosa que todos deberíamos usar) la forma mas facil de configurarlo que encontré fue Generar un certificado autofirmado para el ambiente de desarrollo.  dotnet dev-certs https -ep rutaAlCertificado\aspnetapp.pfx -p tuContraseñaAqui dotnet dev-certs https --trust Luego instalarlo en el repositorio de windows certutil -p tuContraseñaAqui -importpfx rutaAlCertificado\aspnetapp.pfx para ver con que nombre quedó certutil -store My Luego crear el archivo ' appsettings.Development.json' y ponerle el contenido (ver el nombre del certificado autofirmado, en mi caso es locahost. { "Kestrel": { "Certificates": { "Default": { "Subject": " localhost ", "Store": "My", "Location":

Haciendo una KB GeneXus mas mantenible: Mantener aislado el código externo.

Imagen
Con GeneXus se pueden hacer aplicaciones multiplatafoma de manera eficiente en diferentes lenguajes. Sin embargo en algunas ocasiones especificas hay que recurrir a programar en codigo C# o Java. La que sigue, es una recomendación sencilla, que me hubiese gustado que alguien me la diera hace unos cuantos años, pues simplifica mucho el mantenimiento futuro.    Para hacer que la KB GeneXus sea mantenible en el tiempo y fácil de migrar, es indispensable mantener dicho código en su mínima expresión y lo más aislado posible.  En particular, existe la posibilidad de incluir código C# o Java dentro de los objetos Genexus, con los comandos CSHARP JAVA SQL EXEC Mi recomendación, para hacer facilitar la migraciones futuras, no tener estos comandos mezclados con el resto del código Genexus. En particular, conviene poner en procedimientos estos comandos, de forma que cuando cambie de sistema operativo (EXEC), de base de datos (SQL) o de lenguaje de programación (CSHARP, JAVA) tenga que revisar sol

Haciendo una KB Genexus más mantenible: Evita depender de objetos que cambien fuera de tu control

Imagen
En el mundo digital, la velocidad con la que se actualizan y cambian las herramientas y tecnologías es asombrosa. Y mientras que estar al día con las últimas novedades puede ser emocionante, también puede representar un desafío significativo en cuanto a mantenimiento y compatibilidad. Si estás trabajando con Genexus y quieres construir una Knowledge Base (KB) robusta y fácil de mantener, te hago algunas recomendaciones.  GeneXus garantiza la actualización tecnológica; sin embargo, es esencial estar preparados para abordar estos cambios. A pesar de que he presenciado numerosas charlas sobre el tema, noto una falta de énfasis en cómo prepararnos adecuadamente para las transiciones entre versiones. Por ello, he decidido elaborar una serie de publicaciones que se centrarán precisamente en este aspecto crucial. El problema con las herramientas de terceros Si bien las herramientas y recursos de terceros, pueden acelerarte muchisimo el desarrollo y la puesta en produccion, traen como consecue

Tercera prueba de GeneXus Next

Imagen
Seguí trabajando con el mismo prompt que use ayer para hacer la prueba y ahora si generó correctamente la aplicación. No se bien que cabión tras bambalinas, pero ahora me funcionó bien.  Me resulta mágico, que solo poniendo una descripción de lo que quiero pueda deducir un modelo de datos, crear la base de datos, cargarle datos de prueba y hacer un deploy en la nube para que lo pueda probar.  Adicionalmente, me publica una API para todos las tablas de datos básicos y hechos del sistema.  Es indudable que ahorra una cantidad impresionante de trabajo manual y repetitivo que hasta el momento no había podido ser automatizado.  Genere el modelo con WorkWithPlus y ya tiene además la posibilidad de consultar con lenguaje natural , por ejemplo, si ponemos en el filtro de arriba a la derecha:  "Tickets with Status Name = In Progress" me lleva a la pantalla de trabajar con Tickets, con el filtro de Status filtrando por In Progress.  Le agrega una nueva forma de navegar al sistema, que

Segunda Prueba de GeneXus Next

Imagen
 Hice una segunda prueba de GeneXus Next y lamentablemente el resultado no fue muy satisfactorio.            Probe con el prompt Necesito hacer un sistema para el seguimiento de tickets de desarrollo para aplicaciones, donde se puedan registrar errores, oportunidades de mejoras, sugerencias. Se necesita hacer seguimiento del estado de los tickets, saber quien lo tiene asignado, poder poner comentarios y notificar a los involucrados. Los clientes deben poder ingresar los tickets online y tambien consultarlos. Considerar al menos las siguientes entidades Clientes, Tickets, Sistemas, Personas, Estado de Tickets, Comentarios de Tickets No me parecia algo muy complejo, pero da un error y no me muestra cual es por lo que no puedo saber que es lo que esta pasando.  Me recomienda empezar desde el principio de nuevo, cosa que hice, pero no tuve mucha suerte. Lo reporte hace un tiempo a la gente de GeneXus, pero ya paso un buen tiempo y sigue sin resolverse. Tal vez sea una bobada, pero no lo