Entradas

Mostrando las entradas de septiembre, 2006

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…

Marcos empezo su Blog!!

Marcos Crispino empezó su blog, vale la pena leer lo que escribe pues tiene muy buenas ideas.

FreeMind y Requerimientos

Imagen
En el blog de Andres habla de la idea de mezclar wikis y verlos como MindMaps (se logran con FreeMind, se puede bajar aca).
Realmente me parece una muy buena idea, el poder tener una vista tipo MindMap, de las paginas del GXwiki, que tengan alguna categoria especifica (por ejemplo requerimiento).

Creo que puede ameritar un "Collaborative Project"

Internet Explorer, Ajax y sus problemas de performance

En las aplicaciones WEB, generadas con el generador .NET en 9.0 con funcionalidades Ajax hemos tenidos problemas recurrentes de performance, cuando se ejecutan Webtransaction con el Internet Explorer de Microsoft.
Toda las ventajas de Ajax, en cuanto a tener aplicaciones mas interactivas y que ejecuten logica y validaciones en el cliente, se pierden pues muchas veces pasa que se esta digitando en un campo y saltan validaciones de un campo anterior.
El problema se ve agravado cuando se esta atras de un proxy y se ejecuta en directorios que no tienen acceso anonimo autorizado.

La misma aplicación al ejecutarla con FireFox, funciona mucho mas rapido, por lo que supongo que el problema viene por el lado de como se ejecuta el javascript.

Espero que el IE7 solucione estos problemas. Tambien seria bueno que Artech mirara un poco estos problemas, pues en el foro se han planteado varias veces.

SummarizedBy Pattern - Publicacion en GXOpen

Se liberó la primer versión del SummarizedBy Pattern y quedo publicada en GXOpen.

La idea de este pattern, es poder generar consultas web, que permitan hacer un analisis dimensional ( resumenes por diferentes dimensiones) sin tener las complicaciones de definir una data warehouse y sus programas de carga.

Se puede tomar una transaccion GeneXus, y se le dice por cuales dimensiones se quiere estudiar, y que filtros se quieren tener y se generan consultas web que muestran los resumenes como rankings, graficas o nubes (tagcloud).

Fue una buena experiencia ver que en dos meses, se pudo llegar de una idea a un pattern operativo, con un grupo de gente trabajando en diferentes paises.

Espero que le pueda servir a varios en la comunidad GeneXus.
Por lo menos a Cecilia Abadie, ya le sirvio. :)

Aun queda bastante trabajo por hacer, pero estoy contento con lo que se logro hasta ahora.