lunes, enero 29, 2007

Resistiendo la muerte psiquica de .NET

Este blog está momentaneamente detenido por culpa de Microsoft (que ego, no?). Lo que sucede es que me estoy peleando con .NET en un proyecto.
Es probable que yo no sepa nada de nada de .NET, pero si hay algo que me he dado cuenta en este casi mes sin escribir, es que .NET no es fácil para nada.
Quizá porque sé Java, pero lanzo por este medio una proclama para todos aquellos que opten por aprender .NET sólo porque dicen que es más fácil que Java/J2EE. Gente: porque se puedan arrastrar controles para hacer una página ASPX no significa que sea fácil!!!
He intentado hacer andar componentes de la interfaz de Yahoo!! (YUI) para interactuar usando AJAX, pero me ha costado horrores!!!
Debo decir que finalmente he podido lograrlo, pero no gracias a la "flexibilidad" en la capa de presentación de .NET, sino a la flexibiliad de los componentes de Yahoo! y de Javascript.

Ah, una cosa más, no me vengan con ATLAS. Lo he probado y no lo he podido hacer funcionar...

Saludos
PF

sábado, enero 06, 2007

El patrón Decorator y una aplicación real

Este post está directamente relacionado con el anterior. Yo sabía que no todos lo iban a entender o que les iba a gustar. Fue así como el único comentario prácticamente me quería boxear (pero con onda). Por cierto, recomiendo su blog. Lo bueno de todo esto es que todos los días se aprende algo nuevo. Del comentario, surgieron otros frameworks, de los cuales me gustó la propuesta de la empresa Open Symphony, SiteMesh.

Este framework implementa el patrón Decorator de la GangOfFour. Este patrón dice (básicamente) que podríamos a partir de una salida estándar a un usuario, modificarla para adaptar esta salida a otros tipos de usuarios. Por ejemplo, en el caso de SiteMesh, teniendo como punto de partida una página HTML, podemos "transformarla" en otro tipo de salida (para imprimir, PDF, WML, etc.).

Para implementarlo utiliza una funcionalidad de los Servlets que siempre me ha gustado, pero que no he tenido la oportunidad de usar en algo serio: Los Filtros.
Los filtros son una funcionalidad en J2EE que nos permite implementar otro patrón (intercepting filter). Consiste en la posibilidad de realizar procesamiento de una o más peticiones antes y después de ejecutar un servlet determinado.
De esta manera, cuando un servlet/jsp genera una salida HTML, teniendo configurado SiteMesh (no más de 5 minutos), más uno o más archivos decoradores, es posible que la salida generada se adapte al usuario.

Lo mejor de SiteMesh es que no lleva más de 1 hora / hora y media de lectura para aprenderlo. Muy positivo.

Saludos PF

miércoles, enero 03, 2007

Los Templates Engines y su conexión con lo insano

Lo que van a leer en este post puede provocar serios trastornos en su salud mental (y esto para programadores web en general, no sólo de Java).
Para empezar, ¿Cuál es el objetivo de un Template Engine?. Lo voy a responder directamente desde la wikipedia:

"A
template processor (also known as a template engine or a template parser) is software or a software component that is designed to combine one or more templates with a data model to produce one or more result documents. For purposes of this article, a result document is any kind of formatted output, including documents, web pages, or source code, either in whole or in fragments."

Esta definición es hermosa, y de hecho, acertadísima. El problema de los templates es la forma en la que nos los quieren "vender", nos dicen que los diseñadores de sitios web pueden trabajar en paralelo con los programadores y evitar que los diseñadores modifiquen o borren código que tanto esfuerzo costó al programador escribir. Pues yo digo que es una MENTIRA.
Ojo, no reniego de la eficacia de los Templates y de como nos ayudan a modificar nuestras páginas web muchísimo más rápido, de hecho, Velocity y FreeMaker realizan extraordinarios trabajos y son muy útiles.

Pero absolutamente ninguno soluciona la (muchas veces abismal) distancia entre diseñador/programador. De hecho, les propongo que elijan uno y lean apenas el primer ejemplo del "user guide". Si están trabajando con Struts, seguramente les conviene empezar con Tiles.
Todos proponen lo mismo, aprender un nuevo lenguaje que resulta más rápido al diseñador aprender. Claro, en vez de enseñarle al diseñador a hacer <%if(condición){tareas}%>, podemos enseñarle <#if condición>tareas<#if>.

Solución propuesta: No tratemos de que el diseñador arme una página web y de que por arte de magia nunca existan más problemas con el programador. Tampoco intentaría que un diseñador aprendiera un lenguaje de programación (Java, PHP, Python o cualquiera de templates), francamente, no creo que pueda funcionar. Pero claro, todo depende del diseñador...
Tampoco digo que no se deba usar alguna herramienta de templates, al contrario, estoy convencido de que nos ayuda a la hora de modificar la diagramación o características de nuestro sitio (como por ejemplo, la internacionalización). Y, mi querido amigo/a, le estoy pasando más responsabilidad al programador.
Por mi parte estoy muy contento con Tiles de Struts, me gusta porque es bastante básico, no necesito más de lo que Tiles/JSTL/EL me ofrece para trabajar. Además podemos armar una buena arquitectura para no reinventar la rueda.
Para el caso de PHP, todavía estoy investigando... Smarty no me convence demasiado...

Pueden consultar el siguiente link para ver que otros Templates Engines existen para Java.

Saludos PF