Archivo del 11/2007

Concurrencia en Java

Me he estado informando sobre sistemas concurrentes en Java y he encontrado estos dos libros que parecen muy interesantes y que ya me he comprado en Amazon para leer.

1) Concurrent Programming in Java(TM): Design Principles and Pattern de Doug Lea (profesor de la universidad de Nueva York especializado en programación concurrente).

2) Java Concurrency in Practice  de Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes y Doug Lea

Según tengo entendido sobre este último: muy bien escrito, bastante práctico y además cubre hasta la versión 5 de Java con las nuevas librerías de concurrencia.

 ¿Alquien sabe de alguno mejor orientado a diseño y/o desarrollo de sistemas concurrentes en Java?

Top queries de adsense for search en peligro después de un año

Si utilizas Adsense for Search y visitas tus reports verás que tienes un nuevo aviso de Google en el cual se especifica que se borrará el histórico de top queries con más de un año de antigüedad.

El mensaje exacto es:

“Effective December 10, AdSense for Search top query data that’s more than a year old will no longer be available. If you have any critical reports, please run and save them prior to December 10.”.

¿y la razón por la que google está eliminando estos datos es? No creo que un problema técnico esté haciendo mella en un monstruo como google… ¿alguien lo sabe?

Solucionado el problema de la latencia en los grupos de google

¡Al fin! Parece que google ha solucionado el problema por el cual los correos de los grupos de google a veces llegaban con un delay impresionante :) Lo acabo de leer en este post de SERoundtable.

Fix en la clase CheckIndex

Hace 3 días escribía sobre un update en la clase CheckIndex que permitía arreglar índices de Lucene corruptos. Pues bien, justo hoy a raíz de un post sobre un bug que detectaba segmentos con documentos eliminados como erróneos, Michael McCandless ha vuelto a actualizar la clase. Os la dejo aquí de nuevo con el fix.

Interesante librería de patrones de interacción

Me ha gustado mucho la página de Martijn van Welie sobre diseño de patrones de interacción que me ha pasado mi compañero y amigo David Rodriguez, donde explica donde y cómo se utilizan determinados elementos de interacción con el usuario y cual es el motivo de su uso.

Como estoy bastante metido últimamente en el mundo de la IR, os dejo aquí el enlace directo a lo que explica Martijn sobre las cajas de búsquedas como elementos de interacción.

Restauración de un índice de Lucene corrupto

Aunque es muy difícil que un índice de Lucene acabe corrompiéndose puesto que el sistema de Index Managing está preparado para soportar caídas de la JVM ya sean provocadas (p.e. con un ‘kill -9′. Y siempre pienso ¿no sería mejor añadir un poquito de lógica a la aplicación para poder cerrarla bien en cualquier momento? Pero sólo se queda en es eso… en un pensamiento) o imprevistas, podemos encontrarnos con situaciones poco deseables si, por ejemplo, se nos cae la máquina con la que estamos indexando en medio del proceso.

Aunque parece que el equipo de Lucene está trabajando en su versión 2.3 entre otras cosas para evitar este tipo de problemas y así mantener en todo momento la consistencia del índice, existe la posibilidad de chequear y recuperar ajustando un poco la clase CheckIndex con este parche desarrollado por Michael McCandless. Sólo tendremos que lanzar el proceso con el parámetro “-fix” y se recorrerá todo el índice arreglando las inconsistencias que pueda haber.

¡Mejor que nunca lo necesiteis!

Herramientas (experimentales) de debug en java

Aquí os dejo 4 herramientas interesantes que os pueden ser de utilidad para debugar “expedientes X” en vuestros proyectos java:

 jinfo - Herramienta que nos da información sobre la configuración de un determinado proceso de java o de un servidor remoto. La información incluye tanto propiedades del core de Java como flags de la linea de comandos de la JVM.

 jmapNos muestra los objetos compartidos en memoria o detalles de la memoria HEAP de un determinado proceso o de un servidor remoto.

 jsadebugd - Es un demonio que actua como servidor depurador de procesos.

 jstack - Nos permite ver la pila de cualquier thread de Java para un determinado proceso o para un servidor remoto.