Entradas

Mostrando las entradas de 2006

GeneXus CookBook

Estoy leyendo el libro Ruby Cookbook (Cookbooks (O'Reilly)).
Esta bueno para entender un poco lo que se puede hacer con Ruby y como es la filosofia del lenguaje. Me gustó mucho, sobre todo la forma en que estan diagramadas las "recetas":

Problema: Breve descripcion del problema a resolver.
Solucion: Codigo Ruby y una breve explicación
Discusion: Se discuten posibles alternativas a la implementación

Creo que sería una muy buena cosa hacer un GeneXus Cookbook, como proyecto colaborativo. En el mismo se podrian contestar todas las dudas repetitivas que aparecen en los foros.

Se me ocurren alguna de la forma

* Como incluyo flash en los webpanels
* Como envio mails con Genexus
* Como envio el contenido de un webpanel por mail
un montonazo de etceteras mas..

Habria tener alguna persona encargada de recompilar e ingresar estas recetas a algun wiki y de a poco generar el contenido. La idea es que sirva de referencia con ejemplos sencillos, que muestre lo que se puede hacer de una forma bi…

Ebook gratis!. Developing time-oriented Database Applications in SQL

Richard T. Snodgrass muestra en su libro (Developing Time-Oriented Database Applications in SQL ), metodologias para manejo de bases de datos relacionales que manejen el concepto de tiempo e intervalos.Es un PDF un poco largo (+500 paginas) pero vale la pena darle una leida, si tienen que realizar bases de datos, que manejen vigencias.

Es un tema que me tiene medio obsesionado, porque no hay buenas soluciones para atacarlo, ni a nivel de base de datos, ni hay patrones bien definidos para resolverlos. Hay una oportunidad de negocio grande para el que logre abstraer y resolver este intringüilis.
En la aplicación de la aduana, todos los datos basicos (paises, depositos, productos, etc) necesitan tener una vigencia y ahi caen todos los conceptos de integridad referencial, por lo que el uso de las transacciones GeneXus, sirven de poco y hay que utilizar muchos procedimientos para lograr los chequeos.

Sobre FoxPro y los 5 años perdidos por la industria..

Imagen
Cada vez veo con mas cariño, al pobre Visual FoxPro.

Creo que sufrió por haber sido comprado por Microsoft, y que (erroneamente) competia con Visual Basic.

Ahora todo el mundo habla de lenguajes interpretados, capaces de definir variables de diferentes tipos y ejecutar sentencias dinamicas.
Todo eso lo tiene Visual Foxpro y ademas tiene un modelo de objetos bueno y un manejador de datos razonable (y gratis) con sus DBF.

Creo que es un gran error el que cometió Microsoft en dejarlo morir (y en ayudar a su rápido fallecimiento).

Creo que si Microsoft hubiera seguido apostando a Visual FoxPro, podria haber sacado una ventaja mas importante sobre el resto de la industria, pues ahora con .NET estan recien alcanzando algunas de las funcionalidades que tenia.

Resulta paradogico que Microsoft este recien ahora tratando de hacer herramientas de programacion para los NO profesionales de la misma. Haciendo algunos arreglos indispensables (manejar mejor los errores, corregir la corrupcion de indices y…

Usabilizando GeneXus (Saves changes to 'ObjectName' HTML?)

Imagen
En modelos que tienen ambiente web, pasa muy a menudo que al abrir un objeto, y querer cerrarlo SIN MODIFICARLE ABSOLUTAMENTE NADA, se presenta la pregunta si queremos salvarlo.

Pasa mucho cuando estoy consultando algunos objetos en KB por diversos motivos. Al salvarlo el mensaje deja de salir (algunas veces) y no vuelve a suceder, hasta el próximo momento. Se ve que el motivo de esto es que internamente cambia el HTML, cuando lo lee y lo interpreta (como se traduce el "parsing"?).

El contestar que SI, trae como consecuencia un objeto modificado, que debe ser especificado, distribuido y a veces generado y testeado. De cualquier forma, muchas veces igual contestando que SI, el mensaje vuelve a aparecer.

El contestar que NO, hace que vuelva a aparecer esta pregunta.

Seria bueno, que la pregunta apareciera solo si modifico el HTML de alguna forma.

Blogger se renueva

Este blogfuemigrado a lasnueva versión del Blogger. Por fin sepuedentenerpalabrasclavesdebúsqueda y algunascosas mas quehabíandejado a la herramientade Google mas atrasadasquelasdemás en eltemadepublicaciónde Blogs. Veremoscomo me va con la nueva versión, creoqueahora no quedandemasiadasexcusas para mejorar la estéticadelmismo.

Usabilizando Genexus (User 'EALMEIDA' is already using this KB)

Imagen
De la serie "Usabilizando Genexus"

Mucho mas a menudo de lo que me gustaría me salta el error User 'EALMEIDA' is already using this KB.

El texto del error es clarísimo e indica que no el mismo usuario no puede acceder dos veces a la misma KB, en forma concurrente.

Es muy útil, poder acceder varias veces a una KB, para hacer consultas, mientras se realiza una tarea de las que demoran, como puede ser un Build all o un distribute.

Esto es algo que se "soluciona" facilmente cambiando la variable de ambiente GXUSER.
Se podria hacer un bat que haga:

SET GXUSER=BANANA
GXW32.exe

y con eso se puede trabajar sin problemas. Sería bueno encontrarle una solución mas prolija a este asunto, pues resulta llamativo que puedan trabajar mas de un usuario con nombres diferentes en la KB simultáneamente, pero no puedo tener dos instancias abiertas con el mismo usuario.

Second Life

Hace unos seis meses que estoy jugando (jugando??) a Second Life. Tengo 2 avatars bien distintos para poder tener diferentes puntos de vista del juego y analizar como interactuan los personajes. No los publico por vergüenza que puede darme de encontrarme con alguno conocido :)
Es increible ver como evolucionan los lugares y como algunas empresas estan adaptandose a este nuevo mundo.
Ejemplos:
Wimbledon en Second Life,
Reunion de IBMers y el CEO de IBM en Second Life

y tiendas de ventas de articulos virtuales

Seria lindo tener mas L$ para poder comprar alguna propiedad. Me hace acordar a los primeros tiempos del WEB, cuando las empresas mas avanzadas creaban sus primeras paginas web, antes que nadie viera claramente como lucrar con ellas.

Tarjeta SonyEricsson EDGE

Un amigo me mostró una tarjeta SonyEricsson para notebooks capaz de navegar a traves de la red celular, a 3.6 Mbps y (ampliable a 7.2 Mbps, actualizando el firmware).
En Argentina ya estan en pruebas pilotos para video en la red celular y parece que en Uruguay tambien se haria un piloto en los próximos meses.Creo que van a habilitarse nuevas aplicaciones con este ancho de banda en los celulares y notebooks.



Black holes are where God divide by zero

Imagen
Black holes are where God divided by zero. by Steven Wright
Esa frase que me pasó Mastropietro, está buena..y da un poco de miedo saber que Dios no controla bien las excepciones..

Ajax no es el camino (o al menos, no es el unico).

Imagen
Después de los primeros intentos de hacer funcionar aplicaciones web, desarrolladas con funcionalidad AJAX, me convenzo cada vez mas que dicha tecnología es buena, para determinado conjunto de aplicaciones, relativamente sencillas, pero que no esta bien situada para
Los problemas que se han dado:Performance.
La performance de las aplicaciones AJAX es decepcionante en muchas máquinas. Los factores son variados, influyendo mucho la versión del navegador que se utiliza. El peor de todos es IE 6.0 y el mejor es Firefox. La versión 7.0 del IE mejoro, pero aun es mala.
Usabilidad.
Mezclado con los problemas de performance, se mezclan problemas de usabilidad, porque al ser los llamados asincronicos, se disparan en momentos no deseados. Pasa varias veces se esta digitando un campo y saltan controles correpondientes a otro campo de la pantalla o limpia el contenido de lo que estamos digitando.
Practicidad de instalación.
Una de las mejores caracteristicas que tienen las aplicaciones web, es que…

Instituto Pasteur de Montevideo.

En el dia de hoy, se inauguró el el Instituto Pasteur de Montevideo. Es una buena señal para todo el Uruguay y también un gran logro de Guillermo Dighiero.
En la prensa fue nombrado en Observa :.  y Diario EL PAIS - Montevideo - Uruguay
y en Francia.

Al tio Willie, felicitaciones pues se que es su sueño desde hace mas de 10 años!!!.


Bare Naked Languages or What Not to Model

Un articulo interesante sobre DSL (GeneXus es un DSL para aplicaciones de negocios) y alguna informacion sobre en que casos conviene usar Domain-specific languages y en que casos es inapropiado, pues intentan abarcar demasiado.
El resumen:

Domain-specificlanguage (DSL) technology was introduced at Microsoft as part of thesoftware factories methodology. While DSLs are useful as stand-alonelanguages, placing them in the context of a software factory makes themmore powerful and helps avoid some common pitfalls in applying thetechnology. This article explains how DSLs fit into the softwarefactories methodology and how using the methodology can help DSLdevelopers avoid some common pitfalls.The Architecture Journal - Issue 9: Bare Naked Languages or What Not to ModelEnrique
"tuve un rapto de imaginación y nadie pago el rescate"

Open Source Web Design - Un sitio recomendable para los que diseñan aplicaciones WEB

En el sitio OpenSourceWebDesign se pueden bajar buenos diseños de sitios web (templates) y combinaciones de colores atractivas.En mi caso, tengo una gran dificultad para lograr combinaciones de colores que les gusten a los demás (a mi me gustan todas!).También esta bueno para ver como los que saben hacen CSS (para sacar ideas para los Themes) y algunos javascripts.

Metodologias de trabajo con Genexus

Voy a empezar una serie de post, sobre metodologia de desarrollo o problemas que se encuentran desarrollando aplicaciones "grandes" con Genexus.

La idea es generar un poco de discusión sobre:

Forma de entrega de cambios. Agil o no tan agil.Programacion en una KB o en varias KB y consolidar el trabajoControl de versiones y concurrencia de desarrolloNormas de programación y normas de estiloProgramacion orientada a patterns, cuando conviene usar los GX Patterns. Como se testea una aplicación hecha en Genexus ?? (el que sepa que explique :) )
Comunicacion en el grupo de trabajoEs necesario un DBA en el grupo de desarrollo?Migrar de version de Genexus. Cuando tiene sentido y cuando es inevitableCiclo de vida de una aplicacion, como adaptar el grupo de desarrollo a dicho cicloHerramientas recomendadas para utilizar en el desarrollo.
todos los etc, que quieran agregar.

Error en SQLServer 2000 que se resiste

com.genexus.GXRuntimeException: java.sql.SQLException: [SRV-DB1]
Could not continue scan with NOLOCK due to data movement

.....
Cada tanto (54 veces en los últimos 2 meses), nos pasa que una aplicación hecha en GeneXus / java, accediendo a SQL Server 2000, nos da el error de arriba. Esto es causado porque el programa hace un for each sobre una tabla, recorriéndola, pero no actualizándola (lo que genera un select con NOLOCK).Al mismo tiempo la tabla es actualizada por otros usuarios, dando de alta y de baja registros de la misma.
Si otro proceso borra un registro, después que el programa declaró el cursor, pero antes de terminar de recorrerlo, se produce el error y cancela el programa.
Este error únicamente nos da en el cliente con mas usuarios.... Se "soluciona", sacando el NOLOCK (en Genexus seria actualizar algún atributo al recorrer, con lo cual bloquearía los registros que voy a actualizar), lo cual no sirve para estos casos.Otra opción, seria cambiar el ISOLATION LEVEL, que…

Un dia de migraciones con Genexus 9.0 U2.

Tenemos un sistema en producción que funciona en Genexus 8.0 y esta generado con Visual FoxPro y la base de datos el SQL Server.
Por pedido de un cliente nuevo, le interesaba investigar la posibilidad de utilizar productos Opensource y nos pidio hacer la migración del sistema.
Dedique un dia entero, a ver como nos iba con la migración. La idea era EVALUAR, cuan costoso iba a ser la migración definitiva, por lo que decidí hacer una migración multi-pasos, pero desechable, de forma de poder solucionar problemas y luego volver a hacer la migracion definitiva.
Partiamos de un sistema en Visual FoxPro/SQL Server 2000 que tiene 43 tablas y 265 objetos con interfaz win (chiquito y controlable), que tienen unos cuantos años en produccion y una decena de clientes y algunas decenas de usuarios.
La idea final era llegar a java/mysql, pero decidi hacerlo en varios pasos.
1) Limpieza de KB Original
 Distribuir los objetos main y todos los llamados por estos + Transacciones Identificar objetos con sente…

Teclado de U$S 1.200

Imagen
El Optimus keyboard es un teclado programable que permite mostrar imagenes diferentes (en LEDs) dependiendo en que programa me encuentro o en que idioma estoy trabajando.
Aun es un poco caro (carisimo!) pero la idea esta buena..

Rocha CTP2

Desde hace unos dias, tenemos la version GeneXus Rocha CTP2.
Tiene varias cosas buenas, como la primera version de un diagramador de transacciones. Esta lindo, y cuando puedan hacerse diagramas de tablas, va a ser mas util. Aun no le encuentro utilidad al diagrama de transacciones.

Editor de Codigo.
Esta espectacular el poder colapsar partes de codigo (for each, if) lo cual facilita mucho la lectura de codigo (sobre todo si es ajeno).

MSBuilds Task.
Permite automatizar gran parte de las tareas que se realizan con una KB, como especificar, reorganizar, compilar, etc. Aun no me dio el tiempo de probarlo en serio, pero es una feature muy buena.

IN en DataProviders.
Se puede especificar el IN en dataproviders, con lo cual se simplifican mucho algunas consultas que hoy son dificiles de realizar. Tampoco probe esto, pero por lo que vi y me contaron, estaria bueno que en vez de utilizar el operador IN de SQL, se usara el EXIST que trae menos problemas de performance.

Hay varias cosas mas, que aun …

Java es open Source al fin..

Sun liberó Java, haciendola open source!!.
Además lo hizo con la licencia GPL version 2, lo cual es una buena señal a la comunidad.
Mis felicitaciones para Sun, por dar el paso, aunque demoraron un poco de mas!.

Faster Development Through Modeling

Estaba leyendo en Dr. Dobb's Journal , un articulo sobre MDA .

En el mismo hacen una referencia al MofEditor, al glorioso INCO de la facultad de Ingenieria de Uruguay, donde supe trabajar. Felicitaciones a los que lo desarrollaron.!!. Siempre es lindo ver que una publicacion de prestigio, hace referencia a productos uruguayos. Seria bueno que en la pagina pusieran el nombre de quienes lo desarrollaron o lo mantienen.

Vi una presentacion sobre este tema cuando estaban comenzando hace unos cuantos años (aun no tenian un producto desarrollado, solo prototipos) y creo ques una buena area de investigación.

Mejorar la performance de una aplicación GeneXus / Sqlserver

La semana pasada un cliente, al cual le habíamos brindado apoyo de consultoría hace unos años, nos pidió ayuda pues tenía una aplicación con problemas de performance.
El proyecto terminó hace mas de de dos años, por lo que si bien conocíamos la aplicación, a la misma le habían realizado varios cambios.

El problema

Una aplicacion generada en GeneXus 8.0, con .NET y SQL Server 2000, con componentes win/2 capas, webservices y páginas web. La cantidad de usuarios, es de unos 400 para la aplicación win y algunos miles para la aplicacion web.
El problema concreto que tenían era una aplicación que recibe mensajes xml en una cola (en realidad utiliza el File System para esto), los procesa y los responde. Este proceso estaba demorando muchísimo cuando recibía mensajes xml de mas de 4Mb, que llegaba a demorar mas de una hora en procesarlos, produciendo atrasos importantísimos en el procesamiento de los mensajes posteriores.

El proceso

Cuento un poco el proceso que seguimos para solucionarlo, pues pue…

Test de Joel

En joelonsoftware, Joel el autor, planteó (hace bastante) un test que intenta medir que tan maduro es el proceso de desarrollo de software de la empresa/persona.

Una puntuación de 12 es perfecta, 11 es tolerable, pero si has sacado 10 o menos estás en apuros. La verdad es que la mayoría de las empresas de software sacarían un 2 o un 3 y necesitan ayuda porque empresas como Microsoft están funcionando con una puntuación de 12 en todo momento.
Voy a publicar los resultados de mi evaluación en Concepto, aunque los resultados han sido variables cuando lo hacen diferentes personas.

¿Utilizas software de control de versiones? No utilizamos software de control de versiones en en sentido estricto, pero si tenemos una historia de los cambios que sufre cada uno de los objetos de las KB imortantes. Todas las noches se registra una foto de los objetos cambiados y tenemos una herramienta (KBCVSP - son las siglas de Control de Versiones Sin Pretensiones) que permite guardar el fuente de un objeto mod…

Google compro JotSpot

Realmente es una buena compra la que hizo Google porque los productos de JotSpot (http://www.jotspot.com/) , son muy buenos.
Es un wiki, con aplicaciones pre-armadas, para el seguimiento de proyectos, seguimiento de bugs, y varias aplicaciones mas, que son muy buenas (al menos las que pude probar)
Lamentablemente con unas pocas pruebas se supera el limite de paginas que se pueden usar en forma gratuita.

Es un buen complemento a las herramientas de Google y falta ver como logran integrarlas.
Para tener muy en cuenta.

"Usabilizando" GeneXus (DBMS Options)

Imagen
De la serie Usabilizando Genexus.

Cuando se editan las propiedades de un modelo dentro de una KB, en el dialogo Model Properties, aparece separada la opcion DBMS y el boton DBMS Options.

Desde mi punto de vista, seria mas conveniente, que la selección del DBMS principial que voy a utilizar, se realice dentro del DBMS Options.





También sería bueno, uniformizar un poco mas el acceso a las propiedades del Data Store Default (que se hace con el boton DBMS Option) y el acceso a los Data Store secundarios que se hace con el tab Data Store y luego Properties.

El difícil arte de testear software (imágenes en blobs)

Imagen
Queria contar una anécdota de un error que nos afectó en las últimas semanas.

Tenemos una aplicación desarrollada en GeneXus 8.0, generando en .NET y una parte en Win y otra WEB, con una base de datos Oracle.

En dicha aplicación desde hace tiempo utilizamos campos BLOB en la base para guardar documentos, los cuales son subidos al servidor, a traves de una aplicación WEB, que pide un archivo y lo guarda en la base de datos.

Necesitamos desarrollar una aplicación de mensajería que recibe varios archivos de imágenes y también las guarda en la base de datos. Para esto elegimos usar campos BLOB, pues era para nosotros una tecnología conocida.

Se hicieron pruebas de la aplicación, recibiendo imágenes y en todas las pruebas funcionó todo bien. Se probó subir una imágen y también con archivos de 1, 2, 10 páginas (se exigen TIFF) y todas funcionaron bien.
También se hizo una prueba de carga, donde se proceso en forma repetitiva la misma imágen muchas veces para ver si la performance era buena.

El lu…

Estado de GeneXus 9.0

Imagen
En el XVI Encuentro Internacional GeneXus, un mensaje muy claro que dieron los representantes de Artech, es que recomendaban a todos los desarrolladores GeneXus, pasarse a la versión 9.0.
Algunas personas me han preguntado que tan madura veia esa versión, como para empezar una migración.

No puedo contestar por todos los casos, pero si puedo compartir nuestras experiencias.

Los que tengan unicamente aplicaciones de pantalla verde (AS/400) , les recomiendo no migrar, aunque supongo que deben quedar muy pocos.

Las programas generados para WEB, estan funcionando muy bien desde hace mucho tiempo, por lo que esta muy maduro. Si tienen aplicaciones WEB en versiones anteriores de GeneXus, me animo a migrarla a GeneXus 9.0. Se puede tener algunos problemas de formato y de presentacion, pocas cosas deberian dar errores y los mismos deberian ser solucionables.
Las aplicaciones internas de Concepto estan todas en 9.0 desde hace mucho tiempo y no hemos tenido grandes sorpresas. En algunos clientes (por…

Diez años de una KB GeneXus en Producción

En este mes (Octubre 2006) se están cumpliendo 10 años de puesta en producción de una aplicación ERP (SIGE) hecha en GeneXus.

En Octubre de 1996, se realizó la puesta en marcha en COUSA (la principal aceitera de Uruguay), Molino San Jose (el molino harinero mas grande de Uruguay), Molino Rio Uruguay (#3 en harinas) de los primeros módulos del SIGE. Se instalaron contabilidad, acreedores/deudores, caja, stock y materia prima (una especialización de stock para el manejo de granos).

Sustituia un sistema desarrollado en Cobol con una base de datos RDB, que corría sobre equipos VAX Digital.

En estos diez años, han habido transformaciones importantes, tanto la forma de funcionar de las empresas, como en el funcionamiento de Concepto, pero dicho sistema sigue funcionando utilizando la misma KB y se ha "modernizado" utilizando tecnologías mas actuales.

En la herramienta de desarrollo estabamos en GeneXus 5.5 y ahora estamos en GeneXus 8.0.
Tuvimos migraciones a 6.0, 6.1, 7.0, 7.5 y 8.0 …

Diagramador de Tablas (SQL Dependency Tracker)

Imagen
Estuve mirando el SQL Dependecy Tracker de red-gate.com
Varias cosas me gustaron de este producto:
1) La generacion automatica de layout entendibles, con pocos cruces y tiene varios layouts a elegir.El diagrama que mas me gusta es el Smart Organic que es muy parecido al que implementaron Marcos y Ana en su proyecto de grado del digramador de tablas.
2) Dada una seleccion de tablas, pinta de azul las tablas referenciadas por esta y de rojo las tablas que hacen referencia a esta tabla
3) Se pueden ver las columnas de las tablas en los diagramas.
4) Se pueden agregar las tablas referenciadas por una tabla.
5) Tiene un mapa de navegacion pequeño que da una idea del formato general del diagrama.
6) Se pueden salvar los diagramas como archivos *.EMF y luego verlos con algun visor de imagenes y mantienen bien el detalle, aunque es dificil buscar en ellos.
7) Se pueden exportar los diagramas a XML.

Para utilizarlo con bases de datos creadas por Genexus, es preciso tener la integridad referencial activ…

Google CodeSearch

Google lanzó una herramienta para la búsqueda de codigo de programas open source en la web.

El buscador se puede encontrar aqui

Lo use para buscar ejemplos de selector de certificados X.509 en java y los resultados fueron muy buenos.

Introduccion de la Mac.. Buena presentación...

Muy buena presentacion de Jobs, mostrando la Mac, en 1984.

Usabilizando GeneXus (Data Type Bitmap x Data Type Image)

Sería bueno que en todos los lugares donde GeneXus hace referencia al data type bitmap, se cambie por image, para hacer mas coherente con el contenido de las mismas.
Hoy las variables definidas como bitmaps, soportan varios tipos de imagenes mas que los mapas de bits.

23 Ideas para GeneXus Extensions

Me pidieron una lista de posibles GXExtensions, para la version Rocha.
Los que decidan implementarlas, pueden "dejar su contribución a la salida del templo.."

1) Tools / Command Prompt (esta la va a hacer Marcos Crispino)
2) Generar Triggers de Auditoria para las tablas elegidas (esta la deberian hacer Marcos, Alexander, Ruben y Sergio)
3) KBIndexWizard. Generar los indices que se necesitan para correr bien la aplicación (Revisar todas las especificaciones y ver que indices pueden necesitarse, se necesita tener cardinalidad de tablas y algunas cosas mas, es mas importante el where que el order, etc)
4) IAR con estimacion de tiempos. Dada una reorg y una KB, generar los programas necesarios para poder evaluar en el servidor de produccion cuanto va a demorar esa reorg, considerar la cardinalidad de las tablas y la cantidad de thread que van a correr en paralelo.
5) KBSpellChecker. Corrector de faltas. Al salvar un objeto, verificar la ortografia de la documentación, el help, los ta…

Mas alla de la teoria de los strings (algo de fisica)

Hace tiempo lei los libros de Brian Greene "The fabric of the Cosmos" y "The Elegant Universe", que explican la teoria de los string, estan muy interesantes, pero intentan entender el mundo, con conceptos bastante abstractos (mundos de 10 dimensiones y demas).
La idea es poder unificar en una única teoría, la teoria general de la relatividad (validas en enormes masas y distancias) y la física cuántica (válida en masas pequeñas y distancias chicas).

Hay un articulo aqui, que nombra las teorías alternativas a la de los strings y superstrings, que es bueno concerlas (de nombre al menos) para tenerlas en el radar. Creo que cuando se logre descubrir esta teoria unificada, las computadoras que hoy conocemos van a pasar a la historia, aunque para ello falten varios años.

Que me dejó el XVI Encuentro Internacional de Usuarios GeneXus

Lo primero que me dejo, fue una gripe sensacional.. hace mas de tres dias que estoy con fiebre alta (mas de 38 y con altibajos), sinusitis y resfrio. Creo que puede ser una gripe importada, pues estuve con gente de varios paises (Chile, Ecuador, Argentina, USA, Brasil, Cuba, Costa Rica, Paraguay y varios otros). Las maravillas de la globalización.

En segundo lugar, la organizacion del evento fue ESPECTACULAR. Por mas que Artech lo haga todos los años, no deja de asombrarme el ver que todo funciona de maravillas. No se atrasaron las charlas, todo funcionó correctamente. La única queja que sentí (yo no la sufrí) fue que alguna vez no funcionaron el video en charlas que se retransmitian en simulatáneo.

El evento estuvo dominado por el anuncio de la próxima version de GeneXus, Rocha. Muy buenas presentaciones, buena ideas y parece la mejor base para lograr una versión que se destaque. Me gustó mucho la posibilidad de extender GeneXus, con las GXExtensions. Vamos a tener que trabajar mucho, …

Usabilizando Genexus (Documentacion sobre el formato del XPZ)

Hoy tenemos muchas aplicaciones que dependen de consolidar objetos a travez de archivos de distributes (XPZ).

Los que hemos desarrollado este tipo de aplicaciones, siempre lo hemos hecho haciendo "ingenieria reversa" sobre dicho formato, y viendola se puede entender mucho de la información que lo misma tiene.

En los ultimos dias, hemos estado discutiendo una tecnica de generar HELP en aplicaciones web desarrolladas con GeneXus y en gran parte usando Patterns.

El dilema era este:
1) Queriamos tener help en los objetos Genexus
2) Queriamos usar Patterns
3) En los Patterns, no hay forma de escribir el help de los objetos
4) Cada vez que se consolida un objeto se pasa por arriba el help del mismo.

Por lo tanto, tomamos la decision de tener un metodo alternativo de editar/guardar/generar el help de la aplicacion.

Todo este argumento se cae pues el punto 4) es FALSO. Existe una caracteristica NO DOCUMENTADA del XPZ, que es:

&lt Gxobject merge="Yes" &gt

Esto hace que las p…

Ideas, Darwin y Comunidad GeneXus

Imagen
Comunidad, es un grupo de personas o empresas que persiguen algun elemento en comun y tienden a crear una identidad comun, diferenciandose de otros grupos o comunidades.
Entre las diversas comunidades, si bien puede existir cooperacion, tambien existen lucha por la supervivencia, y como dijo el amigo Darwin va a ser mas exitosa y sobrevivir la comunidad que logre estar mejor preparada para el futuro. La forma de estar preparado para el futuro es tener mejores herramientas y para lograrlas se necesitan ideas.
Las ideas, son los "genes" de la comunidad, y una comunidad con mejores ideas, lograra diferenciarse de las demas comunidades y podra sacarle ventajas logrando asi prosperar en un futuro cambiante.
Que quiero decir con todo este verso?. Que es importante que permitamos que las ideas se expresen, se conozcan, se integren y se mejoren entre los integrantes de la comunidad Genexus y podamos con esto sacar ventaja con las mismas.
Que se necesita para esto?.
Poder registrar las i…

XVI Evento Internacional GeneXus

En el XVI Evento Internacional GeneXus me toca participar en tres charlas:

Seguridad en aplicaciones GeneXus - Algunos consejos prácticos.
Enrique Almeida - Concepto Alexander Wolff - ConceptoSummarizedBy Pattern – Un ejemplo de cómo desarrollar tu propio pattern
Enrique Almeida - Concepto / Federico Dominioni - GeneXus ConsultingComunidad: experiencias en el desarrollo de Collaborative Projects
M.Crispino-E. Almeida-Concepto/Armin Bachmann-ARTech/Alejandro Araujo/Uruguay Larre Borges-GXC
y tambien un CAFE (es una charla informal, de menos publico donde charlaremos del uso del nuevo pattern).
Café con Pattern "Summarized by"
Enrique Almeida - Concepto / Federico Dominioni, Silvia Keymetlian - ARTechVa a ser un evento muy movido!.

Rocha, allá vamos!!

Ya tenemos version Rocha CTP!.

Hay muchas funcionalidades muy buenas!!!.

Robots de autoconsulta

Desde hace un tiempo mi hija mayor (11 años) utiliza el Robot de Encarta, para ayudarse en sus deberes. De esta forma utiliza una interfaz que le gusta y domina (messenger) para consultar la enciclopedia.

Despues de ver el sitio https://www.robotinvaders.com/main/default.aspx, veo que son varios los que se estan desarrollando programas que consultan en forma de IM diversas cosas.

Creo que como proyecto de grado, se podria desarrollar un Robot para autoconsulta de un desarrollador GeneXus.
Es muy comun encontrar en los foros que las preguntas de los principiantes se repiten una y otra vez. Es entendible, porque hasta hace poco los foros no eran "buscables" y ademas porque cuando uno empieza en un tema, no sabe donde encontrar la informacion que necesita.

Si a las personas que empiezan a trabajar con Genexus pudiera agregar un robot a sus contactos de messenger, que le conteste las consultas mas sencillas, se podria facilitar la escalada a la curva de aprendizaje de GeneXus.

Usabilizando GeneXus (Copy/Paste de Objetos)

De la serie "Usabilizando" GeneXus

En varias oportunidades, he realizadon en GeneXus la tarea de seleccion un conjunto de objetos y he realizado Ctrl-C, con el objetivo de copiarlos. Luego que lo hago, me doy cuenta que esto no va a tener ningun resultado porque no esta implementada la funcionalidad de copiar y pegar objetos en Genexus.

Supongo que no soy el unico al que esto le sucede, por lo que pienso que puede ser bueno implementar el Copy/Paste dentro de Genexus y lo imagino de la siguiente forma:

1) Selecciono Objeto1 y le realizo Copy (Crtl-C)
2a) Si dentro de la misma KB hago un Paste (Crtl-V), se genera objetos que se llaman CopyOfObjeto1, en el folder donde realice el Paste, y seria similar a realizar un SAVE AS de dicho objeto.
2b) Si lo hago en otra KB, se realiza un distribute del objeto y se consolidaria sobre la otra KB
2c) Si lo hago sobre un disco (externo a GeneXus), se puede generar un distribute y dejar el archivo del mismo ahi. (esta esta dificil de implementa…

Usabilizando GeneXus (Insertar codigo para Business Component)

Con el fin de escribir menos codigo, estaria bueno tener alguna herramientita que pemitiera dado un BC, agregar el codigo necesario para utilizarlo en procedure

Lo mas sencillo seria que agregara:

&BC.Att1=&Att1
&BC.Att2=&Att2
&BC.Att3=&Att3
&BC.Save()

Creo que identificar y ayudar con este tipo de micro-patterns de codificacion, puede ayudar mucho en la productividad del desarrollador GeneXus.

Usabilizando GeneXus (Insertar Condiciones)

Con el fin de escribir menos, estaria bueno poder tener un menu contextual que en las conditions y en los for each permita agregar las condiciones "mas comunes". Si estas fueran definibles por el usuario, seria mucho mejor.
Despues de elegir la opcion de "Insert Condition", se presenta un dialogo que permite elegir atributos y en base al atributo que se elige, se generarian automaticamente las condiciones y tambien las variables BasedOn el atributo que elegi.

Lo que me serviria ahora serian:
Si elijo un atributo del tipo Date

&InvoiceDateIni <= InvoiceDate and InvoiceDate <= &InvoiceDateEnd ;

char, varchar o longvarchar

CustomerName like &CustomerName when not &CustomerName.IsEmpty();

numerico sin decimales

CustomerId = &CustomerId when not &CustomerId.IsEmpty();

Numerico con decimales

ProductPrice >= &ProductPrice when not &ProductPrice.IsEmpty();

Abstrayendo al fondo, que hay lugar!

En la definición del SummarizedBy Pattern, surge la necesidad de tener una parte de generar el ListAll, que es un panel muy similar al que se genera con el WorkWith Pattern, del cual estaria utilizando algo parecido al webpanel que se genera con el nombre WW.

De esta situación, surge las opciones de:

1) Generar el ListAll, en el WW e referenciarlo por nombre desde el Summarizedby
Tiene el inconveniente que es dificil mantener sincronizado los filtros del SummarizedBy y los del WW para no tener errores.

2) Generar el ListAll, en el pattern Summarizedby
Tiene el inconveniente que hay que duplicar una parte de la funcionalidad que tiene el pattern WW en el Summarizedby.
El segundo inconveniente es que cuando mejoren el WW (un ejemplo fue cuando le agregaron la funcionalidad de exportar a excel) dicha mejora deberia ser reprogramada en el Summarizedby.

3) Que el SummarizedBy, genere una instancia de WW con los filtros y att correctos.
Tiene la desventaja que es dificil de imaginarse algo que el u…

"Usabilizando" GeneXus (Mensajes de status que se congelan)

Imagen
De la serie "Usabilizando" GeneXus

Cuando distribuyo objetos, sale un mensaje de status que dice que objeto esta distribuyendo en ese momento.
Si por algun motivo, me cambio de ventana (por ejemplo leo un mail), los mensajes de status deja den verse y quedan congelados en el objeto que se estaba distribuyendo en el momento de hacer el cambio de pantalla.
Tambien pasa que la pantalla queda con espacios en blanco. Pongo un ejemplo de GX8.0
Esto hace imposible saber en que objeto va, y cuanto puede demorar en terminar.

Para estimar por donde va y cuanto le puede faltar, muchas veces miro el xml que va generando en el directorio de la KB, pero no es un metodo practico.

Lo que me gustaria, es que los mensajes de status, cumplan la finalidad de informar el estado de avance y que sean siempre visibles.
Lo de la pantalla blanca, es solo estetico y no me molesta mucho, pero el no saber cuanto le falta o si se el proceso se encuentra bloqueado, si es algo necesario.

"Usabilizando" GeneXus (Distribute de objetos que demoran en KB compartidas)

De la serie "Usabilizando" GeneXus

Trabajo a realizar: Distribuir n objetos (n>100) de una KB, que esta siendo usada por 3 personas mas.
Prblema que se plantea: El distribute demora mucho.

Datos del problema: La KB esta en un servidor windows 2003, rapido, sin problemas de memoria, ni sobrecarga, sobre discos SCSI, rapidos y trabajando con una red a 54Mbs (inalambrica).

Muchas veces se nos plantea este "problema" y hay varias formas de hacerlo

1) Hacerlo sobre la KB con la gente conectada, y esperar que termine
2) Si se que esos objetos no estan siendo utilizados/modificados, hacer una copia del dir raiz de la KB (grande el ShadowCopy de W2003) , abrir esa copia y distribuir los objetos que me interesan y borrar esa kb copia.
3) Pedirle a los que estan desarrollando en la KB, que salgan un ratito, que necesito hacer un distribute.

Pongo el ejemplo: Distribuir 212 webpanels con 2 personas conectadas ademas de mi, con GX8.0

1) Con dos personas conectadas ademas de mi. D…

Tags a proyectos de GXOpen.

Estaria bueno, tener la posibilidad de agregar TAGS a los proyectos de GXOpen, de forma de poder clasificarlos por diferentes criterios.
Por ejemplo el proyecto de "SummarizedBy Pattern" podria estar clasificado como Pattern, WEB, GX90, Ranking, CollaborativeProject, GXChart, SDT, .NET, Java.
Se me ocurre que facilitaria bastante la busqueda de dichos proyectos (por ejemplo, todos los proyectos que usan GXChart), pues los mismos hoy tienen unicamente una categoria. De la forma propuesta, podrian tener varios.

Ademas, podrian hacer un TagCloud de dichos Tags facilitando asi la busqueda de los mismos y de paso usan el pattern SummarizedBy :) .

"Usabilizando" Genexus (Actualizando el Directorio Virtual en .NET)

De la serie "Usabilizando" GeneXus

Hay una funcionalidad, que resulta buena cuando se empieza con Genexus en .NET y WEB, que es que se crea o modifica el directorio virtual que uno pone en F5/Options/Compilation/Execution.

Esta funcionalidad tiene algunos inconvenientes cuando uno trabaja en KB que no son locales al mi PC o cuando se compila con .NET Framework 2.0.

Cuando mi KB no es local a mi PC y la abri en un share, cada vez que compilo, el directorio virtual, se actualiza a apuntar a ese share, lo cual deja inconsistente la definicion del mismo.
Por ejemplo, si trabajo en una KB en en I:\kbs\miKB con i: apuntando a MiServidor y en las propiedades de Execution, tengo en Virtual Directory http:\\miservidor\dirvirtual1, cada vez que compilo, el directorio virtual dirvirtual1 queda apuntando a I:\kbs\miKB lo cual muchas veces es invalido pues el servidor no ve ese share, como lo ve el cliente.

Otro problema similar, ocurre cuando tengo en F5/Option/Compilation el csc del .NET Fr…