Entradas

Mostrando las entradas de septiembre, 2010

Estructuras de datos como dominios.

Hay un problema que hace tiempo me da vueltas en la cabeza y no le encuentro una buena solución.

El problema:

Supongamos que tenemos una tabla de la forma:

FacturaImporteMonedaImporte1
100 U$S2
200 Colones3
10 U$S4
1.000 $5
30 Yenes6
500 $7
800 $
Cada operación que hago sobre importe, no tiene sentido si no se toma en cuenta la moneda. Si sumo los importes, tengo que tener instanciado MonedaImporte o el resultado es erróneo.

Sin embargo, no conozco en la base de datos como evitar este tipo de errores y tampoco es fácil hacerlo en GeneXus.

Sentencias erróneas.

Select Importe from factura //Muestra una lista de importe, pero no dice en que moneda esta Selectsum(Importe) from factura //Suma importes en diferentes monedas
En GeneXus estaría bueno que pudiera definir un dominio ImporteFactura= {Importe,Moneda} y que siempre trabajara con ImporteFactura, pudiendo referenciar a ImporteFactura.Importe y ImporteFactura.Moneda. En la pantalla y en los listados, se podría definir la forma en que se piden es…

Salvar una reorganización con fecha en un bat o cmd

Imagen
Quiero renombrar un archivo con una la fecha del día, con un archivo de comandos.
set curndate=%date% set dd=%curndate:~4,2% set mm=%curndate:~7,2% set aaaa=%curndate:~10,4% ren ReorganizationScript.txt Reorg%aaaa%%mm%%dd%.sql

Es seguro que para que funcione en diferentes sistemas operativos y/o formatos de fecha, hay que hacerle modificaciones, pero la idea básica creo que queda claro. Este bat hay que correrlo despues de cada reorganizacion para no perder las sentencias SQL que se realizaron.


Este es un post para no olvidarme, pues siempre que tengo que hacer un bat que renombra con una fecha pierdo un tiempo bárbaro.

Reforma del estado, total e irrestricta, YA!.

Imagen
Hoy recibimos un notificación de un organismo del estado. La misma era para que una persona que dejo de trabajar en Concepto en Noviembre de 2008, se expida sobre un expediente.
El motivo del expediente, es que ciertos funcionarios presentaron un reclamo por un curso impartido por Concepto donde Carla era la docente, sobre un sistema desarrollado por nuestra empresa. El curso tiene una prueba al final del mismo. La prueba se podia dar, si se tenia una concurrencia mínima al mismo. 

Hasta ahí, todo bien. El motivo del reclamo, no fue el contenido del curso, por suerte. Lo que motivaba la queja, era que un funcionario, había dado la prueba habiendo faltado a tres clases. Otros participantes del mismo, se sentían perjudicados por este hecho.

Todo eso suena bizarro y en una empresa privada, seria resuelto en menos de 5 minutos. Si la persona justifica razonablemente las faltas y demuestra que aprendió en el curso, se le da por valido y sino, lo tiene que hacer nuevamente cuando se rep…

#XXGX – La charla que no se hizo: “Cafe con MegaKBs”

Imagen
Algunas personas me preguntaron en el XX Encuentro Internacional GeneXus porque no se había organizado una charla sobre el manejo de KB Grandes. Algunos habían participado en años anteriores y les había resultado interesante. Con sinceridad este año decidí no presentar la opción de hacer un CAFE con KB Grandes, porque había otros temas prioritarios en el encuentro (dispositivos móviles inteligentes y computación en la nube). Creo que el tema de las MegaKBs va a seguir dando que hablar pero va a ser solucionado en gran parte, cuando tengamos funcionando los módulos en la versión Pinar. Espero que los mismos ayuden en el manejo, la administración, comprensión y en la instalación (deployment) de las aplicaciones generadas con KB Grandes.  Como había una charla dedicada a Módulos (recomiendo que la vean ** ) , tenia esperanza que los mismos se liberaran durante el evento, pero vamos a tener que esperar un poco hasta tenerlos disponibles. Aun quedan varias cosas a mejorar en el manejo de …

#XXGX – Formato de intercambio de conocimiento (XPZ)

Imagen
Breogan Gonda anuncio en su charla de cierre del XX Encuentro Internacional GeneXus que iban a hacer publicas las especificaciones del formato de intercambio de conocimiento. Esto es algo que solicitamos durante varios a#os todos los que programamos herramientas que generaban código GeneXus. Una de las formas mas fáciles que existían  de crear objetos GeneXus era la generación de un archivo de texto con el formato que GeneXus usaba para importar objetos y de esta forma poder crear objetos en la KB. Como no existen especificaciones de este formato, todo debía hacerse a través de ingeniería reversa. La forma en que trabajábamos era la siguiente. Creábamos el objeto en la KB, luego lo distribuíamos y veíamos el formato y la sintaxis del archivo de salida. Luego hacíamos programas que generaban algo con ese archivo y probábamos importarlo nuevamente. Todo el proceso era bastante traumático. Con la llegada de los GeneXus patterns, la cosa mejoro un poco, pues hay programas que ayudan a gra…

#XXGX - Lo que aprendí sobre Cloud Computing

Imagen
Cuando Gustavo Carriquiry me ofreció participar en la mesa redonda sobre Cloud Computing, dudé bastante pues tengo poca experiencia en el tema. 

Mi papel era el de moderador, por lo que no era tan importante saber del tema, sino tratar de elegir preguntas que fueran útiles para el público, que estaría compuesto mayormente por empresas que desarrollan o utilizan aplicaciones Genexus.
Cuando GusCarr me comentó quienes serían los participantes de la mesa redonda, no pude negarme, pues todos tenían mucha experiencia utilizando la nube para hacer negocios y parecia una buena oportunidad para aprender. 
Les recomiendo que vean el video de la charla, pero para los mas perezoso les dejo mi resumen de la misma
La computacion en la nube, es para todo tipo de empresas? Es para todo tipo de empresas. Es ventajosa para grandes empresas, que pueden "alquilar" infraestructura de cómputos en la nube y correr sus aplicaciones, pagando solamente por lo que usen.  Es ventajosa tambien para pequeñas …

#XXGX - Reconocimiento por Beta Tester de GXTest.

Imagen
Juan Martin Anolles y Federico Alvarez de Concepto, recibieron un reconocimiento por sus aportes como Beta Testers de GXTest. 

Desde mi punto de vista, están haciendo un trabajo espectacular para despulgar esta versión de GXTest y organizando y automatizando las pruebas en nuestro sistema aduanero. Es reconocimiento muy merecido.

Felicitaciones para ambos y a seguir metiendo!!


UPDATE: Agrego la foto del momento en que le entregaron el premio.

#XXGX - Mis conclusiones.

Imagen
Pasó el XX Encuentro Internacional GeneXus y para resumirlo, creo que fue el mejor de todos los que he participado (y son unos cuantos, pues di charlas desde el X del 1999 y desde antes como oyente).

Creo que han habido muy buenas cobertura del evento a traves de twitter y por ejemplo, Marcos en su blog hizo muy buenos resumenes de las charlas en las que participo.

Dispositivos moviles e inteligentes.
Se viene una nueva ola de dispositivos inteligentes moviles con el formato de tabletas y telefonos. Estos dispositivos estan conectados en forma casi permanente a Internet. GeneXus va a permitir generar para estos nuevos dipositivos con un nuevo generador que se liberara en los proximos meses. Va a generar para Blackberry, iPad/iPhone y Android. Falta Nokia, pero se esta evaluando un generador para esta nueva plataforma. Este es un anuncio muy importante, pues permite llevar nuestras aplicaciones a los dispositivos que la mayoria de nosotros ya usamos.

Computacion en la nube. 
Una tenenden…

Desarrollando aplicaciones en el 2015.

Imagen
Me gusta cada tanto pensar como pueden ser las metodologías de desarrollo en los años venideros. El articulo “Some reflections on a future of software engineering” (via @gmilano) me hizo recordar un post que tenía a medio escribir desde hace bastante tiempo y decidí que era momento de terminarlo.

No estoy en todo de acuerdo con lo que dice dicho artículo, pero coincido en algunas partes muy importantes.

Para mi, las herramientas de desarrollo del futuro cercando deberían poseer las siguientes características:
Desarrollo basado en Conocimiento.
Creo que GeneXus ha dado en el clavo con este concepto y creo que las herramientas del futuro deberían basarse en dicho paradigma para poder mantenerse tecnológicamente actualizadas. Deberíamos tener aun mas conocimiento almacenado en dichos repositorios.
Basado en la nube. Los repositorios de conocimiento (podrían llamarse KR=Knowledge Repositories, para diferenciarlos de las KB GeneXus), deberían estar accesibles desde a través de protocolos…

COMMIT ON EXIT : Propiedad de Objetos GeneXus

Imagen
En los objetos Procedure y Transaction Genexus existe la propiedad “Commit on Exit”, que puede tener los valores   YES y NO.
La documentación del Wiki de la comunidad, explica de una forma no demasiado clara para mi lo siguiente:
ValuesYes: The generated program executes a commit at the end of the LUW.
No: The generated program does not execute a commit at the end of the LUW.
Default Value = Yes
DescriptionPrograms generated by GeneXus execute commits at the end of each transaction (referring to the concept of database transaction, not the GeneXus object). This automatic commit is included in all programs that update the database. It is not included in Reports, Work Panels and Web Panels that do not update the database.Esto funciona bastante bien para la mayoría de los programas. El problema es que no es trivial saber si un programa hace o no commit con solo mirarlo, pues hay que mirar si esta haciendo algun UPDATE o INSERT en la base de datos, sobre todo para procedimient…

XX Encuentro Internacional GeneXus – Lista preliminar de charlas

Imagen
Los días anteriores a los encuentros Genexus en Uruguay, trato de organizar la agenda para no perderme alguna charla que me interese. Este año, creo que va a estar complicado no perderse muchas charlas interesantes, pues son muchísimas y hay muchas que pueden clasificarse como imperdibles.

Va a estar muy bueno este evento, pues en forma simultanea se están promoviendo soluciones para dispositivos móviles (muy chiquitos y portables) con soluciones en la nube (muy grandes y en datacenters).  Es interesante como lograr que dichas tecnologías tan distantes y que habitualmente se resuelven con herramientas muy diferentes, puedan estar todas presentes en las soluciones Genexus. Para facilitar la tarea, clasifiqué las mismas con una división totalmente subjetiva. La idea es poder cubrir un poco de todo y rever luego algunas de las que quedaron afuera y no pude presenciar.

La lista de conferencias esta aqui.
NOVEDADES
Módulos 1.0 / Ana Berta - ArtechMejoras en el lenguaje GeneXus para la Evolu…

GeneXus en StackExchange

Imagen
Desde hace un tiempo vengo con ganas de que las preguntas de los foros GeneXus se manejen en un sitio como Stackoverflow. Es bueno, rápido y mucho mas fácil de buscar que los foros de GeneXus actuales.


Marcos se puso manos a la obra y postuló a GeneXus en StackExchange.


Si demostramos que somos una comunidad pujante y con ganas, puede ser que lo aprueben y lo tengamos gratis. 


Para lograrlo, es necesario que vayan a este link,  se registren, hagan preguntas de prueba (on-topic and off-topic) y si quieren las clasifiquen.


Si sale, nos va a servir a todos.

Un blog nerd como éste tiene que festejar esto!!

Imagen
Hoy este humilde blog llegó a los 64 (=2 6) seguidores, por Google Friend Connect.  


Estoy solo en Costa Rica y llueve tanto que parece el diluvio universal, pero voy a encontrar la forma de festejarlo.

PIENSO-PIENSO: Como modelar datos acumulados II (Mi Propuesta)

Este post es respuesta de PIENSOPIENSO: Como modelar datos acumulados. Lo iba a poner en los  comentarios, pero quedaba demasiado largo y es difícil.
Supongamos el problema general de tener una tabla de muchos (millones) registros con la estructura
Clave*Dimension1Dimension2….DimensionNIndicador1Sum()Indicador2Count()Podríamos tener otras funciones de agregación como Avg(), Max(), Min(), etc.
Se quieren hacer consultas de resumen sobre los datos de dicha tabla, pero por tener tantos registros no se pueden resolver en forma eficiente en el momento de ejecución del programa.
Una posible solución es crear una tabla que tenga los datos acumulados y que tenga la estructura:
*AcuDimension1*AcuDimension2…….*AcuDimensionNSumIndicador1Sum(Indicador1)CountIndicador2Count(Indicador2)En los campos DimensionX de la tabla acumulada se almacenaran todos los valores del campo correspondiente de la tabla de arriba, mas un valor que signifique “Todos los valores”. Puede ser el 0 para numéricos y el “”…