Hace algunas semanas escribía una breve entrada sobre librerías para trabajar con hojas de cálculo Excel desde Java. En esta ocasión he tenido la necesidad de exportar un conjunto de datos en formato CSV. Generar un archivo con datos separados por comas o punto y coma es sencillo, y quizás, no compense añadir una nueva dependencia para algo tan simple. Antes de ponerme a codificar, decidí ojear un poco:
- Java CSV
- SuperCSV
Opté por la segunda porque me ha permitido trabajar directamente con JavaBeans y es algo más completa que la primera. Otra librería que conocí hace algún tiempo es Smooks. Aunque hubiera sido como cortar el césped con una excavadora, estuve tentado a usarla. Tiene muy buena pinta y las referencias y ejemplos que he visto, son muy interesantes.
El otro día comencé a configurar el entorno de desarrollo local. Se me olvidó comentar que para desarrollar plugins de Trac la mejor opción es ejecutarlo en modo standalone. El porqué viene justificado por uno de los pros de este modo:
Automatic reloading: For development, Tracd can be used in auto_reload mode, which will automatically restart the server whenever you make a change to the code (in Trac itself or in a plugin).
Toda la configuración está perfectamente explicada en el sitio web de Trac. En mi caso me he creado un pequeño script (start_trac.sh):
tracd -p 8000 --basic-auth=AlfrescoTracIntegration,/home/recena/Documentos/trac-users.conf,/home/recena/Documentos/trac-projects/AlfrescoTracIntegration /home/recena/Documentos/trac-projects/AlfrescoTracIntegration
Si por el contrario lo que queremos es ejecutarlo desde Eclipse, también podemos encontrar las correspondientes instrucciones. La intención era haber publicado esta pequeña entrada el pasado jueves, 13 de agosto. Pero he estado sin acceso a Internet desde entonces. Algunas notas que a mi me están viniendo muy bien para comenzar a desarrollar un plugin de Trac sin tener experiencia en Python:
- Configurar un buen entorno de desarrollo local que nos permita trabajar cómodamente y como no, depurar.
- Conocer las características del lenguaje de programación. Me he leído “Python para todos“, y sólo agradecer a Raúl González Duque el excelente trabajo realizado.
- Guías:
- Style Guide for Python Code
- Docstring Conventions
- Estudiar otros plugins
- Instalar TracDeveloper, un plugin de Trac muy útil para desarrollar.
Desde que era muy pequeño mis padres me inculcaron que las vacaciones (especialmente los veranos) no son para “no hacer nada”. Son una época en la que uno dispone de mayor tiempo y por tanto mayor posibilidad de hacer cosas. Recuerdo aquellos veranos en los que la TV estaba prácticamente prohibida durante el día, las mañanas eran para hacer cuadernillos Rubio y las tardes para hacer deporte, pescar o campamentos, pero lo más deseado por mi, pasar tiempo con mi Amstrad 1512 y posteriormente con mi 80486 con el que conocí la demoscene.
Durante estos días me gustaría acercarme al desarrollo de plugins en Trac. Lo primero que he hecho es leer un poco y conocer qué necesito para configurar un entorno de desarrollo local que me permita trabajar cómodamente. A continuación una descripción del entorno:
- Mandriva 2009
- Aptana Studio 1.5.1 (con PyDev)
- Python 2.6 (paquetes)
- MySQL Server 5.1
- Genshi 0.5.1 (paquetes)
- Setuptools 0.6c9 (paquetes)
- Subversion 1.6.4 (paquetes)
- SWIG 1.3.38 (paquetes)
- Subversion SWIG Python bindings (paquetes, subversion-devel)
- MySQLDB (Ojo! no ZMySQLDA)
- Descargamos los fuentes correspondientes a la versión 1.2.2
- Descomprimimos el tar.gz
- Asegurarse de que están disponibles de los fuentes de MySQL porque MySQLDB los necesita para su instalación
- Seguimos las instrucciones que vienen en archivo README
- Trac 0.11.5
Os podéis ahorrar muchos de estos pasos porque en varias distribuciones de Linux ya existe un paquete con Trac (con soporte para MySQL y Subversion). Por ejemplo, en Mandriva existe ese paquete. En nuestro ecosistema software usamos Trac con SQLite y todo va muy bien, sin embargo, he querido aprovechar esta ocasión para conocer de primera mano el soporte de MySQL que tiene Trac. Si los resultados son positivos, probablemente, nos planteemos la migración a medio plazo.
Una de las nuevas funcionalidades de Opina que está planificada para la versión 1.4.0 es la exportación de los resultados de una encuesta a una hoja de cálculo Excel. Inicialmente había pensado en trabajar con OpenDocument, pero necesitaba compatibilidad con Microsoft Excel 97 y sus versiones posteriores. La verdad es que la hoja de cálculo que se necesita es un muy simple, nada de imágenes, nada de fórmulas, simplemente celdas con algo de estilos (colores, tipos de letra y tamaños) y datos.
Las opciones que encontré para trabajar con documentos Excel desde Java fueron:
- JExcelApi
- POI-HSSF / POI-XSSF
En estos momentos estoy usando la primera en Opina, y las impresiones son muy buenas:
- Aunque a priori la documentación parece escasa, es suficiente para comenzar a trabajar y montar un ejemplo.
- Tiene carencias en cuanto al manejo de fórmulas y gráficos, pero si no necesitas algo complejo, es una opción válida.
- No he trabajado con documentos complejos y grandes, pero en breve tendré referencias en este sentido. Tengo encuestas con más de 40 preguntas y más de 1500 usuarios encuestados. Además la estamos usando en un proyecto donde se gestiona un volumen de datos importante y puede ser otra buena referencia. Cuando tenga resultados, los compartiré.
- Los conceptos a manejar son pocos: workbook, worksheet, label, writableFont, writableCellFormat y algunos más.
- La última versión (2.6.10) es el 28 de mayo de 2009. La primera versión de la rama 2.x es del 10 de octubre de 2003. Durante este periodo más de 30 versiones publicadas. Y si vemos la lista de correo, podemos comprobar su actividad.
Que conste que las necesidades que Opina tiene son muy básicas, es probable que otro tipo de proyectos tengan más requisitos y tengan que descartar esta opción. He buscando el artefacto por los repositorios de Maven que conozco, pero no lo he encontrado. Por lo tanto, he definido sus coordenadas para instalarlo en mi repositorio local (y en nuestro ecosistema) y he añadido el JAR a directorio libs correspondiente.
De la segunda opción no puedo decir nada de primera mano, sólo tengo comentarios e impresiones. Es un proyecto importante en ASF y son muchos los proyectos que en él se apoyan, por lo tanto, me da confianza. De hecho lo usamos de forma indirecta porque Eclipse Birt es nuestra opción (actual) para la generación de reportes.
En los últimos meses he tenido que codificar varios temas en Drupal para unos proyectos que hemos desarrollado. Para aquellos que estáis comenzando os recomiendo encarecideamente que no comencéis un tema desde cero. En Drupal, existe el concepto de módulo y submódulo, esto se extendiende también para los temas.
Haz un sub-tema partiendo de Zen Extend And Design. Es un tema considerado base sobre el extender el tuyo. ¿Qué te proporciona?
- Plantillas de las vistas principales (node, page, comment, etc)
- Las plantillas tienen una semántica muy bien definida y usan correctamente los estándares web.
- Un punto de partida para aprender a desarrollar temas en Drupal
- Buena documentación
Una lectura que no puede faltal para todo aquel que vaya a desarrollar un tema es lo que se conoce como la anatomía de un tema. A mi me ha venido muy bien organizar las hojas de estilo según dicha anatomía:

En unos días liberaré el último en el que estoy trabajando.
Recent Comments