Publicidad:
Terra
La Coctelera

Mis Tags > codigo

Hay 13 artículos con el tag codigo.

Otros artículos en La Coctelera
clasificados con codigo

DashCode al rescate

He aquí un fan absoluto de picar código, con sus ventajas e inconvenientes. Carlos a esto le llama hacer el pollo, todo el día picando. A ratos muertos estoy desarrollando un widget muy sencillito para el dashboard de OS X.
Me habían recomendado widget factor, pero no acababa de pillarle el punto y al final acabé enganchado a mi adorado textmate haciendo el oso.

Dashboard no es ni más ni menos que un servidor web un poquito especial, y los widgets son pequeñísimas aplicaciones que pueden interactuar con el sistema, con la red, con internet o con otras aplicaciones.

No hace falta dedicarle demasiado tiempo a aprender a desarrollar un widget, no es muy novedoso si estás familiarizado con el desarrollo web. Los archivos con extensión wdgt son carpetas que el sistema operativo tiene identificadas. Si en el menú contextual del wdgt eliges 'Mostrar contenido del paquete' puedes explorar todos los archivos que componen el componente.

Blat me envió un enlace a un post que hablaba de Dashcode, una beta que ha lanzado Apple para desarrollar widgets para su dashboard, disponible en Developer Connection. La herramienta es muy visual, pero permite moldear todo el código generado a manita. Tiene una librería de componentes usuales que está bastante bien y se pueden usar arrastrando encima de tu diseño, y un inspector de elementos bastante sencillo para incorporar comportamientos asociados a eventos.

Hasta aquí nada nuevo bajo el sol.

Hasta ahora todo el test del widget se hacía sobre un navegador, por lo que hasta que no tenías bastante adelantado el desarrollo no podías ver qué tal se comportaba en su entorno final. Muchas funciones relacionadas con efectos, cambios de tamaño, o accesos a sistema hacen que javascript se vuelva un poquito loco, que falle y que todo sea un engorro. Por otra parte, en dashboard no tenemos la posibilidad de ver errores de javascript, así que si algo falla podemos tardar un tiempecito.

Dascode provee de una interfaz de depuración muy práctica. De esta manera conforme vamos avanzando en el desarrollo del código podemos probar el widget en un entorno de desarrollo. Un log nos va informando de todos los pasos que va dando la aplicación y de los errores y alertas. También nos permite insertar breakpoints en el código.

Si es la primera vez que vas a ponerte en harina esta herramienta te vendrá de perlas. Te permite combinar la potencia de escribir tu propio código con un editor visual y un entorno de test. Además si no sabes por dónde empezar en el lateral tienes unos 'workflow steps' que varían en función del tipo de aplicación que vayas a crear.

Seguro que tiene aspectos malos, además es una beta y tendrá fallitos que todavía no he detectado. Pero las primeras impresiones son bastante buenas.

Feeds para dummies

Construir un feed de cualquier contenido en rails (a la MVC y sin addons) es una tarea relativamente fácil. El problema muchas veces viene del desconocimiento de las características concretas de los feeds.

El otro día Sergio sacó el tema de feedtools, una gema para tratamiento de feeds (tanto creación como parseo) de la que había oído hablar pero de la que no había hecho uso.

Con feedtools podemos formar documentos RSS, atom o cdf de forma sencilla sin tener que mirar muchas especificaciones. Simplemente conociendo la anatomía básica de un feed nos basta.

El funcionamiento es sencillo, con una consulta obtenemos todos los post/artículos/noticias que nos hacen falta para la construcción. Y ahora de esta forma tan simple formamos el feed.

 feed = FeedTools::Feed.new
 feed.title = "Título del feed"
 feed.author.name = "Si procede"
 feed.link = "aquí el link"
 
 @misresultados.each do |bloque|
   item = FeedTools::FeedItem.new
 
   item.title = bloque.mititlulo
   item.id = bloque.miid
   item.link = bloque.enlace
   item.content = bloque.cuerpodelenlace
   item.updated = bloque.fecha
   item.summary = bloque.resumen
   item.author.name = bloque.autor
   item.author.href = bloque.urldelautor
 
   feed.items << item
 end
 
 xml = feed.build_xml("atom", 1.0)
 

Tengo que reconocer que yo lo compliqué un poquito más, pero llegó Sergio con las 'rebajas del código' y lo dejó en este cachito enano.

Si lo que queremos hacer es crear el feed como estático y no actualizarlo bajo petición existe la posibilidad de hacerlo con feedupdater, y no parece difícil.

Para cualquier dudilla, a la api!

Enfrentarte a rMagick y salir victorioso es genial, da un 'gustito' que no es normal.

En la parte de common tasks de la docu de rmagick nos indica que, para hacer una imagen en escala de grises debemos de usar el comando quantize más o menos así:

 imagen= img.quantize(256, Magick::GRAYColorspace)
 

Esto funciona, peeeeero si te fijas queda bastante guarrete. Esto es porque restringimos la escala a 256 colorejos de nada. No está mal, pero se nota que la calidad desciende en picado. Además en cuanto subes de 256 niveles para arriba rmagick devora memoria sin ninguna vergüenza.

La mejor alternativa (a no ser que alguien me diga lo contrario, que equivocados podemos estar todos) es cambiar el tipo de la imagen (no es exactamente cambiar el perfil). ¿Cómo? Pues fácil, fácil:

 imagen.image_type = GrayscaleType
 

Las diferencias en la calidad de la imagen generada son patentes, y el consumo de memoria bastante inferior al del quantize.

Amigos sufridores del rmagick en producción. Que descanso de cuerpo se le queda a uno cuando activa el garbage collector.

Cuando usas una aplicación que hace verdaderas perradas con las imágenes hay veces que a rmagick no se le puede pedir un rendimiento excesivamente fino, y es de esperar que en algún momento oigas crujir el código y ver como rails se tumba (en el mejor de los casos). Si además prevees que tu aplicación la use alguien más que tú pues empieza a multiplicar riesgos.

Hace dos días tiré la aplicación que tengo en preproducción con apenas 3 usuarios concurrentes, así que tirando un poquito del hilo ha salido el fantabuloso garbage collector al rescate, apostillado por esta página de la wiki de rails.

Reproduzco la jugada!

   def run_gc
     fDisabled = GC.enable
     GC.start
     GC.disable if fDisabled
   end
 

Unas lineas de na, que pueden evitar que pases tu fin de semana pegado al ssh mirando al top y comiendo palomitas para no perderte las mejores leches de tu servidor rails.

inwebwetrust.net

Ya seguía a Fernando Blat desde su ya cerrado blog taberna del turco. Un buen tiempo más tarde tuve la oportunidad de 'conocerle' en el taller de RoR que dieron en el hacklab y me dió la impresión de que es uno de esos tios que caen bien con sólo verlos, pero que además conocerlo te reafirma en esa sensación (bueno, todos podemos estar equivocados, pero creo que no :D)

Ahora cierra la taberna pero abre su nuevo proyecto in web we trust. Seguro que le irá genial y yo pongo mi pequeñito grano de arena con un enlace a uno de los tios que me terminó de picar con el tema de RoR.

Suerte maestro!