Entradas

Mostrando las entradas de agosto, 2008

Normalizo yo o GeneXus?

Imagen
Cuando se trabaja en grupo, y fundamentalmente cuando el grupo de desarrollo es numeroso, suele pasar que hay problemas en el diseño del modelo de datos.

Los hay de diferentes tipos, gravedades y consecuencias y algunos de ellos son:

Cosas iguales que se llaman diferenteCosas diferentes que se llaman igual Diferente semántica de algun campo o relación (uno piensa que un atributo tiene determinado significado y otro integrante del grupo, piensa diferente). Diseños no compatibles.Combinaciones de los anterioresVarios mas menos fáciles de describir en un post por un perezoso como yo.

Los dos primeros, pueden minimizarse, utilizando metodologías de nomenclatura (GIK por ejemplo) de forma de uniformizar la forma en que se nombran los campos / tablas / dominios / índices / grupos de la aplicación.

Dentro de los diseños no compatibles, agrupo a los problemas de diferencias de tipos / largos de los campos. Por ejemplo si una desarrollador decide representar los importes con atributos N(10.2) y ot…

Clasificacion automática de huellas dactilares (15 años atrás)

Imagen
En el año 1993, hicimos junto con Rosario Curbelo, Raul Caro y Gustavo Ulivi un proyecto de clasificación automática de huellas dactilares. Como su nombre indica, consistía en leer una huella y clasificarla. Después de estudiar bastante algunos algoritmos propuestos por otros autores, decidimos la implementación de dos y luego comparar los resultados. A mi me tocó trabajar en el grupo que logro los peores resultados... :(







Viendo las conclusiones puedo ver cuanto ha cambiado las herramientas con que desarrollamos y también el hardware disponible.
Demoraba 20 segundos en leer una huella y unos 4 segundos en clasificarla (el otro método demoraba mas de 10 segundos en clasificarla). Esto era programando en C, con los poderosos equipos 80386 de 33 Mhz.

PD: MUCHAS GRACIAS a Federico por el PDF con el artículo. Lo encontró en una mudanza ... Tengo el original en mi biblioteca, pero no me habría dado la paciencia para escanearlo.

PD2:
Ya planté un árbol ( y financié plantar algunas hectáreas mas)…

Codigo C# con [ ] en GeneXus 9.0

Imagen
Migramos el GXWiki de la versión anterior, a la 2.0.
Todo funciona bien, pero cambió la forma en que se suben las imágenes, con la WikiAPI.
Para lograr que funcione correctamente debíamos pasar el contenido de las imágenes a base64.
Hacer eso en GeneXus X es trivialmente sencillo, pues alcanza con

Con Genexus 9.0, no encontré la forma de hacerlo en forma nativa por lo que teníamos que agregar algo de código C# en la aplicación.

El código no era complicado, era algo asi:


byte[] encData_byte = new byte[data.Length];
encData_byte = System.Text.Encoding.UTF8.GetBytes(data);
string encodedData = Convert.ToBase64String(encData_byte);
return encodedData;

Al querer incorporar la sentencia

csharp byte[] encData_byte = new byte[data.Length];

al compilar daba un error, pues no encontraba byteERR. El parser, el generador o el chupacabras estaban cambiando [] por ERR.

Probamos de varias maneras y la que al final nos funciono fue poner

csharp byte[
csharp ] encData_byte = new byte[data.Len…

Mi radar

Imagen
Cloud
EC3 / SQS
Google AppEngineLiveMesh
Data
Amazon SimpleDBSSDS (SQLserver Data Services)Google BigTablePlatformsAndroidiPhone SDKXOServices
SynchronizationParalel ComputingInstant MessagingGPSRFIDApplication LifeCycleInstallingTestingMonitoringCustomizingAnalyzing/Module
PythonErlang
Tantas cosas interesantes y tan poco tiempo!!.

Desarrollando con GeneXus en Grupos numerosos

Desarrollando Con Genexus En Grupos NumerososView SlideShare presentation or Upload your own. (tags: genexusworkgroup)


Esta es la charla brindada en el GUG Montevideo. En realidad fue solo una lista de temas a tratar entre todo el grupo pues se hizo un lindo intercambio de ideas entre los participantes. No tiene nada demasiado destacable o nuevo, pero como una multitud (de 3 personas) me pidió las PPTs, las publico por si alguien mas les sirve.

Agregar imagenes de Grafos a aplicaciones GeneXus.

Imagen
Trabajando en el KBModule, estaba necesitando hacer graficos sencillos entre los modulos.
No busqué demasiado, pero encontre Graphviz, que cumple con lo que necesito en esta etapa.
Lo que queria lograr era mostrar este tipo de graficos.

La sintaxis es sencilla:

"Graphviz2.20\bin\circo.exe" -Tjpg -o"grafico.jpg" -Kcirco grafico.dot

-T
donde jpg es el formato de la imagen que quiero salvar (soporta unos cuantos, algunos que ni conozco, estan jpg, gif, png, etc)
-o
Imagen de salida
-K
Forma de organizar los nodos. Circo es en un circulo

grafico.dot, es el archivo que contiene la definición del grafico.
Tiene muchisimas opciones para usar, para personalizar el formato de los nodos, el formato de las lineas, colores, anchos, tamaños y demas.

Estoy usando las forma mas sencillas, y es muy facil de generalo, pues es un archivo de texto.

El grafico.dot del ejemplo es:

digraph Grafico
{
node[shape=folder,style=filled,colorscheme="blues9",color=3];
GeneralWeb->Generated[color=&…

9 consejos para mejorar la productividad trabajando desde casa

Leo en El Canasto :
He encontrado una excelente lista de 9 consejos (el original de Stepcase Lifehack tenía 10) para mejorar la productividad trabajando desde casa en El Desarrollo Personal:Pon algo de músicaTen distracciones a tu alrededor, pero no delante tuyoDispón de una forma de apuntar rápidamente cualquier ideaCompra una plantaIluminación y colorMantén el ordenCambia de vez en cuandoUsa periféricos ergonómicosHaz cualquier cosa que te haga feliz y te funcioneLea todo en Mejorar la productividad trabajando desde casa

Me parecen muy buenos consejos el 3) Tener donde registrar ideas, 7) Hacer cosas variadas y 9) Ser feliz.

Yo le agregaria:

10) Tener un metodo/sistema de registrar lista de tareas pendientes
11) Tener un metodo/sistema de registrar en que se gastan las horas (para poder saber en que se me va al tiempo).

Usando dominios enumerados en Genexus

Imagen
Uso bastante los dominios enumerados cuando programo.
Creo que ayudan mucho a dejar mas clara la programación pues se hace explicito el uso de determinados valores (evitando asi tener que poner constantes o parámetros en los programas) y luego es fácil buscar por ellos.

Un buen ejemplo es el de manejo de Estados de algun objeto, por ejemplo las solicitudes de trabajo:
Se puede tener la solicitud ingresada, en curso, anulada y cerrada.

Para esto generalmente defino dominios con valores enumerados, y en el codigo hago referencia a EstadoSolicitud.Anulada en vez de 'A' que queda mucho menos claro.

Cual es la contra de este enfoque?.
Si a la solucion se le quiere brindar cierto grado de personalizacion, hay que permitir que el usuario en tiempo de runtime agregue nuevos estados a las solicitudes. Esto implica que tenemos que definir una tabla que tenga "repetida" la informacion de Estadoo, Descripcion del estado de la solicitud.

Al tener cosas repetidas, siempre surge el prob…

Usabilizando GeneXus: Manejo de versiones

Imagen
En la U2 de GeneXus X, viene el manejo mejorado de versiones de la KB.

Cada versión se asemeja a un modelo de las versiones anteriores de GeneXus. Como toda funcionalidad nueva, tiene cosas buenas y algunas cosas mejorables.

Algunas cosas que me gustaría cambiar:

* Al crear una nueva versión, me gustaría que me mantuviera varios seteos que ya hice la versión anterior.
Por ejemplo, tengo la propiedad "Compiler flag" /r:Interop.GXPublic.dll, que es una dll que copiamos al directorio del modelo y es necesario tenerlo para compilar cualquier cosa (la reorg incluida) por lo que me canceló la primer reorganizacion que quise hacer.
Tambien tengo algunos fuentes de programas externos copiados al directorio del modelo y algunos seteos en el web.config realizados "a mano", como seteos de timeout, algunos de log4net, etc.
Lo que estaria bueno, seria tener un zip asociado a mi modelo, de tal forma que cada vez que se crea una nueva version, se deszipee dicho archivo en la estructu…

Agenda Digital Uruguay

Imagen
La semana pasada, se lanzo la Agenda Digital Uruguay.

La misma es una hoja de ruta para fomentar el desarrollo y la inserción de las tecnologías de la información en la sociedad uruguaya.

Es la primera vez que veo algún plan del gobierno en el área de las tecnologías de la información, donde se fijen lineas de accion y objetivos (medibles) y con responsables de cada uno.

El documento completo se puede bajar de aqui.

Los objetivos que siento que puedo aportar algo son el 4 y el 8 y hay otros varios que pueden ayudarnos a lograr trabajar en mejor forma.


Un resumen:

La Agenda Digital Uruguay (ADU)

Haciendo nuestra la Declaración de Principios de la Cumbre Mundial de
Sociedad de la Información, el presente documento avanza en la
implementación del compromiso de "...construir una Sociedad de la
Información centrada en la persona, integradora y orientada al desarrollo,
en que todos puedan crear consultar, utilizar y compartir la información y
el conocimiento, para que las personas, las comunidades…

User Controls: Prueba del GoogleIntensityMap

Imagen
Tenía ganas de probar el UC que desarrolló Gastón, que usa el Google Intensity Map.
Para eso hice una pequeña aplicación (bueno, mio en realidad tiene solo un webpanel y un data provider) que usa los datos de comercio exterior del Uruguay de lo que va del año 2008.

Importaciones.
Exportaciones.
Exportaciones menos Importaciones. (lo mas claro es con los que tenemos deficit y mas oscuro es con los cuales hay superavit)
Se pueden lograr cosas muy lindas con muy poco esfuerzo. Los datos estan en miles de dolares americanos.
No pude cambiarle el tamaño a los mapas, a pesar que existen propiedades para hacerlo, pero no les da bolilla, pero es un mal menor.

GUG Montevideo.

Imagen
El GUG Montevideo vuelve a reunirse este sábado, sera otra buena oportunidad para encontrarnos, compartir conocimientos y disfrutar de un almuerzo como es tradicional en estas reuniones

Agenda
11:00 hs Bienvenida con grappamiel.
11:30 hs Taller web for dummies - Javier Cruchaga
12:15 hs Almuerzo
13:15 hs GeneXus X in Action, extendedCRM un caso práctico - Cristhian Gomez
14:00 hs Presentacion de producto Freepassport.net v2.0 - Daniel Monza
14:45 hs Mesa redonda: Trabajo en grupos con GeneXus X - Moderador Enrique Almeida
15:30 hs Evaluacion y cierre de la jornada.

Donde: Casa de residentes de Flores, Magallanes 1136 esquina Maldonado

Costo: $ 100

Reservas y consultas: gugmontevideo@hotmail.com

Mas info: gugmontevideo.wordpress.com

Convoca GXOpen Task Force.

A falta de módulos, buenos son los folders. (KBModule 1.0)

Imagen
Después de algunos dias entretenido con la performance de un SQLServer que decidió empezar a consumir mas memoria y disco que lo habitual, volvi a dedicarme un poco al KBModule, para poder modularizar una KB.

La idea es poder ayudar a quien desarrolla a tener modulos mas independientes dentro de la KB y tener interfases bien definidas entre ellos. Que ganaré con esto?. El poder cambiar sin miedo los objetos internos de un modulo, sin afectar el comportamiento de los otros objetos de mi KB.

Nos pasa bastante seguido que al realizar un cambio en un determinado módulo, el comportamiento de otros objetos del sistema funcionan diferentes o dan error, sin haberlos cambiado directamente.

Bueno, pero bajando un poco a tierra la idea:

Que es el KBModule?.
Es un programa que toma una KB y las especificaciones (archivos SP0, para poder saber que objetos hacen select/update/insert/delete sobre una tabla) y carga esa información en una base de datos. Además permite clasificar de una forma particular y…

Dos buenos libros.

Imagen
En las semanas anteriores lei estos dos libros:

Sin Plumas de Woody Allen.



Excelentes cuentos con mucha sátira de un grande como Woody Allen.

Cartas de Groucho, por Groucho Marx.


Recopilación de cartas enviadas y recibida por un grande del humor de todos los tiempos. Imperdible.

NOTA IMPORTANTE: No están recomendados para ser leídos en publico, por ejemplo en los medios de transporte, playas, en la oficina,etc porque es fácil que los demás piensen que estamos mal al no poder para de reír.