Entradas

Mostrando las entradas de septiembre, 2018

GX28 - un resumen resumido.

Imagen
Pasó el #GX28. La organización estuvo espectacular, como ya nos tiene acostumbrados. Un orgullo que una empresa uruguaya pueda organizar este tipo de eventos en el pais. Como hay tantas charlas simultáneas, una persona solo puede ver 1/5 de las charlas posibles, por lo que siempre se tiene versiones muy parciales. Algunos de los temas preponderantes (o que me interesaron a mi) fueron: * Blockchain - Hay mucho trabajo en el tema, aun no hay aplicaciones concretas. Creo que Blockchain va a terminar siendo un sinónimo de "Base de datos distribuida y no actualizable" y hay muchas aplicaciones que pueden beneficiarse de esto.  Viene madurando en forma muy rápida y hay mucho financiación para proyectos por lo que este un tema mas que interesante para mirarlo con cariño y empezar a hacer prototipos. * Inteligencia Artificial - Empezamos a tener tecnología a mano como para incorporarlo en nuestras aplicaciones. Para lograr resultados efectivos hay que trabajar bastante, pue

Panel sobre interoperabilidad e integración: desafíos y experiencias en la era de las APIs #GX28

Imagen
En el #GX28, me invitaron a participar en un panel (junto con Ana Berta, Fernando Panizza, Javier Barreiro y Ignacio Estefanell )  donde conversaremos sobre Integración, Interoperabilidad, API First y API Economy . Me parece un tema importante y que en los próximos años nos va a tener ocupados. En 30 minutos no va a ser posible transmitir las diferentes visiones, por lo que hago un breve resumen en el blog.  Los desarrolladores, o quienes gestionan aplicaciones, van a tener que definir, monitorear y administrar las API internas de la aplicación y aquellas que exponen al público. Al tener interfaces bien definidas, aparecen nuevos modelos de negocios y oportunidades para aprovechar los datos. Tambien hacen mucho mas fácil empezar a interactuar con otras aplicaciones y a orquestar servicios de terceros. Para lograr todo este potencial, se van a necesitar nuevas herramientas para ayudar a lograrlo. Supongo que cada vez mas aplicaciones van a ser de la forma: Cada vez mas vam

Revisión automatizada de código con KBDoctor y Jenkins

Imagen
Dentro de las funcionalidades nuevas de KBDoctor esta la de poder hacer revisión de código automatizado, y poder ejecutar dicha tarea como una tarea MSBUILD. Nosotros lo usamos para poder revisar los cambios subidos al GXServer, en la KB que arma los build, para revisar los objetos subidos. Todas las noches se pueden revisar todos los objetos  que tenga un timestamp (modificados o subidos) del dia anterior o el actual. set KBPath=C:\Models\GX16\KBPrueba MSBuild.exe KBDoctorCmd.msbuild   /t:ReviewObjects  Si se quiere revisar desde una fecha determinada, se puede agregar el parametro /p:DateFrom=01-01-2018  En el proyecto KBDoctorCmd.msbuild (que se instala con KBdoctor) se tiene   <Target  Name="ReviewObjects">     <Message Text="Using GeneXus DIR = $(GX_PROGRAM_DIR)" />      <Message Text="KB DIR = $(KBPath)" />      <OpenKnowledgeBase Directory="$(KBPath)" />     <ReviewObjectsCmd  DateFrom="

KBDoctor - Nuevas opciones para mejorar el codigo.

Imagen
Con el fin de tener codigo mas facil de mantener, le estamos agregando a la nueva version de KBDoctor , varias opciones nuevas. Entre ellas, permite detectar:   If vacios.    Es común que por diversos motivos, quede código de la forma if (CONDICION)   //Codigo comentado  else   Codigo bueno  endif   Detecta tanto en el if o en else si quedó vacío por algún motivo. No parece algo muy util, pero en la práctica ha permitido detectar casos en los cuales no se estaba haciendo manejo de errores en forma correcta. Chequeo estricto de pasaje de parámetros.  Controla que los parámetros pasados entre objetos, coincidan tanto en tipo de datos (como ya lo hace hoy Genexus) como en largo, posiciones decimales en caso de numericos y en el DOMINIO que tiene definido la variable o atributo. Permite detectar posibles problemas o inconsistencias en el sistema. Esta opcion se agrega a la que ya teníamos de hacer un control estricto en las asignaciones del tipo &Var = [ATT/&