Los eventos que vienen

Parece que tras el verano se van acumulando eventos en España más o menos interesantes para los que vivimos de esto del desarrollo web, aquí van los eventos que conozco y que estoy pensando en asistir antes de final de año:

Google Developer Day (25 de sepiembre en Madrid) a éste ya tengo asegurada la asistencia, gracias a las invitaciones por ir a charlar del Summer of Code en la Campus Party.

Fundamentos Web (27 y 28 de octubre en Gijón) del que siempre me han hablado bien, además que estando en modo turista me encantó la ciudad, pero no me termina de convencer el programa junto al precio del evento.

Conferencia Rails (13 y 14 de noviembre en Madrid) para el que tengo los días marcados en el calendario y espero no tener problema para ir.

Congreso de Webmasters (21, 22 y 23 de noviembre en Madrid) que en principio no me termina de convencer, quizás por parecer estar más orientado al lado de negocio que al lado técnico y siendo que la semana anterior es la conferencia rails, es muy probable que se caiga de mi agenda.

Otro evento al que asistiré sí o sí ;), aunque sin fecha todavía planeado para el 9 de Octubre en Madrid, es a la presentación de la plataforma para la creación de redes sociales tog.

¿Alguien conoce más eventos interesantes para desarrolladores?

Geolocalizar una IP con GeoLite City

GeoLite City es la versión gratuita de Geo City, sirve para conocer la localización aproximada de una IP. Como se puede imaginar, tiene muchas aplicaciones, por ejemplo a partir de los visitantes online en una web tener un mapa o una estadística por países o... Hay que destacar también otra funcionalidad interesante, que es poder consultar la información de un dominio igual que una IP.

Para utilizar este producto, que como es de imaginar tiene menos detalle de datos respecto a la versión de pago, podemos descargarnos los csv y cargarlo en nuestra base de datos, o utilizar un fichero .dat binario con un API open source disponible para varios lenguajes de programación(en mi caso el API Java).

Un ejemplo básico con el API de java, para conocer dónde están los servidores de danilat.com ;):

try {
LookupService cl = new LookupService("mypath/GeoLiteCity.dat", LookupService.GEOIP_MEMORY_CACHE );
//Se podría hacer cl.getLocation de una IP de la misma forma
Location location = cl.getLocation("danilat.com");
System.out.println("País: " + location.countryName +
"\n latitud: " + location.latitude +
"\n longitud: " + location.longitude));
cl.close();
}
catch (IOException e) {
e.printStackTrace();
}

Y ahora un poco de crítica, los atributos de la clase Location están como public(en algunas otras también y en otras usan set/get...), también hay dos clases que sólo tienen métodos estáticos con nombre en minúscula, supongo que para diferenciarlas como clases de utilidades... ¿no sería mejor llamarla por ejemplo TimeZoneUtils que timeZone, y así no salirse de la convención de que los nombres de las clases comiencen con mayúscula?

En conclusión, un producto con funcionalidades interesantes, pero con una implementación del API (de Java) que deberían retocar.

Grails Include Plugin 0.3, acabando el GSoC

Hace días que no escribo sobre mi proyecto del Google Summer of Code, y eso que ya había puesto disponibles un par de releases del Include Plugin de Grails. Sólo lo he ido anunciando en la lista de correo de Grails para ir recibiendo feedback y mejorarlo.

En este momento, que estamos ya en fase de evaluación y en teoría lo que hagamos los participantes del GSoC ya no vale, es una versión casi definitiva, ya que al menos la forma de usarlo en principio ya no va a cambiar.

En las versiones 0.1 y 0.2 se utilizaban dos tags, por cierto que al taglib hubo que añadirle un namespace(inc) por distribuirlo como un plugin, inc:includeUrl y inc:includeController que en esta versión están como deprecated y no se recomienda su uso.

Ahora únicamente es necesario el tag inc:include, que de inicio era mi idea pero chocaba con otro include fantasma que hay en Grails, por estar en el mismo namespace, y al añadirle el nuevo namespace simplemente se me olvidó :P.

En la lista me propusieron que hiciera esa modificación, lo que significaba sacar la versión 0.3. Mientras que al anunciar en la lista la última versión, ya que me han críticado el código para que mejore el rendimiento y haberme dado gran parte de la solución, tocará sacar al menos una nueva versión con esas mejoras. Las grandezas del open source, si alguien más se anima, las críticas son bienvenidas ;).

Hablando ya de la instalación y su uso, es sencillísimo:

Como está en el repositorio oficial de plugins, para instalarlo sólo debemos ejecutar:

grails install-plugin include.

Para hacer includes de otras acciones podemos llamar a una accion de un controlador con unos parámetros, por ejemplo insertar las últimas 5 noticias en una vista:

<inc:include controller="news" action="last" params="[number:5]"/>

Que también podríamos hacer usando la url que devuelve esa acción, con una mayor probabilidad de un cambio en el mapeo de la url:

<inc:include url="/news/last?number=5"/>

Otra de las cosas que pienso es interesante es el poder insertar contenido estático dentro del directorio web-app, de por ejemplo un html, a los que anteriormente no había una forma directa de acceder:

<inc:include url="/test.html"/>

En definitiva, es un plugin que facilita parte del trabajo en webs tipo portal, evita la necesidad de crear taglibs para simplemente mostrar datos o de repetir código en los controllers. En fin, espero aprobar la evaluación y así llevarme la camiseta!! ;)

Algunos links para empezar con Grails

Hace unos días estuve charlando con un amigo que acaba de terminar los estudios, entre otras muchas cosas, sobre auto-formarse en algo novedoso y con posibilidad de futuro. Como él ya había trabajado bastante con Java, en principio quería aprender algún framework web para la plataforma y al explicarle que estaba trabajando en un plugin de Grails para el GSoC, le picó la curiosidad y me pidió unos links.

En fin, que como la recopilación ya está hecha la publico también aquí:

También de algunos proyectos open source:

Con esto y algún pet-project, es más que suficiente para empezar a aprender a usar el framework y estar al día de las novedades que puedan ir surgiendo.