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
ruido
flof @ firefox
Virtual hosts basados en nombres y multiples certificados SSL
Hace como cuatro varios años me encontré con el problema de que no era posible configurar en apache virtual hosts basados en nombre que tuvieran diferentes certificados SSL. El problema es que en el nombre del dominio que se utiliza para resolver viene encriptado dentro del request ssl y para desencriptarlo primero se deben intercambiar las llaves.
Una alternativa que encontré en ese momento (utilizar las solución de raíz al problema en ese momento, era todo un problema) es usar un certificado wildcard (*.dominio.fqdn). Esta práctica no siempre es posible usarla siempre (no todos los CA están dispuesto a firmar certificados con comodines, y por otro lado puede quererse hostear dominos donde un wildcard no es posible *.dominio1.fqdn y *.dominio2.fqdn).
Hoy en día cacert.org tienen un excelente compendio de como atacar el problema. Un mejor nombre para este problema es el de Server Name Indication (o SNI). El problema se soluciona con unas extensiones a TLS definidas en el RFC 4366 (publicado en Abril del 2006). Estas extensiones parecen que son soportadas por la mayoría de los navegadores grandes (salvo por safari).
OpenSSL agrega soporte para las la extensiones de TLS desde la versión 0.9.8f (que data del 11 de Octubre 2007). (gentoo por ejemplo usa la version 9.8d como estable, kubuntu usa la la 0.9.8c [esperemos que con los parches adecuados :)]). En gentoo desde el ebuild openssl-0.9.8g se soporta SNI (esto es porque hay que habilitar una opción de en el ./configure).
Una vez que OpenSSL soporta SNI, falta que mod_ssl del apache lo soporte. Existe un issue en el tracker de apache con este problema. El issue incluye un parche que fue comiteado a trunk/ hace 7 semanas (el 21 de diciembre del 2007). Hoy mismo (14 de febrero 2008) ocurrieron unos commits relacionados con SNI.
Parece que se quiere backportear la funcionalidad hacia la proxima versión (2.2.9). En el archivo STATUS del branch aparece:
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
....
* mod_ssl: Add server name indication (RFC 4366) support (PR 34607).
Trunk version of patches:
http://svn.apache.org/viewvc?view=rev&revision=606190
http://svn.apache.org/viewvc?view=rev&revision=607420
http://svn.apache.org/viewvc?view=rev&revision=607425
http://svn.apache.org/viewvc?view=rev&revision=611216
Backport version for 2.2.x of updated patch:
http://people.apache.org/~fuankg/diffs/httpd-2.2.x-sni.diff
+1: fuankg
+0: like ssl upgrade of 2.2, perhaps this is a good reason to bring
httpd-2.4 to completion? vhost changes could be disruptive to
third party module authors.
-1: rpluem: jorton found some problems with the trunk version and they
should be fixed / discussed in trunk before we backport.
---------------8<---------------8<------------------------
En gentoo, el ebuild apache-2.2.6-r6 viene con soporte de SNI (en un USE FLAG sni), y parece que funciona. Tiempos interesantes para SNI!
Amigo de un amigo...
Ayer google liberó su Social Graph API que permite navegar por información de contactos y servicios codificada en documentos FOAF y con XFN (un microformato) sin necesidad de crawlear. Parece muy interesante, y esperemos que sea un paso más hacia mayor participación de la web semantica, y las búsquedas SPARQL (esta api no puede venir en mejor momento, despues de toda la publicidad que recibio Data Portability hace dos semanas).
Por lo pronto actualizé los links del blog con atributos XFN (ej: http://www.plaxo.com/opensocialgraph.py?url=http://juan.zauber.com.ar&verbose=1) y desde ahora flof.com.ar exporta la red de contactos en documentos FOAF.
PD: codear por usar planet, tiene su propio documento FOAF: http://codear.com.ar/foafroll.xml que puede ser visualizado de forma más linda en: http://foaf-visualizer.org/?uri=http://codear.com.ar/foafroll.xml
[RELEASE] garfio 0.5
En Zauber estamos muy contentos de poder anunciar el primer release público de garfio. La versión garfio-0.5 distribuida bajo la licencia Apache Software License, Version 2.0.
Se trata de una pequeña aplicación que permite la integración de sistemas de control de versiones (SCM) con herramientas de gestión de tareas (por ejemplo issue trackers), principalmente en el contexto de proyectos de desarrollo de software.
Es posible descargar garfio y obtener más información en:
Motiviación
Los sistemas de control de versiones (SCM) y las herramientas de gestión de tarea son partes fundamentales en el trabajo de una empresa dedicada al desarrollo de software.
Muchas veces nos encontrábamos escribiendo un mensaje de commit para un SCM; para luego entrar al issue tracker; y copiar éste mismo mensaje en el issue o dejar una referencia al número de revisión del SCM. El objetivo de garfio es evitarle al usuario esta duplicación de acciones, permitiéndole, mediante una sintaxis sencilla, realizarlas desde el mensaje de commit del SCM (o alguna otra fuente).
Lista de funcionalidades
Esta versión de garfio permite:
- Desde la comodidad de un mensaje de commit SVN se puede especificar un número de issue para poder:
- Agregar notas al issue
- Marcar el issue como resuelto
- Sumar horas de esfuerzo incurrido en dicha tarea
- Especificar la versión del producto de software en que se resuelve un issue
- No permitir que un commit concluya con exito en caso de que haya algún error (Se especifique un issue inexistente , el usuario no tenga permiso para modificar el issue en cuestión, existan errores de sintaxis)
Garfio soporta trabajar con Mantis, tiene soporte parcial para Jira; y está pensando para que sea fácil soportar otros issue trackers.
Página del proyecto: http://code.zauber.com.ar/garfio/Calles de Argentina en google map?
Maven site & TWiki
Some time ago we wrote a TWiki parser for Maven: the doxia-module-twiki.
One of the use cases for the plugin was to be able to generate maven site sites with TWiki pages. These are the instructions to be able to do this:
First you must have a maven-site structure like this:
project-site $ tree
.
|-- pom.xml
`-- src
`-- site
`-- twiki
`-- main.twiki
Where the pom.xml looks like:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<name>Project</name>
<artifactId>project-site</artifactId>
<groupId>ar.com....</groupId>
<packaging>pom</packaging>
<description>
Documentation for project
</description>
<pluginRepositories>
<pluginRepository>
<id>apache.org</id>
<name>Maven Plugin Snapshots</name>
<url>http://people.apache.org/repo/m2-snapshot-repository</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>2.0-beta-6-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-module-twiki</artifactId>
<version>1.0-alpha-10-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
And main.twiki contains TWiki document like:
---+ Test This is a *test*: * item1 * item2
If you render the site with the command mvn site you will get an html version of the twiki page: