Cacharreando con asuntos varios

Como dice el título, en los dos últimos días estoy cacharreando con asuntos varios. Y aprendiendo un montón sobre la marcha, así que considero las horas dedicadas como una inversión y no como un gasto.

El primer asunto es el planeta de blogs que estamos montando en Mondragon Uniberstitatea, disponible en este enlace (además se puede sindicar en formato RSS 1.0, RSS 2.0 y Atom). Estamos utilizando la herramienta Planet, principalmente por un par de razones:

  • Es software libre (y como plus viene empaqueda directamente en Debian, lo cual es una ventaja ya que el servidor donde corre usa Debian).
  • Es una herramienta muy usada para montar planetas (como se puede ver en la lista de planetas que hay en la propia web de la herramienta).

El caso es que el comportamiento por defecto de la herramienta no le gustaba a David. Y como tengo en bastante consideración su criterio en estas cosas, me he dedicado a echar una ojeada al asunto para ver que esfuerzo supondría adaptarlo al comportamiento que el sugería.

El modo de funcionamiento por defecto de Planet es que genera los contenidos de forma cronológica. Lo habitual en los blogs: lo más reciente primero, lo más antiguo después. Eso que tiene sentido en un único blog se puede volver un inconveniente en el caso de un planeta si los ritmos de publicación de los diferentes blogs ‘sindicados’  son muy diferentes. Que es el caso que nos ocupa. Hay un blog que publica una, dos y a veces hasta 3 entradas diarías (todos los días) y otros que publican una entrada cada 3-4 días, incluso más. Resultado: el planeta está ‘inundado’ de entradas de un único blog, con entradas salpicadas aquí y allá de los otros blogs.

Así que la propuesta de David es que aparezcan las últimas entradas de cada blog, independientemente de cuando hayan sido publicadas. Es decir, el criterio cronológico desaparece (hasta cierto punto, puesto que se mantiene para escoger las entradas de cada blog individual).

Cuando David me hizo la propuesta ya le adelante que no sería posible conseguir eso sin modificar el código. No es que haya mayores dificultades para ello (es software libre y el código fuente está accesible y la licencia permite su modificación y redistribución), pero últimamente me he vuelto un poco reticente a hacer estas cosas si no hay razones de peso para ellas. La razón es simple: antes o después habrá que actualizar ese software a una versión más reciente (para aplicar parches de seguridad, etc.) y entonces tengo un problema: debo volver a integrar todos los cambios realizados en la versión actual sobre la nueva versión.

Si es algo trivial (o si tengo un cierto ‘dominio’ de las tripas de la herramienta que me permita realizar esa integración con rapidez y facilidad) no me suele importar. Suelo usar herramientas como diff, patch (y en caso de modificaciones más extensas, sistemas de control de versiones como git) que me ayudan bastante en la tarea. En caso contrario suelo sopesar bastante si compensa el esfuerzo con la mejora obtenida.

En este caso, además de no conocer las tripas, la herramienta está programada en un lenguaje en el que no he desarrollado nunca: Python. No es que sea muy dificil (tiene un cierto aire a otros lenguajes interpretados que uso a menudo), pero es un esfuerzo extra a considerar. Así que le dije que iba a echar un vistazo y si era cosa de menos de 30 minutos, lo haciamos. Si costaba más, salvo que fuese realmente necesario, lo dejaríamos estar. Bueno, no fueron 30 minutos, sino más bien 3 horas y media, pero creo que ha merecido la pena. No por la modificación (que al final han sido menos de 30 líneas de código nuevas, y unas 20 borradas), sino por todo lo que he aprendido.

De Python, de la propia aplicación Planet y de los módulos de Python disponibles para hacer montones de cosas interesantes, como HTMLParser y TextWrap. Estos dos últimos los he usado (inspirándome en el filtro excerpt.py del software de planetas Venus, un derivado de Planet), para crear extractos de las entradas de los blogs. En lugar de publicar la entrada entera (que puede ser bastante larga en algunos casos), se publica un extracto de los primeros 400 caracteres (el valor es configurable), cortando siempre la entrada en un espacio entre palabras y poniendo un enlace a continuación al artículo completo en su ubicación original. De esta forma, aunque el planeta sindique bastantes blogs, el tamaño de la página se mantiene en un tamaño razonable.

He generado un parche en formato diff unificado para facilitar la integración en los cambios en el futuro, así que si alguien está interesado en usarlos en su planeta sólo tiene que perdírmelos 🙂

Saludos. Iñaki.

One thought on “Cacharreando con asuntos varios

Leave a Reply

Your email address will not be published. Required fields are marked *