Entradas

Prueba de modelos de AI Generativa.

Imagen
 Me plantee comparar las capacidades de los diferentes modelos a los que tengo acceso.  La prueba que quiero hacer, es poder subir una imagen de un problema de programacion lineal entera, y que el modelo interprete la imagen y me explique el problema.  Luego tratare de generarlo en GLPK (lenguaje para resolucion de problemas de este tipo, el cual conozco) y OR-TOOLS (las herramientas de Google para modelos de optimizacion en investigacion operativa).  El problema corresponde a un problema llamado "Capacitated Facility Location" y para probar solo  tengo como imagen las formulas: Le pido a los diferentes modelos que me lo expliquen y luego que lo traduzcan a lenguajes de programación.  ChatGPT 4 Es muy llamativo para mi como logra de un conjunto de ecuaciones, llegar a un problema practico donde esas ecuaciones pueden resolver un problema.  ChatGPT 4 - Generarlo en MathProg  # Definiciones de conjuntos set I; # Conjunto de recursos set J; # Conjunto de requerimientos # Parámet

Como definir variables de ambientes diferentes para distintas Application en IIS

Imagen
 Problema:  Tengo 2 Application que vienen de 2 KB diferentes generadas con .NET Core, y quiero instalarlas en el mismo IIS.  Necesito que ambas informen a un servidor de Opentelemetry con valores diferentes. La parametrización de Opentelemetry se realiza a través de variables de ambiente unicamente.  Como se necesitan valores diferentes en las variables de ambiente y las mismas no pueden ser fijadas a nivel de todo el sistema, se necesita una forma de tener valores diferentes para cada Application.  Se puede hacer a traves de la interfaz grafica hacien IIS / Seleccionando el Environmet / Configuration Editor / y en el combo de Section elegir system.webServer/aspNetCore .  Elegir abajo environmentVariables y presionando los tres puntos de la derecha [...] podes editar las variables de ambientes que desees para ese sitio.  y se llama al editor: donde se pueden especificar las variables de entorno para el proceso de esta aplicación.  Esto modifica el web.config poniendo estas variables d

Problema con atributo DATE al que se le graba hora en GeneXus

Imagen
 Hoy voy a hablar de un error tonto, que no es muy fácil de detectar.  Los usuarios me reportaban que tenían diferencias en un sistema cuando sacan los reportes por mes, a que si los sacaban los reportes con rangos de varios meses.  Tengo una tabla que tiene la siguiente estructura: Docs DocID DocDate ... Esa tabla la cargo con un servicio usando un  BC de datos que vienen de otro sistema, que no manejo yo.  En el campo DocDate, el otro sistema esta grabando algunos registros con fecha hora (en particular llegan con la fecha correcta, pero además traen la hora 21:00:00.  Solo algunos llegan con horas.  Queda grabado en la base de datos un campo DATE de GX, pero con una fecha y hora.  Tengo un proceso, que selecciona los registros de un mes, con un rango 2024-02-01 al 2024-02-29.  Como piensa que todos los registros solo tienen DATE, no esta seleccionando todos los registros del ultimo dia, que tenga una hora.  El mejor aprendizaje que saco de todo esto, es que NO HAY QUE CONFIAR EN LOS

Personalizar el DEPLOY con GeneXus

Imagen
En los ciclos de desarrollo se necesita hacer llegar desde la KB hasta el ambiente de producción, con una determinada personalización, para que el sistema funcione en producción.  GeneXus tiene la tarea de Build all bien resuelta, pero aun no contempla el Package ALL, ni el Deploy All, sino que hace el deploy para una deployment unit en forma aislada.  En varias oportunidades surge la necesidad de personalizar los archivos que se necesitan enviar para el deploy. Esto implica cambiar archivos del tipo web.config, appsettings.json, client.cfg, etc.  La personalización permite el ajuste necesarios para un correcto deploy de la aplicación.   De que forma se puede hacer? En un esquema general, se puede hacer el deploy de cada Deployment Unit.  Tanto si se ejecuta la tarea de Deploy desde el IDE de GeneXus, como automatizando las tareas con MSBUILD y jenkins el proceso es similar.  La personalización se puede hacer con el proyecto <DUName>_user.gxdproj , que es un proyecto del usuario,

Herramientas para personalización de instalaciones

Imagen
 En el proceso de desarrollo con GeneXus, surge la necesidad de personaliza archivos en el momento de la instalación cuando se quiere instalar la misma versión para diferentes clientes o en diferente infraestructura.  En el pasaje a producción, en algunos ambientes se puede utilizar la personalización a través de variables de ambientes (por ejemplo con Docker / Kubernetes) pero en otros ambientes esto no es una posibilidad válida, y hay que cambiar archivos de configuración para lograr que todo funcione correctamente.  Algunas de las cosas que es necesario personalizar son los siguientes archivos web.config  y client.exe.config client.cfg PDFReport.ini CloudServices.config rewrite.config log.config y log.console.config log4j.xml connection.gam dockerfile web.xml appsettings.json Con seguridad me faltan varios mas.  El formato de estos archivos es variado (xml, json, txt, ini) y por lo tanto las herramientas que usamos para hacer su personalización también varia.  La personalización pue

Programa Genexus para cambiar codigo GeneXus usando expresiones regulares.

Imagen
  En una KB que tenia muchos años tuvimos que hacerla multi-idioma.  Hay un trabajo grande de poner a los string que no son traducibles el símbolo ! delante.  Por ejemplo donde antes decía where ClienteActivo = 'S' hay que poner where ClienteActivo = EstadoCliente.Activo  o where ClienteActivo = !'S' Hice un programa para leer un archivo de un export de GeneXus y cambiar el código para hacer el segundo cambio.  Lo que hace es recorrer el archivo del export y se fija si esta en una parte modificable (Source, Rules, Conditions, Source de DataProvider o Data Selector, etc) Dentro de esas partes, hay también propiedades, variables, etc que no deberían cambiarse por lo que solo cambia algo si está dentro de una sección <!CDATA.  A su vez, hay varias excepciones que deben contemplarse, por ejemplo cuando se tiene codigo javascript embebido en el código, o comandos CSHARP, JAVA, SQL o los nombres de las Subrutinas que no deben cambiarse, y no se pueden marcar como no traduc

Cambiar atributo a usar valores enumerados

Imagen
En versiones anteriores de Genexus, no se podían tener dominios con valores enumerados.  Esto es un atributo que solo pueda tener los valores que se ponen en una lista y nada mas que esos.  Esta muy bueno también para poner constantes en los programas, sin tener que poner numero o strings con significados mágicos.  Por ejemplo, antes poniamos: PedidoEstado<> !'I'  and PedidoEstado <> !'F'    y con un dominio enumerado se pone PedidoEstado<> Estado.Inicial and PedidoEstado <> Estado.Final * La nomenclatura no es la mejor, pero es para que quede fácil de entender Las ventajas es que el código queda mucho mas claro, y queda referencias donde se utilizan los diferentes valores.  La relación entre el valor que se guarda en la base de datos y lo que tienen los programas esta concentrada en la lista de valores enumerados del dominio o del atributo y no por todos los programas. Cuando cambio la lista, cambia automáticamente en toda la aplicación.  Tam

Sistema LUCIA: 25 años de una KB GeneXus en producción

Imagen
  Se cumplieron los 25 años del Sistema LUCIA en producción (ver el post de los 20 años ) . Es un sistema aduanero , que permite la declaración aduanera de I mportaciones, Exportaciones, Tránsitos y la liquidación de los tributos correspondientes.  También se controlan los requisitos documentales y de controles de diferentes organismos para poder realizar estas operaciones.  Adicionalmente controla las cargas marítimas, aéreas, terrestres, fluviales que entran y salen del país, cruzando las declaraciones de cargas, con las operaciones aduaneras.  Tenemos un equipo maravilloso de arquitectos, programadores, testers, documentadores, mesa de ayuda, abogados, funcionales, dba, devops. Somos 23 personas las que participamos. Si lo comparamos con países de sistemas aduaneros de tamaño similar, logramos mantener el sistema actualizado con menos personas.  La instalacion, operacion del sistema y administración de la infraestructura es realizada por otra empresa. Durante 25 años muchos mas ha

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