miércoles, 29 de junio de 2011

GRAILS - Remote pagination plugin

Esta vez toca una pequeña explicación de un plugin útil y muy fácil de utilizar. Se trata de Remote Pagination, el cual ofrece los tags remotePaginate y remoteSortableColumn que permiten paginar y ordenar las columnas de forma remota.

martes, 28 de junio de 2011

GRAILS - Evitar envío duplicado del formulario

Muchas veces (por no decir siempre) nos encontramos con el problema de evitar que un usuario envíe dos o más veces el mismo formulario (ya sabemos todos que existen usuarios que parece que tienen un tick nervioso en el dedo y no parar de dar a los botones por si no les ha hecho caso...).

jueves, 23 de junio de 2011

NUTCH - Combinar índices

Dentro del script que he empleado para hacer el crawl de distintas páginas, decidí que los nuevos crawls se harían en directorios distintos y después de juntarían con uno general. Este es el código que utilizo para mezclar los crawldb.
Path crawlDb = new Path(dir + "/crawldb_"+id);
Path crawlDbDestino = new Path(dir+"/crawldb");
Path crawlDbNuevo = new Path(dir+"/crawldb2");
//Aquí hay más código, pero no relacionado con este tema

Path[] crawlDbs;
if (!fs.exists(crawlDbDestino))
{
 crawlDbs = new Path[1];
 crawlDbs[0] = crawlDb;
 crawldbMerger.merge(crawlDbDestino, crawlDbs, false, false);
 fs.delete(crawlDb,true);
}
else
{
 crawlDbs = new Path[2];
 crawlDbs[0] = crawlDb;
 crawlDbs[1] = crawlDbDestino;
 crawldbMerger.merge(crawlDbNuevo,crawlDbs,false,false);
 fs.delete(crawlDbDestino, true);
 fs.rename(crawlDbNuevo, crawlDbDestino);
 fs.delete(crawlDb,true);
}

GROOVY - Elvis Operator

Elvis operator (?:) es una versión corta del operador ternario de Java. Literalmente es la abreviación de "if-then-else". Este operador es muy útil para, por ejemplo, definir valores por defecto si no se han indicado antes, lo que significa que tendrán valor null o false.

Veamos un par de ejemplos.
def nombre = nombre?:"desconocido" 
def otro = nombre=="desconocido"?"a":"b"

En el primer ejemplo, si el nombre tiene algún valor, se asigna ese valor, y en caso contrario se le asigna el string "desconocido". La primera parte del operador se conoce como expresión. Si esa expresión se evalúa a false o null, entonces el valor después de : es devuelto, si no el posterior a ? es el que será devuelto. En el segundo caso, si el nombre es "desconocido", la variable otro tendrá valor "a" y si no "b".

Puede que al principio cueste un poco acostumbrarse a este operador, pero una vez que lo hagáis, os daréis cuenta de que lo podéis usar en muchos sitios para abreviar código.

Enjoy!

GROOVY - Expresiones regulares

Groovy, como Java, permite el uso de expresiones regulares y lo hace de una manera sencilla. Además, añade tres operadores que facilitan aún más la labor.

Twitter Delicious Facebook Digg Stumbleupon Favorites More