eric.lemerdy

Aller au contenu | Aller au menu | Aller à la recherche

lundi 23 février 2009

Nabaztag plugin improved

This is a list of improvements of the lastest version:

  • Use a checkbox for the "Report On Success" parameter.
  • Hide non mandatory parameters in an "Advanced..." section.
    hudson-1.5-advanced.png
  • Text-To-Speech messages supports "${projectName}" and "${buildNumber}" special syntax to be more expressive (instead previously of adding project name and build number automatically at the end of the TTS).
    hudson-1.5-variables.png
  • Add help for each parameter.
    hudson-1.5-help.png

The version is available here: nabaztag-1.5.hpi.
The wiki page also contains a new section to request changes. A Jira for such a little plug-in seems oversized, no ?

jeudi 29 janvier 2009

Paris Java Camp 3

Je compte participer à ce BarCamp. Il y a 22 inscrits pour l'instant. Je suis le 23ème. Je pense qu'il faut tenter le samedi au moins une fois pour voir ce que ça donne. En semaine, il m'est déjà arrivé d'être un peu fatigué le soir.

Agrandir le plan
Au plaisir de vous voir samedi prochain.

dimanche 9 novembre 2008

Back from GWT and Restlet @ParisJUG - 3/3

Last graphic report back from ParisJUG
See the full story in one image

jeudi 6 novembre 2008

Back from GWT and Restlet @ParisJUG - 2/3

Paris JUG - GWT & RestLet

mercredi 5 novembre 2008

Back from GWT and Restlet @ParisJUG - 1/3

ParisJUG-GWT-1on3

mardi 20 novembre 2007

Groovy

GroovyJ'ai eu envie hier soir de tester ce langage dont des échos résonnent très positivement depuis presque un an maintenant. Et grâce à un tutoriel exceptionnellement bien fait sur le site officiel de Groovy, j'ai pu rapidement évaluer la chose. Première impression : c'est rapide et fun de taper trois mots et de voir tout ce qu'on peut faire avec. Ca m'a immédiatement rappellé mes ébats avec la console d'Ocaml au temps béni où on est un jeune fou qui délaisse les maths pour l'info.
Je resitue juste le contexte de Groovy. Le constat est que Java a su faire la synthèse du meilleur de ce qui existait à l'époque en termes de développement objet. Or, aujourd'hui, de nombreux développeurs sont adeptes de langages dynamiques (scripting) aux syntaxes plus flexibles. C'est donc dans cette volonté que Groovy est né profitant de l'expérience acquise par la pratique de Java, Perl ou autres Python.
On découvre donc des concepts comme la closure qui considère le code comme des données. Cela m'a fait tout de suite penser au javascript "moderne" (post framworks du web 2.0 comme Ext Js voir mon précédent post) qui embrace cette approche. On peut donc réaliser une affectation d'une suite d'instruction ("closure") à une variable afin de la passer en entrée à une fonction :
square = { it * it }
square(9)

résultat : 81
[ 1, 2, 3, 4 ].collect(square)
résultat : [ 1, 4, 9, 16 ]
Comme vous pouvez le constater, la syntaxe s'en trouve grandement allégée par rapport au code java équivalent.

Avantages:

  • Syntaxe allégée = augmentation de la productivité
  • Mode script ou compilé : intégration forte au JDK = déploiement aisé
  • Intégration des meilleures librairies open-source

Inconvénients, problèmes posés :

  • La productivité est-elle vraiment améliorée si on est un minimum agile avec son IDE ?
  • Flexibiliser le langage n'est-il pas une façon de rendre le code moins maintenable ? -moi j'ai toujours eu du mal avec les langages de script je préfère la programmation rigide et structuréé "à l'allemande" (avez-vous déjà lu du code open-source allemand ?), quitte à agiliser la méthode de développement, mais je m'égare-
  • Est-ce toujours aussi facile de tester une classe qu'un script (oui je sais, un script Groovy est une Classe) ?

vendredi 21 septembre 2007

Eclipse 3.3 SSL Plugin

Logo freepositoryAs a fervant user of the freepository service, I use the Rolf K. Wilms Eclipse plugin in order to synchronise my personnal sources with this free online cvs service.
Although the plug-in is working great with Eclipse 3.1 and 3.2, there is a problem with the Eclipse 'Europa' (3.3). Any previously shared project lead to a NullPointerException when trying to synchronize. A breakthrough as been proposed on Freepository's forum topic. It is to re-share your project.
Anyway, thanks to the CPL licencing of the plug-in, I've 'opened the box' and fix the problem. With this version, you will only be re-prompted for your password when migrating your project from Eclipse 3.2 to 3.3. After contacting Rolf, he says he is not ready to make a release in his name, so I just propose you my modified version (I've just changed 2 lines, with a well design code like this plug-in, it was quite easy).
ziprwi.eclipse.team.ccvs.ssl_3.3.0.zip

vendredi 31 août 2007

Découverte de JAXB

Dans ce post, j'applique la sugession Chad Fowler dans son livre "My Job Went to India: All I Got Was This Lousy Book" : pour être sûr qu'on a bien compris quelquechose, il faut essayer de l'expliquer.
Voyons ce qu'est JAXB.

Lire la suite...

mercredi 9 mai 2007

Improve Rome performance: from JDOM to StAX

Rome is an open-source java API to deal with several syndication feeds. It is using JDOM to parse and generate the XML stuff. This study is to imagine how make Rome use StAX instead of JDOM and how does it cost.

Lire la suite...

lundi 23 avril 2007

StAX


AvantagesInconvénients
SAX
  • efficace
  • souple
  • bas niveau
  • nécessité de tracer pour connaître le niveau du parcours
  • obligation de parcourir l'intégralité d'un document
DOM
  • agréable à utiliser pour le programmeur
  • performance très réduite

Existe-t-il une façon différente de traiter du XML en java ?

Allons voir la réponse de Sun. Retour en avril 2002, un groupe d'experts en formation va travailler sur un nouveau moyen d'exploiter le format XML, ils appellent ça JRS 173. Plus d'un an plus tard, la première sortie publique apparaît. La version finale sort en mars 2004. Et, whoua, une version de maintenance a été publiée en février 2007 pendant qu'on fesait du ski sur gazon ! Il y a donc des gens qui savent s'occuper quand il n'y pas assez de neige sur les pistes. Qu'est-ce-qu'une API qui a mijoté pendant 5 an nous réserve ?

StAx

Streaming API for XML. Et oui, le streaming est un moyen de réduire la quantité de données en mémoire.domstax.png

Fonctionnalités

  • Evênements (comme en SAX)
  • API Curseur (read : XMLStreamReader / write : XMLStreamWriter)
  • API Itérateur d'evênement (read : XMLEventReader / write : XMLEventWriter)
  • Factory pour créer ces objets (XMLInputFactory, XMLOutputFactory, XMLEventFactory)

Ecriture avec l'API Curseur

Voici un exemple d'écriture:
import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.Writer;



import javax.xml.stream.XMLOutputFactory;

import javax.xml.stream.XMLStreamException;

import javax.xml.stream.XMLStreamWriter;



public class TestXmlStreamWriter {



public static void main(String[] args) throws XMLStreamException,

IOException {

Writer writer = new OutputStreamWriter(

new FileOutputStream("text.xml"), "UTF-8");

XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newInstance()

.createXMLStreamWriter(writer);

xmlStreamWriter.writeStartDocument("UTF-8", "1.0");

xmlStreamWriter.writeStartElement("breakfast_menu");

xmlStreamWriter.writeStartElement("food");

xmlStreamWriter.writeAttribute("name", "Belgian Waffles");

xmlStreamWriter.writeStartElement("price");

xmlStreamWriter.writeCharacters("$5.95");

xmlStreamWriter.writeEndElement();

xmlStreamWriter.writeStartElement("description");

xmlStreamWriter

.writeCharacters("two of our famous Belgian Waffles with plenty of real maple syrup");

xmlStreamWriter.writeEndElement();

xmlStreamWriter.writeEndElement();

xmlStreamWriter.writeEndDocument();

xmlStreamWriter.flush();

xmlStreamWriter.close();

}



}
L'API est pas mal quand on veut sortir du xml de façon légère. Le fichier de sortie est sur une seule ligne mais bien formé. Cette API permet de contrôler un minimum ce qui est écris en xml. Mais il existe des points faibles. Par exemple, suivant les implémentations, un document peut avoir deux éléments "root". Au contraire, elle va nous aider dans d'autres cas. Par exemple, si on a pas fermé tous les éléments, la méthode "close" le fera à notre place. Il est a noter aussi le passage au entities pour les caractères qui appartiennent à la syntaxe xml. En tous cas, l'API d'écriture est très rapide, simple et possède une empreinte mémoire ridicule (seul un objet XStreamWriter est instancié). C'est tout ce qu'on lui demande.
Vous ne trouverez StAX utilisable dans cet article qu'à partir avec Java 5 SE (décembre 2006) ou Java EE 5. Sinon, il faut packager soi-même an ajoutant l'API du JSR et une implémentation quelqonque.
Je pense que c'est la raison pour laquelle cette API n'a pas été massivement adoptée par la communauté des développeur. On hésite toujours à se lier à une spécification de Sun qu'ils n'ont pas intégré à leur coeur applicatif car on doit dans se cas se reposer sur des implémentations d'éditeur propriétaire (coûts de licence) ou open-source (maintenance et pérénité).

Vers une adoption ?

Les technologies XML sont utilisées de plus en plus depuis maintenant plus de 10 ans ! Il serait temps qu'on passe aux choses sérieuses en termes de performance pour éviter de traîner le boulet des langages interprétés. Au cours de mes recherches, j'ai constaté que l'intérêt porté à StAX est croissant depuis sa sortie. Sa livraison dans java 6 devrait marquer son avênement. StAX nous démontre qu'on peut allier API élégante et performante.

Liens

Why StAX ?
La JSR 173 expliquée en tutorial. C'est didactique et indispensable à parcourir.
An Introduction to StAX
Posté en septembre 2003 ! Ce document montre que StAX tarde à s'imposer.
Streaming APIs for XML parsers
Intéressante comparaison entre les implémentations de StAX, Sun est bien placé en août 2005 dans ce whitepaper.
XOM
On a pas fini de se torturer les méninges avec XML, cet auteur prolifique nous le montre en nous présentant XOM.

- page 1 de 2