Entradas

Usabilizando GeneXus: Poder salvar el estado del Workspace (y dejarlo por defecto)

Imagen
GeneXus es muy configurable, en la forma de posicionar las diferentes ventanas de trabajo (workspace).  Es habitual mover y/o agrandar las ventanas de:  Output  Properties  KB Explorer  Toolbox  Search y un montón de etcéteras.  Genexus por defecto, recuerda el estado del espacio de trabajo y la próxima vez que entro, me muestra las ventanas tal cual las dejé la ultima vez. Esto trae como problema, que cuando uno trabaja un rato largo, puede mover alguna ventana por error y queda mal configurada. Volver a la situación anterior deseada, no es difícil, pero es engorroso.  Una opción que hoy nos brinda Genexus es la de correr GeneXus con la opción /NoWorkSpace que abre la configuración default de GeneXus.  En monitores grandes, a mi me gusta trabajar con la opción por defecto de GeneXus, pero con el KB Explorer y Properties fijadas/ancladas (no se como se traduce pinned) y la ventana de Output siempre visible abajo.  Muestro un ejemplo, en ...

Primera prueba de GeneXus Next

Imagen
  La primera prueba de GeneXus Next me gustó mucho, para ser una primerísima versión. Tiene mucho potencial que deberá verse en futuras versiones.  Cómo otras herramientas orientadas a interfaz por un chat, nos presenta un prompt donde podemos escribir unas  pocas palabras. La idea ahí es describir que es el sistema que quiero realizar, y de ahí infiere cuales serán las principales entidades que va a tener el backend para dicho sistema.  Lo probe en español y en inglés y no noté diferencias sustanciales, aunque lo que genera siempre está en ingles.  Por ejemplo, si escribo en el prompt: "Manejo de Seguridad, con usuarios, roles y permisos. Autenticar y Autorizar los diferentes Objetos de la aplicación" Me plantea las siguientes entidades: Based on your business description, the following 4 entities were identified: Object:  Resources that users can access Permission:  Actions that users can perform Role:  Permissions assigned to each user User: ...

Desarrollo con GeneXus ayudado con Inteligencia Artificial

Imagen
La industria entera se vio sacudida por las nuevas posibilidades que brindan los modelos de inteligencia artificial del tipo ChatGPT . Por la calidad de las respuestas que brinda, puso nervioso a mas de una empresa, que pueden ver sustituido gran parte de su trabajo por este tipo de herramientas.  ChatGPT es la cara mas visible de esta nueva ola y tuvo la importancia de mostrar el potencial del uso de la inteligencia artificial para ayudar a hacer tareas que hasta el momento no parecían automatizables.  A mi me gusta verlo como la  oportunidad de hacer un pair-programming con un programa en vez de un ser humano. No será lo mismo, pero tener algo que conteste las dudas que te surgen cuando estoy programando, ayuda muchísimo.  Pero hay otra cantidad de tareas que no necesitan ese grado de sofisticacion o modelos tan grandes como para poder ser muy útiles, ahorrarnos horas de trabajo y hacernos mas productivos.  He estado pensando, que cosas podrían automatizarse m...

Como agregar la pila de llamadas (Call Stack) al log de una aplicación GeneXus

Imagen
 Cuando estamos monitoreando aplicaciones distribuidas (en varias webapps o en varios nodos) es util tener centralizado el manejo de los logs de errores, de forma de poder ver en un unico lugar todos los errores que esta dando la aplicación. Esto es particularmente neceario cuando tenemos parte de nuestra aplicacion instalada de forma serverless.  Para hacer mas facil la identificacion de las causas de los problemas, lo que he visto que funciona bien, es mandar los ERRORS (y FATAL) y agregar a los mismos el Call Stack.  Para lograrlo, alcanza con agregar  %stacktrace{level} y cambiar level por el numero de niveles de la pila de llamada que quiero que muestre el log.  Por ejemplo, hay que cambiar el log.config, en la linea         <layout  type="log4net.Layout.PatternLayout">            <conversionPattern  value="%d{ISO8601} [%t] %-5p %c - %m   %stacktrace{10} %n"/>     ...

Registrar usuario de GAM y Session ID en el log de GeneXus (Log4Net)

Imagen
 GeneXus utiliza log4net/log4j para generar el log tanto de las bibliotecas internas de Genexus como para el log de usuario.  Estas bibliotecas de log, son sumamente poderosas y permiten hacer un registro detallado de la actividad realizada en nuestra aplicación.  Para un proyecto especifico, necesitamos el registro del usuario y un identificador de la sesion en el log, de tal forma de poder filtrar luego por la actividad de un usuario especifico.  Vos a mostrar como lo resolví para .NET pero sirve también para java (aunque no lo probé).  Primero hice un procedure para definir una propiedad de log4net, con el código: SetLog4NetProperty //Log4NetPropertyKey and Log4NetPropertyValue son VarChar(100) CSHARP    log4net.ThreadContext.Properties[  [!&Log4NetPropertyKey!]  ] = [!&Log4NetPropertyValue!]; Luego del Login en la aplicación hago: SetLog4NetProperty('GAMUser',&GAMUser.Name) y en los archivos de configuració...

De aplicaciones GeneXus mono-kb a aplicaciones multi-kb

Imagen
 Acompañando la tendencia de la industria, en la comunidad GeneXus estamos pasando de tener aplicaciones monolíticas de una sola KB, a aplicaciones de multiplex KB.  No hablo solo de microservicios, que pueden ser uno de los casos aca contemplados (*), sino de algo un poco mas general de tener varias KB que conforme una solución.  Como todo en esta vida, cada cambio trae ventajas y también tiene algunos inconvenientes que es bueno tener en cuenta.  Las ventajas de tener todo en una KB monolítica: Todo en una misma base de datos con integridad transaccional.  Los cambios se reflejan en todos los programas  Es mas facil de instalar La comunicación entre objetos es mas rapida Que cambia cuando se tiene multiples KB?  El deploy es bastante mas complejo y tambien es mas complicada la comunicación entre las diversas KB.  Como GeneXus hoy esta enfocado a aplicaciones mono-kb, se necesitan algunas herramientas que aun no están disponibles entre las standa...

Migración de .NET Framework a .NET Core

Imagen
Quienes tienen aplicaciones GeneXus generadas con .NET Framework, deberán migrarlas a .NET Core. Esta forma de decirlo, es usando la nomenclatura vieja de Microsoft, pues ahora deberia decirse que hay que pasarse a .NET (a secas).  Las nuevas versiones de .NET traen como ventaja la de ser mas liviano su consumo en ejecución y la de poder ejecutar en Linux y en Windows.  Quienes programamos con GeneXus tenemos el camino un poco mas fácil que el resto pero igual hay que hacer un trabajo lindo de migración del generador .NET Framework al generador .NET.  Esto es indispensable, pues entiendo que el generador .NET Framework no va a tener mejoras en el futuro y todos los cambios se realizaran únicamente en el generador .NET.  Como toda migración, va a traer diferentes dolores de cabeza.  Por ejemplo, tengo el siguiente proyecto.  KB Mediana, generada con .NET Framework.  Utilizar PDFTools para concatenar archivos PDF (no funciona aun en .NET Core) Necesita u...