Entradas

Mostrando las entradas de diciembre, 2008

Los logos de la crisis

Imagen

Autonumber y Caching

Imagen
Este es un lindo problema, que encontró Marcos hace unos días. 
Se tiene una aplicación GeneXus 9.0, que genera Java y tiene el Cache de sentencias habilitado. 
Entre las tablas, hay dos que tienen una clave que genera automaticamente numeros (Propiedad Autonumber en los atributos claves) y no se cachean.

New // Tabla Autonumber1   Att1Sec='AlgunValor' EndNew &Autonumber1=Att1Clave  //Recupero el ultimo numero dado en la primer tabla
//Mas codigo sobre otras tablas algunas con Cache.
New //Tabla Autonumber2    Att2Sec='OtroValor' EndNew &Autonumber2=Att2Clave  //Recupero el ultimo numero dado en la segunda tabla
Cual es el problema?. En la variable &Autonumber2 está recuperando el valor del primer autonumber. Haciendo un trace detallado de la corrida, Marcos encontró que se esta cacheando la sentencia

SELECT @@identity

Revisando el codigo generado y haciendo algunas suposiciones (sería un SUPOSITORIO?), infiero que como esta sentencia no tiene tabla, no está recuperando …

PiensoPienso: Listar todos las tablas que usan un atributo o sus subtipos

Imagen
Un DBA me planteo el siguiente problema:

Necesito un reporte que tenga todos las tablas que contengan el atributo ProductoID o cualquier subtipo del mismo y que se indique si forma parte de la clave.

El listado deberia ser de la forma Atributo, Tabla, Clave(S/N)
La base de conocimiento esta en GeneXus 9.0, tiene un mas de 500 tablas y unos 7000 atributos.

Como lo harian? Yo no encontré ninguna forma elegante.

Estonia vota con los celulares.

Imagen
Leo en Engadget, que en Estonia ya esta autorizado el voto a traves de celuar para las elecciones del 2011. Me parece un muy buen paso. Estonia to allow citizens to vote via cellphone by 2011by Darren Murph, posted Dec 13th 2008 at 2:18AMBrutal honesty here: on election day this past November, the entire Engadget staff (well, those of us with US passports) collectively agreed that casting our vote via SMS or some other incredibly simple method would be infinitely more awesome than trudging out in the streets and waiting in hour-long lines. Clearly, some higher-ups in Estonia are on board with that concept, as its Parliament has approved a law that will likely make it the first nation on Planet Earth to give citizens the right to vote by phone in something that matters (American Idol notwithstanding). 'Course, those who choose to take advantage must first obtain a free authorization chip for their handset, which sort of kills the whole "not having to leave your house" asp…

Dominando los dominios

Imagen
Hace unos dias me consultaron sobre algunas funcionalidades que se le pueden agregar a los dominios en GeneXus. Tiene mucho potencial, pues poder expresar que un atributo es del mismo tipo que otro, permite deducir muchas cosas sobre el.

Algunas de las mejoras sugeridas por mi:

1) Que creen en la base de datos. Es bueno tener dominios definidos en la base de datos, porque permite que los DBA y otros que usan la base de datos y no tienen Genexus puedan saber que un determinado atributo es de un tipo determinado. En nuestro caso, muchas veces los clientes utilizan herramientas de auditoria, generadores de reportes o herramientas de BI y Data Warehouse y tener los dominios ayudaria. 
2) Que tengamos una operacion de unificar 2 dominios. Si tengo Booleano y DM_booleano, que estan definidos en muchos atributos, no es facil unificarlos con las herramientas actuales. Es fundamental para cuando estamos juntando dos KB desarrolladas por empresas diferentes.

3) Agregar un control de tipos mas estri…

Cannot create/shadow copy 'name' when that file already exists

Un cliente nuestro, tiene una instalación de un IIS, donde hay mas de un working process para atender los requerimientos de la aplicación WEB, generada en C#. Despues de instalar algunos assemblies, a algunos usuarios, le empieza a dar el error: Server Error in '/LUCIA90' Application.
Cannot create/shadowcopy 'hwtradfu' when that file already exists.
Description:An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details:System.IO.FileLoadException: Cannot create/shadowcopy 'hwtradfu' when that file already exists.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Assembly Load Trace: The following information can be helpful to determine why the assembly '…
Imagen
Hoy me levanté con ganas de darle una mano a la gente.

BigDog

Camina, trepa, salta, se resbala y no se cae. No sirve para nada, pero quiero uno:



http://www.youtube.com/watch?v=W1czBcnX1Ww

Migrando de GeneXus 9.0 a GeneXus X - Algunos problemas comunes

Imagen
Al convertir una KB de GeneXus 9.0 a la GeneXus X, (o al importar objetos distribuidos en la 9) me han dado algunos errores, que no son los mas faciles de entender. 
Importing Transaction 'TSKAsoc'...Failed error: '<', hexadecimal value 0x3C, is an invalid attribute character. Line 44, position 81. 
Importing Web Panel 'HGLWfaq'...Failed error: The ';' character, hexadecimal value 0x3B, cannot be included in a name.
Importing Web Panel 'HWCasillas'...Failed error: The '<' character, hexadecimal value 0x3C, cannot be included in a name.
El factor común que saco es que se están haciendo lio con el HTML de los webpanels, porque tienen algo mal formado, pero no puede corregirlo. 
Al verlos en 9.0, se ve correctamente y no tienen nada raro. Como el mensaje no da ninguna pista sobre en que linea da el error o en que control es el problema, no es facil corregirlo. Viendo el codigo HTML en GeneXus 9.0, no encontré nunca nada extraño.  Tampoco se …

PiensoPienso: Cual tiene mejor performance?

Imagen
Tengo una tabla de Registros de Auditoria que tiene unos 10 millones de registros y hay unos 1.000 usuarios diferentes distribuidos mas o menos uniformemente. 
AuditoriaId*   //Autonumber AuditoriaFechaHora   //Se carga siempre con ServerNow() AuditoriaUsuario   //Tiene el usuario que realizo el cambio AuditoriaSistema  //Codigo del sistema AuditoriaObservacion //Texto con observacion
Cual de los siguientes programas tiene mejor performance: 


1)  for each (AuditoriaId)      Where AuditoriaUsuario=UserId()
print AuditoriaObservacio endfor
2)  &Usuario=UserId() for each (AuditoriaId)    Where AuditoriaUsuario=&Usuario print AuditoriaObservacion
endfor
3)  for each AuditoriaFecha,AuditoriaUsuario    Where AuditoriaUsuario=UserId()        print AuditoriaObservacion endfor
4)  for each
    If AuditoriaUsuario=UserId() print AuditoriaObservacion
    Endif
endfor
Se pueden crear todos los indices/estadisticas que se deseen. Justifique su respuesta. 

Los pasados murguistas

Imagen
Caminando por la ciudad vieja, vi un afiche viejo de "Los Mareados" un grupo que canta murga, donde estaba Rafael Bruzone, un amigo palmirense y me hizo recordar una anécdota de varios años atras.

Corría el año 1984 y yo vivía en Palmira. Estaba terminando el liceo (estudios secundarios) y también la dictadura militar estaba en los últimos estertores. Estábamos todos recontrapodridos de no poder decir lo que queríamos y lo que se pensaba y la música era una de las formas que se utilizaba para poder revelarse un poco. La actividad política estaba prohibida y tampoco era tolerada ni bien vista la militancia sindical y estudiantil. Con un grupo de amigos en Palmira se decidió sacar una murga para expresarse de alguna forma. A pesar que había muchas murgas en Montevideo y en otras ciudades mas grandes, ser de la murga en Palmira no era de lo mas fácil. Los principales impulsores eran uno de los dentistas del pueblo (Cuevas), un profesor de gimnasia (Rafa Bruzone) y un futuro peri…

KBSynchro - Algunos errores reportados

Imagen
Algunos amigos que probaron el KBSynchro me reportaron errores, y los comento por si alguien quiere usarlo y le pasa lo mismo. 
1) Instalo y me da error al ejecutar, sin llegar a mostrar nada.  Posible causa  Falta instalar el .NET Framework 2.0.  Falta instalar el J# redistributable 2.0 (alcanza solo con la vjslib.dll, que voy a incluir en el proximo zip). 
2) Instalo y me da error al ejecutar, sin llegar a mostrar nada. 
Posible causa  Estoy ejecutando la aplicacion desde la red y no tengo los permisos necesarios. Probar ejecutar desde un disco local o setar los permisos en la intranet. 
3) Se ven todos los objetos de una KB como faltantes, que existen. En algunas oportunidades, a pesar de conectarse a la KB, la misma devuelve un recordset vacio de objetos. Esto sucede cuando otras personas estan accediendo a la KB y no se puede acceder correctamente al modelo de diseño.  Posible solucion: Copiarse la kb (solo los archivos de la raiz de la misma) a un disco local y trabajar con esa KB. 
4) Me …

Adivinanza

Imagen
Adivina adivinador, que persona ha estudiado para: usar un sillón y reclinarlo hasta dejarte acostadointroducir diversos objetos en tu boca
usar instrumentos de tortura para perforar partes de tu cuerpo
anestesiarte
darte sustancias químicas con gusto espantoso
usar guantes, tapabocas y tapaojos como si el paciente (o la victima) tuviera una enfermedad contagiosa
usar una potente luz en la cara apta para interrogatoriosintroducir tubos en orificios corporales para succionar nuestros fluidosusar aparatos que hacen ruidos penetrantes que dejan los nervios de puntadejarte parte del cuerpo adormecido e insensibleno permitir moverte por largos ratoshacer preguntas todo el tiempo, aunque no podamos contestarledecir "Cuando te duela, levanta el brazo izquierdo!"irradiarnos con rayos X y ver en nuestro interiorhacernos escupir y algunas veces con sangremostrarnos diversos elementos punzantes que usarán en  nuestra contra, como si a alguien mas que a ellos les gustaranaplastarnos con part…

Herejias en Testing

Hay un video de la RubyConf, que habla sobre las herejias en el testeo :  Dura 60 minutos (demasiado largo para decir lo que dice y las preguntas no se escuchan bien), pero tiene algunas cosas interesantes:
Algunas frases de la charla: 
El testeo es dificil, pero eso esta bien. Los trabajos faciles no pagan bien. 
Testing = Velocity * Quality
Hablando sobre mocking (sustituir el acceso a la base de datos o la llamada a objetos externos de mi aplicacion) habla sobre el estado que es lo que realmente importa. 
Tambien se habla sobre la velocidad de los test, que en la mayoria de la bibliografia cuentan que si los test demoran mas de 30 segundos, parece que hay algo mal contigo.  Lo que dice es de sentido comun, que seria bueno que los test corrieran en menos de 30 segundos, pero en aplicaciones complicadas, van a demorar muchos minutos. 
También hay una frase de Donald Rumsfeld que me dejó pensando:  There are known knowns. There are things we know that we know. There are known unknowns. That is…

Zoho CloudSQL - Una base de datos en la red con SQL

Imagen
Zoho anunció CloudSQL.  Es una base de datos en la nube y se diferencia un poco de otras propuestas parecidas de Amazon, MS, Google en que admite SQL para la realizacion de sus consultas, lo cual puede facilitar mucho la migración de aplicaciones existentes a la nube, pues no hay que reprogramar todo el acceso a datos. 
Segun dicen admite diferentes dialectos de SQL (ANSI, Oracle, SQL Server, IBM DB2, MySQL, PostgreSQL and Informix) y tiene drivers JDBC y ODBC
Hay un ejemplo de una aplicación funcionando en Google AppEngine en  http://zohoreportsdemo.appspot.com/
Esta movida puede estar buena para que otros jugadores permitan que sus  bases de datos en la nube puedan ser consultadas con SQL no obligando a una reescritura total de nuestras aplicaciones y generar compromisos a quedar atados a esa tecnología/empresa. 
Via InfoWorld

Microsoft data centers - Gen 4.

Imagen
Vi en este post de gente de Microsoft sobre como piensan construir los proximos data centers. Tiene un video interesante donde muestran los modulos del data center sobre ruedas, que pueden ser deplegados en diferentes lugares de forma bastante facil. 
Toda la movida del Cloud computing necesita estos "pequeños monstruos"  para poder funcionar.