Entradas

¿Por qué no deberías utilizar ServerDate() o ServerNow() en GeneXus?

Imagen
Históricamente en los sistemas Cliente-Servidor, la aplicación se ejecutaba en el PC del usuario. Por esto, para obtener la fecha de forma consistente, ésta se obtenía desde el DBMS. Hoy en día, generalmente disponemos de un sistema Web con una arquitectura en 3 capas, donde el usuario utiliza un navegador el cual se conecta al servidor de aplicaciones y este último, si es necesario, al DBMS. Debido a que todos los usuarios se conectan, a través del Browser, al servidor de aplicaciones, ya no es necesario consultar la fecha-hora desde la base de datos. En su lugar, lo mejor es retornarla directamente desde este servidor de aplicaciones. Pero, ¿Que es lo que hacen estas funciones? Estas funciones obtienen la fecha desde el DBMS mediante una query. Por ejemplo, en MSSql se utiliza: SELECT GETDATE() Esto quiere decir que cada vez que obtienes la fecha mediante estas funciones, el servidor de aplicaciones debe hacer un consulta al DBMS. Suponiendo que estamos trabajando con un sistema W...

GeneXus - Como ejecutar un procedimiento Java main por consola

Imagen
Los procedimientos marcados como main/command-line son sumamente útililes para realizar varias tareas que por su definición no son compatibles con la ejecución en línea. Entre ellas podemos encontrar procesos batch, tareas programadas y otros. La ejecución de estos procedimientos en otros generadores como .Net es trivial, ya que se crea un .exe y se ejecuta directamente. En Java esto no es tan sencillo ya que para ejecutar hay que invocar el intérprete de java con la ruta de las diferentes librerías que componen el proyecto (classpath). Luego de investigar al respecto, encontré que la forma más sencilla para esto es mediante el comando: java -cp build\classes\java\main;build\libs\* com.<kbname>.a<proc.main> Ej.: java -cp build\classes\java\main;build\libs\* com.mykb.amyproc Hay que tener en cuenta que esto funcionará a partir de GeneXus 18.

¿Actualizaste a MacOS Ventura y te dejó de funcionar la generación de apps con GeneXus 17? ¡Solucionado!

Imagen
Si les pasó actualizar MacOS a la versión Ventura, seguramente les dejó de funcionar la generación de aplicaciones creadas con GeneXus 17. Aquí les explico como poder seguir utilizando GeneXus 17 sin hacer un downgrade de MacOS. Instalar la versión de xcode compatible con Ventura. En mi caso instalé la v14.2. Si no lo tienen instalado, deben instalar GeneXus 18. Respaldar la carpeta GeneXus17\iOS y copiar a esta, los siguientes archivos de la carpeta GeneXus18\iOS: MacTransfer.exe, MacTransfer.exe.config, MacTransfer.scpt y Renci.SshNet.dll Abrir la terminal de MacOS y ejecutar: brew install cocoapods Hacer un rebuild de la app en GeneXus17 y probar que ésta funcione correctamente. Si esto no les llega a funcionar, la otra opción es hacer el downgrade con lo cual pueden incurrir en perdida de datos.

Resumen de lo que nos trae el upgrade 10 de GeneXus 17

Imagen
Este resumen me centraré en las mejoras y cambios que considero destacados del nuevo upgrade. ¡Lo imperdible! PlantCare - ECommerce Sample PlantCare es un App-eCommerce de ejemplo multidispositivo basada en una tienda dedicada a la venta de plantas. Fué realizada con import from Sketch y es compatible con iOS, Android y Angular. 51257 : Se permite importar archivos de diseño de Figma Se implementó el soporte de Figma como proveedor de diseño. Más información: Design Import option | Article (genexus.com) Aplica a: Development Environment A tener en cuenta 51285 : Se deja de soportar SQL Server 2000 A partir de GeneXus 17 Upgrade 10 ya no se puede seleccionar SQL Server 2000 en nuevos environments. Sí se sigue soportando aún en environments que ya tienen seleccionada esa versión. En upgrades futuros se quitará el soporte también para ese escenario. Aplica a: .NET Framework Generator, Java Generator, .NET Generator (ex .NET Core) 51317 : Pasa a ser requerimiento Java JDK 11 para el genera...

Resumen de lo que nos trae el upgrade 9 de GeneXus 17

Imagen
Este resumen me centraré en las mejoras y cambios que considero destacados del upgrade 9 de GeneXus 17. Nuevas funcionalidades 50932 : Soporte de OAUTH para envío y recepción de emails en cuentas de Google y Office 365 Se implementó el soporte al envío y a la recepción de emails autenticándose via OAUTH, especialmente diseñado para cuentas Google y Office 365. (Las APIs de Google en general permiten autenticación y autorización a través de OAUTH 2.0. https://developers.google.com/identity/protocols/oauth2). Aplica a: .NET Framework Generator, Java Generator, .NET Generator (ex .NET Core) 51001 : OpenAPI import tool permite seleccionar las operaciones a ser importadas. Se implementó un asistente en OpenAPI import tool que permite seleccionar las operaciones a ser importadas. Más información: https://wiki.genexus.com/commwiki/servlet/wiki?31864,OpenAPI+import+tool Aplica a: Development Environment 51002 : Se implementó la posibilidad de realizar promedios móviles, sumas parciales o difer...

Enviando nuestros logs a Kibana rápido y simple

Imagen
Mediante Kibana y Elastic Stack comenzarás a monitorear y gestionar tus logs como nunca antes. Todo centralizado, o sea, sin tener que ir a cada servidor a revisar los archivos de logs o a la base de datos. Sumado a esto tendrás el poder de uno de los mejores motores de búsqueda actuales, cómo es Elasticsearch. Elasticsearch ( parte de Elastic Stack) nos brinda la capacidad de realizar búsquedas en tiempo record sobre millones de registros. Esto sumado a la visualización de última generación con Kibana, nos brinda herramientas de vanguardia para la gestión de logs. En otras oportunidades he conversado sobre la gestión moderna de logs, aquí dejo un vínculo para el que guste interiorizarse en el tema, ya que verán las ventajas y como se utilizan este tipo de tecnologías: https://youtu.be/9XGR40-D-HM ¡Ahora, manos a la obra! Para que todo lo anterior funcione, debes instalar y configurar tres tecnologías de Elastic Stack: Kibana, Elasticsearch, Logstash. Por suerte, esta tarea se hará muy...

Buenas prácticas trabajando con parámetros o configuración del sistema

Imagen
En éste artculo repasaremos algunas buenas prácticas sobre la utilización de parámetros para resolver temas como: ¿Donde se utiliza cierto parámetro? ¿Por qué tengo dos claves de parámetro para la misma configuración? ¿Como resolver el valor por defecto del parámetro? ¿Como almacenar parámetros? Estructura y almacenamiento Para el almacenamiento recomiendo una estructura atributo valor, la cual es elástica, por lo que no quedamos atados a una estructura en particular. En este sentido, podríamos tener la estructura siguiente: Parameters * ParameterKey - VarChar(32) * ParameterValue VarChar(512) Para el caso de las claves (ParameterKey), es importante que sean descriptivas. Si fuesen numéricas, cada vez que ingresemos a revisar la base de datos, necesitamos la lista de mapeo para encontrar el parámetro deseado. En lo que respecta a si la clave es case sensitive, se recomiendan lo más simple posible a fin de evitar errores en queries y otros. Por lo que se debiera establecer un solo case,...