lunes, agosto 11, 2008

Cerrado por vacaciones

lunes, agosto 11, 2008 por Martín

Aprovecho el mismo título que los amigos de Linking Paths utilizaban hace unos días para un post sobre las vacaciones para comentar que este blog no va a ser menos.

Me marcho un par de semanas así que desafortunadamente tendré que dejar este rinconcito un poco descuidado. Será por poco porque espero llegar con las pilas muy cargadas. Mi destino no es muy paradisíaco, y además parece que está lloviendo (vaya cruz), pero ya lo echo de menos.



Hasta dentro de dos semanas.

viernes, agosto 08, 2008

Usando Google (y Yahoo) como CDN para tu código JavaScript

viernes, agosto 08, 2008 por Martín


La número dos de las trece reglas para conseguir páginas web más rápidas (según Yahoo) es utilizar una CDN (Content Delivery Network). Ahora bien, las CDN cuestan dinero y quizás con nuestro modesto presupuesto no nos podamos permitir ningún gasto extra más.

Pues bien, en High Scalability publican un truco muy interesante, que básicamente consiste en utilizar el servicio gratuito de Google de hosting de librerías JavaScript. Se trata del proyecto AJAX Libraries API y hasta el momento alojan jQuery, jQuery UI, prototype, script.aculo.us, MooTools, y dojo.

Usar este servicio en nuestras páginas web es tan sencillo como referenciar a sus ficheros JavaScript:


<script src="http://ajax.googleapis.com/ajax/libs/prototype...
.../1.6.0.2/prototype.js"/>

Por su parte, Yahoo también ofrece hosting para su propia librería, YUI, como se muestra en este artículo.

El único problema que tendremos es que si el servicio de hosting de Yahoo o Google no son accesibles, por cualuier razón, nuestra librería no estará accesible, y por consiguiente es probable que nuestra aplicación no funcione. Aunque bueno, ya se sabe que aunque caerse se caen, su disponibilidad suele ser bastante alta, por lo que parece muy útil el ahorrarnos unas cuantas peticiones HTTP en nuestros servidores y pasárselas a los peces gordos:)

miércoles, agosto 06, 2008

Programación en parejas con Eclipse ECF

miércoles, agosto 06, 2008 por Martín


Tenía pendiente mencionar esto desde que lo leí hace unos días. Ferrán Rodenas escribía hace unos días sobre dos tesoros ocultos en Ganymede (la última release de Eclipse) que merece mucho la pena leer.

Sin duda, el me ha dejado impresionado es la nueva funcionalidad de ECF (Eclipse Communication Framework) para editar un fichero simultáneamente entre varias personas. Este screencast es realmente descriptivo, y la verdad es que parece realmente útil.

Muchas veces cuando tienes que explicar algo a alguien se vuelve realmente complicado, especialmente cuando esta persona no se puede sentar a tu lado y recorrer contigo el código, y no queda otro remedio que utilizar Skype o gchat para intentar explicar como funciona todo. Con este plugin, sigue siendo necesario algún mecanismo para hablar entre las dos personas, pero vaya la edición simultánea de ficheros es espectacular.

COBOL sobre ruedas

miércoles, agosto 06, 2008 por Martín

Hoy he visto un mensaje en una de las listas de correo a las que estoy suscrito y que no me resisto a publicar porque siempre está bien un poco de ironía. Creo que fue algo que alguien preparó para el April Fools de este año, así que ya tiene algo de tiempo pero seguro que más de uno le hace bastante gracia...



... y seguro que más de uno aprecia la ironía :)

Se trata de COBOL sobre ruedas.

viernes, agosto 01, 2008

jLibrary 1.2 ve por fin la luz: Historia de una release.

viernes, agosto 01, 2008 por Martín



Ayer, hemos lanzado por fin la versión 1.2 de jLibrary. El trabajo en jLibrary 1.2 empezó hace más o menos un año cuando Dani buscaba algo que hacer y nos pusimos a trabajar en crear una aplicación web. La aplicación web fue tomando forma poco a poco. Y lo que empezó como un simple frontend para mostrar los documentos que estaban almacenados en un repositorio de jLibrary, pues como suele pasar se le van añadiendo más y más y más cosas y terminó en toda una aplicación web para visualizar y editar documentos, su contenido, sus relaciones, y personalizable mediante templates. En fin, lo que se puede ver desde hace tiempo en la página de la demo.

La web poco a poco fue recibiendo carga y eso permitió sacar a relucir unos cuantros problemas en la gestión de sesiones y de memoria. Venga. Seamos transparentes. La web no duraba más de un par de días funcionando! Aunque lo cierto es que estabamos hablando de utilizarla con 128Mb de RAM, que hoy por hoy no es nada para un servidor. Pero no es escusa. Una vez solucionados esos problemillas, hubo que dedicarse a mejorar el sistema de seguridad. Lo bueno de crear una aplicación web de este estilo sobre una aplicación de escritorio es que saca a relucir casos de uso no existentes hasta el momento, como podía ser el disponer de una área pública para la publicación de documentos en la demo al tiempo que la sección de docuemntación de la demo seguía siendo privada e intocable. Como anécdota puedo contar que algún malvado consiguió evitar los chequeos de seguridad y borrar la documentación. Que mejor estímulo para arreglar algunos bugs!!

Después de todos los arreglos, la web ya funcionaba mucho mejor. Al principio como no estaba seguro después de los problemas de memoria, le llegué a dedicar 384Mb. A medida que fue madurando y madurando lo bajé a 256, 128 y 64Mb. Estuvo funcionando durante algún tiempo con 64Mb, pero al ampliar la memoria de mi servidor a 1Gb decidí darle 128Mb constantes para olvidarme un poco del tema. Y lo cierto es que parece que las optimizaciones funcionaron, porque normalmente nunca tengo que rearrancar el servidor de jLibrary salvo cuando mi proveedor tiene que reiniciar el servidor físico. Ahora mismo lleva casi un mes funcionando y ha servido unos 7000 documentos, 12000 downloads de ficheros y 20000 visualizaciones de directorios entre otros. Eso sí, la carga es super-modesta, y siempre está sobre las 10/20 sesiones concurrentes. No es demasiado, pero bueno, tampoco está mal para 128Mb.

Durante el camino se unieron al proyecto un par de desarrolladores polacos, Ryszard y Renata Perkovski, que por curiosamente se vienen a trabajar a Dublin, y que se dedicaron en pleno al interfaz de usuario. Añadieron mejoras en la usabilidad, integraron el editor XML de WTP, adaptaron y mejoraron la build de Maven para trabajar que fuera más sencilla (jLibrary creo que es uno de los pocos casos en los que se ha sido capaz de integrar Eclipse RCP con Maven) y lo más importante es que actualizaron todo a Eclipse 3.4. Ayer lo estuve probando, y la verdad es que el rendimiento y aspecto de la aplicación ha mejorado un montón con esta nueva versión de Eclipse. Usar Eclipse RCP tiene sus desventajas, pero también tiene muchas ventajas, siendo una de ellas que cada vez que hay versión nueva de Eclipse, es como si hubiese una versión nueva de tu aplicación :)

Aún así, allá por Marzo, empezé un nuevo proyecto totalmente diferente, que me ha tenido ocupado durante todos estos meses, por lo que jLibrary quedó un poco (bastante) de lado. Y era una pena porque esta nueva versión estaba listísima, sólo hacía falta ese empujoncito de un par de semanas para que viese la luz. Al final, allá por Mayo llegó una empresa rusa, Blandware que se interesó en el proyecto y empezó a aportar parches importantes, tanto en el servidor como en el cliente. Sin duda lo más importante que han aportado ha sido el migrar el soporte que ya existía de propiedades personalizadas en los documentos al UI, es decir que ya se pueden añadir propiedades personalizadas desde el propio interfaz de usuario. Como esta gente no paraba de mandarme parches, lo que es muy bueno, al final he decidido cederles el mando de jLibrary, y han sido ellos los que se han encargado de preparar y lanzar la release, así que justo es el reconocerles el mérito.

En fin, está es más o menos la historia de jLibrary 1.2. Mucho más detallada de lo que aparece en las release notes. El proyecto por lo que a mi respecta es ahora mismo muy maduro, y aunque por ahora no continuaré desarrollándolo, espero que Blandware tire del carro. Es muy posible de todos modos que en unos meses lo recupere, ya que tengo pendiente la tarea de probar a añadir Amazon S3 como sistema de almacenamiento y aprovechar eso para desarrollar una idea que tengo en mente y que sería muy interesante para alguna startup chula. ¿Alguien interesado y con tiempo libre por ahí? Porque quizás podríamos hablarlo :)

Por cierto, que el que quiera descargarse jLibrary, pues ya sabe: jLibrary.org.