Entradas

Mostrando las entradas de 2015

Buenas prácticas en el desarrollo con Genexus

Imagen
En la Comunidad Genexus de Montevideo, nos propusimos hacer algunas charlas sobre "Buenas prácticas" en el desarrollo con GeneXus. Cuando empezamos con las charlas internas, comprobamos que no teníamos definidas cuales son estas buenas practicas, sino que varias empresas venimos desarrollando diferentes metodologías y practicas de desarrollo, pero nadie tenia claro si esa era la mejor o si ya había algunas mejores en la comunidad. Esto dejo de manifiesto que se necesita mayor intercambio de experiencias, para lograr consensuar cuales son las dificultades y ventajas que tienen las diferentes formas de desarrollar. Para esto, haremos en el correr del 2016 charlas donde las empresas de la comunidad podrán contar como trabajan, dentro de etapas especificas del desarrollo, para intercambiar ideas y experiencias. El objetivo de estas charlas, es tratar de armar una lista de "Buenas practicas" con una explicación de como usarlas, en que escenario se han utilizado y...

Comunidad Genexus en Cuba

Imagen
Los amigos de la comunidad GeneXus de Cuba organizaron el primer Taller GeneXus de la Isla Caribeña. Los temas tratados fueron: Experiencias en el uso y utilización del GAM Yohanka Soroa Espinosa, Tomas Chao Alvero y Orestes Treto Cárdenas Tecnomática - GAMMA Trabajo en Equipo. Anllelys Días Cabezas, Orestes Treto Cárdenas. GAMMA Desarrollo del UserControl JSTree Beny Cabrera Martinez-Pinillos, Orestes Treto Cárdenas. GAMMA Reporteador con Objetos Query y Query Viewer Paula Garrido Moral. Tecnomática Transacciones complejas con GXUI Library Yamile Quintana León. Tecnomática Uso de BC, solución para sustituir gestión en transacciones de más de un nivel Yanet Torres  ETI-Tecnomática Tips para el uso de  patern Work With for WEB      Yadira Albuerne Mesa - Tecnomática Genexus con generador Java con PostGre SQL Jesus Yasser Arguelles Guarnalusse-Tecnomática Felicitaciones por la iniciativa, la organizacio...

KBTools - GeneXus Command Line Utilities

Imagen
A lo largo del tiempo he ido haciendo, juntando y repartiendo algunos utilitarios para el manejo de GeneXus a través de la linea de comando. En intercambios recientes con colegas, algunos planteaban la necesidad de hacer determinadas tareas,  las cuales nosotros en Concepto ya teníamos implementadas. Me parece una buena idea, poner a disposición de quien lo necesite algunas herramientas para automatizar algunas de estas tareas. Espero que puedan servir de insipiracion para proyectos que necesiten hacer Integración Continua con GeneXus o trabajos similares. Quedo publicada en el Marketplace Genexus, las KBTools  (aun no están aprobadas, pero supongo que alguien las aprobara en breve) Esta primera versión (2015.12) incluye: KBCompress Abre y compacta las KB que se encuentre bajo un directorio dado.  Funciona a correctamente a partir de la Evo3. Reorganiza los indices dentro de la base de datos. KBCompressMDFFiles Modifica la base de datos, pasando las mism...

Buscamos estudiante de Ingenieria en Computación.

Imagen
Concepto está a la búsqueda de un programador para incorporar en su grupo de desarrollo. Buscamos alguien que este cursando alguna de las carreras de computación, que este en tercer o cuarto año de la misma y valoraremos conocimientos en programacion C#, Java, GeneXus y diseño de base de datos. Ninguno de los anteriores es excluyente. Las tareas serían programar herramientas para uso interno del grupo de desarrollo. Si les interesa, pueden postularse en   BuscoJobs

Primera Mesa Virtual de Gestion de Proyectos (Resumen)

Imagen
Ayer se hizo la primera Mesa Virtual de Gestión de Proyectos que utilizan GeneXus como herramienta de desarrollo. Por mi problemas de atención, son incapaz de ver un video de mas de una hora en youtube, por lo que hago un breve resumen  En los últimos años se ha pasado de un desarrollo en cascada a metodologías ágiles.  Se usan varias herramientas diferentes para el manejo de los proyectos Todos adaptan las herramientas existentes a que convivan con GeneXus/ GeneXus Server Se valora la gestión de proyectos como fundamental para el éxito del mismo.  Se plantearon varias preguntas interesantes: Que buscan al contratar a una persona?  Que metodología de desarrollo usan?  Cuales son las etapas que mas problemas le causan en los proyectos?  Como manejan la documentación?  Que herramientas usan para la gestiona de proyectos?  Quedé conforme con el resultado, pero mando mis sugerencias para mejorar la próxima. Puntualidad.  Debe...

Grupo de Usuarios GeneXus: Mesa redonda Gestión de Proyectos

Imagen
Hoy (Jueves 19 Noviembre) a las 19:00 realizaremos una Mesa redonda virtual (a traves de Hangout) para hablar sobre Gestion de Proyectos en desarrollos con GeneXus. Si bien la Gestión de Proyectos no es mi fuerte, voy a participar como expositor. Mi principal interés es tratar de identificar cuales son las principales dificultades en los ciclos de desarrollos en las empresas de la comunidad, para poder planificar como mejorar la productividad en nuestros desarrollo. Pagina del evento:  Mesa redonda Gestion de Proyectos Se podra ver en la ventana de abajo Los espero

KBDoctor : Nuevo reporte "KB Interfaces"

Imagen
Hice un nuevo reporte en el KBDoctor para poder revisar cuales son los objetos que interactuan con objetos externos de la misma KB. Lo que hace es ver todos aquellos objetos que usan sentencias SHELL, CSHARP, JAVA, SQL,  Data Types (Directory, File, Location, DBConnection, XMLReader, XMLWriter, SMTPSession, etc),  External Objects (WS, Stored Procedures, etc) User Controls  Objetos de la categoria ToBeDefined También muestra en que objetos main se utilizan dichos recursos. Con este reporte se hace mas facil la puesta en producción pues se puede ver si hay que abrir puertos, habilitar permisos en directorios, etc. Lo voy a subir con la próxima versión del KBdoctor

Reconocimiento a "El Escribano"

Imagen
Enrique Almeida ( el original, también conocido en el ambiente familiar como "El Escribano"), fue galardonado este viernes en Nueva Palmira, junto con otros referentes de la cultura palmirense. El acto estuvo muy bien, emotivo, no muy largo y con mucho público a pesar del frio y la lluvia del dia.   Un muy merecido homenaje para quienes se esfuerzan por la cultura de Palmira.  Repercusiones en la prensa El Eco 

Cafe con Deployment

Pasó el GX25 y estuvo muy bien. Como habia comentado en el post anterior , mi participación este año era en el Cafe con Deployment, donde nos juntamos para intercambiar ideas sobre las tareas de Deploy. No quede conforme en la forma de transmitir los productos anunciados y las tareas realizadas en el area de deploy. Es un tema muy amplio y cada empresa tiene realidades diferentes, por lo que es imposible resolver todos los casos de primera. Los pasos que se estan haciendo son: Crear las tareas basicas para poder realizar deploy de aplicaciones.  Solucionar el deploy de aplicaciones WEB y SD simples Solucionar el deploy de aplicaciones mas complejas Tareas Basicas de Deploy.  Hasta hoy, para poder instalar una aplicacion WEB habia que usar el Deployment Wizard para java y el XCopy installation para .NET.  Ambas herramientas estaban algo desactualizadas pues no llevaban todo lo que se necesitaba, por lo que la tarea de instalación se hacia muy complicada....

Reflexiones sobre Controles de Usuario GeneXus.

Imagen
La extensibilidad que GeneXus brinda a traves de los Controles de Usuario (user controls) o extensiones, es muy util. Permite, sin demasiado esfuerzo, agregar funcionalidades a nuestras aplicaciones que de otra forma nos hubiese costado muchisimo, haciendo de los user control una herramienta muy poderosa. Ahora, como dice Spiderman Todo gran poder, conlleva una gran responsabilidad Cuando se revisa el Marketplace en busca de alguna funcionalidad, muchas veces encontramos productos de muy buena calidad y otros que no lo tienen tanto. Aun que no son muchos los usuarios que hacen evaluaciones, las mismas son muy útiles para medir el grado de madurez de los Controles. Mi experiencia con los UC, es que hay que usarlos, luego de una evaluación cuidadosa. También he visto muchos desarrolladores que gastan mucho tiempo tratando de hacer adaptaciones "mínimas" (por ejemplo de estética) en los controles de usuario. Como ejemplo, pongo el Uplodify, que es un control excelente...

Arreglo en el SmoothNav Menu.

Imagen
En el post  Optimizaciones en aplicación WEB GeneXus Evolution 3  contaba como había encontrado algunos problemas de performance en una aplicación GeneXus WEB revisando los pedidos (request) de la misma al IIS. En particular había uno raro que duplicaba el pedido de parte del Menu ejecutando dos veces el programa.  La gente de Simplifica (es la empresa que desarrolló el User Control SmoothNavMenu ) estudió el tema y me mandó una versión corregida que soluciona el problema.  Comparando la versión corregida con la versión anterior que tenia el error, no me resulto nada obvio porque se producía la carga duplicada.  Según me explicaron: "El error daba cuando se intentaba cargar la imagen de fondo del menú que por defecto viene vacía, ese get con url="", recargaba la pagina :<,  ahora solo se setea el background-image cuando recibe una imagen." Un error bastante dificil de detectar, para mi gusto, pero que hacia que el sistema fun...

Como ver donde demora una pagina WEB.

Imagen
Cuando desarrollamos con GeneXus, trabajamos a un nivel alto de abstracción, que nos libera de estar pensando en muchos detalles técnicos que permite tener mucha mayor productividad. Esto trae como consecuencia, que no somos del todo conscientes de todo las tareas que se realizan en la ejecución de las aplicaciones por nosotros desarrolladas. Me preguntaron varios ( dos personas diferentes, ya son varios, no? ) como hacia para saber donde estaba demorando una pagina WEB y como podian hacer para mejorar su performance. No tengo una metodología demasiado definida, ni me considero un especialista en el tema, pero cuento que es lo que uso, con la esperanza que les pueda servir a alguien mas. Lo que me resulta mas facil, es probar la aplicacion con Chrome y usar la extension Chrome Apps & Extension Developer Tool   que tiene algo mas de informacion que las herramientas que vienen que Chrome en forma nativa, pero tampoco hace la diferencia. Cantidad de request Despu...

Deployment en el #GX25

Imagen
En el 25 Encuentro GeneXus, la tarea de Instalación (o Deployment) de aplicaciones tomó mas importancia que en años anteriores. Van a existir algunos anuncios de productos para el manejo de deploy de aplicaciones GeneXus en diferentes proveedores de la nube, pero también mostrarán tareas MSBuild que permite automatizar  nuestros propios procesos de instalación de aplicaciones. Habrá una charla Café con Deployment donde Federico Salomón mostrará los avances que se han realizado en el tema en los últimos meses y yo estaré para apoyar moralmente y servir café. Si les interesa el tema, va a estar bueno para intercambiar ideas y necesidades.

Algunas preguntas para la comunidad Genexus.

Imagen
Cada tanto me gusta hacerme preguntas para analizar como serán los próximos años en el ambiente de desarrollo de aplicaciones, en particular con GeneXus. Las preguntas son solo un " ejercicio mental" , para poder delinear soluciones.  Generalmente tienen varias respuestas que sirven  y  me gusta tenerlas en mente antes del Encuentro Genexus para ver si puedo mejorar algun área de proceso de desarrollo. Algunas de las preguntas son: Requerimientos ¿Los usuarios de mis aplicaciones, pueden plantear mejoras/quejas a las mismas? ¿Que requerimiento aporta mas valor a mis usuarios? ¿Cuantos requerimientos de usuario voy a poder hacer en un mes? Diseño ¿Como adaptaremos nuestras aplicaciones a la Internet de las Cosas? ¿Estamos preparados para manejar GRAN volumen de datos? ¿Como manejaremos diversos orígenes de datos (base de datos, servicios web, mensajes, archivos, etc? ¿Puedo manejar varias aplicaciones en diferentes versiones de GeneXus sobre los mismos o...

#GX25 - Que esperar del Encuentro Genexus de este año.

Imagen
Ayer Gastón Milano  y Gustavo Carriquiry brindaron un webinar  (**) sobre como viene la organización del 25 Encuentro GeneXus y que tipo de charlas habrá y cuales serán los temas destacados del mismo. Hay oradores muy importantes confirmados y los temas de mas realce parecen ser Cloud, Internet de las Cosas, herramientas de Deploy. Mobile, WEB, ayuda en el diseño gráfico de aplicaciones. Otros temas no tan destacados pero importantes, es algo que Gastón nombro al pasar que piensan mostrar ideas para posicionar a Genexus como un intermediario entre datos y otro tipo de aplicaciones (por ejemplo aplicaciones hechas con GeneXus en diferentes versiones), potenciar los módulos, etc. El tema del encuentro es  What's Next, por lo que deberíamos aspirar a ver charlas sobre que son las próximas cosas que se nos vienen. Tenia esperanzas (aun tengo) de que hubiera algunas charlas o mejor mesas de intercambio, donde poder intercambiar ideas sobre como podríamos desarrollar en...

KBdelete - Utilitario para borrar bases de conocimiento GeneXus.

Imagen
Por mi trabajo en Concepto, me toca hacer migraciones, probar las nuevas versiones de GeneXus con sus Night Builds, reproducir errores para reportarlos etc, por lo que paso creando bases de conocimiento que luego no uso por bastante tiempo. Por alguna extraña razón que no conozco, GeneXus no trae ninguna opción ni utilitario para borrar una base de conocimientos y todos los archivos generados con ella. Me disponía a borrar varias KB que ya no usaba, y me di cuenta que podía ser mas rapido hacer un utilitario para borrar la KB que ponerme a borrar a mano cada una de ellas.  La idea es siempre tratar de automatizar lo automatizable.  Para cada KB que se quiera borrar se debe hacer: * Borrar la base de datos SQL Server correspondiente * Borrar todos los archivos y directorios bajo dicha KB. Para esto hice un utilitario dado un directorio busca todos los archivos GX_KB_*.MDF (nombre por defecto con que se crean las bases de datos de KB GeneXus en SQLServer) y borra la...

KBDoctor v10.10 - Funcionalidades agregadas

Imagen
En la versión 10.10 del KBDoctor (para Evo3 U3 ** o superior y para Evo2 U4 o superior) hay algunos arreglos de errores o cosas que funcionaban mal y algunos reportes nuevos. Lo dejé documentados en la pagina del Wiki de la comunidad : KBDoctor 10.10 (Nuevas Funcionalidades) ** No funciona para la Evo3 Upgrade 1 y 2, porque hay cambios en el GeneXus Platform SDK y tengo que recompilarlo con esas versiones viejas y aun no lo hice.

Costa Rica: Exenciones fiscales se tramitan online

Imagen
-- Publicado en Petroglifo -- El Ministerio de Hacienda de Costa Rica, hizo obligatorio el uso de sistema Exonet, para tramitar todas las exenciones fiscales en Costa Rica. (leer decreto  aquí .).  El sistema fue desarrollado por  Concepto  en GeneXus Evolution 1 y hace unos meses fue migrado a Evolution 2 y viene siendo usado con éxito desde hace varios años.  Mas noticias sobre este tema en:  El Financiero   ,    CentralAmericaData   ,  Deloitte

Optimizaciones en aplicación WEB GeneXus Evolution 3.

Imagen
Migramos una aplicación WEB de Evolution 2 a Evolution 3 usando Smooth en la propiedad "Web Experience". Los resultados son muy buenos, pues ahora tenemos mas control sobre cuando la aplicación debe hacer refresh y por lo tanto podemos mejorar mucho la performance. Este proceso, me llevó a mirar con mas detalles los request que hace una aplicación al server, para tratar de optimizarlos. Request a Favicon.ico.  Realizo mis pruebas usando Google Chrome como navegador y reviso lo request con las developer tools. Uno que me llamo mucho la atención, fue cuando iba a buscar el favicon.ico, que no tiene nada que ver con la aplicación, sino que lo hace Chrome para poner el icono en el tab del navegador. Al no tener ninguna referencia a esa imagen, Chrome va a buscar el icono a la raiz del sitio web (ej: www.servidor.com) En particular en dicho sitio tenia en la raíz un redirect a otra pagina, que traia 40Kb. O sea, cada request a la aplicación, hacia un request al favicon...

Imagenes en este blog.

Dejaron de verse las imagenes de los post mas recientes del blog. Estoy trabajando para lograr restituirlas..

Que hacer cuando un UPDATE de GeneXus Server falla.

Imagen
Es una situación habitual, que cuando quiero hacer un UPDATE en una KB GeneXus que esta conectada a GeneXus Server, el mismo falle, dando errores. Esto es común, cuando se modificaron muchos objetos en el server, por ejemplo, cuando alguien se va de vacaciones por un tiempo prolongado en una KB con mucha activadad. Otra situacion comun, es cuando tengon en el server referencias que no son soportadas en la KB local, por ejemplo, si los objetos en el server hacen referencia a objetos Styles que ya no existen mas en mi KB local, que es migrada de version anteriores de GeneXus. Otro motivo, es cuando borre objetos en mi KB local para realizar alguna prueba o limpieza y los objetos del UPDATE aun hacen referencia a algun objeto de estos. Una "solución facil" para hacer en estos casos, es importar los cambios que vienen del server. GeneXus Server no tiene la funcionalidad de hacer un export de objetos directamente desde la consola del mismo. Hice el pedido formal un par d...

KBDoctor - Buscando navegaciones similares y nuevas funcionalidades

Imagen
Cuando se realizan tareas de mantenimiento en KB que tienen varios años de desarrolladas, es conveniente empezar a usar nuevas funcionalidades de GeneXus. En particular, una cosa que es buena, es cambiar los objetos viejos para que empiecen a usar Data Providers y Data Selectors . Para esto es fundamental encontrar cuales son las navegaciones "similares" para lograr encapsular ese conocimiento en dichos objetos. La tarea de encontrar objetos con navegaciones parecidas es bastante compleja, para hacerla con GeneXus, por lo que decidí agregar una opción al KBDoctor , que facilite en algo la tarea. La opción se llama "Find similar navigations", pero en realidad lo que hace es listar todos for each de las navegaciones GeneXus (los explícitos y los implícitos por el uso de atributos en los formularios). Con este listado y ordenando por diferentes criterios (tablas, atributos usados, etc) se pueden luego encontrar aquellos objetos que me pueden interesar modific...

KBDoctor: Encontrando objetos candidatos para refactoring.

Imagen
Desarrollé en el KBDoctor una opción para listar objetos candidatos a ser reprogramados o ajustados. Los criterios que por ahora estoy buscando son: * Objetos con nivel de anidación alto Listo cuando se tienen mas de x niveles de if/do/for anidados.  * Objetos con complejidad ciclomática alta Calculo la complejidad ciclomatica simplificada del objeto y listo los que tengan una mayor a un rango dada.  * Objetos con grandes bloques de código  Apuntamos a no tener bloques de código de mas de 100 lineas de código.  El bloque de código puede ser una subrutina, o bloques de IF/DO/FOR, etc.  Lo que hago es una heurística, que puede tener algunos errores, pero sirve en muchos casos.  El parseo de codigo GeneXus es tarea compleja, pues no tengo ni la gramatica completa y menos un BNF para procesarla. Estaria muy bueno que en proximas versiones del SDK de GeneXus se agregue algunos helpers para el manejo de codigo. Tal vez existan...

View Last Navigation

Imagen
Alejandro Rivoir hizo esta extension , para acercar las navegaciones a los objetos GeneXus. Para esto, define un nuevo tab en el editor de objetos, donde se puede ver la ultima navegacion sin tener que volver a especificar el objetos. Esto es bueno para quienes desarrollan con Evolution 2. Aun no hay version para Evolution 3 y para la Salto, ya hay opciones para ver la navegacion sin tener que re-especificar el objeto. Es una extensión recomendable.

Export Commit History. Extensiones que uso en GeneXus

Imagen
Federico Salomon hizo la extension Export Commit History , para poder listar o exportar a una planilla electronica, la historia de cambios en GeneXus Server. Es una funcionalidad muy util, que permite subsanar la carencia (para mi bastante inexplicable) que tiene GeneXus Server que no permite extraer estadisticas de uso del mismo. Para todos aquellos que trabajan con GXserver, es una extensión bastante util, como para ayudar a redactar los cambios que hay en una nueva versión.

Recover Object - Recuperar objetos borrados en GeneXus

Imagen
Luciano Silveira hizo la extensión Recover Objet , para poder recuperar objetos borrados. Su uso es bastante sencillo, pues basta con ir a la ventana de la extensión, poner una fecha anterior a cuando se borro el objeto y muestra todos los objetos borrados desde dicha fecha. Luego, se selecciona los objetos que se quieren recuperar y al seleccionarlo el objeto deja de estar borrado. Es una extensión muy útil (yo diría que indispensable, debería venir nativa con GeneXus) pues minimiza el riesgo de borrar algo por error, haciendo la limpieza de KB una tarea mucho menos riesgosa. La recomiendo.

Variables Cleaner by DVelop

Imagen
Tengo pensado hacer una serie de post sobre extensiones que uso para el desarrollo con GeneXus. Para iniciar la serie, inicio con Variables Cleaner de los amigos de DVelop. Es una extensión que hace una sola cosa y la hace muy bien, BORRAR LAS VARIABLES QUE NO SE USAN en los objetos GeneXus. Permite seleccionar un conjunto de objetos y borrar de ellos todas las variables no usadas. Las ventajas de borrar las variables no usadas, es que el código generado sera mas chico, permite eliminar referencias innecesarias a atributos, dominios, SDT, etc y mimiza errores. También habilita un menú contextual en cada objeto, para borrar las variables de un objeto en particular. Resulta muy útil para borrar las variables no usadas antes de subir los objetos a GXServer. Esta disponible para casi todas las versiones de GeneXus (falta solo para Evo3 U3, pues cambio su número de compatibilidad) y la recomiendo mucho.

Modularizando KB con Evo3

Imagen
Estoy haciendo el cuarto intento de modularizar una KB con GeneXus Evolution 3, con el Upgrade 3. Para esto, uso el objeto Module  , tratando de dividir una KB en grupos de objetos que estén lógicamente relacionados para hacer mas fácil su mantenimiento.  Los módulos, me parecen una muy buena idea y que puede ser muy util, pero que en su implementación actual (U3/Evo3) hay errores que dificultan mucho su uso. Mis intentos han sido con el generador .NET y apenas empiezo a usar módulos, aparecen errores de compilación.  Por ejemplo, reporté un error con los módulos en Evo3 Upgrade 1, hace mas de 6 meses y el mismo sigue dando en la Upgrade 3.   SAC # 36763 También da problemas cuando un SDT de mas de un nivel, están en módulos.  Otro problema es cuando se tiene objetos que se usan en ambiente WIN y WEB, se quieren mover a un modulo. Seria bueno que un objeto WIN pudiera estar en un modulo, aunque se generara siempre igual que en el pasado. ...

Ver los objetos no referenciados en la KB.

Imagen
Entre las evaluaciones de KBDoctor, me llegó una de  Marco Tigselema   (gracias por las cinco estrellas!!!) que pedía poder ver los objetos no referenciados antes de borrarlos. Como el marketplace no permite responder a las evaluaciones, lo hago por el blog. Saqué hace un tiempo la posibilidad de ver cuales son los objetos no referenciados, porque esa funcionalidad ya fue agregada por Artech en GeneXus hace un tiempo. Si se hace View / Knowledge Base Information / Not Referenced Objects También se pueden ver los objetos menos referenciados y los mas referenciados.