Entradas

Mostrando las entradas de julio, 2008

A falta de módulos, buenos son los folders.

Imagen
En el post Modularizando una KB , planteo el problema de tener una KB dividida lógicamente en módulos, donde los cuales pueden interactuar entre ellos a traves de interfaces conocidas (y controladas) y poder evitar (o al menos informar) la utilización de objetos "privados" de mis módulos. Que ventajas tiene este enfoque?. El tener bien definidos los módulos dentro de una KB y sus interfaces (objetos públicos) permite independizar el desarrollo de cada uno de estos módulos, haciendo posible que cada uno de ellos se desarrolle/testee por separado, aumentando asi mucho la productividad. También se van a necesitar menos horas en la integración en el armado de la solución, pues deberían existir menos problemas. Si soy el desarrollador de un modulo, y tengo definido todos los objetos que alguien puede invocar desde afuera de mi módulo, voy a poder cambiar la implementación de todos los objetos de mi modulo, siempre y cuando no cambie el comportamiento de los objetos interfaz (obje

Amazon me miente.

Imagen
Como puede ser que Amazon me diga que los clientes que compraron el libro de Beck, tambien compraron un libro que aun no se editó?. Dear Amazon.com Customer, We've noticed that customers who have purchased or rated Test Driven Development: By Example (The Addison-Wesley Signature Series) by Kent Beck or other books in the Software Design, Testing & Engineering > Testing category have also purchased Software Testing and Quality Assurance: Theory and Practice by Sagar Naik. For this reason, you might like to know that Software Testing and Quality Assurance: Theory and Practice will be released on August 18, 2008. You can pre-order yours by following the link below. Software Testing and Quality Assurance: Theory and Practice Sagar Naik Price: $99.95 Release Date: August 18, 2008

Modularizando una Knowledge Base

En los días anteriores me tocó participar con Ruben, Alejandro y Gustavo en las instalación de un sistema en el exterior. Cuando uno está con amigos en el exterior, las noches se convierten en ámbitos de discusión de temas variados. Iba a decir tertulia, pero no me gusta esa palabra. Uno de los temas que discutimos, era la de como forzar el tener aplicaciones GeneXus, mas modularizadas. La idea era poder definir un conjunto de funcionalidades dentro de un módulo y que la funcionalidades de dicho modulo solo pueda ser accedido a ella a través de interfaces conocidas y dominadas. A mi me gustaría contar con : Una forma de agrupar objetos en módulos. Por defecto, debería ser el nombre de la carpeta raíz. También se deben poder incluir las TABLAS como objetos del modulo. Marcar APIS/Objetos publicos. Poder indicar que algunos objetos pueden ser invocados desde fuera de mi modulo. Por ejemplo si tengo un modulo de desposito/stock, debo habilitar que la funcion que da el saldo de de un prod

Migrando de GeneXus 9.0 a GeneXus X.

Imagen
La idea de este post es comentar algunos de los problemas que he encontrado migrando desde Genexus 9.0 a GeneXus X. Tiene también algunos tips que pueden hacer mas fácil la vida (al menos la mia). Los pasos que hice fueron: 1) Copiar el directorio de la KB para guardar en caso que pase algo. Borrar de la KB el directorio de los modelos (los DATA00x). Esto es para asegurarme que no me queda ningun fuente viejo, ni ninguna dll, jar, etc de la versión anterior. 2) Entrar con GeneXus 9.0 a la KB y borrar todos los modelos que no se utilicen. Esto se hace con File/Delete Model estando en diseño. Conviene borrar el modelo de Backup (si existe) pues acelera la conversión. 3) Renombrar el domino Boolean si existiera y ponerle Boolean90. En GeneXus X Boolean es un tipo de datos nativos y si existe un domino Boolean (como el que usa el Pattern WorkWith, se arma lio). 4) Borrar todos los objetos que no se utilicen y los que sean WIN. Este paso no es indispensable, pero es muy saludable. Puede a

Módulo de Exportaciones en Aduana de Costa Rica

Imagen
Hoy es el tercer día desde que entró en producción del módulo de exportaciones en la Aduana de Costa Rica. Todo ha funcionado sin problemas a menos de algunos ajustes de parametrización muy menores. Todavía falta que se incorporen los puertos mas grandes, que es donde salen mas movimientos, pero creo que haber emepzar sin ningun tropezón, es todo un logro... La viceministra no tenía mucha fe , pero todo salió muy bien..

Y esos raros equipos nuevos...

Imagen
La Aduana de Costa Rica tiene nuevo equipamiento. Todavia no está en producción pues tiene que ser homologado por HP para soporte y los equipos de aire acondicionado aun no están calibrados. Desde cuando se necesita "calibrar" los aires acondicionados???? Realmente son equipos que asombran por el tamaño, el ruido y la corriente de aire que producen. Tan fuerte es el viento que logró despeinarme :) Son muchos servidores y muchos Teras de disco... mucho backup... enfriadores y aire acondicionado y todo junto.. en realidad hay dos filas enfrentadas bastante largas, con piso elevado y la fibra por arriba, equipo antifuego, etc, etc. La verdad es que es un lujo. En fin, el sistema se puede seguir cayendo, pero ahora lo va a hacer mucho mas rápido.

Porque es dificil hacer proyectos colaborativos con Genexus?

Los que hemos intentado hacer proyectos con Genexus, trabajando con gente desde diferentes lugares, colaborando a traves de Internet, nos hemos encontrado con algunos problemas que a veces no son faciles de resolver. Para ver la dificultades de trabajo en grupo con GeneXus y compararlo contra otras forma de trabajo es bueno ver algunos ejemplos: El KBDoctor , por ejemplo se desarrollo utilizando Assembla entre tres personas y Visual Studio para programar. Cada día (en realidad, cada noche) publicábamos los cambios que programábamos en el repositorio y cada uno podía ver la ultima version y los cambios que había realizado los otros integrantes del grupo. El proyecto tiene la granularidad a nivel de archivo, por lo que es fácil subir solamente los archivos en los que trabaje. Si hay conflictos entre lo cambiado por dos integrantes hay que resolverlos. Con GeneXus, en cambio la forma "oficial" de compartir es GXOpen , que permite subir XPZ (o sea conjunto de varios fuentes) y

GXTest - Herramienta de testeo funcional de aplicaciones GeneXus.

Imagen
Hace unos días los muchachos Abstracta nos hicieron una demostración de su (futuro) producto GxTest. Segun sus palabras: "...GxTest no es solo una herramienta de automatización sino que es una herramienta para dar soporte a varias tareas de testing funcional de sistema, específica en principio para aplicaciones desarrolladas en Genexus. Lo que busca GxTest es dejarle al tester las tareas entretenidas y creativas y automatizar todas aquellas que sean tediosas y aburridas." Hay que ver como termina la historia, pero por ahora lo veo similar a CubicTest adaptado a GeneXus, lo cual está muy bueno. Creo que contar con una herramienta de testing que trabaje al mismo nivel de abstraccion que GeneXus nos puede servir a todos... El proceso es mas o menos el siguiente: Se define un modelo de las forma de interactuar que tienen mis programas, explicitando la forma en que se producen las transiciones y las validaciones que tengo que hacer para saber si el programa funciono bien. A par

Coding Horror: Maybe Normalizing Isn't Normal

En Coding Horror: Maybe Normalizing Isn't Normal planten el eterno debate entre la normalizacion y la des-normalizacion (que no es lo mismo que no normalizar). One of the items we're struggling with now on Stack Overflow is how to maintain near-instantaneous performance levels in a relational database as the amount of data increases. More specifically, how to scale our tagging system. Traditional database design principles tell you that well-designed databases are always normalized, but I'm not so sure. y plantea un caso donde puede justificarse trabajar con datos desnormalizados... En The Mother of All Database Normalization Debates on Coding Horror | High Scalability hay algunas de las frases sacadas de los comentarios que estan buenas... Normalize until it hurts, denormalize until it works. (Jeff) Use materialized views which are tables created and maintained by your RDBMS. So a materialized view will act exactly like a de-normalized table would - except you keep you o

The Dark Knight

Imagen
Fui a ver la ultima película de Batman. Tiene la magia del comic y está muy bien filmada. Hay sangre, golpes, explosiones, acertijos y mas golpes o sea todo lo que tiene que tener una buena película de Batman. Muy recomendable...

Usabilizando GeneXus: Busqueda en la KB y el estado del Indice

Imagen
Trabajando con GeneXus X me ha pasado mas de una vez, que busco alguna palabra que yo se que existen en varios objetos de la KB y no lo encuentro. El motivo siempre es que el proceso que indexa la base de conocimientos no terminó de indexar todos los objetos. Cuando se busca, hay una pista de que el indice no está completo y es un pequeño icono de advertencia y cuando pasamos el puntero del ratón sobre el dice que el Indice no esta completo. Me parece que seria conveniente, hacer mas explicito dicho mensaje, para que desarrolladores bananas como yo podamos darnos cuenta que el indice no esta completo. Es algo muy opinable, pero yo creo que mostrar el texto en rojo, en vez del icono, me ayudaría mas.

The Progress Bar

Imagen
Visto en: webeconoscenza

applicationHost.config en IIS7

Hacia unos dias que no usaba GeneXus X, porque estuve ocupado en algunos problemas mas acuciantes. Hoy de noche estaba aburrido y pase a generar la versión RC4 del GXWiki, que en poco tiempo tenemos que instalar para sustituir 4 wikis que usamos en Concepto. Seguí los pasos de la documentación sin problemas, hasta que quise ejecutar. A pesar que la compilación no mostraba errores, no se podía ejecutar. Revise mas a conciencia la salida de la especificación/generación/compilación y econtre un error que decía "Cannot generate virtual directory" . No parecía un error muy complicado, intente entrar al Aministrador de IIS, y me dice que no puede pues el applicationHost.config no es un archivo XML válido. Fui a revisarlo y efectivamente estaba vacío. Es uno de los dos archivos que utiliza IIS7 para guardar la configuración por lo que estaba en apuros, pues no podía levantar ni ver siquiera que era lo que tenia configurado anteriormente. Por suerte, después de alguna investigació

Las vacas son obras de arte. NO LAS TOQUE.

Imagen
Algunas personas piensa que vine a Costa Rica a trabajar, pero el real motivo de mi viaje es el de ver la exposición de vacas pintadas que hay en algunas plazas de San Jose.         No se a quien se le ocurrió por primera vez estas exposiciones, pero a mi me gustan. Las fotos salieron bastante mal, porque era de noche, llovia bastante y estaba un poco apurado. Habia varias vacas mas que no pude fotografiar y como son los ultimos dias ya han sacado varias de las mas lindas. Es tan bizarro, que me gustaria poder cambiar los enanos que tengo en mi jardin y poner dos de estas vaquitas. Las que me gustan mas son las del helado de chocolate con forma de vaca y las que estan bailando tango.         Hay algunas mas en este album Cow Parade en San Jose Costa Rica

WiiFit

Compré un WiiFit. Es un control de la consola Wii, que sirve para manejarla de diferentes formas, pero la mas comun es parado sobre ella. Detecta el movimiento lateral y hacia adelante y también detecta pesos. Esta MUY BUENA, y creo que se van a poder hacer juegos realmente interesante con esta tecnologia. Le gustó a toda la familia. Si pensamos en el Segway y en WiiFit, creo que quienes desarrollamos software tenemos que pensar seriamente como usarlo para darle mejores interfaces a nuestros usuarios, pues la experiencia es realmente diferente. No me gustó que me dijera "Enrique, has aumentado 0.3 kg desde la ultima vez que hiciste esta prueba...." No sabia que los ejercicios de Yoga, podian hacerme descubrir musculos que no sabia que existian. Para el que la quiera ver en accion les dejo este video.

El misterio de los enanos de jardin continua...

Imagen
En Desarrollando desde la trinchera.: No te aproveches de los mas chicos.. hablaba sobre la historia de los enanos de jardin de Palmira. El tema lo ameritaba y por suerte Rorro también escribió sobre el mismo . En mi ultimo viaje pude ver que los enanos de jardín de ahí también sufren y no se animan a dar la cara. Será que algunos de los enanos palmirenses terminaron en Panamá? Había algunos que me dejaron algunas dudas...

PIENSOPIENSO: Cual es la salida de este programa?

Imagen
Tengo un procedimiento GeneXus 9.0 que ejecuta el codigo donde &Numeros y &Pares son dos SDT collection con la deficion: Cual es la salida de este programa? A) NUMEROS=11 12 13 14 15 16 17 18 19 20 PARES = 2 4 6 8 10 B) NUMEROS=1 2 3 4 5 6 7 8 9 10 PARES = 2 4 6 8 10 C) NUMEROS= 11 12 13 14 15 16 17 18 19 20 PARES = 12 14 16 18 20 D) NUMEROS= 1 2 3 4 5 6 7 8 9 10 PARES= 2 4 6 8 10 UPDATE: Agrego D) a pedido de Diego. UPDATE II: La solucion es C) . La explicacion esta en los comentarios.

No te aproveches de los mas chicos..

Imagen
Nueva Palmira: Se roban enanos de jardín Los vecinos de Nueva Palmira no salen de su asombro. Ahora aparecieron en la ciudad delincuentes que se dedican a robar los tradicionales "enanos de jardín", adornos que estaban en patios y canteros desde hace largos años y que ningún dueño de casa imaginó que se los quisieran llevar. Según los datos que circulan de boca en boca en dicha ciudad de la zona oeste del departamento de Colonia, ya estaría faltando casi una docena de enanos y nadie tiene ni la menor idea de dónde van a parar. "Si los venden, no es acá, que todos sabemos qué características identifican la casa de fulano o la de mengano", dijo a LA REPUBLICA uno de los perjudicados. "Lo más probable es que lo hagan por puro gusto de causar daño", agregó el poblador, que recordó como no hace mucho tiempo otras barras de muchachones destrozaron faroles en el viejo muelle de la zona costera, tiraron bancos al río y rompieron la antigua fuente De los Españoles.

PIENSOPIENSO - Que objetos tienen variables N(16)? (Posibles soluciones)

Imagen
En PIENSOPIENSO - Que objetos tienen variables N(16)? planteaba uno de los problemas que se nos presento en las últimas semanas que creo que es típico de quienes desarrollan y mantienen aplicaciones con GeneXus. La solución que nosotros hicimos fue: 1) Usando KBQuery consultar la tabla Variable para ver los objetos que tienen variables N(16) Esto se hace corriendo el KBQuery y haciendo la consulta select * from variable where MdlId=1 and VarTyp=4 and VarLen=16 and VarDec=0 MdlId=1 //Modelo de diseño Vartyp=4 //Variable Numerica VarLen=16 //Largo de la variable VarDec=0 //Posiciones decimales de la variable. Si la KB es grande (tiene muchos objetos) y tenemos muchas variables por objeto, la consulta puede demorar bastante. En nuestro caso, demoro menos de 5 minutos. Salvamos el resultado de esta consulta en un archivo CVS (separado por comas) para procesarlo posteriormente. Esta consulta, tiene la contra que devuelve únicamente los ObjId, o sea los identificadores internos de los obje

EL PAIS DIGITAL: Crean tasa de $ 0,08 por bolsa de nylon por daño ambiental

Imagen
A mi me gustaría que se prohibiera el uso de bolsas de nylon, para bajar la cantidad de bolsas tiradas de Montevideo, que cada día tiene mas basura... pero puede ser un buen primer paso la creación de esta tasa. Una tasa de 8 centésimos por bolsa de nylon cobrará la comuna a los fabricantes de estos productos con el objetivo de financiar la recolección de este material y desestimular su utilización por parte de los montevideanos, ante los severos daños ambientales que provocan. El gravamen incluye a envases de plásticos. El cobro de dicha tasa fue incluida en el mensaje presupuestal que envió ayer el intendente Ricardo Ehrlich a la Junta Departamental. El director de Desarrollo Ambiental de la IMM, Néstor Campal, señaló que estas políticas procuran generar un mecanismo para disminuir la cantidad de bolsas de nylon que circula por Montevideo. El impacto ambiental de las bolsas es de significación: una bolsa necesita entre 30 y 40 años para degradarse. Por eso, la IMM estimulará el u