barcampba 2009: Mashup 3.0
[RELEASE] jiol 3.16
A 4 años de su creación (y a 7 de la versión original en bash) tengo el agrado de comunicar el release de una nueva versión de jiol / iolsucker.
jiol es una librería que permite acceder programática a ITBA onLine. También provee una aplicación llamada iolsucker, que descarga los nuevos materiales didácticos sin que el usuario tenga que estar navegando por interminables carpetas y publica en un feed local los archivos que descarga.
Esta es una release de bugfix. Contiene dos soluciones:
- mejor manejo de error cuando el servidor falla: Cuando el servidor retorna error al procesar alguna página, iolsucker dejaba de procesar y reportaba el error. Ahora hay un reporte más claro de errores, y continua descargando cosas, mientras no ocurran demasiados errores.
- soporte de materias con caracteres prohibidos: Iolsucker verifica que todos los nombres que envia el servidor de IOL no sean peligrosos para la computadora local (por ejemplo si una materia tuviera caracteres como ../../ estariamos expuestos a un ataque remoto). Hay materias que tienen / en su nombre. Por ejemplo Probabilidad y Estadística (K/S). Iolsucker informaba este problema y se negaba a descargarla. Ahora remplaza los caracteres peligrosos por algunos más amigables. Reportado por Manuel Aráoz
- versiones: se actualiza springframework de la versión 2.5.4 a 2.5.6
Como siempre, la ultima versión se puede conseguir en http://www.leak.com.ar/~juan/code/jiol/. Se puede correr directamente desde el browser utilizando WebStart o descargar los archivos (en esta versión no proveemos un instalador para windows). El código fuente se encuentra en https://svn.leak.com.ar/jiol/trunk/ (el certificado es válido...es el que aparece en https://code.zauber.com.ar/repos/sandbox/, pero no matchea el nombre).
jiol es un proyecto que está compuesto de 3 subproyectos:
- jiol-api: interfaces que representan el modelo del negocio. Navegar
- jiol-api-impl: contiene implementaciones del api. Tanto la implementación real (contra el servidor IOL), como implementaciones mock para simular el sistema remoto.
- jiolsucker: programa que recorre las materias de un usuario y sincroniza su material didactico contra un directorio local. solo descarga lo nuevo.
final IolDAO iolDAO = new HTTPIolDao(new SystemPropertyLoginInfo(),
new HTTPClient(new NamingMapper(new URL("http://silvestre.itba.edu.ar/itbaV/"))),
new HTTPMaterialFactory(10, new DefaultRequestFactory(
new RelativeLocationValidator(),
new DefaultRequestFactory.DefaultMaterialFileFactory())));
for(final Course course : iolDAO.getUserCourses()) {
if(course.getLevel() == Course.LEVEL_GRADO) {
System.out.printf("%s %s\n", course.getCode(), e.getName());
for(final Material material : course.getFiles()) {
System.out.printf(" %s\n", material.getName());
}
}
}
para obtener:
72.20 REDES DE INFORMACION /72.20 Redes de Información - Vallés v2.pdf /redes 09 Notas de Final.pdf /RED Notas 09.pdf /Redes - Notas TPEs.pdf /Redes TPE - orden de exposiciones.pdf ...Si queres agregar nuevas funcionalidades o construir algo usando la librería y no sabes por donde empezar escribime. Un power user puede agregar funcionalidad sin escribir codigo fuente, editando xmls (por ejemplo si queremos que jiolsucker corra desde un cron, sin interfaz gráfica.)
información cruda....ahora!
Cuando comenzamos con flof.com.ar uno de varios de mis objetivos sobre el proyecto era llevar a cabo el concepto de Open Data. Es por eso que uno de los primeros pasos que dimos fue el de exponer en xml toda la información por XML. Pero exponer documentos no es suficiente. Los documentos contienen información. Para que realmente esto sea útil es necesario poder relacionar toda esta información.
Lo hechos deben ser relacionables, sin importar donde esté la información. Una persona podría dar de alta un restaurant en flof ubicandolo en el mundo. Otra persona podría dejar un review en revyu.com. En su sitio web el restaurant podría tener publicada su carta de vinos y el Instituto Nacional de Vitivinicultura seguramente tiene la información sobre cepas, año y cualidades de esos vinos. Desde un telefono con GPS podría aprovechar toda esa información que está dispersa, solamente si toda esta información es relacionable
Es aquí donde el concepto de Linked Data entra en acción. Un término creado en 1998, pero que recién en los últimos tomó gravedad: un método para exponer, compartir, y conectar información utilizando URIs que se pueden desferenciar sobre la web. Este método permite que diferentes sitios (de forma distribuida) publiquen hechos/información sobre diferentes entidades. De esta forma se van relacionando los sitios:

El gran desafío que tenemos ahora es lograr tirar los silos de información, y que en primer instancia se publique la información que hoy está offline, y luego que la información sea relacionable. Las personas y organizaciones tienden a abrazar y sentarse sobre sus base de datos pensando que ellos van a hacer los mejores sitios para mostrar la información. Pero la realidad es que se olvidan que en general la innovación ocurre en otros lados. Alguien seguramente va a poder hacer algo más interesante que yo con mi información mezclando otras fuentes.
Es por eso que flof desde mayo del 2008 comenzó a exponer su información también en formato RDF. Otros sistemas pueden hacer referencia y agregar hechos sobre los lugares.
Pero para que esto sea útil tenemos que lograr que haya más información online y que sea relacionable. El primer gran proveedor de esta información podrian ser los Estados. Los estados, como cualquier otra organización, en su operatoria genera información, pero a diferencia de organizaciones privadas, a todos los ciudadanos nos debería interesar controlar al estado. Por ejemplo:
- ¿cuando fue la ultima vez que sanidad revisó este restaurant? quien firmó la habilitación?
- ¿en que se gastó el presupuesto de esta jurisdicción?
- ¿que información arrojó el ultimo censo sobre la jurisdicción? y los votos?
- ¿que personas juridicas se mencionaron en el boletin oficial de hoy?
En Estados Unidos existe el sitio http://www.data.gov/. Este sitio fue lanzado por la administración de Obama, y expone información de varias agencias federales. Esto es una pata necesaria para fomentar la transparencia gubernamental. Tim Bernes-Lee en febrero dio una TED talk donde de forma muy clara expone todo esto.
Si estás armando un nuevo sitio web no te olvides de hacerlo linked data. No es dificil!. Si formas parte del estado publicá la información (ya se en formato crudo...excels, csv, xmls). Seguramente otra organización podrá relacionar la información.
Scrapper Movistar 2.0
Hace un poco más de un año escribí un post sobre un scrapper que obtenía en la linea de comandos el consumo de una linea movistar. El sitio cambió, así que actualizé el scrapper.
sigue estando disponible en el mismo lugar. Ejemplo de uso:
$ ./movistar.py 11 5555 5555 < archivoconlapasswordenunasolalinea 2008-12-29 00:06:49.500991 35:00 35:00 0:00 $0.00 $0.00 $0.00 $2.83Donde las columnas son:
- hora en la que se corrió el scraper
- Total Min. Consumidos
- Min. Libres Consumidos
- Minutos Excedentes
- Importe Excedente $
- Adicional Móvil-Móvil $
- Total $ (Ia suma de los dos campos anteriores)
- $ consumidos de la red terreste
algo nuevo...todo va por ssl
Opps. We did it again!
Si estás corriendo una versión menor o igual a tzdata-2008e vas a ver que tu sistema tiene la hora adelantada.
juan@dinah:~$ date Sun Oct 5 02:13:20 ARST 2008El problema está solucionado en tzdata-2008f:
# For dates after mid-2008, the following rules are my guesses and # are quite possibly wrong, but are more likely than no DST at all. # From Alexander Krivenyshev (2008-09-05): # As per message from Carlos Alberto Fonseca Arauz (Nicaragua), # Argentina will start DST on Sunday October 19, 2008. # # # http://www.worldtimezone.com/dst_news/dst_news_argentina03.html # # OR # # http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish) # Rule Arg 2007 only - Dec 30 0:00 1:00 S Rule Arg 2008 max - Mar Sun>=15 0:00 0 - Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
y ubuntu ya tiene un issue abierto: https://bugs.launchpad.net/ubuntu/+source/tzdata/+bug/278419
Por lo que interpreto de la ley 26.350 no decia nada sobre el horario de verano en el 2008. No se de donde sale que la hora se va a adelantar el 19 de octubre, pero infoleg no encuentra ninguna norma que relacion a la ley 26.350 que diga eso.
hasta el telefono (que levanta la hora de la red) tiene la hora adelantada
iPhone and HTTP
I've been optimizing a web site for access using iPhones. Sadly i've discovered that at least the iPhone 2.1 does not support conditional GETs, nor the Cache-Control max-age directive for resources that are not images, css and javascript.
It makes me wonder which is the cause of this lack . The iPhone is a telephone with a great Web Browser, that is used in mobiles environments where usually the bandwidth is tight and caching or conditional GETs can increase the user experience a lot!
be aware of apache tomcat 6.0.18
On the 31th July 2008, apache-tomcat-6.0.18 was released. The releases notes includes the issue:
The resolution of this issue caused a regression: 4551: EL "empty" keyword does not work. This regression makes unusable applications that uses JSPs with EL Expressions like: ${not(empty(list))}. A workaround is to write the expression as ${not (empty (list))}. This regression is already fixed, and will be available at the next version (6.0.19).
Also, another surprising change was issue 45015: Quoting in attributes that was solved on 6.0.17. The resolution of this issues enforces the JSP 2.0 specification and that makes illegal expressions like:
<mytags:tag value="<%= "hi!" %>" />
The correct sentence would be
<mytags:tag value='<%= "hi!" %>' /> <mytags:tag value="<%= \"hi!\" %>" /> <mytags:tag value='<%= \"name\" %>' /> ...
Luckily, it is easy to detect illegal code, with the regex <\w+:[^>]+="[^<"]*<%=[^%]*"|<\w+:[^>]+='[^>']*<%=[^%]*' on all your jsps. Be sure to fix any illegal expresion if you wish to deploy your applications on tomcat >=6.0.17.
Lista OpenStreetMap Argentina
Hace unos posts me preguntaba sobre donde se juntaba la comunidad argentina de OpenStreetMap. Desde hoy hay una lista de correo:
- Subscripción: http://lists.openstreetmap.org/listinfo/talk-ar
- Archivo: http://lists.openstreetmap.org/pipermail/talk-ar/
me acabo de subscribir
fof @ firefox3
iolsucker 3.15
Nuevo release de iolsucker 3.15 (la gente de IOL bloqueó al iolsucker)
iolsucker 3.14
Despues de más de 3 años sin un release, lanzé la version 3.14 (¿pi?) de iolsucker. ¿El motivo? ITBA OnLine cambió el método de login y esto hizo que las versiones viejas dejarar de funcionar.
Se puede descargar la nueva versión desde mi vieja página web: http://www.leak.com.ar/~juan/code/jiol/. Otra novedad que introduce esta nueva versión es la posibilidad de poder correr la aplicación desde la web, sin instalar nada, usando Java WebStart: Probar Aquí.
Para los que saben de programación, les puede interesar que aproveché la versión para actualizar las herramientas que usa jiol:
- Pasé de maven 1 a maven 2 para la construcción del proyecto (en el momento que escribí iolsucker, no existía una versión estable de maven2)
- Actualizé de springframework 1.2.x a la versión 2.5.4
- Los feeds atom de changelog ahora se generan con rome 0.9.x
El código fuente puede obtenerse en https://svn.leak.com.ar/jiol/releases/3.14/, y se pueden obtener los artefactos maven (para usar jiol-api y jiol-api-impl en proyectos java modelados con maven en http://www.leak.com.ar/~juan/code/jiol/m2/.
scraper: estado del subte
El otro día me comí el garron de caminar 15 cuadras para tomar el subte sin saber que estaba cortado. Cuando llegué a casa arme un scraper para consultarlo facilmente: subte.py. Devuelve un arreglo de estados del subte. El estado del subte contiene:
- la linea de subte en cuestión,
- el time_t del servidor de última actualización de los datos del servidor,
- el estado en forma de string,
- el periodo entre subtes en segundos.
Los datos lo puede consumir otro sistema, y tambien se puede llamar desde la linea de comandos, formateado para humanos:
Datos de Mon Apr 28 19:57:22 2008 A: Servicio Normal (pasa cada 4.00 minutos) B: Servicio Normal (pasa cada 4.00 minutos) C: Servicio Normal (pasa cada 4.00 minutos) D: Servicio Normal (pasa cada 4.00 minutos) E: Servicio Normal (pasa cada 6.00 minutos) P: Servicio Normal (pasa cada 8.00 minutos) U: Servicio Normal (pasa cada 11.00 minutos)
Próximamente lo expondré como WS.
Comunidad OpenStreetMap .AR
Después de mucho (mucho mucho) tiempo sin entrar a http://www.openstreetmap.org/ me sorprendí por el progreso que tomó la Capital Federal y La Plata, y me motivó a contribuir de alguna forma.
"OpenStreetMap is a project aimed squarely at creating and providing free geographic data such as street maps to anyone who wants them."
OpenStreetMap es realmente libre (los datos está bajo la Creative Commons Attribution-ShareAlike 2.0 License), tiene buenas herramientas de edición y los mapas se pueden visualizar en su sitio (ej: plaza italia), y tener la trazabilidad del desarrollo. La licencia de OpenStreetMap es incompatible con el proyecto argentino proyecto mapear (del cual escribí hace unos meses) como lo sugiere Potential Datasources.
flof.com.ar licencia sus puntos bajo la Creative Commons Attribution-ShareAlike 2.5 Argentina License lo que hace bastante posible que los datos de flof nutra de cerca de 9000 puntos argentinos a OpenStreetMap (¡es fácil exportar los datos de flof con los feeds kml y xml!). Lo que me pregunto es si hay una lista o alguna comunidad de OpenStreetMap de Argentina donde se pueda discutir que tipos de puntos son interesantes en el mapa.
Si alguien sabe donde hay (si hay) una comunidad argentina de OpenStreetMap, si los puntos de flof (y cuales) serían utiles a OpenStreetMap o se les ocurre alguna otra cosa, por favor envie un comentario/mail/o escriba al formulario de contacto de flof