Entradas

Mostrando las entradas de 2010

GeneXus SDX y repositorio de dominios.

Imagen
Probe GenerXus SDX. Me gusto.  Me gustaria tener mas tiempo para poder probarlo mas en serio.

Cuando empece a probarlo,senti la necesidad de tener un repositorio de dominios y entidades en que basar el desarrollo. Creo que podria ayudar muchisimo a quienes necesitan aplicaciones para dispositivos moviles y no estan familiarizados con el desarrollo en GeneXus.

El usar tecnologia WEB en el desktop para crear aplicaciones para SmartDevices, me hizo sentir como cuando usabamos DOS para crear aplicaciones Windows. Hay que ver si esto terminara igual, donde una tecnologia termine sustituyendo totalmente a la otra y dentro de unos años terminemos desarrollando aplicaciones para Smartdevices en esos mismos dispositivos.

Mudanza de Concepto al LATU

Imagen
Para festejar un muy buen año de Concepto, decidimos salir un poco de la zona de confort y mudar la empresa desde el tranquilo Prado al Parque Tecnologico del LATU.

Si bien estábamos conformes con la ubicación actual, confiamos que mudarnos a un lugar con mas "vecinos tecnológicos" nos va a posibilitar alianzas para realización de proyectos interesantes. 

Programa Fortran del año 1987. Calcular PI con mas de 1000 digitos despues de la coma

Imagen
Revisando papeles por la mudanza de Concepto, encontré un programa FORTRAN que nos habian mandado en Calculo Numerico, hecho en el servidor IBM/4381 de la facultad de Ingenieria del año 1987.

Es un programa que debia calcular el numero PI, con mas de 1000 digitos despues de la coma.

El nuestro habia logrado calcular hasta 2320 cifras en el tiempo estipulado. Recuerdo que era en verano, hacia un calor espantoso y nosotros pasamos varios dias en el 5to. piso de la Facultad viendo como la gente se bañaba en la playa Ramirez.

Recuerdo que no era nada trivial programar en esa computadora. Habia que mandar a compilar y espera la salida, pues se encolaban las compilaciones. Si se quería imprimir, había que enviar el trabajo al spool y luego convencer al operador para que prendiera LA impresora del mainframe, para lograr hacerse del listado.
No habia que cometer muchos errores, pues sino se demoraba muchisimo mas.

La pagina escaneada no se ve bien, pero tiene valor histórico (para mi).






Computac…

Tag GeneXus en StackOverflow

Imagen
Como se puede ver en Hottest 'genexus' Questions - Stack Overflow, ya se creó la etiqueta GeneXus en StackOverflow, por lo que ahora va a ser mas fácil encontrar las preguntas relacionadas con GeneXus en el repositorio de preguntas y respuestas StackOverflow. Cada dia lo uso mas para encontrar soluciones a mis problemas de programación.


Había intentado crearla hace un tiempo, pero se necesita una reputación de al menos 1500 para poder crear nuevos TAGS y todavía no llego a dicho puntaje requerido. 


UPDATE: 
Como Armin dijo en los comentarios, se pueden suscribir por RSS a las preguntas que tengan el TAG GeneXus con el 


http://stackoverflow.com/feeds/tag?tagnames=genexus&sort=newest

PIENSOPIENSO: Porque empeora la performance de este programa?

Imagen
En la base de datos, tengo una tabla que se crea asi:

Tabla1 *Campo1 N(4) Campo2  N(4) Valor C(20) Fecha Date
y defino un indice de usuario por el campo Fecha.

Tengo un programa (procedure GeneXus)

for each order Fecha   where &FechaInicial <= Fecha and Fecha <= &FechaFinal   Msg(Valor,status) endfor
que funciona muy bien.

Se reorganiza desde GeneXus la base de datos y se cambia la clave de la tabla Tabla1 quedando asi:

Tabla1 *Campo1 N(4) *Campo2  N(4) Valor C(20) Fecha Date
Lo que se hace es agregarle un campo mas a la clave primaria.

El procedure no cambia, pero sin embargo luego de reorganizar la tabla empieza a funcionar mucho mas lento que antes. Que puede haber pasado?

Realizar un Export de todas las KB GeneXus de un directorio

Las KB de mi notebook, las tengo organizadas por version de GeneXus. Tengo un directorio modelos y dentro de este, guardo las KB en 9.0, X.Ev1 y X.Ev2. Me interesaba tener un export de todas las KB de una versión dada, por ejemplo, poder hacer un export de todas las KB de la ev2. Para eso hice dos archivos de comandos, para poder realizar esta tarea, guardando el export en un directorio llamado _ExportKB y los errores o resultado de la corrida en _logsExportAllKB.BATmd __exportskb
md __logs
set curndate=%date%
set dd=%curndate:~0,2%
set mm=%curndate:~3,2%
set aaaa=%curndate:~6,4%
FOR /R %%I in (*.gxw) do call exportkb.bat %%~dpI "__exportskb\%aaaa%%mm%%dd%_%%~nI.xpz" > "__logs\%aaaa%%mm%%dd%_%%~nI.log"ExportKB.BatMSBuild exportkb.msbuild /t:OpenKnowledgeBase;Export /p:ExportFile=%2;KBPath=%1  ExportKB.msbuild<Projectxmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportProject="C:\Program Files (x…

Una escoba por niño.

Imagen
Si me tocara definir un proyecto educativo para los escolares uruguayos, me gustaría poder darle una escoba a cada uno de los niños y que los mismos limpien la vereda de su casa al menos diez veces en el año.

Podrían usar las ceibalitas para sacar fotos antes y después de la limpieza. Las fotos podrían subirse a un sitio web y los maestros le pondrían la calificación y el publico podría ver los avances. La basura que tenemos (fundamentalmente en Montevideo) es vergonzosa y resolverlo es un tema educativo prioritario.

Pagamos bastante para tener las calles limpias y por otro lado no hacemos nada para dejar de ensuciarlas.

Una solución de baja tecnología que podría ayudar a educarnos a todos. Si un niño te reclama que no tires un papel a la calle, no creo que se te olvide fácilmente.

Nuevo logo de Concepto

Imagen
Hace 20 años, usando herramientas de avanzada (Paintbrush en Win 3.11) diseñé este logo.Luego de tantos años y varias amenazas decidimos cambiarlo. El nuevo logo es asi:Veremos cuantos años podemos aguantar con este. Espero que este les guste mas a varios. No se precisaba mucho para ser mas lindo que el primero.Links relacionados: Historia de mis logos tristes

Son necesarios los técnicos de pruebas (testers) en aplicaciones GeneXus?

Imagen
Encontré la presentación:Model-Driven Development, the end of the test profession?
View more presentations from Johan den Haan.
Me senti muy identificado con los problemas y las conclusiones a las que arribaron.
El problema planteado es si es necesario testear aplicaciones generadas automáticamente por generadores de aplicaciones (como GeneXus).
Con un generador de aplicaciones, se hacen mucho menos importantes los testeo de bajo nivel y toman mas importancia las pruebas de mayor nivel de abstracción.

Pasan a no ser tan importantes:
Testeo unitario basado en el código.Testeo de vulnerabilidades de seguridad en el codigo (si todos los ingresos de datos son generados de igual forma, validando que uno de cada tipo queda bien generado, puedo asegurarme que que todos esta bien). 
Pasa a ser MAS importantes, para diseñar la aplicación

Testeo de requerimientosPrueba del diseño funcional de la aplicacion y patrones. 
También son MAS importantes las validaciones de aprobación, haciendo que las mi…

Vistas al Blog..

Imagen
Revise las estadisticas del blog, y veo que aparecen nuevos dispositivos y hay grandes variaciones en los sistemas operativos.

Por ejemplo, nunca me hubiese imaginado que alguien usara un PSP para acceder al blog.



Pageviews by Operating Systems Windows  (81%) Other Unix  (11%) Macintosh

Foro de la GeneXus X Ev2 en StackOverflow?

Imagen
Porque no hacer el foro de Betatesting de la Evolution 2 en Stackoverflow.com ?

Creo que le daria mucha mas visibilidad a GeneXus y a su revolucionaria forma de crear aplicaciones Android, Blackberry e Ipad en forma simultanea. 


Lo veo como una buena medida de Marketing.. Lo unico que faltaria es que alguien con la suficiente reputación pueda crear un TAG apropiado para Genexus y a partir de ahi, todo seria mas fácil. 


Mientras no exista el tag, se puede incluir #GXev2Beta o un hashtag similar en el texto de la pregunta, para encontrarlas mas rápido.


Esto permitiría que los betatester tengamos mas reputación en StackOverflow y poder crear el sitio de consultas exclusivas para un futuro GeneXus.Stackexchange.com


Conversando con Gaston, charlábamos  que el mecanismo de aumentar la reputación de varios participantes en los foros de Stackexchange para poder crear el nuevo sitio, es medio nefasto. No veo mucho sentido que tenga que preguntar/responder en sitios de lenguajes de 3era generación, …

Fechas nulas y XML/SOAP

Imagen
Hoy cuando escribimos una fecha nula (date o datetime) en un archivo XML con GeneXus, está grabando
<Fecha>0000-00-00T00:00:00</Fecha>
Que problemas trae esto?

Esa no es una fecha válida en XML por lo que cuando esto se intenta utilizar interactuando con otros sistemas, da errores al intentar leerlo. Por ejemplo, si el xml que se esta generando es un SOAP, el mismo no pasa la validación del XML schema del mismo. Si queremos recibir un parámetro fecha con un valor nulo, hay que ponerle algún valor artificial al mismo (que simule el nulo, como DateTime mínimo o máximo) lo cual complica la programación o hay que recibir/enviar el parámetro como string y manipular el formato del mismo.

Seria conveniente, que cuando aparece una fecha nula se pudiera grabar

<Fechaxsi:nil="true"></Fecha>
que es una forma “mas correcta” de escribir estos XML.

Revisando los SACs veo que hay varios que tratan el tema y es bueno que se solucione pronto.

29347  Agregar el Valor de…

Comentarios en el blog

Imagen
Quise poner un sistema un poco mas prolijo de comentarios en el blog. 
Probe durante unos dias el de IntenseDebate. Esta se  integra con otros sistemas, tiene un editor de comentarios mejor que el de Blogger (no se necesita nada para esto). 
Lo que me gustaba mas es poder responder a un comentario y que los mismos quedaran indentados correctamente.  


En Blogger, todos los comentarios quedan ordenados en forma cronológica, lo cual es bastante incómodo para seguir intercambios de ideas. 


Si bien tiene muchas ventajas, no encontré una forma que los comentarios estuvieran solamente en los post nuevos, sino que ocultó también los comentarios de los post antiguos. 


El principal motivo que tengo para tener un Blog, es poder aprender de los comentarios de los lectores, por lo que perder los comentarios viejos, no era una opcion valida. Realicé el rollback de todos los comentarios.


Por ahora, reescribí todos los comentarios de la última semana, manteniendo los nombres y el texto, en el formato de co…

GXwiki - Sobre websession, tiemout y cambios perdidos.

Imagen
En Concepto y en nuestros clientes tenemos varias instalaciones de GXWiki. Es una herramienta maravillosa para capturar conocimiento e ideas en grupos de trabajo. Recomiendo a todos los que tengan proyectos donde trabaje mas de 5 personas, que se instalen uno.  Es notable como se va evolucionando y los usuarios usan nuevas funcionalidades. Si todos se acostumbran a registrar sus ideas en forma mas o menos sistematica, con el correr del tiempo las buenas ideas salen a luz..


Como lei en un tweet que mando @guscarr:


Para conseguir buenas ideas, alcanza con tener muchas ideas y desechar las malas

Una evolución natural que he encontrado es que quienes redactaban procedimientos escritos, pasaron a grabar videos con Jing e incorporan dichos videos al Wiki, facilitando el aprendizaje a los usuarios finales. Lo que antes costaba explicar por escrito, ahora lo muestran con un video sobre la aplicación.


Con el paso del tiempo, los usuarios van pidiendo mas funcionalidades.


La principal molestia qu…

PiensoPienso: Porque esta lento este programa?

Imagen
Tengo una tabla Documentos de la forma


DocumentoId*N(10) AutonumberClienteIdC(10)  //Codigo de clienteDocumentoNombreC(256)DocumentoFechaDate //Fecha del documentoDocumentoKBytesN(10) //Tamaño en KBytesDocumentoBlobBlob //Contenido del documento

Hay un webpanel (GeneXus Xev1) que muestra todos los documentos de los clientes

Documentos del Cliente:  MOOGLE    //Filtro por ese cliente
NombreFechaComo dominar el mundo2000/01/15Como hacer el primer billon de dólares2005/03/09Haciendo un click en el nombre del documento, se puede bajar/abrir el documento en la maquina del cliente.
En el evento Load de la grilla se tiene

for eachwhere ClienteId=&ClienteId&DocumentoNombre=DocumentoNombre&DocumentoNombre.Link=PathToUrl(DocumentoBlob)&DocumentoFecha=DocumentoFechaendfor
La funcion PathToUrl() devuelve el una URL con el link necesario para bajar el documento.


El cliente se queja que la consulta esta muy lenta y tiene razón.


Preguntas
1) Cual es el motivo para que el webpanel se ponga tan …

Sentencias lentas en SQL Server 2008.

Imagen
Una aplicación GeneXus, tenia una sentencia SQL parecida a esta:
SELECT T1.[SKMovId], T1.[SKMovFch], T2.[DepositoId], T2.[DepositoTipo], T1.[ProductoId], T1.[SKMovCantidad] FROM ([SKMovimientos] T1 WITH (NOLOCK) INNERJOIN [Depositos] T2 WITH (NOLOCK) ON T2.[DepositoId] = T1.[DepositoId]) WHERE (T1.[SKMovFch] >= @AV6cFechaInicial) AND (T1.[ProductoId] = @AV9cProductoId) AND (T2.[DepositoTipo] = @AV7cDepositoTipo)
Hace un join entre dos tablas SKMovimientos que tiene cientos de miles de registros y Depositos que tiene menos de 10 registros. Demoraba 24 segundos y devolvía 17 registros. Extremadamente lenta.

Viendo el plan de ejecución de la sentencia pudimos ver que utilizaba un índice incorrecto en la tabla SKMovimientos.

Hacer un select en la tabla SKMovimientos sola, sacando la condicion que restringe por DepositoTipo y era instantánea y utilizaba el índice adecuado.

Revisando las estadísticas y tenia la creación de estadísticas y su actualización en forma automática.

Rev…

Como programan los niños hoy.

Imagen
Ayer Felipe (11 años) me pidió que le instalara Alice 2.2 (el sitio se ve bien con IE, pero mal con Chrome y FF).
No lo conocía y le pregunte que era. Su respuesta fue:
Es un lenguaje de programacion como el Scratch, pero en 3D. Después de instalarlo, pude ver que el entorno de programación es bastante potable y permite a los niños crear animaciones de personajes en 3D (bien al estilo Second Life) con poco esfuerzo. Esta bien resuelto la interaccion entre los personajes y los objetos del entorno.


La forma de programar es a traves de "Drag and Drop". Es muy conveniente para aquellas personas que no conocen la sintaxis un lenguaje pues es mucho mas difícil cometer errores, pues la programación consiste en arrastrar objetos a la pantalla o cajitas a donde se almacena el código y luego llenar los campos que quedan libres. 


Pensando en los nuevos dispositivos tipos tabletas, los ambientes de programación van a tener que cambiar la forma de interacción e interfaces y esta es una posib…

Cotización de Servidor - 1997

Revisando unos papeles viejos, encontré una cotización que un proveedor me hizo llegar el 15 de abril 1997. ServidorCompaq ProsigniaProcesadorIntel Pentium ProVelocidad de reloj180 mhzMemoria RAM64 MB ampliable a 256 MBCache Interno16 KbyteCache Secundario512 Kbyte Two way associativeControlador de video1 MB DRAM ampliable a 2 MBDisco duro1.08 GBTotal precio Unitario……………………………U$S 5.770Una verdadera bicoca.A eso habia que agregarle el software Backoffice Server  U$S 2.718 y licencias para cada cliente. Muchas cosas han cambiado en estos años.

Reglas en tiempo de ejecución (runtime) en aplicaciones GeneXus (2da. Parte)

Imagen
En el post anterior, escribí sobre la posibilidad de tener reglas que puedan ser ejecutadas en runtime y modificadas por los usuarios y las ventajas de las mismas. 


En los comentarios Gustavo Proto pedía ejemplos para facilitar el entendimiento del problema, que es el primer paso para poder resolverlo.


Algunas características deseables de las reglas (para la primera version):


1) Asociado a una transacción. 
Las reglas/formulas que puedo escribir, son las que puedo escribir con los atributos de una transacción. Si en runtime tengo que utilizar un atributo de la extendida en las reglas, que no esta en la transacción no se puede utilizar. 


2) Las reglas no acceden a la base de datos. 
En una primera etapa no es necesario que la regla acceda a la base de datos. Por ahora alcanzaría que accedan a un XML que pueda generarse desde los datos de la transacción. Si por ejemplo se necesita condiciones del tipo si Cliente in TablaClientesImportantes, se debera definir una formula del que se llame Clien…