enchufado
   RSS
#
Naufrago! 0.4 lands on Earth (Programación) 2012-02-19 03:38:00

Bueno, pues ya estamos aquí de nuevo. Después de muchos meses finalmente podemos demostrar que el pasado anuncio de esta release no se trata de vaporware :) Como siempre, a modo de entradilla orientativa, comentar que Naufrago! es un lector offline simple de RSS (incluyendo imágenes) escrito en PyGTK.

Mapa de ruta

Para los rezagados, aquí tenéis el roadmap de esta release (0.4) y como no podía ser de otro modo, ahí van los addendums (aquello que se añadió sobre la marcha y que se suma a lo previsto en el roadmap):

  1. Fix: Había algunos casos en los que se mostraba el exceprt/versión reducida del feed, cuando en realidad había una versión más extendida (incluso en ocasiones, completa). ¡Gracias prash!
  2. Fix: Se añade un modo alternativo de obtener favicons.
  3. Mejora: cuando tenemos activada la opción de iconización en la tray, el botón de ventana X minimiza en lugar de cerrar la aplicación. El cerrado se hace única y exclusivamente desde la misma tray.
  4. Novedad: Se añade la opción de usar proxy. ¡Gracias Niels!

Decisiones de desarrollo

En el modo claro (propuesto por otro usuario y a semejanza de Liferea, thanks horia!), para hacer honor a su nombre he optado por no mostrar las carpetas especiales de no leídos e importantes. Y es que esa es una de las gracias del modo claro: ir bastante al grano y no tener muchos elementos gráficos para distraer. He de decir que al principio no me acabó de gustar esta idea, pero fue probarlo y volverse mi modo de visualización preferido. ¿Para qué perder tiempo entre tanta carpeta de categorías y tantos feeds sin entradas nuevas?

El modo offline profundo es el que más tiempo me ha llevado tanto probando alternativas como tomando decisiones. Este punto se divide en 2 partes:

  • El url fetcher. En este punto, consideré a wget.
    • PROS. Es un fantástico descargador de recursos web con muchas features (descarga de webs con los recursos necesarios para verla offline, traducción de links para visualización en local...).
    • CONTRAS. No pude integrarlo con Naufrago! al nivel que precisaba porque no hubo manera que los artículos compartieran caché gestionándola por separado para cada entry. Además, suponía otra dependencia más (externa) de la aplicación y encima no hay bindings para Python, así que su control era malo y cutre (a través de system o similares).
  • Un parser de html. Aquí consideré usar BeautifulSoup. Aunque suene tonto (total, si el html son sólo unos cuantos tags...), en la práctica no es tan sencillo. Hay montones de gente que se ha dado, se da y se dará de tostones con esto por no querer usar uno (sólo cabe echar un ojo a posts como éste de StackOvewflow para darse cuenta).
    • PROS. Parece una buena librería, seguro que es rápida y hace más matches que las regexp.
    • CONTRAS. No se adapta del todo a lo que necesita Naufrago! A parte de parsear html para bajar/traducir recursos para su visualización offline, necesita hacer lo mismo con dependencias non-html (p.ej. los css). Además, y aunque esto sólo sea a nivel de detalle, supondría otra dependencia para la aplicación que ralentizaría algo más el inicio de la misma.

La decisión final pasó por hacer tanto mi propio url fetcher como parser de html. Respecto a este último, a pesar de que sólo Chuck Norris pueda parsear html con regexps, yo lo he intentado (¡Chuck, perdóname!). Tanto uno como otro distan _mucho_ de ser perfectos, sobretodo el parser (intenta obtener los recursos que necesita para el visualizado offline, se toma su tiempo, consume recursos...), así que si alguien tiene una idea mejor ya tarda en comentarlo/implementarlo (¡show me the code!).

Ahí van las capturas:

Pantalla principal


Pantalla principal en 'modo claro'


Diálogo de preferencias


Acerca de Naufrago!


Y ahí los ficheros:

  • Tarball de Náufrago! 0.4 [local - sourceforge] (sha1sum: 468f9c4c62145ab6780a7665f1a945f9359947d9)
  • Paquete deb de Náufrago! 0.4 [local - sourceforge] (sha1sum: 57ce025989b45c1f18cca1535d7fcf701d724406)

Agradecimientos

No quisiera terminar sin agradecer a todo aquel que me ha prestado su colaboración en distintos aspectos: contribuciones de código (Niels), ideas (Horia), traductores (Ludovic, Michal, kir), reportadores de bugs... y a los que me dejo, tendréis que perdonar a mi mala memoria.


Comentarios (6)


Volver al indice

login, admin, form, register