4 Trabes

Jasypt 1.1

Publicado por el Lunes, 26 de Febrero de 2007

Ya está disponible la nueva versión de la librería de cifrado Jasypt que como mayor novedad ofrece integración transparente con Spring Security (ACEGI). Más información en la página de Jasypt.

RoRED: IDE Ruby on Rails para windows

Publicado por el Jueves, 22 de Febrero de 2007

En nuestra constante búsqueda del IDE Rails definitivo, nos hemos topado a lo largo de estos meses con diversos proyectos para todas las plataformas. En nuestro trabajo diario, hemos terminado utilizando RadRails, un IDE bastante completo basado en Eclipse. Pero hay cosas que seguimos echando en falta, y que por ahora RadRails no ofrece. Por eso seguimos visitando las webs de otros editores/IDEs Rails, en busca de esas funcionalidades perdidas (o, más correctamente, todavía no encontradas). Y cómo no, la estrella de estas funcionalidades es la autocomplección de código (o autocompletar, code assist, code completion, o como queráis llamarlo). Hasta ahora ninguno de los IDEs que habíamos probado la ofrecía, pero en una visita rutinaria a las webs de los IDEs Rails más conocidos (dejando a un lado el omni-mac-scente Textmate), nos hemos encontrado con la nueva versión de RoRED (sólo para Windows). Y hete aquí que esta versión ¡incluye autocomplección de código! Vale, no lo completa todo, no tiene un sistema muy refinado para sugerir cómo completar… pero ¡autocompleta! También muestra ayudas con los parámetros de los métodos… dos de las cosas a las que un programador acostumbrado a trabajar en otros entornos está más (redundando) acostumbrado.

Que quede claro que todas estas funcionalidades todavía son rudimentarias, y que otras igual de útiles como la integración con Subversion no están disponibles. Habrá que esperar a que éste y otros entornos de desarrollo Rails evolucionen, pero parece que poco a poco toda esta funcionalidad que debería ser básica irá apareciendo y se irá haciendo más común, lo que simplificará un poco más el trabajo de los desarrolladores y ayudará a que la felicidad llegue a todos.

La propiedad table-layout en CSS

Publicado por el Sábado, 03 de Febrero de 2007

Como podéis ver en la especificación de CSS2, existe una propiedad CSS llamada table-layout que nos permite especificar al user agent (que para el 99% de nosotros es el navegador, para qué nos vamos a engañar) qué algoritmo debe utilizar a la hora de calcular el tamaño de una tabla para mostrarla. Los posibles valores para esta propiedad son fixed y auto.

table-layout: fixed

Cuando se especifica fixed el navegador deberá utilizar un algoritmo rápido, que calcula el ancho de la tabla basándose en el ancho de las celdas de la primera fila. De este modo, llega con que esta primera fila esté cargada: en ese momento el navegador ya puede determinar el layout de la tabla y pintar sus contenidos.

table-layout: auto

En este caso el navegador puede utilizar cualquier algoritmo, siendo lo más normal que emplee uno que determina el layout de la tabla en función del ancho de sus columnas (de toda la columna, no sólo de las celdas de la primera fila, como en el caso del algorito fixed). En este caso, hasta que no dispone de todo el contenido de la tabla, el navegador no puede determinar su layout definitivo.

Y saber esto… ¿de qué me vale?

Pues para un par de cosas, al menos. La primera y más evidente tiene que ver con la eficiencia. Si tenemos que mostrar grandes tablas de datos (grandes quiere decir grandes, muy grandes, con cientos o miles de filas; ya sé que existe la paginación, pero también sé que hay gente que prefiere no darse por enterada y quiere esas gigantescas tablas en sus aplicaciones), cambiar el algoritmo de auto (su valor por defecto) a fixed puede suponer la diferencia entre que el navegador se cuelgue o podamos ver la tabla.

La segunda ya no es tan evidente, pero en algunas ocasiones puede ser incluso más importante, y tiene que ver con la carga de los datos y su presentación al usuario. En nuestro caso concreto, acordarnos de la existencia de la propiedad table-layout resultó de gran utilidad mientras trabajábamos en la vista de Mendeleweb . Si visitáis la página podréis ver que lo primero que se muestra es una tabla periódica en la que cada celda contiene una foto de algún personaje (“elemento” en la jerga de Mendeleweb). Ahora mismo cada imagen se carga correctamente en su celda, posicionada en el lugar que le corresponde sobre la imagen de fondo, que representa los bordes de la tabla. Pero en las etapas iniciales del desarrollo las imágenes iban apareciendo a medida que se iban cargando y se iban colocando como un acordeón, hasta posicionarse correctamente en su lugar sólo cuando toda la tabla estaba cargada. Evidentemente, esto nos dio una pista muy buena e hizo que la propiedad table-layout viniese a nuestra memoria :o). Con sólo añadir esta propiedad y establecer su valor a fixed en las CSS conseguimos que los “elementos” de la tabla periódica apareciesen desde un primer momento en el lugar que Mendeleiev les asignó.

Mendeleweb

Publicado por el Viernes, 02 de Febrero de 2007

Cumpliendo lo que ya os adelanté en un post anterior, Mendeleweb ya ha sido publicada. Con la excusa del centenario de la muerte de Mendeleiev (padre de la tabla periódica de los elementos químicos), Trabe Soluciones ha desarrollado, utilizando Rails, una aplicación para los Museos Científicos Coruñeses con el objetivo de que los usuarios confeccionen durante un año una tabla periódica compuesta por personajes propuestos por ellos mismos. Es decir, se pueden proponer “elementos” y votar a aquéllos que nos parezcan más adecuados para cada casilla (o elemento químico, esta vez sin comillas).

Ya sabéis, tenéis todo un año por delante para votar y proponer a vuestros “elementos” favoritos.

Crear thumbnails ligeros con Minimagick

Publicado por el Jueves, 01 de Febrero de 2007

Tras el apagón voluntario de 5 minutos (que por lo menos en esta nuestra ciudad ha disfrutado de una acogida muuuy modesta) vamos a hablar brevemente de como crear lightweight thumbnails desde nuestra aplicación Ruby utilizando MiniMagick.

Minimagick es una librería minimalista para trabajar con imágenes. Soporta las acciones más habituales que uno puede necesitar realizar sobre una imagen. Pero tiene un gran problema: hay muy poca documentación sobre ella, asi que al final solo nos queda mirar el código fuente, que tampoco es que duela, pero da un poco de pereza :D.

Hay que reconocer que en este caso el código es bastante entendible. Como no he encontrado ninguna página donde explicaran en un par de líneas como se puede cambiar el parámetro de calidad de un jpg, lo explico aqui. Las distintas acciones que permite realizar Minimagick se ejecutan mediante invocaciones al comando mogrify, con distintos parámetros. Hay ciertos métodos definidos de una forma explicita, pero si nos salimos de ahi, como casi siempre en nuestro querido Ruby, la clave está en la implementación del amado method_missing:

def method_missing(symbol, *args)
   args.push(@path) # push the path onto the end
   run_command("mogrify", "-#{symbol}", *args)
end

Más sencillo no se puede. Ahora llega con saber que el flag para modificar la calidad de una imagen es quality, y que la unidad es el tanto por cien (100 lo mejor posible, 0 lo peor) y ya está la receta completa. Supongamos que tenemos un objeto Image que hemos bautizado como my_image y que ya está instanciado. Si queremos guardarlo con una calidad del 70%, será suficiente con el siguiente código:

my_image.quality 70
my_image.write(...)

Obviamente, en el mundo real donde hay que hacer más cosas que cambiar la calidad con que se graba un jpg, se podría utilizar el método combine_options para hacer varias cosas en un solo comando mogrify.

Cinco minutos de apagón en Trabe

Publicado por el Jueves, 01 de Febrero de 2007

Esta tarde Trabe Soluciones se suma a los cinco minutos de apagón, de 19.55 a 20.00.