jueves, 11 de diciembre de 2008

Streaming en Genexus

Bueno, en serio, prometo escribir más seguido. Hace unos meses un colega me dijo que tenía que empezar a escribir, que es sencillo, todos los días uno siempre resuelve algún problema y bueno escribir sobre eso.

Ahora escribo sobre algo que me pareció importante hace unos meses, no se si el término Streaming aplica totalmente, pero pienso que se acerca bastante.

Cuando usamos Genexus para realizar reportes en web, lo más común es realizar los reportes en PDF, ya que de está forma el usuario puede verlo y después decidir que hacer con él, guardarlo, imprimirlo o descartarlo.

Ahora, las aplicaciones que hacemos no son de juguete, son de negocio y a veces tenemos reportes de algunos cientos de páginas.

Por suerte Genexus nos ofrece la opción de generar los reportes directo por el protocolo HTTP y uno piensa, ¡que suerte! no tengo que guardar un archivo grandecito en el servidor, para que después el usuario lo baje, lo cual generaría un overhead bastante grande en el servidor.

Lamentablemente, si vien Genexus nos ofrece la opción de generar los reportes por HTTP, no hace streamming. ¿Que quiero decir con esto? Bueno, Genexus calcula todo el reporte en memoria y luego lo devuelve de un saque, lo cual puede ser aún peor para la escalabilidad del servidor. ¡Por favor corriganmé si me equivoco, pero busqué por todos lados y aparentemente este siempre es el comportamiento!

Lamentablemente esto no se limita sólo a los reportes PDF, supongamos que queremos exponer un procedimiento que devuelve un XML "gigante" para hacer interfaz con otro sistema. Bueno lógicamente empezamos por abrir un stream XML en el Response HTTP y luego vamos escribiendo ese XML, en este caso sería muy lógico que el XML se fuera mandando al cliente a medida que se va generando, pero nuevamente Genexus genera todo el XML en memoria y luego lo devuelve.

De repente lo ideal no es que el comportamiento siempre sea hacer streaming, ya que una de las principales virtudes de Genexus es ocultar tecnicismos al programador. Y por ejemplo cuando se trabaja con streaming hay que tener cuidado de escribir los cabezales antes de empezar a hacer el streaming. Pero si estaría bueno tener una opción de streaming (debidamente documentada con esos tecnicismos).

sábado, 1 de marzo de 2008

Nuevo Celular

Bueno, pasó un año, ya era hora de agregar algo más.

Hace una semana firmé con ancel, un contrato con el cual me regalaron un LG KU250, es un celular 3G barato, en realidad el más barato del mercado y ganador del concurso 3G for all.


En realidad los planes de datos 3G todavía son muy caros, así que por ahora solo lo voy a usar como un celular GSM común y corriente, excepto que hasta hoy me dejaban hacer videollamadas gratis.

Otra funcionalidad que me gusta, es que soporta bluetooth, lo malo es que me costó mucho encontrar la aplicación para sincronizar con la PC (el sitio de LG deja mucho que desear), así que aprovecho a pasarles un link por si a alguien le hace falta: http://www.smart.com.ph/Buddy/promos/LG_KU250.htm

Por ahora la peor contra es la duración de batería, a los que conozco que tienen el mismo celular les ha pasado que les dura muy poco. Pero todos lo tienen hace poco tiempo, capaz que se debe simplemente al uso intensivo o a que son las primeras cargas.

Bueno esto es todo amigos, capaz que les escribo más seguido.