Soporte de anotaciones en Evince

Iñigo Martínez ha comenzado con el desarrollo que nos llevará a poder disfrutar de anotaciones en documentos PDF desde Evince, tanto para verlas como para modificarlas. Carlos García (Kal)  es el mentor del proyecto en GNOME, y entre ambos han decidido ya cuáles van a ser las distintas fases. Podremos seguir el día a día del desarrollo en el blog de Iñigo.

Google Summer Of Code 2007 : SELECCIONADOS!!!

¡Ya es oficial! Han publicado la lista de seleccionados del Google Summer Of Code 2007 . Para ver quiénes son los agraciados, hay que pinchar en el nombre de cada proyecto en esa lista. Llevaba varios días escribiendo al respecto, porque desde la Facultad de Informática de San Sebastián, animé a 2 de mis alumnos a presentar sus proyectos fin de carrera dentro de esta iniciativa. Si los seleccionaban en el SoC matábamos dos pájaros de un tiro: el PFC iba adelante y además colaborábamos con una organización de la comunidad del software libre (por no hablar del incremento de méritos en los currículums 😉 ¡¡Y LO HEMOS CONSEGUIDO!! Hoy mismo han llegado los mensajes de felicitación. Los agraciados son :

¡Enhorabuena a los dos! Ahora queda lo más importante: documentar y programar 🙂

Web Scraping y XPath (I)

Nuestro problema es simple de enunciar y no tan difícil de resolver ad-hoc, pero extremadamente complejo de solucionar con eficiencia y de forma genérica . Nuestro reto es extraer periodicamente los titulares o contenido específico de una serie de páginas web no colaborativas (no disponen de sistemas de sindicación de contenidos como RSS o similares). Y más en concreto, no sólo queremos poder extraer contenido específico, sino que el objetivo final es que cualquier usuario medio de Internet [1] pueda seleccionar a golpe de ratón la zona a «monitorizar» periódicamente.

Para empezar la discusión, pongamos como ejemplo la siguiente página web: http://www.web-caching.com . Podemos empezar descomponiendo nuestro problema en dos subproblemas: cómo descargar periódicamente el contenido de la web que queremos monitorizar y cómo realizar el scraping (el rascado de la zona exacta a poner en nuestro punto de mira) Sigue leyendo Web Scraping y XPath (I)

Lista de seleccionados del Google SoC’07

Hoy es la fecha clave, el día D. Hoy Google publicará la lista de candidatos seleccionados para participar en el Google Summer of Code 2007. En estos momentos, la lista de discusión está que arde, con muchos comentarios de gente impaciente por conocer los resultados (especialmente los indios, para los que el día 11 de Abril ya ha pasado 🙂 Al parecer hay todavía algunas organizaciones que están decidiendo aún a quién le dan el premio de ser seleccionado (otra cosa es que los seleccionados concluyan con éxito sus trabajos). Dos de mis alumnos participan en este concurso… esperamos impacientes. En caso de ganar, intentaré mantener este blog actualizado con todo lo que acontezca al respecto de los proyectos y en caso de no ganar, pues intentaremos que nuestros proyectos salgan igualmente adelante aunque no posteemos tan asiduamente 🙂 ¡Suerte a todos!

Update: aunque se han tomado ya las decisiones, hay algún conflicto por resolver aún debido a que se han asignado distintos proyectos a más de un alumno y Google sólo permite uno por alumno

10 consejos para optimizar las consultas en MySQL

Justin Silverton, en su blog When Penguins Attack nos muestra 10 puntos que podríamos seguir para optimizar el rendimiento de nuestras querys MySQL. En resumidas cuentas:

1. Usar el comando EXPLAIN

2. Usar estructuras de permisos menos complejas

3. Usar el comando benchmark para medir el rendimiento de algunas funciones mysql específicas

4. Optimizar las cláusulas where

5. Ejecutar el comando optimize para defragmentar las tablas

6. Evitar columnas con tipo de datos de longitud variable allá donde se pueda

7. Usar inserciones con retardo (insert delay, o escritura perezosa)

8. Usar sentencias de prioridad (ej: INSERT LOW_PRIORITY )

9. Usar inserts de múltiples filas en lugar de múltiples inserts individuales
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
10. Seguir estudiando a través de vídeos como éste 🙂