Entradas

Mostrando las entradas de 2005

HOW TO: Habilitar el cache de sentencias en una aplicación GeneXus.

La habilitación de cache de sentencias en aplicaciones Genexus es una tarea muy sencilla, pero que hay que realizarla con cuidado para poder tener buenos resultados.

Los resultados, en mejora de performance, han sido muy buenos, bajando en 30% los tiempos de ejecución de algunos procesos.

Lo primero que hay que hacer, es realizar una clasificación de la tablas que posee mi sistema, según la frecuencia con que se cambian los registros de las mismas. También es importante ver que tanto me afectaría si un registro de la misma es modificado y cuanto puede esperar el resto de la aplicación, para ver los resultados.

Frecuencia de Cambio

MUY BAJA - Tablas de parámetros / Metadatos que no se modifican
BAJA - Datos básicos de baja volatilidad y baja criticidad (Sucursales, Empresas, Rubros, productos)
ALTA - Pueden ser productos, empresas, etc (aunque tengan un ritmo de actualizacion baja, son criticos)
MUY ALTA - Movimientos de stock, documentos, logs, etc, No cacheable, son la mayoria de las tablas

Experimentos en el area de Software

Por mi trabajo, me toca muchas veces hacer "experimentos de software". Son varios los tipos de experimentos que tenemos que hacer, pero algunos ejemplos de los mismos son :
Compracion de componentes de software (drivers, rutinas, frameworks, etc)
Compracion de metodologias de desarrollo
Compracion de herramientas
Automatizacion de procesos manuales
etc.

En todos estos procesos, existe algo comun, y es que se quiere de ellos aprender y tratar de mejorar algo, que en nuestro caso es el "proceso de desarrollo de aplicaciones".

En Concepto hemos definido la utilizacion de un "metodo cientifico", para la realizacion de dichos experimientos.

Por lo tanto, todas las pruebas, deberan ser documentadas, para que un tercero (dentro de la organizacion y en algunos casos afuera) pueda repetir la misma y comprobar los resultados.
Tambien deberan en lo posible brindar elementos cuantitativos, que permitan a quienes no participaron en la prueba, tomar decisiones en para ver…

Comparación de Drivers JDBC y ADO.NET

Imagen
Me tocó optimizar una aplicación Java, desarrollada con Genexus.
Para lo mismo comparé la corrida de un programa que hace:

Insert n registros
Update n registros
Delete n registros

y repite los resultados para 2, 200, 2000 y 20000 registros.



Los resultados estan en segundos.

Claramente el jdbc driver con mejor tiempo de respuesta fue el jTDS, seguido por el de inet.
Como comparacion, puse ejecuté el ejemplo con .NET y ADO.NET, y los tiempos fueron buenos para pocos registros, pero empeoraron bastante a medida que aumentaron la cantidad de registros.

Diferencias y Similitudes entre el armado de Aplicaciones Empresariales con GeneXus y Puzzle

En las últimas dos semanas, estuvimos armando en familia un puzzle de 1000 piezas, de una foto del puerto de Portofino, Italia. Fue una tarea, que llevó unas cuantas horas de trabajo, de toda la familia.
Las horas de la confección del puzzle, me hicieron pensar en las similutudes entre un Puzzle y ek armado de las aplicaciones empresariales desarrolladas con GeneXus.

Las correspondencia que se pueden encontrar
Piezas del Puzzle = Objetos GeneXus
Una pieza limita con otra = Referencia entre objetos (call, referencia de atributos, etc)
Puzzle terminado = Aplicación que compila y está pronta a ser probada.

Ahi terminan las similitudes y empiezan a verse las dificultades.

Una pieza del Puzzle, tiene únicamente como máximo contacto con 4 otras piezas
Un objeto Genexus, puede tener relacion con cientos (o miles) de otros objetos.

Un puzzle se arma en 2 dimensiones.
La aplicaciones tiene varias dimensiones (varias base de datos, varia plataformas win/web/pda)

Las aplicaciones GeneXus (y las de solucion…

¿Vale la Pena el BetaTesting? - Charla en XV Encuentro Internacional GeneXus -

Como migrar de Visual FoxPro a Java y no morir en el intento - Charla en XV Encuentro Internacional Genexus

Check List a realizar antes de desarrollar una nueva aplicacion Genexus

Esto pretende ser una guía de ayuda para los momentos en que debemos desarrollar un nuevo modulo o hacerle un cambio importante a un sistema.
No es algo completo, y debería ser adaptable y cambiable para las diferentes realidades. Simplemente pretende ser un refresca-memoria de tal forma de no olvidarnos de cosas obvias.

Cual es el objetivos de este desarrollo?
Explicar en un parrafo, que es lo que se quiere hacer y que beneficio se quiere lograr con el cambio.

Quienes son los usuarios de la aplicación?.
Usuarios directos
Personas que Controlan
Usuarios que manejan Errores y Excepciones

AreasOperativaData Warehouse Consultas Gerenciales Consultas de Control Consultas Operativas Datos Básicos Instalación Auditoria/Seguimiento/Log Seguridad

En que plataformas va a funcionar?

WIN WEB WEBServices Mensajeria WAP Pocket PC Telefonos Word Excel Report Viewer Mail Archivos Mensajes SMS PDFXMLTXTOpenOffice

Preguntas a hacerse

Que pasa si falla?
A quien se avisa?
Como se avisa? Como se notifica a a…

Papá, cuando a vos en la escuela te mandaban buscar información, ¿cómo la buscabas con la maquina de escribir?

Anoche estabamos cumpliendo el ritual de lectura nocturna con mis tres hijos (todos en edad escolar) y hablamos de los tiempos en que yo iba a la escuela.
Les contaba que no habia computadoras y que si habia que escribir algo prolijo habia que hacerlo con maquina de escribir.

En eso, Emilia me preguntó:

"Papá, cuando a vos en la escuela te mandaban buscar información, ¿cómo la buscabas con la maquina de escribir?"

Esto me hizo pensar en cuanto ha influido Internet y Google en nuestros niños que ven como natural que cuando se necesita información LA fuente de información es Internet. Cuando la veo buscar en Google y cortar el texto a su programa que le lee en voz alta lo que esta escrito, pienso que nuevas cosas podran realizar con las nuevas herramientas, cuando las han adoptado con tanta naturalidad.

Auditoria ISO-9000 - Software

En el dia de hoy hemos pasado con exito, la auditoría anual de la norma ISO-9001:2000, en Concepto, para todas sus áreas y procesos.
Ya es el tercer año que estamos certificados, y realmente se notan las ventajas de tener procesos bien definidos, escritos y controlados.
La obligación de definir indicadores para los procesos críticos de la empresa, si bien es una tarea dificil y que insume mucho trabajo, una vez establecida y puesta en funcionamiento, da sus frutos.

Builds Nocturnos con GeneXus

Desde hace poco mas de un mes, estamos haciendo builds nocturnos con GeneXus.
Para realizarlos hemos desarrollado un herramienta (KBFullCycle) que permite la realizacion de
Impacto en la Base de datosEspecificacion de los objetos con FULLSpecificationCompilacion de todos los objetos. Envio mail de errores y registro de todos los pasos en una base de datos. Esto nos ha permitido ahorrarnos varias horas de especificacion/generacion en el dia. Ademas se pueden detectar rapidamente los errores que se van cometiendo. Nos faltaGeneracion del Help.Generacion del jar y war en forma automatica para dejar el build en un lugar testeable.Incorporar alguna herramienta de testeo automatizado, para que chequee los casos de prueba. Por ahora, la experiencia ha sido muy positiva.

Herramientas gratis recomendables

Para el compresión de archivos esta el TUGzip, pues comprime en el formato .7z, que logra un nivel de compresión muy grande para KBs.

WinDirStat Utilitario open-source, que me permitio recuperar mas de 2Gb del disco de mi notebook. Permite ver graficamente el contenido del disco y agrupando tambien por tipo de archivos. La vista tipo treemap me resulto útil e interesante.

Softerra LDAP Browser Buena herramienta para poder visualizar y consultar un directorio LDAP. Nos permitio detectar problemas en la definición de nuestro LDAP template para las aplicaciones java.

RSS Popper (Esta herramienta fue reomendada por Andres Aguiar) Tener un lector RSS, integrado a mi cuenta de Outlook, esta muy práctico.

99 beers

Encontre el sitio 99 bottles of beers, donde se invita a hacer un programa en diferentes lenguajes para generar la letra de una cancion.
Subi mi version Genexus al sitio... Ya hay cerca de 700 lenguajes diferentes.

Control de Versiones Sin Pretensiones II

Segui con el desarrollo de un programa para la realización de control de versiones en GeneXus.
La idea era (y sigue siendo) poder tener un registro de los cambios que surgen en los objetos de una KB genexus a medida que pasa el tiempo.

Al final decidi, realizar 2 versiones, una que no necesita mas nada externo para poder controlar al menos cuales son las diferentes modificaiciones de los objetos y otra que utilice Subversion y TortoiseSVN.

No pude avanzar demasiado, pues encontre un Memory Leak en GXPublic, que hace que el programa funcione correctamente en kB de pocos objetos, pero consuma una enormidad de memoria para KB grandes (mas de 5000 objetos).

Una vez que esto este solucionado (que lamentablemente no se cuando sera) podre publicar este utilitario, que por otro lado, esta quedando bueno.

A lo mejor es este un buen disparador para definitivamente tirar todos los desarrollos que tenemos con GXpublic en VB y pasarlos a .NET. Me da bastante pereza, pero creo que es una inversion a fut…

Control de Versiones sin pretensiones (CVSP)

En los proximos dias, voy a publicar en GxOpen un proyecto para hacer un control de versiones en los desarrollos GeneXus.
El programa va a publicar en un repositorio Subversion, todos los cambios realizados desde la ultima vez que se controlaron las versiones en esa KB.
Como cliente, muy posiblemente utilice el TortoiseSVN, que se integra con windows y tiene una interfaz de linea de comando que hace facil el integrarla con la solucion prevista.
Si resulta eficaz, posiblemente veamos de meter algun otro CVS.

Tambien habra un version, donde se guardaran los archivos unicamente en XML, con la fecha de modificado en el nombre del archivo. De esta forma si el proceso se corre todas las noches, va a poder tenerse la historia de un objeto y poder saber el contenido del mismo.

Complementando esta herramienta, con un comparador de archivos xml, creo que va a poder hacerse un Control de Versiones en GeneXus, sin mayores pretensiones, pero efectivo.

Veremos si a la comunidad le gusta y le sirve.

GeneXus - Cache de Sentencias

He estado alejado del Blog, pues tuvimos que migrar una aplicacion programada en GeneXus de generar Visual FoxPro a Java.
Si bien es una tarea posible, dio mas trabajo que el esperado, por errores de programacion propios, por errores de GeneXus y por diferencias en la arquitectura de la apliccion (**Mas de esto en un blog posterior).

Una de las grandes ventajas que trae el Generador Java, que lo diferencia del de Visual FoxPro, es la posibilidad de la utilizacion de Cache de Sentencias SQL, en la aplicacion.
La habilitacion de dicha funcionalidad, es trivial:
Simplemente se cambia una propiedad del modelo


Se clasifican las tablas como:No Cacheable (Si esa tabla esta en una sentencia no se guarda en el cache)Se modifica muy poco (La sentencias tienen tiempo de vida de 600 min, esto es configurable)Se modifica poco (La sentencia tiene un tiempo de vida de 60 min)No se modifica nunca (La sentencias son inmortales!). Se regenera la aplicacion y automaticamente ya se esta utilizando el cache de…

Lectura de vacaciones

En las vacaciones lei

"Death March" de Yourdon, bueno para identificar proyectos que van al fracaso y algunas estrategias para poder salir no muy herido de los mismos. Los que hemos participado en este tipo de proyectos sabemos que es importante poder superarlos, manteniendo la familia, la cordura y la salud.

"GUI Bloopers" de Jeff Johnson. Ayuda a identificar errores comunes que se cometen ( y que yo lamentablemente cometo muy a menudo) con la interfaz de las aplicaciones. Todo un tema que es necesario estudiar a fondo, para lograr aplicaciones usables.




Quiero un programita que haga esto...

Estoy haciendo una busqueda rapida en Internet, para ver si consigo alguna herramienta de uso personal, que realice las siguientes tareas (bastante sencillas por cierto):

1) Cliente de mail (pop/imap)
2) Instant Messaging (con diferentes protocolos)
3) Blog (RSS y poder publicarlo desde ahi)
4) Manejar contactos
5) IRC
6) Buscar rapido en todo estos repositorios.

No parecen ser cosas complicadas de agrupar en un solo utilitario (sobre todo si se hace en forma modular).
Seguire buscando...