Archive

Archive for August, 2007

Universidad y Software libre

August 31st, 2007

A través de la lista de correo de iris-libre he sabido que han publicado un video con la mesa redonda sobre software libre y universidad celebrada con motivo de e-Verano 2007. Los componentes de la mesa son:

Enhorabuena por el trabajo que se está haciendo desde SOLFA. Me fastida mucho no tener tiempo para seguir colaborando con ellos.

Categories: Conocimiento libre Tags:

Concursos públicos

August 29th, 2007

Desde la polémica aparición del sitio web del Congreso de los Diputados, y a raíz de una entrada de Javier Cañada en su blog donde daba su opinión sobre por qué este tipo de proyectos de la administración pública fracasaban estrepitosamente, tenía pendiente una propuesta.

En teoría, cuando estos proyectos se hacen públicos, la administración correspondiente publica el pliego con sus clausulas administrativas y técnicas. En dicho documento se establece una ponderación sobre distintos aspectos (solución técnica, económica, referencias en proyectos similares, etc.). Tras la presentación de ofertas por parte de las empresas, una mesa de adjudicación, estudia las ofertas y resuelve el concurso adjudicando el concurso a una oferta (pueden ser varias empresas, UTE).

Si se constituye una mesa de adjudicación para estudiar y evaluar las ofertas, ¿Por qué no se constituye una mesa para estudiar y evaluar el trabajo realizado por la empresa adjudicataria?

El objetivo de esta “segunda mesa” sería, en primer lugar, evaluar el cumplimiento de la oferta (plazos, documentación, recursos, tareas, etc.) y en segundo lugar, obtener un informe de calidad que pudiera servir de referencia para futuras contrataciones de características similares. Este trabajo podría (y debería) ser compartido entre administraciones públicas.

No debemos olvidar que la administración pública trabaja para el ciudadano, y cuando proyectos de estas características fracasan de la forma en la que lo hacen, la administración pública no está haciendo correctamente su trabajo.

Categories: Opiniones y reflexiones Tags:

¿Será cierto lo que ven mis ojos?

August 29th, 2007

Esta mañana me enteraba a través de un correo electrónico que el sitio web del Ministerio de Vivienda había sufrido un pequeño percance.

Categories: Misceláneo Tags:

Integración continua

August 27th, 2007

El objetivo de esta entrada es presentar lo que entiendo por integración continua y cómo enjaca esta nueva pieza dentro del ecosistema que constituye un entorno de desarrollo y las metodologías que se aplican. Según la R.A.E.:

ecosistema: Comunidad de los seres vivos cuyos procesos vitales se relacionan entre sí y se desarrollan en función de los factores físicos de un mismo ambiente.

En nuestro caso los seres vivos son los distintos miembros del equipo con su correspondiente rol, los procesos vitales podrían ser las tareas que deben realizar para “sobrevivir” y que se desarrollan a partir de unas pautas, normas y procedimientos que las metodologías arbitran.

La integración continua es una práctica en el desarrollo de software que consiste en poner en común todas las tareas que se han realizado en un intervalo de tiempo y, mediante la automatización de ciertos procesos, comprobar cuáles han sido los efectos de dichas tareas“.

Que este post sirva como presentación para un nuevo tema dentro de este blog.

Categories: Ingeniería del software Tags:

Ingredientes: Eclipse, Jetty y un proyecto J2EE descrito con Maven

August 19th, 2007

Esta semana ha surgido en Opina la necesidad de definir un entorno de desarrollo en el que en lugar de Apache Tomcat se necesitaba trabajar con Jetty 6.x. Nunca había trabajo con Jetty, sin embargo, mis compañeros de trabajo todos lo usaban y las primeras impresiones son muy buenas.

El objetivo del presente post es, teniendo nuestro proyecto J2EE descrito con Maven y configurado en Eclipse, trabajar con Jetty. En este caso el proyecto será Opina e intentaremos usar Jetty en lugar de Apache Tomcat durante el desarrollo.

En primer lugar tendremos que configurar el plugin de maven correspondiente. Para ello, en la sección correspondiente a build (dentro de pom.xml):

<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.5</version>
<configuration>
<scanIntervalSeconds>5</scanIntervalSeconds>
<scanTargets>
<scanTarget>
${basedir}/src/main/webapp/WEB-INF
</scanTarget>
</scanTargets>
<classesDirectory>
${basedir}/src/main/webapp/WEB-INF
</classesDirectory>
<contextPath>${project.artifactId}</contextPath>
<webAppSourceDirectory>
${basedir}/src/main/webapp
</webAppSourceDirectory>
<webXml>
${basedir}/src/main/webapp/WEB-INF/web.xml
</webXml>
</configuration>
</plugin>

Esta configuración está condicionada a que en Opina usarmos ${basedir}/src/main/webapp para montar la aplicación mientras estamos desarrollando. Prueba de ello es que normalmente usamos: mvn compile war:inplace

Una vez que hemos actualizado el archivo pom.xml, vamos a configurar Eclipse para que podamos invocar a Maven con los argumentos que necesitamos:

  1. Run > External Tools > Open External Tools Dialog
  2. Sobre Program, pulsamos el botón derecho y  New
  3. Definimos un nombre para esta tarea (junto a Name)
  4. Estando sobre la pestaña Main:
    1. Location: Indicamos donde se encuentra el ejecutable de Maven
    2. Working directory: Navegamos por Working Directory y seleccionamos nuestro proyecto
    3. Arguments: Indicamos los argumentos que nos interesen, por ejemplo: compile war:inplace jetty:run. Con estos argumentos conseguimos que nuestro proyecto pase por todas las fases del ciclo de vida definido en Maven hasta llegar a la fase de compilación. Esto nos garantizará que se han generado todos nuestros recursos (web.xml, struts-config.xml, etc), se ha aplicado nuestro perfil correspondiente (profiles.xml), se ha compilado nuestras clases, se han obtenido nuestras dependencias y que nuestra aplicación se ha construido en ${basedir}/src/main/webapp.
  5. Aplicar
  6. Cerrar

Si todo ha ido bien, estaremos dispuestos a ejecutar la tarea. Para ello:

Captura de pantalla de Eclipse

He preparado un screencast de la consola de Eclipse simplemente para que vea como se ejecutan las distintas tareas que se le indican a Maven y como posteriormente se lanza Jetty con nuestra aplicación.

Y ahora lo más importante para poder desarrollar con estos ingredientes, la depuración. ¿Qué tenemos que hacer para poder depurar? El siguiente objetivo es claro. Ahora necesitamos seguir usando la perspectiva de depuración de Eclipse de igual forma que la usamos en otros proyectos o la usamos cuando usamos Apache Tomcat.

Tenemos que modificar la tarea que hemos creado. Para ello, editamos la tarea, y sobre la pestaña Environment, añadimos la variable MAVEN_OPTS con el valor: -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y

Una vez modificada la tarea:

  1. Run > Open Debug Dialog
  2. Sobre Remote Java Application, pulsamos con el botón derecho y New
  3. Definimos un nombre (junto a Name)
  4. Y sobre la pestaña Connetion:
    1. Project: Selecionamos nuestro proyecto
    2. Connection Properties:
      1. Host: localhost
      2. Port: 4000 (el que hemos indicando en MAVEN_OPTS).
  5. Aplicar
  6. Cerrar (aun no debemos depurar nada)

Teniendo la tarea definida y la configuración para la depuración, estamos en disposición de comprobar si todo ha ido bien. Para ello, he preparado un segundo screencast.

Algunas referencias donde viene todo esto explicado:

  1. Debugging with the Maven Jetty Plugin inside Eclipse
  2. Maven Jetty Plugin

Un problema con el que me he encontrado, y parece que más gente, es que cuando se desea terminar la tarea que acabados de ejecutar el proceso no se detiene y Jetty continua en ejecución. Si las tareas que hemos definido las ejecutamos desde la línea de comandos todo funciona perfectamente. Al pulsar CTRL+C, la tarea de Maven termina y Jetty de apaga correctamente. Parece que hay un parche que nos ayuda a terminar la tarea que aun no he probado.

Es probable que la integración mejore considerablemente cuando hagan compatible con la versión 6 de Jetty el plugin de Eclipse Jetty Launcher.

Existen otras formas de integración con los mismos ingredientes. Sin embargo esta es la que interesante me ha parecido, entre otras cosas porque no nos hemos tenido que preocupar ni de descargar Jetty.

Categories: Herramientas, Programación Tags:

Switch to our mobile site