Entradas

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,

Buenas prácticas al registrar logs en desarrollo de software

Imagen
La información que generamos de logs en nuestros sistemas es vital para encontrar donde se da un problema puntual. Con la gran cantidad de logs generados, que pueden ser hasta millones al día, el proceso de encontrar un dato específico se puede volver muy difícil y a veces podemos no encontrar lo que buscamos. Por eso, siempre digo que el análisis de logs es como "Encontrar una aguja en un pajar". En este documento les comentaré sobre las mejores prácticas basadas en investigación y experiencia para obtener los mejores resultados. Seguridad No por casualidad el punto seguridad está al principio. La seguridad de sistemas hoy en día es más relevante que nunca, ya que cada vez hay más ataques para obtener información y utilizarla para fines ilícitos. Si por ejemplo utilizamos archivos de texto plano o un software como Kibana-local -que por defecto no trae control de usuario y contraseña- tenemos nuestra información expuesta. Esto quiere decir que debemos tener "mucho"

¿Por qué debiéramos tener un proyecto que aporte a la sociedad?

Imagen
El 21 de octubre pasado, luego de la charla brindada por Javier Verdura de Tesla en el evento GeneXus Live 21 , vi muchos puntos en común con pensamientos y decisiones que he tomado los últimos tiempos. En parte de su charla, Javier comentaba que había trabajado varios años diseñando productos de consumo, lo cual de alguna forma no lo llenaba completamente. Sin embargo trabajando en Tesla se siente apasionado por su trabajo y sabe que está realizando diseños para mejorar la vida de las personas en el planeta. Parte de los proyectos que tienen en Tesla -aparte de autos eléctricos, baterías para hogar y otros para la disminución de CO2- están los proyectos para que sean atractivas las alternativas renovables y hacer que se vuelvan deseables. El proyecto que comentó en este punto es un techo americano que a la vez genera electricidad mediante la luz solar. Con su trabajo, está convencido que está ayudando a cambiar el mundo, ayudando a revertir el efecto invernadero. En mi caso, luego de

Como versionar nuestras aplicaciones y algunas ideas para automatizar

Imagen
Si será importante el versionado de nuestras aplicaciones que lo primero que preguntamos cuando nos reportan un problema es "¿Que versión tiene de la aplicación?". Nomenclatura Lo primero es definir la nomenclatura vamos a utilizar. La nomenclatura utilizada normalmente es: x.y.z x: Cambio mayor. Esto podría ser interpretado como un cambio importante en la aplicación. En un lenguaje como .Net podría representar el cambio de la versión del framework o Java de la máquina virtual. También, o más importante, una nueva versión de todo el sistema o un cambio significativo, por ejemplo, un nuevo frontend. y: Cambio menor. En este caso, generalmente se utiliza para al agregado de nuevas funcionalidades al cierre de un ciclo, por ejemplo, de un sprint. En mi caso, normalmente lo incremento en cada cambio de base de datos. De esta forma puedo saber cuáles versiones incluyen cambios de estructuras. z: Correcciones/patches Puede ser utilizado para hotfixes, funcionalidades y otros, de fo

Buenas prácticas al nombrar objetos en GeneXus

Imagen
El nombrar objetos de forma correcta y mediante una nomenclatura específica es muy importante ya que estandariza el nombre de los objetos en una KB. Esto es más importante aún cuando intervienen varios desarrolladores, ya que los objetos tendrán una misma nomenclatura y los desarrolladores sabrán como encontrar o crear rápidamente un objeto. Por ejemplo, si no tenemos una forma consistente de nombrar objetos, cada programador podría asignarle un nombre según su experiencia. Por ejemplo, para obtener el nombre de un cliente podríamos tener casos como estos: ObtenerNombreDeCliente NombreDeCliente TraerNombreCliente En base a lo anterior, y teniendo en cuenta que en una KB pueden trabajar varios programadores, se vuelve inmanejable encontrar un objeto puntual, lo que lleva a la duplicación de código. Esto nos hace perder productividad ya que tenemos más de un objeto haciendo lo mismo. A su vez genera un problema al momento de testear o realizar una corrección puesto que es difícil saber s