miércoles, 21 de enero de 2009

Mirando la web de una forma distinta con Google Visualization API

Mirar hacia Google puede llegar a ser para algunos como mirar a las estrellas. Para algunos partiendo de una perspectiva peculiar de admiración, para otros simplemente para estar seguros de que algún día esa estrella no se les venga encima. Lo que si es innegable es que hay que prestarle atención al desarrollo del gigante de Mountain View. Es por esto que hoy comenzamos introduciendo una de las tecnologías de Google que más me ha impresionado: Google Visualization API. Quizás se asombre de saber de mi relación con ella, incluso antes de conocerla.

Mirando hacia Google

Google es una de las grandes empresas que más sigo porque realmente cada día me asombra más. Primeramente es una de las principales defensoras de la adopción del código abierto, y ha encontrado en este ecosistema una vía de sostener un modelo de negocios muy sólido. Por tal razón también se inclina por la adopción de otras tecnologías y estándares abiertos, y es el ente aglutinador que ha logrado movilizar a otras grandes empresas en disímiles proyectos. Por otra parte es admirable su inclinación pronunciada por traer el órden a este océano turbulento que es Internet y especialmente con respecto al caos de las tecnologías web. Estas dos características convergen en este artículo. Quizás la mejor manera de comenzarlo sería así ...

Había una vez un mundo lleno de bases de datos incompatibles cuyo formato permanecía escondido y guardado celosamente por sus creadores. En este tiempo surgió SQL. A la par se hizo general el malestar de los usuarios al dificultarse la migración sus datos de un gestor de base de datos hacia otro y el de los programadores al ver limitada la distribución de sus aplicaciones y emplear gran esfuerzo en hacerlas compatibles con cada gestor. Por tanto surgieron varios estándares (sí ... unos más abiertos que otros ;) para lograr que todas las aplicaciones pudieran consultar cualquier base de datos utilizando solamente el muy estable SQL.

Pero a medida que Internet ganaba en popularidad e importancia fueron surgiendo herramientas que facilitaban la construcción de herramientas web. Y surgió AJAX y los sitios lograron ser más dinámicos. Y muchos brindaron soporte para AJAX porque era bueno. Luego proliferaron las tecnologías como Yahoo! User Interfaces concentradas en enriquecer las páginas web de los sitios. Además surgieron los ORM, y muchos frameworks incorporaban uno porque así se podía acceder más facilmente a los datos. Y los frameworks web hacían cada vez más alusión a su diseño MVC. Y muchos buscábamos esta característica porque así era posible ser más eficientes al crear componentes que eran reutilizables. Pero ... ¿qué era lo que había en el fondo realmente?

Mi experiencia personal

Ya por esos tiempos, mientras cursaba una certificación de programación web en Java ofrecido por el NIIT, me vi con posibilidades de matricular otros dos: uno de Django (Python) y otro de ASP.NET AJAX (C#). Y fue en ese momento cuando me cuestioné ... ¿Qué podría hacer para lograr aprobarlos los tres considerando mi extremadamente poco tiempo libre?.

Fue en ese momento cuando logré darme cuenta de que, una vez que eligiera cualquiera de ellos, caería en una tiranía de ese framework particular. Si seguía sus reglas, tales ataduras serían tan fuertes que me costaría mucho trabajo después reutilizar lo ya hecho para migrar el sitio hacia otra plataforma de desarrollo. Y entonces me asaltó una duda ... como es que todos podían ser MVC. Un entorno de desarrollo web basado en este paradigma, debería permitir la sustitución de una tecnología por otra sin que hubiera necesidad de rehacer (siquiera tocar ...) la implementación de la interfaz de usuarios. Sin embargo, cada una de las herramientas mencionadas se limitaba a adoptar el patrón MVC para estructurar las clases del propio framework ... pero quizás no notaron que la separación entre modelo, vista y controlador venía asociada al hecho de que existían datos administrados por un gestor, usuarios que acceden al sitio desde su PC a través de su navegador web, y un servidor web cuyo papel era preparar esos datos y hacerlos llegar a quién los solicitó.

Y fue entonces cuando me decidí a hacer junto con Orapma, Evelin y Carlitos un proyecto de curso basado en AJAX + JSON ... La ventaja de este enfoque reside en que el mismo sitio se puede implementar variando las tecnologías de programación en el servidor (en mi caso particular Django, ASP.NET AJAX y JSP ) con un mínimo de esfuerzo, y no se apreciarían cambios de ningún tipo en la interfaz de usuarios y en la navegación. Todo esto es ideal, por ejemplo, para migrar el sistema hacia un servidor, o plataforma.

El punto de vista de Google

Al parecer los ingenieros de Google (y otros como los desarrolladores de DoJo ;) tenían inquietudes similares. Lo único que ellos pensaron en grande ... El primer paso era darse cuenta de que muchas veces las trabas venían dadas por la carencia de una tecnología abierta basada en los estándares de la web que acercara los datos a los programadores , por las limitaciones de acceso desde la web a los datos gestionados por las diferentes organizaciones, y por la sumisión de los desarrolladores a la tiranía de los frameworks. El próximo paso ya ha sido dado.

Google ha lanzado su plataforma Google Visualization API. Su misión es erguirse como el nuevo ODBC para vencer las barreras de acceso a los datos según la estructura actual de Internet. Esta tecnología se vale de JSON para independizar la implementación de la vista (en la PC del cliente) del servidor web y de la forma en que se almacenan los datos; y todo esto a través de un protocolo abierto, relativamente sencillo y muy bien documentado. Por lo tanto se logra separar el desarrollo de un sitio en dos roles: los programadores de componentes web, y desarrolladores de los servicios que ofrecerá el servidor. Todo esto me recuerda la explosión que implicó la aplicación del enfoque de Delphi para aplicaciones de escritorio. En ambos casos se puede escoger las tecnologías para implementar las visualizaciones y los servicios debido a que Google Visualization API no presenta obstáculos para enlazar tecnologías de cualquier tipo. Ya para terminar, al mismo tiempo Google ha concebido un repositorio de manera que sea muy fácil buscar el componente que se ajuste más a nuestras necesidades; y ha conectado esta plataforma con la tecnologíua de gadgets para facilitar su uso.

Nada ... que simelo preguntan, solo se me ocurriría responderles que este año 2009 parece ser que se estrecharán las distancias entre los modelos de desarrollo de aplicaciones para la web y las de escritorio. Y acerca de Google ... cualquier comentario se queda chiquito.

martes, 20 de enero de 2009

Sobrepasa las 100 descargas el módulo dutest

El 24 de diciembre del año 2008 se sobrepasaron las 100 descargas del módulo dutest desde PyPI. Este hecho, del todo inesperado para mí, me ha motivado a escribir en lo sucesivo cortos mini-tutoriales acerca de cómo utilizarlo. En ellos trataré de abordar ejemplos prácticos que ilustren lo que se puede considerar, quizás, como sus ventajas. Y este artículo no es más que el principio ...

¿Qué es el módulo dutest?

El objetivo principal de este módulo es aprovechar las ventajas que ofrecen los dos módulos de la librería estándar de Python: unittest y doctest. El primero no es más que la implementación para Python del paradigma XUnit. Por tanto este módulo es hermano de JUnit, SUnit ... y si seguimos descubriríamos una familia de más de 50 hermanos hablando lenguajes diferentes :). Tanto éxito se debe a su buen diseño, el que le confiere gran la flexibilidad, y una increíble capacidad de integrarse con otros frameworks para pruebas. Sin embargo, escribir pruebas con unittest no es una tarea tan sencilla ... hay que escribir varias clases, y hacer un par de cosas. Además tareas tan comunes como verificar que ocurre una excepción al ejecutar un código determinado, no son nada agradables de escribir con unittest. Por otra parte, en Python tenemos a doctest ... que si bien adolece de estas características, tambien tiene lo suyo ;). Este módulo es un ejemplo increíble de metaprogramación y de simplicidad. Las pruebas se escriben directamente en la documentación de las funciones o clases que se desean verificar. Como las pruebas lucen exactamente como cuando se utiliza el intérprete de Python para ejecutarlas (instrucción, resultado, instrucción, resultado, instrucción, ...) las pruebas escritas con doctest sirven para dos propósitos: para que los programadores sepan cómo utilizar una librería determinada junto con los resultados esperados al ejecutar una función determinada, para que los desarrolladores verifiquen que los módulos que implementan realmente hacen lo que dicen que hace. Por tanto si las pruebas no fallan y los programadores prestan atención a la documentación, ¡ no habrá ningún error ! Si a esto se le suma que solo con saber cómo programar en Python ya se pueden escribir las pruebas ... entonces no hay nada más lógico que pensar ¿Cómo se pueden aprovechar las ventajas de ambos módulos? La respuesta es simple ... Use el módulo dutest. Y si necesita ayuda, ejemplos u orientación, no dude en visitar este blog, leer los artículos y expresar sus apreciaciones. Recuerde que, simelo pide, seguro habrá un comentario acerca de aquella duda o inquietud que Usted tiene acerca de cómo escribir pruebas en Python. Siga este blog. ¡No se pierda los próximos artículos acerca de cómo usar el módulo dutest para escribir pruebas más efectivas!

miércoles, 7 de enero de 2009

Añadir gadgets de Google en entradas (artículos) de Blogger.

En varios lugares, incluyendo sitios de soporte de Google, he notado que mencionan que no es posible insertar gadgets en el texto de los artículos publicados en Blogger.

Como pueden ver no es así ... Es por esto que el primer paso será escribir un corto tutorial para que todos aquellos bloggers interesados en detallar y hacer más amenos los textos de sus entradas tengan una guía para lograrlo.

¿Qué son los gadgets de Google?

Bueno ... primero lo primero. Los gadgets no son más que una tecnología que permite armar muy rápidamente un sitio o página web. Cada gadget es un elemento dentro de la página que muestra una información de una manera muy particular (generalmente familiar para el usuario) o que aporta una funcionalidad específica. Un caso específico son los gadgets de Google. Dos sitios que hacen amplio uso de estos gadgets son iGoogle y Blogger. Por ejemplo todo lo que se muestra a la izquierda en este blog no son más que gadgets de Google que les pueden ser útiles a las personas que lean estas líneas. Tenemos el chat, tenemos la suscripción a los canales de noticias para que Usted pueda mantenerse informado de lo que se va publicando ... y en fin, todo lo demás también. Sin embargo, en estas líneas no nos referimos a este caso, porque Blogger hace muy intuitivo el poder insertarlos en la plantilla del blog. Pero la cuestión es que de este modo el gadget aparece en todas las páginas. ¿Qué tal si deseo que los lectores puedan localizar un lugar específico al que hago referencia puntualmente en un fragmento determinado? ... si quiere saberlo continúe hasta el final :)

Buscando el gadget correcto

El primer paso que hay que dar es buscar el gadget que se quiere incluir en la página. La manera más recomendada en este caso es consultando el directorio de Gadgets de Google. Allí se pueden realizar búsquedas temáticas y de seguro que saldrá satisfecho, pues realmente hay muchísimos para escoger ;). Una vez que lo encuentre, haga click sobre el título del gadget para ir a su página de descripción. Allí verá la vista previa, la descripción, el área de búsqueda y recomendaciones, el área de publicación rápida, y finalmente la que nos interesa el área dedicada a los webmasters. Después de identificarla, haga click en el enlace Insertar este gadget para así pasar a la próxima etapa ...

Adecuando la apariencia del gadget

Si se siguieron todos los pasos anteriores, el navegador web nos muestra una página que ofrece Google para modificar sus parámetros y visualizar el contenido para ver cómo quedará en nuestro sitio. También es posible especificar el borde que se mostrará alrededor del contenido. Cuando todo este como deseamos, se hace click en el botón Obtener el código y se copia el texto que aparece más abajo. ¡Ya estamos casi listos!

Añadiendo el gadget en una entrada de Blogger

Este quizás es el paso más rápido ... dése prisa ... añada una nueva entrada en Blogger e inserte el texto copiado anteriormente en el lugar que vaya a mostrar la información seleccionada. Publíquela y preste atención a los resultados ... ¿Funcionó?¿Se ve cómo el calendario insertado al principio en esta entrada?

¿Y esto es todo?

Como se puede ver, el proceso puede parecer algo largo, tedioso y quizás llano de datalles técnicos, pero los resultados hacen pensar que realmente vale la pena intentarlo ;). Y recuerde siempre que esto no es todo ... Simelo pide tendrá una ampliación acerca de esa duda específica que Usted tiene acerca de los gadgets. No dude en preguntar ;).

martes, 6 de enero de 2009

Comenzando el 2009 ...

El inicio de un año nuevo marca también el punto de partida para que comience a generar ideas que (quizás sin quererlo ...) fluyen por todos lados hasta que llegan a este blog por mediación de mis manos, en los limitados sorbos de tiempo que aún me quedan ...

Espero que después de leer cada entrega Usted siempre salga satisfecho, que encuentre variedad, más artículos, noticias o sugerencias interesantes y que pueden ser de gran ayuda o utilidad. En general, espero algún que otro debate ... ;)

Por tanto, sin más preámbulos ... ¡¡ comenzamos !!