juantomas Hacking the planet

19 junio, 2013

Como incluir y actualizar el esquema de base de datos actual en tu modelo de rails

Filed under: Hacks,Proyectos,ruby on rails — Etiquetas: , , — juantomas @ 12:04 pm

Todos los días se aprende una herramienta nueva que mejora tu productividad.

Hoy a tocado el  turno de annotate. Esta gema de ruby sirve para incluir como comentario cual es esquema de la tabla en tu modelo.

Para usarlo solo tienes que hacer dos cosas:

* Incluir en tu Gemfile:

gem ‘annotate’

* Cada vez que ejecutes una migración y para que te actualice todos los modelos:

annotate

Y ya está. Es una gema que ya tiene sus años y no la conocía: más vale tarde que nunca 😉

19 marzo, 2013

Qué ha cambiado en Rails 4

Filed under: ruby on rails — Etiquetas: , — juantomas @ 10:34 am

La publicación de la versión 4 de ruby on rails ha traído bastantes cambios y muchas novedades. Conviene darle un vistazo al resumen que han realizado en la página oficial del proyecto.

mindmap de rails 4.0

mindmap de rails 4.0

Como bonus de este post: Chuleta de seguridad de Ruby on Rails

11 diciembre, 2012

The Bastards Book of Ruby: Este libro de ruby es de lo mejor que he visto

Filed under: Acción & Reacción,Casos de Exito,Hacks,ruby on rails — Etiquetas: , , , — juantomas @ 4:20 pm

Se está publicando según su autor lo está escribiendo y merece la pena echarle un vistazo y por supuesto comprarlo en cuanto salga el epub.

El título es: The Bastards Book of Ruby el autor es Dan Nguyen del que probablemente hayáis leído artículos casi seguro.

Repasando el índice de un vistazo hay al menos un 90% del libro que me apetece leer despacio y con mucha atención. Lejos de ser el típico libro sobre lenguaje ruby va mucho alla con cientos de ejemplos avanzados en los que explica y desarrolla otras tecnologías.

Lo dicho absolutamente recomendable. Advertencia: es muy adictivo ver lo sencillo y natural que es utilizar ruby 😉

 

10 septiembre, 2012

nokogiri, xpath y firefox

Filed under: Hacks,ruby on rails — Etiquetas: , , — juantomas @ 11:26 am

Nunca había sabido a ciencia cierta y menos práctica para que usar el XPATH que aparece cuando inspeccionas un elemento con Firefox (o chrome) y no ha sido trivial que funcione como esperaba.

Lo que tenía que hacer es sacar unos cuantos valores de varias páginas web con contenidos absolutamente dispares. De pronto se me ocurrió que podía usar el xpath que me devolvía firefox al inspeccionar el elemento. Luego con nokogiri y un poco de ruby estaba resuelto con muy pocas lineas y eficientemente.

Después de muchas pruebas y no obtener ningún resultado he encontrado cual es el «bug».

Cuando seleccionas el xpath de un elemento tienes una uri de este estilo:

/html/body/div[3]/div[2]/table/tbody/tr/td/div[2]/table/tbody/tr/td[2]/form/span[2]/span

firefox y chrome incluyen tbody de más. Con eliminarlos, nokigiri empieza a extraer el contenido correctamente 😉

 

 

 

 

 

16 abril, 2012

bazar ng: ya se puede empezar a usar el nuevo diseño de bazar

Filed under: Garum Fundatio,Proyecto Bazar,Proyectos,rmd,ruby on rails — Etiquetas: , , , — juantomas @ 5:56 pm

Para los que habéis seguido en tiempo real el repositorio del proyecto bazar no será una sorpresa que a mediados de diciembre creamos un branch que llamamos bazar-ng en el que empezamos a implementar el nuevo diseño creado por el equipo de vostok studio con Javier Cañada a la cabeza.

Hace un mes hicimos el merge con la versión master y empezamos a migrar los bazares que tenían la versión antigua. Si quieres probarlo es posible hacerlo en algunos de los bazares migrados.

No ha sido un viaje sencillo llegar hasta esta nueva versión. Han sido casi 100 días super intensos en los que hemos recorrido un camino apasionante en que hemos descubierto desde los secretos de la simplicidad a la búsqueda permanente de la mejor usabilidad. Un trabajo que no termina con la primera publicación de este diseño y que será un trabajo continuado día a día.

Esta versión se merece una pequeña serie de posts para poder compartir con vosotros algunos de estos momentos que no por sencillos dejan de ser especiales. De momento os dejo un par de screenshots:

Bazarum - Homepage

 

22 enero, 2012

bazar: truncando texto html

Cuando tienes un texto demasiado grande o quieres sacar solo las primeras 200 palabras de un post tienes un pequeño problema. Sobre todo si el texto incluye etiquetas o entidades html.

Tampoco es que sea un problema que no cualquier programador no pueda abordar en una horas. Pero ya se sabe: si ya está programado para que escribirlo de nuevo.

Googleando un poco he encontrado un par de soluciones que encajan con lo que necesitaba, y seguro que hay alguna más.

Por un lado hay una solución que aborda el problema en la parte del cliente (su navegador). Es un pequeño plugin de jquery que se llama: html-truncate

Este plugin va muy bien cuando quieres tener un enlace al final del texto con el típico enlace «leer más» y cuando se pulsa haces visible el resto del texto. Se puede ver como funciona en la página de demo de autor (Henrik Nyh) y como resiste bien a cosas como truncar en medio de una tabla 😉

En mi caso solo quiero mostrar dos o tres lineas de cada oferta que publicamos en los bazares y no tenía sentido mandar toda la oferta y luego recortarlo. De hecho si se pulsa en el div que muestra la oferta reducida se envía a la ficha completa de la oferta/demanda. Para recortar lo hacemos en el servidor con el código de Henrik pero adaptado a rails.

Esta mejora forma parte del nuevo diseño y usabilidad de bazar que estará listo en unas semanas. La implementación de esta versión se puede seguir en vivo en la rama ng del proyecto bazar en github. En cuanto esté un poco más «funcional»  daremos la opción a los usuarios para empezar a usarlo.

 

 

2 septiembre, 2011

Bazar Garum: paso a paso

Filed under: Garum Fundatio,Hacks,Personal,Proyecto Bazar,Proyectos,rmd,ruby on rails — juantomas @ 1:25 pm

De las pocas cosas claras que hay en un proyecto que se precie de serlo, es que nunca se acaba.

Y esto no podía ser menos con el Bazar Garum. Casi con una frecuencia semanal hay mejoras, nuevas prestaciones, incidencias resueltas, etc.

Esta semana el protagonista es un pequeño cambio que mejora que nos parece super útil: editor enriquecido para las ofertas. Puede parecer trivial pero permite a las empresas de la red de bazares ser mucho más creativos con sus ofertas/demandas.

El post oficial de este cambio ha sido publicado en la página oficial del proyecto Bazar. Para todo el resto de commit que no van a tener sus 15 minutos de gloria, está el repositorio oficial de Bazar Garum en Github.

Es un próximo post contaré como integramos tinymce en rails 3 usando jquery. Tiene alguna trampilla para que funcione y se merece un post.

 

 

31 julio, 2011

Bazar Garum: Tiene nueva versión

Como suele terminar pasando en todos los proyectos el Proyecto Bazar ha alcanzado la versión 1.0.

Cuando uno se acostumbra a los desarrollos ágiles no tienen mucho sentido la numeración de versiones tradicionales. La sensación es que todas las semanas hay una versión nueva que deja antigua, mejorada o más deseable a la anterior. A veces siento que incluso hay commits en el github del proyecto Bazar que se merecen una versión. Pero estas son el tipo de cosas que sentimos los programadores en esa relación tan especial que tenemos con nuestros proyectos.

Una sensación tan especial que incluso a mí no deja de sorprenderme día a día. De pronto la vida te da la oportunidad de poder participar en un proyecto como la Garum Fundatio, de poder desarrollar desde cero una herramienta como Bazar, te da la oportunidad de implementar y demostrar que hay cosas que se pueden hacer de otra forma y de pronto surge esa relación tan especial con un proyecto, con su código y termina convirtiéndose en la versión 1.0.

Esta versión ha incluido muchas mejoras y lo mejor es ver algunas de ellas en el anuncio oficial del Proyecto Bazar. Para todos los demás que siguen considerando que el código es poesía hay algunos commits en github de los que estamos orgullosos y nos encantan. Eso si no son fáciles de encontrar entre otros muchos que «simplemente» hacen que estemos contentos y satisfechos con esta primera versión. Primera por que vendrán muchas más y serán tan frecuentes como podamos.

Y por supuesto no habríamos llegado hasta aquí si no hubiera sido por:

 

* La gente que nos inspiro desde el principio y no nos abandono en ningún momento de este camino.

* Los que nos recordaron como era el html de los 90 para que hiciéramos todo lo posible para erradicarlo.

* Los que llenaron de diseño y buen gusto cada rincón del proyecto para terminar con la sobriedad que siempre intentamos imponer desde la tiranía del código.

*  Los que nos enseñaron que no existe ni la telepatía, ni los mensajes subliminares cuando diseñas un interface de usuario (y eso que sería un gran avance).

Muchas Gracias a todos !!!!

Os dejo algunos enlaces:

Página del Proyecto Bazar

Como descargar e instalar Bazar

Página de Github con el código

 

 

 

 

22 abril, 2011

Integrando OpenHeatMap en el Bazar Garum

ACTUALIZACIÓN: Acabo de descubrir que Pete Warden es uno de los chicos que han levantado el escándalo del iPhone Tracker 😉

Ayer me encontré sin querer con una de esas joyas que genera el software libre: OpenHeatMap de Pete Warden.

Pete Warden es un auténtico crack. No solo por lo fácil que hace publicar datos, solo tenéis que ver los vídeos en los que cuenta como funciona OpenHeatMap para descubrir que además no se puede ser más abierto y humilde como persona.

La idea de OpenHeatMap es que creas un csv o una hoja de cálculo en google con la información que quieres representar geolocalizada, configuras como quieres el mapa y ya está. Pete ha creado un par de vídeos para explicarlo:

Este que es general para todo el mundo:

 

Y este otro más dirigido a periodistas:

 

Puede que exista una forma igual de sencilla para hacerlo con google maps, pero ¿quien no está hasta las narices de Google?

Además usa Openstreetmaps que desde siempre me han caído mucho mejor y están en la linea que tiene futuro: información abierta y libre para todo el mundo.

En modo server  va como la seda pero para incluirlo en tu proyecto, en mi caso en el bazar garum, he tenido que pelearme un poco. Estos son los pasos que he realizado:

* Meter lo includes necesarios:

OpenHeatMap requiere jquery y esto ya lo tengo incluido en Bazar.

<%= javascript_include_tag(«jquery.openheatmap.js») %>

Me lo he bajado en local que no es cuestión de que Pete pague de más a Amazon por el almacenamiento.

* LLamar a OpenHeatMap

Esto es todo lo que se necesita:

<div id=»mapa-paises-container»></div>

<script type=’text/javascript’>

$(document).ready(function(){

// tamaño del mapa y tipo de render.

// no prefiero flash, pero html5 canvas no termina de ir bien todavía

$(‘#mapa-paises-container’).insertOpenHeatMap({

width: 800,  height: 500, prefer: ‘flash’

});

});

function onMapCreated() {

var map = $.getOpenHeatMap();

csv = ‘<%= Pais.paisestocsv -%>’;

map.loadWaysFromFile(‘http://static.openheatmap.com/world_countries.osm’);

map.loadValuesFromCSVString(csv);

map.setSetting(‘gradient_value_min’, 0);

map.setSetting(‘gradient_value_max’, 10);

map.setColorGradient([‘#ffbdf7a0’, ‘#ffff0000’]);

}

</script>

El método de rails que me devuelve las empresas que hay en cada país es muy sencillo:


def self.paisestocsv
csv = "country_code,value\\n"
max = Pais.count_by_sql("select max(total_empresas_mercado) from paises")
for pais in Pais.where ('total_empresas_mercado > 0')
csv += "#{pais.cod3},#{(pais.total_empresas_mercado*10)/max}\\n"
end
return csv
end

Como veis simplemente selecciono los países que tienen empresas y monto un string en formato CSV que luego uso en los scripts de OpenHeatMap. Con el código iso de país de 2 dígitos no funciona o no lo he conseguido yo. Pero echando mano de geonames lo he incluido en la tabla de países. En el modo servidor si subes un CSV con códigos de 2 dígitos funciona perfectamente. Si alguien se anima a corregirlo, seguro que Pete se alegra mucho.

He normalizado los valores del número de empresas para siempre devuelva valores entre 0 y 10 para poder ajustar mejor los gradientes pero no estoy seguro de que haga falta realmente.

El resultado ya integrado con Bazar Garum se puede ver en la página de datos de Bazar. En un par de semanas tendremos los nuevos bazares en funcionamiento y poco a poco se ira llenando el mapa.

 

 

 

 

 

 

 

 

 

 

 

16 noviembre, 2010

Proyecto Bazar de la Garum Fundatio

Como ya sabréis por la página del proyecto bazar en github, desde julio estoy involucrado en el diseño de este proyecto de la Garum Fundatio. La idea es crear una herramienta, bazar,  para agilizar las relaciones entre empresas. Y hay algunas cosas que me gustaría contaros sobre el proyecto.

La primera es su naturaleza distribuida. Hay bastantes aproximaciones a como agilizar y potenciar las relaciones entre empresas pero todas son centralizadas en un servicio. Esto desde nuestro punto de vista hace que se pierda uno de los pontenciales más interesantes de Internet: las redes distribuidas. Por esta razón desde el principio hemos diseñado el proyecto bazar para que su arquitectura sea distribuida y  cada uno de los servidores establezca relaciones con el resto de servidores. Esto nos da varias  ventajas: robustez, gestión distribuida, crecimiento sin limitaciones a priori.

En cuanto a la tecnología nos hemos decantado por usar rails3. La razón principal es por que en el proyecto bazar la funcionalidad se define en módulos y necesitábamos crear un tejido que nos permitiera incluir nuevos módulos, propios o de terceros, facilmente. Rails3 era el tejido perfecto. Para la implementación de los módulos la nueva implementación de engines es lo más adecuado.

Enlaces con información del proyecto:

Página oficial del proyecto bazar en Github.

Garum Fundatio.

Objetivos del proyecto bazar.

Algunos artículos sobre el espíritu de Garum.

Older Posts »

Powered by WordPress