Entradas

Mostrando las entradas de 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.

Hay pocas cosas que me calientan, pero justo ésta es una

Imagen
Los que te piden que llenes encuestas y no te mandan los resultados de las mismas
Los que piden entrevistas para tesis y luego no te mandan la tesis final  para que la leas
Los que mandan un mail pidiendo ayuda en algun problema de programación (de garrón)  y que ni siquiera agradecen cuando se lo respondes (le haya servido o no)
Los que leen cualquier blog, les sirven las soluciones que hay ahi, y ni siquiera se toman la molestia de poner un comentario contando como les fue
Los que dejan crecer el pasto en la vereda de su casa
El SPAMLos antispamLos que encuentran problemas y no los reportanLos que encuentran problemas, los reportan y pretenden que se los resolvamosLos que no juntan los papeles tirados en la puerta de su casaLos que arrojan por la ventana del auto todo lo que les molesta 

Kbsynchro - Open source.

Imagen
KBsynchro, es un pequeño utilitario que permite la comparacion y sincronización de dos KB GeneXus.
Su operativa es muy sencilla y limitada: Abre dos KB con GXPublicCompara las fechas de modificaciones y algunas otras características de los objetos. Lista las diferenciasPermite comparar los objetos con diferencias Permite distribuir/consolidar objetos en ambos sentidosPermite borrar objetos en las KB. IMPORTANTE:  Necesita tener instalado el .NET Framework 2.0 y J# Redistributable 2.0 para que no de errores al ejecutar.  Para generar planillas Excel hay que tener instalado MS Office 2000 o 2003. 
Porque Open Source? Es un utilitario muy chiquito (la kb del mismo tiene solo 11 objetos) que creo que puede ser útil a varios, pero también esta necesitando un poco de trabajo para hacer las cosas bien. Con no mucho esfuerzo se le pueden agregar algunas funcionalidades y estaría bueno si alguno mas pudiera meterle mano.
Que falta? Cosas a arreglar. Estetica y usabilidad (tiene una unica pantalla y…

KBSynchro

Puede haber novedades.. por ahora, solo un video. 




Para verlo a pantalla completa se puede ver en : http://www.screencast.com/t/upwXkcT7

ASP.NET Charting Control

Imagen
No mire la documentación aun, pero tiene buena pinta como para hacer un User Control.

Hay mas información y mas ejemplos ACA..

Modelos grandes - Entity Framework

Imagen
Leo en Working with large models in Entity Framework, en el blog de ADO.NET team blog, que hay gente que plantea problemas de performance cuando los modelos se hacen grandes. Me llamo la atención que consideren que es bueno pensar en dividir el modelo, cuando se tienen unas 100 entidades.... 
Working With Large Models In Entity Framework – Part 1We have seen quite a few requests coming in from various folks asking for some guidance on best practices around working with large entity models in an Entity Framework application. The following post tries to describe the typical issues you would face when using a large entity model and tries to provide some guidance that hopefully will help mitigate some of these issues.Issues with using one large Entity ModelThe easiest way to create an Entity Model today is through the Entity Data Model Wizard in Visual Studio by pointing it at an existing database. The experience is very straight forward if the database size is not too big. Of course ‘big’…

Design For Testability

Imagen
Leo un artículo interesante (introductorio)  en MSDN Magazine, donde recalcan que una de las mejoras de testear temprano y diseñar pensando en el testing, es el que se consigue codigo mucho mas facil de probar y hacerle debug. Esto parece una ventaja muy grande y es mi principal incentivo para poder incorporar metodologias agiles (TDD, DDD) en nuestro proceso de desarrollo. 
En el articulo tambien mencionan los principales problemas que se tienen al testear aplicaciones como las que hoy desarrollamos en Concepto, que son:
 el simular el funcionamiento de la base de datos para obtener resultados consistentes y rapidos chequear eventos externos (como el envio y recepcion de mail, webservcies, etc)
workflowsAlgunas de las conclusiones del articulo: 
Smaller tests are cheaper to create, easier to understand, faster to run, and much simpler to debug. It sounds like more work to write a bunch of unit tests than a single integrated test, but I've frequently found it more efficient to test sm…

Permuto Bytes por Buda

Imagen
Ayer hicimos una fiesta en Concepto (*) y despedimos a Carla, que decidió cambiar los for each por las oraciones a Buda. Su "emprendimiento" esta teniendo mucho éxito. 
En estos 15 años de trabajo en Concepto, hemos compartido muchas puestas en marcha de sistemas, instalaciones, capacitaciones y hasta charlas en el evento GeneXus. Me pone contento ver su evolución, ingresando antes de recibirse de Ingeniera en Sistemas, pasando por diferentes roles y ha podido encontrar el camino que le hace mas feliz en esta etapa de su vida... Además es bueno tener a alguien que pueda influenciar a los de arriba en las futuras reencarnaciones, porque me parece que mi influencia no va a ser demasiado decisiva.

Le pedí que cuando anexen un casino al templo budista (y de esta forma hacerle competencia de igual a igual al Conrad) me llame y paso unos días ahi. Me preocupa que ella dice estar a cargo de la cocina...


(*) Este año, fue fiesta con comida y ambientación mexicana, con mariachis y todo…

TOP, Binding y registros

Imagen
Estaba conversando con un amigo, sobre la necesidad que se nos han planteado en los últimos meses de contar en nuestras aplicaciones GeneXus con sentencias de SQL dinámico que se generen con variables y no con strings como lo hacen hoy (esta explicado con mas detalle en este post).
Lo que comentábamos era que pasamos muchos años sin tener for each con when (que es lo que genera el SQL dinamico). Desde hace unos años contamos con el when  y ahora nos surgen nuevas necesidades para agregarle variables, de forma de consumir menos recursos (CPU) para no tener que recompilar la sentencia cada vez que se ejecuta.
La pregunta obvia es: ¿Como nos arreglabamos antes?
Creo que hay varias respuestas. En primer lugar, las bases de datos tenian menos registros, por lo que era mas facil lograr que las aplicaciones funcionaran correctamente y que los servidores de base de datos bancaran la carga. 
Haciamos mas programas. El poder tener sentencias con diferente ordenes, con diferentes condiciones que pued…

Proyecto Testing Pacpymes

En el contexto del programa PacPymes, la CUTI decidió hacer un proyecto de ayuda a las empresas para mejorar los procesos de testing de las mismas.  Es interesante, pues participando nos pueden reembolsar  hasta un poco mas del 50% del costo del proyecto (hasta un maximo de 5000 euros).
En el comunicado que nos llego dice: 
"Cuti convoca a empresas interesadas en integrar proyecto asociativo y de mejora individual para la creación o fortalecimiento de sus áreas de testing. 

El proyecto se enmarca dentro del programa de fortalecimiento de la gestión e innovación empresarial de pymes exportadoras, desarrollado por el Programa de Apoyo a la Competitividad y Promoción de Exportaciones de la Pequeña y Mediana Empresa (Pacpymes) , de la Cooperación Unión Europea - Uruguay.

Los solicitantes deberán tener como actividad principal el desarrollo de software, cumplir con los requisitos de elegibilidad y aportar la contraparte exigida por el programa Pacpymes (más información). 

El porcentaje de …

RML Utilities for SQL Server

Imagen
En RML Utilities for SQL Server hay un conjunto de utilitarios para el procesamiento de archivos de trace (generado con el SQL Server Profiler) para SQL Server 2000, 2005 y 2008.

En la pagina que los explican dice:

You can use the RML Utilities for SQL Server to perform the following tasks:
• You can determine the application, the database, the SQL Server login, or the query that is using the most resources.
• You can determine whether the execution plan for a batch is changed when you capture the trace for the batch. Additionally, you can use the RML Utilities for SQL Server to determine how SQL Server performs each of these execution plans.
• You can determine the queries that are running slower than before.

Hay un utilitario que se llama ReadTrace, que permite cargar los trace y hacer unos lindos reportes.

Tambien hay otros utilitarios, que permiten ejecutar sentencias muchas veces y simular muchos usuarios, que puede ser muy bueno para hacer teste de cargas.

Links interesantes.

RML Utiliti…

Recital de Fernando Cabrera en el Solís

Imagen
Anoche fui a escuchar a Fernando Cabrera, al teatro Solis. Realmente muy recomendable.... Fue un recital bastante menos autista a los que nos tiene acostumbrados y sonó muy pero muy bien.

Hace poco me enteré que tenemos algún parentezco.

No tocó Disolvente, que me gusta mucho, pero tiene tantas canciones buenas que es dificil elegir unas pocas para un recital de hora y media.  Se puede escuchar acá.

Publicado en blog de Enrique Almeida.

PatternBuilder.

Imagen
Leo en el Wiki de la comunidad Genexus:


PatternBuilder
The Pattern Builder is a tool that is installed with the GeneXus X/GeneXus Platform SDK and is executed within Visual Studio.
The wizard provided in the pattern builder allows creating, in just a few steps, new patterns for GeneXus X .

The wizard prompts you for this information:

Objects to which the pattern will be applied
Objects to be generated
Then, it generates a Visual Studio project for creating the pattern, with all the xml files and the configured environment.Creo que es un buen paso para facilitar que el vulgo profano que no domina Visual Studio pueda desarrollar Patterns en Genexus.

Ejecutar comandos para todas las bases SQL server de un servidor

Imagen
Ahora que GeneXus guarda las KB en bases de datos SQL Server, se me multiplicaron la cantidad de bases que tengo que "administrar".  Hoy tengo 38 KB y algunas de ellas tienen la base de datos correspondiente al modelo.En total, tengo 62 bases de datos SQL Server. 

Mis tareas mas habituales de administración son : 
Backup
Chequear que no tengan problemas de integridad
Defragmentar los indices
Recuperar el espacio no utilizado dentro de los archivos de la base de datos. 
Aunque ultimamente me ha tocado enfrentarme a la tareas de DBA, no son mi especialidad ni me atraen demasiado.
Encontre este stored procedure (no documentado) que no conocía que permite ejecutar un comando para todas las bases existentes. 


--Comprueba la integridad física y lógica de todos los objetos de la base de datos especificada
EXEC sp_msforeachdb 'DBCC CHECKDB("?")'


--recupera espacio no utilizado en las base de datos
EXEC sp_msforeachdb 'DBCC SHRINKDATABASE ("?")'

--Hace el bac…

SOASTA - Load Testing From the Cloud

Imagen
Leo en Amazon Web Services Blog: SOASTA - Load Testing From the Cloud
SOASTA - Load Testing From the Cloud

I met Tom Lounibos, CEO of SOASTA, at the Palo Alto stop of the AWS Start-Up Tour. Tom gave the audience a good introduction to their CloudTest product, an on demand load testing solution which resides on and runs from Amazon EC2.Soasta_record Tom wrote to me last week to tell me that they are now able to simulate over 500,000 users hitting a single web application. Testing at this level gives system architects the power to verify the scalability of sites, servers, applications, and networks in advance of a genuine surge in traffic.Estuve mirando este  video, y parece muy bueno. Permite diseñar pruebas de aplicaciones web, y luego simular la carga de hasta 500.000 usuarios.

Parece un poco caro, pero bueno...

Taller de Extensiones en el GUG

Imagen
Marcos dio un taller sobre como hacer extensiones en Genexus X. Aplausos y solamente aplausos para los organizadores y el orador. 
Me parece una muy buena iniciativa que debería extenderse a Patterns y también a User Controls, en futuras charlas de GUG de forma  de bajar a tierra algunos temas y que mas gente se anime a extender Genexus de diversas formas. 

Multi tenant applications - Aplicaciones multi empresa.

Imagen
Esto sería algo que me gustaría que tuvieran las próximas aplicaciones GeneXus y creo que es mas fácil plantearlo con un ejemplo.

Supongamos que tengo una aplicacion GeneXus (por ejemplo, GXWiki). Es una aplicacion web muy buena, donde permito definir un wiki personalizado para cada persona que lo desee. Al principio la instalación se hace en forma manual, creando una base de datos independiente y un directorio virtual con una copia de los programas para cada persona que lo solicita.

Viendo un potencial negocio, una empresa decide ofrecer el servicio de Wiki y lo instala en un servidor web, bajo un esquema de software como servicio. En dicho servidor cualquier persona puede definir un wiki y a traves de scripts se copian los programas y se genera la base de datos con  la inicializacion necesaria para poner en funcionamiento un wiki. 
El tiempo pasa, y cada vez mas personas quieren wikis. Siguendo con las suposiciones, desde el plan Ceibal, deciden tener un wiki para cada una de las esc…

Modelos a traves del tiempo

En este pequeño video se explica como han avanzado los modelos a traves del tiempo y nombra los componentes de Microsoft Oslo.

Consumir RSS con usuario y contraseña

Imagen
Hay muchos feeds que tienen autenticacion, o sea que piden usuario y contraseña para poder ver el RSS. Un ejemplo claro es el de un wiki o un blog que esten instalado en una intranet para un grupo de trabajo limitado.
Por ejemplo, en Concepto tenemos Wikis de uso interno donde todos los integrantes de Concepto pueden escribir y leer, teniendo su usuario/contraseña, pero no estan abierto a publico en general.

Que pasa entonces si queremos leer los cambios a traves de lectores de RSS, como por ejemplo el Google Reader?. Muchos de estos lectores, no soportan feeds con usuario/contraseña.

Para solucionar este problema, se puede usar el servicio FreeMyFeed, que es gratuito y permite registrar una URL, poner el usuario y contraseña una vez, y con eso genera una nueva URL encriptada que permite la lectura de dicho RSS.

Si se quiere agregar otro nivel de control, se puede pasar por FeedBurner, de forma que si despues se cambia el usuario y la contrseña, no tengan que cambiarse las suscripcion…

En busca de un Dynamic Combobox mas polenta.

Imagen
Muchas veces los Dynamic Combobox de GeneXus me ponen de mal humor. 
Quiero que quede claro, en el caso general, funcionan muy bien... Ahorran muchisimo tiempo, son rapidos y faciles de codificar.  El caso que me preocupa, que cada vez lo veo con mas frecuencia es el siguiente: 
Tengo una tabla de Clientes
*ClienteId ClienteNombre ClienteActivo (S=Activo, N=NO Activo). 
Los clientes activos son los que me compraron en el ultimo año. 
En el 99% de los casos en mi aplicacion me va a interesar mostrar solo los clientes activos, pues es a quienes les vendo y la inmensa mayoria de las consultas que realice van a ser sobre estos clientes.  Para lograr esto, puedo definir un Dynamic Combobox, que tenga la condicion 
ClienteActivo='S';
De esta forma, me mostrará una cantidad de clientes mucho menor, ayudando a mis usuarios a comenter menos errores y ademas mejorando la performance de la aplicacion que tiene que recuperar menos registros en la base de datos y se reduce el código HTML transmitid…

SOAizando aplicaciones GeneXus

Imagen
Desde hace un tiempo venimos incorporando a nuestros sistemas algunas de las ideas que trae SOA (Service Oriented Architecture) y estudiando algunas de las cosas nuevas que vienen adosadas al nuevo paradigma, como BPEL, ESB y demas mojos. 
El uso de algunos web services para conectar aplicaciones es algo que no es ninguna novedad, pero cuando se empiezan a tener varios y en funcionalidades cada vez mas críticas de nuestros sistemas, nos obliga a encarar la cosa con algunas otras herramientas. 
Una de la que estamos tratando de resolver en estos dias es el tener un  registro (o auditoría) del uso que hacen los externos de web services brindados por nuestro sistema.  Se deben brindar información usable por algunos usuarios autorizados del sistema, que puedan ver quienes esta utilizando el sistema, en que momento nos llegan los requests, cuanto demoramos en responderselo y que le respondemos. 
Diciendolo de una forma sencilla, necesitamos registrar:  Quien llama a determinado web services (i…

Rango de Fechas

Imagen
Esta sería la idea para un User Control de Genexus X
Me gustaría contar con un control que maneje el ingreso de un rango de fechas en la pantalla. 
En muchas aplicaciones, se necesita ingresar una FechaInicial y FechaFinal y para obtener los registros que se encuentran en dicho rango de fechas.  Para que sea util hay hacer algunas validaciones como que FechaInicial <= FechaFinal. 
Generalmente ocupa mucho lugar en la pantalla, pues tiene dos variables y dos boton o links paa los calendarios y muchas veces hay dos etiquetas, una para la fecha inicial y otra para la final. 
Estaria bueno poder tener en el mismo control algunos chiches adicionales, como permitir algunos valores "especiales" que se tienen muchas veces en la aplicación, como pueden ser: 
lo que va del año actual
Ultimos 12 mesesUltimo año movil
Mes actual
Ultimo mes
Hoy
Ultimo semestreUltimo trimestreQue el rango no sea mayor a X diasetcAl tener un User Control que haga esto tendriamos las ventajas:  Ocupa menos lugar …

Como defragmentar indices en GeneXus X.

Imagen
Ahora que las bases de conocimiento no estan mas en ctree, no se puede correr un rebuild de los indices, como haciamos antes, sino que hay que hacerlo con SQL server.

Una forma facil de hacerlo (sacado de los Books Online de SQL Server 2005) es ejecutar el siguiente script, que lo que hace es defragmentar todos los índices que tengan una fragmentacion mayor al 30% (es la variable @maxfrag que se puede variar a gusto).


/*Perform a 'USE ' to select the database in which to run the script.*/

-- Declare variables
SET NOCOUNT ON;
DECLARE @tablename varchar(128);
DECLARE @execstr varchar(255);
DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @frag decimal;
DECLARE @maxfrag decimal;

-- Decide on the maximum fragmentation to allow for.
SELECT @maxfrag = 30.0;

-- Declare a cursor.
DECLARE tables CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';

-- Create the table.
CREATE TABLE #fraglist (
ObjectName char(255),
ObjectId int,
Inde…