mardi 22 juillet 2003

Testing in OpenSource

There is a comprehensive paper dealing with application Testing on an ObjectWeb sub-site. 
It deals with 7 major OpenSource testing suites available (OpenSTA, JMeter, ...) and it compares to the (current) commercial leader from Mercury. 
All allow testing Web applications (some including WebServices-based). Very few care about other protocols (such as SMTP or FTP). 

It has been updated on May 2003.

jeudi 17 juillet 2003

XSL:for-each-group: a starter

Have you ever encoutered a flat XML file? 
I know it sounds a little bit weird, but they exist; even more, they are very commons. 
In fact, they could be seen as an XML-isation of a trivial flat file (think csv file) or a single RDMS table (I do not mean it is a best practice in the later cases) 
But where I find them very useful is for resources/properties/configuration files (or whatever you call them!): they are files generally edited by hand which contain every single parameter your application mandates for running. 
The flatness comes from the absence of hierarchy: in french, we would say it is a "rateau" (a rake). Here is an exemple of such a rake-file ;-)

<Resources>
<user name="Gosling" firstname="James" company="Sun" group="guru"/>
<user name="Kay" firstname="Michael" company="SoftwareAG" group="guru"/>
<user name="Poirier" firstname="Charles-Antoine" company="WorldCompany" group="beginner"/>
</Resources>

From such a file, very often comes the need to get a hierarchical view; by instance, one focused on 'company' or 'group'.

That hierarchical view could be needed for producing another XML file, sending a stream over the wire or get an in-memory tree-view of those resources.

An example of such an hierarchical perspective could be as follow (I apologize for being too much 'hierarchical' in that example ;-)):
 
<Groups>
<Group type="guru">
<Member fromCompany="Sun">
<FirstName>James</FirstName>
<LastName>Gosling</LastName>
<Member>
<Member fromCompany="SofwareAG">
<FirstName>Michael</FirstName>
<LastName>Kay</LastName>
<Member>
</Group>
<Group type="beginner">
<Member fromCompany="WorldCompany">
<FirstName>Charles-Antoine</FirstName>
<LastName>Poirier</LastName>
<Member>
</Group>
</Groups>


Obviously to go from <Resources>-XML to <Groups>-XML, you are already thinking to ... XSLT.

To be more precise, you certainly envision XSLT 2.0 which contains a very rich new feature: xsl:for-each-group. It enables you to get something similar to SQL-'Group-By'.

As an example, here the XSLT which allow the aforementioned transformation:
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent='yes' method='xml' encoding="ISO-8859-1" />

<xsl:template match="/">
<Groups>
<!-- "sort" 'user' by 'group' -->
<xsl:for-each-group select="//user" group-by="@group"> <!-- group-by group is not a joke!!! -->
<xsl:element name="Group"> <!-- Creates a new 'Group' element as needed -->
<xsl:attribute name="type"><xsl:value-of select="@group"/></xsl:attribute>

<xsl:for-each select="current-group()"><!-- Iterate over the XSL-group to create 'Member's -->
<xsl:element name="Member">
<xsl:attribute name="fromCompany"><xsl:value-of select="@company"/></xsl:attribute>
<FirstName><xsl:value-of select="@firstname"/></FirstName>
<LastName><xsl:value-of select="@name"/></LastName>
</xsl:element>
</xsl:for-each>

</xsl:element>
</xsl:for-each-group>
</Groups>
</xsl:template>
</xsl:transform>


This is a very simple case where you can take advantage of this wonderful new feature (using Saxon makes it rock!). It leads to very elegant (and readable) XSLT code (and that's not the least)

lundi 14 juillet 2003

Cultiver son Jardin d'Amour

D'enfer!!! 
Ou plutôt "De Paradis". 
Voilà ce qui me vient à l'esprit après avoir lu "L'île des Gauchers" d'Alexandre Jardin

Il y déploie un thème qui lui est cher (du moins il me semble): "comment aimer?". Tous ceux qui ont déjà lu de ses livres ou plus certainement vu le film "Le Zèbre" (avec Thierry Lhermitte) connaissent les interrogations d'Alexandre Jardin. 
Dans "L'île des Gauchers", l'auteur est moins fantasque que dans "Le Zèbre" mais décrit une monde plus fantastique: une île où la seule occupation essentielle est de savoir aimer (et non pas de se faire aimer!); une inversion salutaire par rapport au monde des droitiers qu'est le nôtre!. 
L'épouse d'un de mes très bons amis prétend que tout couple devrait lire ce livre: elle a complètement raison. On n'y trouve pas de recette miracle (il n'en existe pas de générique) mais des réflexions pleines d'imagination pour tenter de savoir mieux aimer, tolérer, comprendre et partager. 

"L'île des Gauchers" fait partie de ces rares livres qui vous structurent la tête pour longtemps tout en vous rafraîchissant les neurones du plaisir littéraire par son style et son inventivité. Candide aurait adoré!

Robin, c'est un gars 'bat'

Toujours sans polémique sur les navigateurs, il faut quand même reconnaître que Mozilla (ou son prochain successeur: Firebird) permet de faire de bien belles choses.

Vous pointez donc le meilleur navigateur du monde (arrggh çà y est, j'ai craqué! J'suis tombé dans la Paule-Emique! Mais j'me soigne: je rédige ce blog sous IE ;-) Donc vous allez sur Robin chef sf.net (sans tricher: IE ne vous conduira nulle part [du moins ce coup-ci!])
Et là, vous tombez sur une page qui représente ... un desktop; si si, un desktop avec son petit bouton "Démarrer" (enfin "Launch" dans le texte) accompagné de son petit menu déroulant et de l'heure à droite, son fond d'écran psychédélique et le menu associé.
Bon, alors on peut commencer à faire joujou avec les menus. Et là, c'est le festival de l'inutile (donc de l'indispensable): un démineur, un tétris, un pac-man, un astéroïd, un snake, un invaders, ... Chacun dans sa petite fenêtre dans la page Web; et elles bougent, s'iconifient, se maximisent et meurent! Vraiment balaise le gars...

Et c'est quoi qui permet donc ce petit miracle (à part le meilleur navigateur du ...)?
XML bien sûr. En l'occurrence: XUL (prononcer "zul") pour XML User interface Language. Avec un chouia d'aide de JavaScript, of course.

Ah oui, j'oubliais de mentionner la seule appli utile: un navigateur Web... (dur le coup dans l'estomac en fin de blog, hein?) Et "oui", la réponse est "oui" (sachant que la question normale que vous devriez vous poser est: "est-ce que ce navigateur permet de recharger Robin?"). Bien sûr que je me suis amusé à récurrencer: je n'ai pas eu la patience de trouver à partir de quand çà plante (je me suis arrêté à 3 niveaux!)

mardi 1 juillet 2003

OpenSource databases

There is an interesting paper on OS databases dealing with MySQL, SapDB and PostgreSQL. 

But (and there's always a "but" in good news!), it is written in .. French. 
But (you see, theres's always a "but" ;-) you could find it very convenient to access the compared features table which should be straightforwardly readable. 
Enjoy it!

Un navigateur "à la Mozilla"

Bon, soyons clairs, le meilleur navigateur du monde est ... 
En fait cela dépend bien sûr largement de votre religion technique, de votre plateforme, du prix à payer (pas forcément financier, mais aussi en investissement en temps, en compétences, ...). 
Brèfle pour moi, c'est Mozilla ET IE. Je laisse mon Mozilla lancé en permanence avec une home page qui est un "group tab" (il ouvre plusieurs pages web différentes, chacune dans son onglet [tab en anglais dans le texte]). Et bien sûr, j'adore la possibilité de n'avoir qu'une seule fenêtre et plusieurs pages web ouvertes simultanément: les "tabs", encore et toujours. Mais pour un coup de surf rapide, un nouveau site à regarder rapidement, je passe sous IE (et oui, traitre que je suis!). 

Pour réconcillier les deux mondes, vous pouvez utiliser SlimBrowser qui propose des fonctions identiques à celles de Mozilla en se basant sur le moteur d'IE. En plus, il propose un "pop-up stopper"; tout comme la dernière de Mozilla. 
Donc, toujours aussi difficile de faire son choix! Et ce, encore plus après avoir été faire un tour sur Phoenity qui vous propose encore d'autres liens vers d'autres solutions... 
On n'en sortira jamais! 
Mais Billou va peut-être nous aider en arrêtant définitivement de supporter IE en tant que produit autonome!

dimanche 29 juin 2003

Fourniture scolaire

Trouvé dans la liste de fourniture scolaire demandée par l'école de mon fils pour l'année prochaine: 
"double décimètre qui tienne dans la trousse"
(sic) 
Ma question est: combien mesure le double décimètre qui doit tenir dans ma trousse? 
Corollaire: combien de double décimètre puis-je mettre dans ma trousse de 15 cm de long? Réponse probable: 0,75... 

Pas toujours facile de bien penser...

L'écriture selon Pennac

On écrit pour en finir avec soi-même mais dans le désir d'être lu, pas moyen d'échapper à cette contradiction.[...] Quant à prétendre écrire sans vouloir qu'on vous lise (tenir un journal intime, par exemple), c'est pousser jusqu'au ridicule le rêve d'être à la fois l'auteur et le lecteur.
Daniel Pennac - Le dictateur et le hamac - 2003

Il a certainement raison, mais maintenant, il y a le Web et encore mieux les Blogs! 
Mais y a-t-il seulement des lecteurs? 
Si oui, qui sont-ils? De futurs auteurs pour la plupart (s'ils sont tombés sur cette partie du Net, c'est que la curiosité qui les a porté là sera certainement assez forte pour les pousser à passer de l'autre côté de la page Web!), les proches des auteurs (orgueil, orgueil, ...), qui d'autres? 
Cette écriture est donc assez solitaire (du moins au début): on parle à d'autres, imaginaires et nombreux, pour mieux se parler à soi-même (en finir avec soi-même dit Pennac); une sorte de thérapie en somme.

OpenSource Software Plea (in French ;-)

I've written a long time ago a plea on OSS. 
I do not include it verbatim here, but prefer to point it: it has been written in 2001 (and I kept it jealously [shyly?] for a while) and it has been first published by the excelent DNG (DotNetGuru: an open-minded and highly "architechnical" site on .Net and its relationship with Java world, webmastered avec maestria). 
Then, if you feel like reading french writting, give it a try!

mardi 24 juin 2003

EAI products in OSS

I've been roaming over EAI/B2B products delivered on an OSS basis. Here is a simple list I can share now (I did not test all!!!): 
 - BabelDoc (@sf.net): based on a pipeline of transformations/actions 
 - BIE (@sf.net): more elaborated than BabelDoc (needs a DB!) and provide a visual Web-based tool to design exchange steps 
 - OpenAdaptor: another pipelining environnement which helps connecting an application to a (set of) middleware/apps (amongst them: MQ, JMS, JDBC,...) 
 - others which I've heard of: Submarine (cocorico!), OpenEAI, Joram (cocorico bis!), ... 

Modify an XML file with ANT

Recently, while using the wonderful Glue for building WebServices (WS), I came up with the following problem: how to modify an XML file with Ant? 
(The rationale of this is: when creating a new WS, you have to use a special deployment tool [a shell script] and manually patch one of the many generated XML files; and of course, I want to automate the "manually" part of the cycle! But I guess such a problem is more general and when using EJB, one could encounter same wondering). 
First, I rejected the idea of using an Ant task that deals with TEXTUAL modifications of regular text files: I simply could not see an XML file as a regular file! Let me tell you that I didn't even think about creating a dedicated task in Java for solving that particular problem: that would have been crazy! 

Then, I ended up with 2 ideas: 
 - using an XML Ant task (such as the xmltaskone) 
 - using a templating engine (Velocity or FreeMarker

I preferred the first option which fits nicely to my needs (design-to-cost approach ;-) and allow me to write XPaths expression to patch the original XML file. Great! 
Templating engine was ... tempting, but too far from both my real need and time-frame to achieve it! 

So as to conclude, one of my best friends and colleagues (best applies to both nouns!) would probably have envisioned the possibility to write an XSLT file to perform that stuff with variables passing and modification of the XML file: let's forgive him!

mercredi 18 juin 2003

One I like most these days

This is a very pleasant software that tries to reach perfection: near bug-free! 
Try it for free (even if it is not [yet] OpenSource!]:

A (Saint-)eXuPéry quote

Sorry for mispelling that french author's name (Antoine de Saint-Exupéry) for the sake of a play on words related to XP.
He used to say (free translation by myself): "Perfection is reached not when there's nothing more to add but when there's no more to take out"
I guess it applies very well to programming in general and especially when refactoring (XP-minded ;-).