Entradas

Cómo achicar el disco de Docker Desktop cuando se usa GeneXus Next (WSL2 en Windows)

Contexto:  GeneXus Next usa Docker Desktop sobre WSL2. Con el tiempo, el archivo de disco virtual de Docker (“ext4.vhdx” o “docker_data.vhdx”) crece y  no  se achica solo aunque borres imágenes. Al cambiar de versión (en la fase beta se hace muy a menudo) se crean imágenes y contenedores que luego se dejan de usar, pero a veces no libera el espacio. En mi caso, pude recuperar 28 Gb con la limpieza.  ¿Por qué pasa? Docker Desktop guarda sus datos en una distro WSL2 ( docker-desktop-data ) dentro de un disco virtual dinámico .vhdx que crece cuando necesitás más espacio, pero no reduce tamaño automáticamente al liberar datos. Rutas típicas del VHDX %LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx (clásico) %LOCALAPPDATA%\Docker\wsl\disk\docker_data.vhdx (nombres nuevos) Tip: En Docker Desktop podés ver o cambiar Settings → Resources → Advanced → Disk image location y el tamaño máximo. Paso a paso Recomendación: hacé una copia del .vhdx antes de com...

Usando Globant Enterprise AI para desarrollo de aplicaciones

Imagen
Preparándonos para lo que viene con GeneXus Next , estuve probando Globant Enterprise AI (GEAI) para incorporar Agentes y Asistentes a aplicaciones ya existentes construidas con GeneXus 18 . Resumen rápido: suma un nivel de potencia que puede elevar mucho la productividad en varios frentes. Por otro lado, se notan asperezas de una implementación que todavía evoluciona, lo que hace que la experiencia no sea tan fluida como podría ser. Inconvenientes Problemas de conexión / reconexión / desconexión Dentro de GEAI hay varios componentes con Single Sign-On (SSO). En teoría, al iniciar sesión en uno quedo autenticado en todos; en la práctica, al alternar entre módulos a distintas horas aparecen errores 403 – Forbidden y hay que hacer “magia” para seguir trabajando. Además, no encontré forma de extender la duración de la sesión y cada ~20 minutos debo volver a loguearme. Huele a bugs propios de un producto todavía en transición. Asistentes vs. Agentes La terminología y el modelo...

iText + GeneXus : riesgo legal de su uso sin licencia.

Si generás PDFs con GeneXus, seguro te cruzaste con iText (Java) o iTextSharp (.NET). Lo clave: las versiones modernas de iText ya no son gratuitas para uso empresarial salvo que cumplas AGPL ; de lo contrario, requieren licencia comercial . 1) Línea de tiempo (qué fue gratis y desde cuándo se paga) Gratis (para proyectos cerrados) iText 2.1.7 (Java) : bajo MPL/LGPL . Última “antigua”. iTextpdf iTextSharp 4.1.6 (.NET Framework) : última bajo MPL/LGPL . GitHub NuGet Desde iText 5 (7-Dic-2009) : dual AGPL + comercial . Si no podés/querés cumplir AGPL, tenés que licenciar (aplica también a iText 7/8). kb.itextpdf.com AGPL implica obligaciones de compartir código si hay interacción por red con el programa que incorpora iText; para evitarlo, se usa licencia comercial . kb.itextpdf.com 2) GeneXus hoy: por generador Java Default : PDFBox (Apache 2.0, sin costo). docs.genexus.com Opciones : iText (Legacy) = iText 2.x; iText 8 (AGPL/comercial). La posibilida...

La próxima generación de plataformas de desarrollo empresarial basadas en IA

Imagen
Las plataformas actuales de desarrollo requieren que aprendamos su lenguaje: sintaxis, configuraciones, patrones específicos . Pero… ¿qué pasaría si fuera la plataforma la que aprendiera a hablar el idioma empresarial ? La próxima generación de plataformas de IA para desarrollo no solo generará código; también comprenderá, interpretará y traducirá el conocimiento de negocio en aplicaciones completas y funcionales . Problema actual Cuando nos llega un nuevo requerimiento que dice: “ La cuarta medida determina un régimen simplificado de importación en el que se beneficiará una exoneración total de tributos a la importación para determinados productos. Se crea un régimen especial de importación en el que los comercios minoristas, de ramos generales, ubicados a menos de 60 km de la frontera, podrán importar, libres de todo tributo, productos que componen la canasta básica ” (*) Esto se traduce en semanas de trabajo que incluyen: Análisis legal y regulatorio Inte...

Cómo manejar Slow Changing Dimensions (SCD) en GeneXus — Ejemplo práctico con Ventas y Clientes

Imagen
Este es un problema básico en el modelado de sistemas y bases de datos, pero es el causante de algunos inconvenientes en el momento de hacer reportes.  En muchos casos, se decide modelar el modelo operacional de la forma fácil (SCD Tipo 1) y en la plataforma de BI se mantiene la historia con SCD Tipo 2. ** El problema Tenemos tres entidades: Clientes :  ClienteId ,  ClienteNombre ,  TipoClienteId . Ventas :  VentaId ,  ClienteId ,  Fecha ,  Monto . TipoCliente :  TipoClienteId ,  TipoClienteNombre  (Grande, Mediano, Chico). El sistema debe brindar el reporte de Ventas por Tipo de Cliente, para un rango de fechas TipoCliente, Total Vendido Grande         1000 Mediano         700 Chico             1200 Un dia, un cliente pasa de  Mediano  a  Grande . Si el reporte “Ventas por Tipo de Cliente” junta las ventas con el tipo actual del clie...

Extensiones/Asistentes en GeneXus que me gustaría tener

Imagen
  Se viene una nueva versión de GeneXus, que es la primera en incorporar inteligencia artificial en el IDE.  Esto nos abre la posibilidad de tener nuevos asistentes dentro del ide que nos automaticen tareas que en general son aburridas de hacer.  Algunos ejemplos de tareas que llevan mucho tiempo y podrían automatizarse Analizador de Errores de Compilación  Un programa que lea el output de Genexus con errores y proponga soluciones. Muchas veces Genexus tiene errores que se solucionan mandando a especificar forzado algún objeto. Lo que me interesa principalmente es deducir cuales son los objetos que deben forzarse y que los genere automáticamente.  Generar Scripts de CREATE TABLE Dada una tabla, crear un script para crear dicha tabla.  Es común tener que elegir un conjunto de tablas para hacer alguna prueba. Genexus es muy bueno para generar scripts de creación de toda la base de datos para los diferentes DBMS. Pero no es tan bueno para generar solo algunas ...

Por qué es clave actualizar tu versión de GeneXus (aunque duela un poco)

Imagen
En el mundo del desarrollo con GeneXus, trabajar con una versión antigua puede parecer cómodo, pero a la larga es una trampa silenciosa. Las migraciones o actualizaciones de versión no son solo una cuestión técnica: son una decisión estratégica que impacta en productividad, seguridad, mantenimiento y evolución del software.  ¿Por qué actualizar GeneXus? Seguridad y compatibilidad Cada nueva versión de GeneXus mejora el soporte para tecnologías modernas, navegadores actualizados, motores de base de datos y protocolos de seguridad (como OAuth, HTTPS, JWT). Seguir en versiones antiguas te expone a vulnerabilidades y dependencias obsoletas. Mejoras de performance y productividad Desde nuevas estructuras como SD Panels hasta herramientas como los Design Systems, la evolución de GeneXus no solo permite hacer más, sino hacerlo mejor y más rápido. Ignorarlo es perder ventaja competitiva. Soporte oficial y comunidad activa Las versiones antiguas eventualmente quedan sin soporte...

Envío y Recepción de Emails con OAuth desde GeneXus (Gmail / Office 365)

Con el aumento de las medidas de seguridad en servicios como Gmail y Office 365, el uso de usuario/contraseña para enviar correos electrónicos dejó de ser una opción viable. Actualmente, OAuth 2.0 es el estándar para autorizar el acceso a estos servicios. En este post, te muestro cómo integrarlo con GeneXus para enviar y recibir correos de forma segura. Por un tiempo funciono correctamente el generar "application specific passwords" generando y registrando dichas contraseñas, pero estan dejando de funcionar y ya no es tan facil llegar a generar nuevas contraseñas. Por eso, es importante actualizar las aplicationes que necesiten enviar o recibir mail con estos proveedores para que usen OAuth 2.0.  Para esto, se necesita usar el OAuth Module ,  y programar algo asi: &Success = OAuth.v2.RefreshToken( &OAuthAuthorizationConfig , &RefreshToken , &OAuthAccessToken , &DateTimeTokenExpire , &Messages ) if (NOT &Success ) ...

Edición masiva en GeneXus: Cerrar las pestañas References antes de empezar

Imagen
Si tu Knowledge Base contiene miles de objetos, cada Save puede convertirse en una pausa innecesaria: el IDE recalcula de inmediato la información mostrada en las pestañas References y Referenced by. Cuando estás haciendo cambios en serie (ajustes de propiedades, limpieza de variables sin uso, marcar objetos como Not Generated, importar objetos, etc.) ese refresco continuo añade segundos —o minutos— a tu tarea. ¿Qué está pasando en segundo plano? Las pestañas de referencia se alimentan de un grafo que describe todas las dependencias entre objetos. Cada guardado desencadena: Análisis sintáctico del objeto modificado. Re-cálculo de las aristas que cambian en el grafo. Render del resultado en cada pestaña abierta. En KB grandes el paso 2 puede tomar varios segundos. Repetido cientos de veces se vuelve un cuello de botella innecesario. La práctica recomendada 1. Cierra todas las pestañas References/Referenced by antes de iniciar los cambios. Usa el botón × de cada...