Buscar
Social
Ofertas laborales ES
jueves
sep042008

JBoss Transactional File I/O: Transacciones para  ficheros

JBoss ha publicado este interesante API para llevar el mundo de las transacciones XA (transacciones distribuidas) a las operaciones con ficheros. El API vuelve posible que las lecturas/escrituras que realizes sobre ficheros o directorios en el filesystem puedan ser englobadas dentro de transacciones distribuidas, de la misma forma que una operación a base de datos o a una cola/tópico JMS.

La librería soporta que múltiples JVMs realizen transacciones concurrentes sobre ficheros y que una transacción pueda distribuirse en múltiples JVMs.

Además, cumple los estándares J2EE (como JTA) y de WS-* (como WS-Coordination) para transacciones.

 

miércoles
sep032008

Join'g (AKA WebPC) Beta disponible para evaluación

Después de casi dos años, hemos publicado Join'g (al final se llama así).

Ya sé que a estas alturas nadie creía que el proyecto siguiera vivo, pero han sido dos años de mucho trabajo y de muchas complicaciones.
No es fácil llevar a cabo un proyecto tan complejo y hacerlo en el escaso tiempo libre que uno tiene.

Al proyecto le falta mucho por hacer (sobre todo de la parte del cliente), pero miradlo con ojos de futuro: pensad en las posibilidades, no en el estado actual.

 

Primero los méritos

Un millón de gracias a Antonio Varela que ha hecho el Bootstrap, ha aportado geniales ideas y ha estado todo este tiempo apoyando el proyecto.
Otro millón de gracias para Fernando Ortigosa que se ofreció cuando solicitamos a alguien aquí en JH y que ha hecho un estupendo trabajo con JSF y que ahora se encarga de la parte de gestión de login y de usuarios del lado del servidor.

Cómo jugar con Join'g

He instalado un servidor en mi casa (Ubuntu 7.10) que podéis utilizar para jugar con Join'g.
El cliente de Joing se lanza (vía Java Web Start) desde la página (previamente hay que darse de alta como usuario):

http://www.peyrona.dnsalias.com:8080/Joing-Server-war/

La oficial es: http://www.joing.org  (pero por algún motivo que solucionaremos en breve no re-direcciona bien)


Por favor, tened en cuenta que sólo tengo una ADSL muy cutre, así que no os extrañéis si todo tarda una eternidad. Y si no funciona para nada, por favor, intentadlo más tarde: puede que el servidor esté saturado (no, no tengo puesto el aMule).
Nota: estoy buscando un servidor de verdad con un ancho de banda apropiado.

Por otro lado, lo único que necesitáis para ejecutar Join'g es la versión 1.6 del JRE.

  1. Hay que darse de alta como usuario (en el campo "email" poned cualquier cosa, por ahora no se usa).
  2. Lanzar la parte cliente (vía JavaWebStart) desde el botón "start" de la web.
  3. En el diálogo introducid el nombre de usuario y la password (esperad a que se descarge el desktop)

 

Algunas consideraciones previas

  • Todos los datos (usuarios, ficheros, etc.) puede que sean borrados al finalizar este periodo de pruebas por lo que no guardéis en el servidor información delicada.
  • Como la base de datos no está encriptada, no uséis la misma contraseña que la de vuestro banco.
  • Si estáis detrás de un proxy, podéis configurarlo con una utilidad gráfica que está en: Start --> Sistema --> ProxyConfig.
  • Cualquier duda que pueda surgir, será respondida (preferentemente en inglés) desde los "Discussion forums" de la web del proyecto: https://joing.dev.java.net/servlets/ProjectForumView

 

En qué estado está el proyecto

De los objetivos marcados, hemos conseguido el 80%. Y cada pieza (de ese 80%) está implementada en mayor o menor medida: algunas al 80%, otras al 50% y otras al 20%.

A continuación os dejo una captura de PDE (PDE es a Join'g lo que KDE o Gnome son a Linux) y describo lo que se ve (de arriba a abajo y de izq a dcha:

 

   
  • Dos accsesos directos (launchers) uno a un directorio y otro a una aplicación (calculadora).
  • Una ventana con un file explorer mostrando parte de los ficheros del escritorio de mi portátil.
  • Una ventana con el monitor del sistema (System Monitor) mostrando la pestaña de consumo de memoria (como se ve Join'g consume realmente poca memoria).
  • Una ventana (con foco) con un sencillo editor de textos que muestra dos ficheros, uno local y uno remoto (almacenado en www.joing.org)
  • Una ventana con un visualizador de imágenes que muestra tres imágenes, dos locales y una remota (almacenada en www.joing.org).
  • El botón de inicio mostrando a un usuario (se llama "Guest Guest User" (un nombre poco común)) con el menú de inicio abierto y su submenú de "Accesorios".
  • Una barra de tareas con 4 aplicaciones (Notes es la seleccionada). El ratón estaba sobre el botón correspondiente al System Monitor, por ello muestra (a modo de tooltip) una miniatura de la aplicación.
  • Un selector de escritorios: de los tres disponibles, el seleccionado es el primero (en rosa, los otros en gris ocuro).
  • Un reloj que muestra la fecha y la hora.

 

Bugs destacados

  • Quizás el más visible de todos es que la primera vez que se arrastra una ventana, ésta "se guarrea": basta con hacer clic en el escritorio de Join'g, fuera del área que ocupa la ventana para que aparezca. El resto de las veces que se arrastra funciona con normalidad.
  • Los eventos de teclado no llegan a las aplicaciones. Creo que el problema está en un bug con algunos eventos AWT. Como consecuencia, los dos juegos (Tetris y PacMan) no son jugables.
  • No considero que sean bugs la falta de funcionalidad (y problemas en el refresco visual), pero como ya he dicho, de esto hay mucho...
  • Un falta de funcionalidad clara está en que los "lanzadores" que creemos en el desktop, no serán guardados para siguiente sesión. Es decir los iconos del escritorio (al igual que el resto de propiedades: color, imagen de fondo, etc) se perderán al cerrar la sesión (falta serializar el estado).

 

Cómo podéis ayudar

Si has llegado hasta aquí y sigues leyendo: gracias.
Como los usuarios de JH sabéis, Join'g existe porque vosotros lo pedísteis, así que ahora os toca cumplir con vuestra parte y apoyar el proyecto, que no es de Antonio, de Fernando ni mio, sino de todos los que lo usen y los que lo mejoren.

Para ayudar:

1. Portando aplicaciones existentes para se integren con Join'g: es trivial hacer que cualquier aplicación Java existente se integre con Join'g.
Hay una aplicación (Notes, un editor de textos simple) que está terminada al 90% y bastante documentada. Este es un buen punto de comienzo.
Estoy trabajando en un manual que en breve estará disponible en la pag. web del proyecto (lo anunciaré en JH):
    https://joing.dev.java.net/
Y además intentaremos daros todo el soporte posible mediante los foros de la página del proyecto.

2. Creando o portando una aplicación de 1/4 de litro (250 c.c.)
Básicamente se trata de crear aplicaciones que cubren el 90% de las necesidades de un usuario promedio, pero que (una vez compiladas y comprimido el JAR) no ocupan más de 250 Kb (aprox.). Estas aplicaciones tendrán un tratamiento preferente en Join'g.
Algunos ejemplo son: reproductor de música, cliente de email, visualización de fotos, hoja de cálculo, proceso de textos, etc.
Lo mismo que antes: si tenéis una aplicación de las básicas y comprimida no ocupa más de 250 Kb, portadla, por favor, no os llevará más de 2 o 3 hrs de trabajo.
Algunas de estas aplicaciones cuentan con tutoría, es decir, si tenéis una app. hecha y os gustaría portarla a Join'g, poneos en contacto con Antonio, Fernando o conmigo, la evaluaremos y si queda aceptada, contaréis con nuestra ayuda personal (no sólo mediante foros) para portarla a Join'g.

3. Resolviendo alguno de los muchos bugs existentes: te bajas el proyecto de java.net (si usas NetBeans lo tienes chupado), lo compilas, juegas, encuentras un bug, encuentras la solución y la envías por email (código + comentarios, por favor) a Antonio, Fernando o a mi.

4. Asumiendo el liderazgo de un proyecto muy especial: integrar OpenOffice dentro del Join'g. No es complicado pero sí que es el más importante de entre los pendientes de iniciar. Si alguien ya ha trabajado empotrando OpenOffice en un JPanel le rogamos que se anime a iniciar este proyecto.

5. Formando parte del core-team.
Los integrantes del core-team tienen acceso a las partes más delicadas de Join'g, y por ello hemos decidido que para otorgar a alguien acceso completo (lectura y escritura) a estas partes de Join'g, se haga por méritos (como ocurre en otros muchos proyectos): quien demuestre su interés por el proyecto y su buen hacer, podrá (si lo solicita) formar parte del core-team. Por ahora este equipo lo integramos Antonio, Fernando y Peyrona.


Despedida

En fin, esperamos que os guste y que participéis. Nosotros hemos cumplido con nuestra palabra: hemos trajado duro, quitado tiempo a familia y amigos para construir las bases; el resto, depende de vosotros...

Gracias a todos.
Antonio Varela, Fernando Ortigosa y Peyrona.
miércoles
sep032008

Como integrar varias herramientas de QA en un proceso de integración continua

Meera Subbarao ha escrito una entrada en Developer Zone anunciando una herramienta, Panopticode, que facilita la integración de otras cinco herramientas de Quality Assurance en un proceso de integración continúan con Hudson, aunque no parece complicado adaptar la solución que propone parea simplemente emplear Ant y lanzar las cinco herramientas como una tarea.

Las cinco herramientas son CheckStyle (comprueba si el código se adhiere a unos determinados estándares de codificación), JDepend (genera métricas de calidad para cada paquete en base a las dependencias que éste tenga) JavaNCSS (mide la complejidad ciclomática del código), Simian (busca código duplicado) y Emma (comprueba la cobertura del código).

El artículo es bastante claro y la solución que propone resulta muy práctica para aquellos que estén interesados a usar todas (o un subconjunto) de estas herramientas.

¿Cuántos de vosotros empleais habitualmente herramientas de Quality Assurance como parte de vuestro proceso de desarrollo? ¿Cuáles empleais?
martes
sep022008

LAMEOnJ 1.2 Añadida API para decodificación

 

He publicado LAMEOnJ 1.2

LAMEOnJ es una librería 100% Java que permite acceder desde Java a toda la API del popular encoder MP3 LAME. LAMEOnJ utiliza JNIEasy como puente con el mundo nativo.

La principal novedad de la versión 1.2 es la adición de una API orientada a objetos para decodificar archivos MP3 a PCM/WAV.

La API de decodificación siempre estuvo presente desde la versión 1.0 puesto que se mapea toda la API de bajo nivel de LAME. Sin embargo esta API, aparentemente sencilla, no es nada fácil de manejar, la envoltura orientada a objetos simplifica y aporta robustez al proceso.

La distribución contiene ejemplos de uso de las versiones de las APIs de decodificación en Java:

  • Usando la API de bajo nivel de LAME
  • API orientada a objetos usando buffers de entrada
  • API orientada a objetos usando un stream de entrada.
Como siempre aunque en la mayor parte de Europa no hay problemas de patentes software, en EEUU sí por lo que LAMEOnJ no incluye binarios de LAME. En la web se dice donde obtenerlos o cómo compilar LAME (y si alguien es demasiado vago le puedo indicar por mail donde descargarse binarios en Internet para Windows, Mac OS X x86, Linux y Solaris).

martes
sep022008

Nuevo Portal para distribución Aplicaciones para moviles

Se ha desarrollado una plataforma para la descarga  e intercambio de juegos y aplicaciones para dispositivos móviles. El portal DMovil – dmovil.cc.uah.es – es gratuito y libre acceso, tanto a través de Internet(WEB) como teléfonos móviles(WAP), y la intención es que tanto usuarios como la comunidad de desarrolladores JME, FLASH y .NET tengan un sitio web donde poder difundir sus aplicaciones y/o juegos, ya que el proyecto es sin ánimo de lucro. Lo único que se ha de hacer es registrarte en la plataforma, que los administradores validen tus datos y a partir de ese momento poder navegando por la web descargando y/o subiendo aplicaciones.