lundi 5 novembre 2007

OGM = moins de pesticides ???

Un argument des industriels commercialisant les semences OGM est de dire qu'avec les OGM, les agriculteurs vont consommer moins de pesticides. Qu'en est-il exactement ?

La réponse est en fait loin d'être aussi simpliste. Pour la communication, les industriels ont avantage à simplifier le discours et rester dans des généralités pour mieux défendre leurs intérêts. Si on creuse un peu, on s'aperçoit que ce discours est biaisé ...

De manière générale, les OGM dit "à pesticides*" représentent plus de 99% des OGM à travers le monde. Il en existe de 2 sortes :
  • ceux qui résistent à un pesticide (le fameux "Soja RR - RoundUp Ready" en est un exemple). Ils représentent environ les 3/4 des OGM dans le monde.
  • ceux qui sécrètent un pesticide et fait que la plante devient "poison" pour l'animal ravageur (le maïs MON810 cultivé en France). Ils représentent pas loin du 1/4 des OGM dans le monde.
Dans le premier cas, la raison d'être de l'OGM est de résister à un pesticide afin, par exemple, de pulvériser sur un champ un herbicide systémique comme le RoundUp. Dans ce cas, je vois mal comment l'argument "OGM = moins de pesticides" peut se justifier. De plus, dans les pays où ce type d'OGM est utilisé, on voit la vente des pesticides augmenter de manière plus importante que l'utilisation des OGM. Les plantes génèrent des résistances impliquant l'augmentation tous les ans des doses de pesticides utilisés.

Dans le second cas, celui du maïs BT MON 810 cultivé en France, c'est plus délicat. Effectivement, les agriculteurs utilisant habituellement un insecticide à base de toxine BT n'ont plus besoin d'utiliser ce traitement puisque la plante le secrète elle-même. Mais ce n'est pas parce que l'agriculteur ne traite pas
qu'il n'y a pas d'insecticide dans la nature ... Bien au contraire, les insectes visés (pyrale et autres lepidoptères) sont soumis en permanence à cet insecticide, leur permettant ainsi de générer des résistances ... Je ne parle même pas de nos productions de viandes et lait à partir de vaches qui ingurgitent ces OGM ...

On voit donc que l'argument "OGM = moins de pesticides" ne tient pas la route. Je dirais même que c'est de la propagande. J'ai récemment vu un reportage sur une chaîne publique où l'agriculteur cultivant des OGM se disait même écologiste ...

Dès qu'il s'agit de gagner de l'argent à court terme, l'environnement et nos vies ne valent pas grand chose ...

A nous de réagir en refusant d'acheter des produits touchant de près ou de loin les OGM. En Bretagne, on peut utiliser le site Consommer sans OGM en Bretagne. Sinon, il faut se replier derrière des labels (BIO, Label Rouge notamment).


*Pesticide est un terme générique dans lequel on englobe les herbicides, fongicides, insecticides

jeudi 18 octobre 2007

Gutsy Gibbon ... C'est parti

Ca y est, la dernière mouture Ubuntu 7.10 est sortie.

Une news que j'imagine vous avez vu fleurir un peu partout sur le Net.

Le download est déjà fait de mon coté ... et je grille une galette pour y poser l'ISO !
Un petit rappel, le torrent est très utile pour éviter l'engorgement des serveurs Ubuntu ...

J'ai également commandé les CDs (en 2 ex.) pour faire du lobbying !
Vous aussi, vous pouvez les commander pour que les CDs arrivent dans votre boîte aux lettres. C'est gratuit et sur le site officiel. Il faut juste être un petit peu patient (4 à 6 semaines).

jeudi 11 octobre 2007

Tutoriel JAX-WS - Partie IV (Spring)

Quatrième partie de la série "Tutoriel JAX-WS" : Intégration de Spring avec Metro. Cette partie est destinée à des personnes connaissant un minimum Spring. L'objectif est d'utiliser Spring pour configurer le déploiement du Web Service en lieu et place du fichier sun-jaxws.xml.
Ceci est intéressant si vous avez déjà Spring sur votre projet. Dans ce cas, on aura alors accès à tous les bienfaits de Spring pour configurer notre service : AOP, injection de dépendance, ...

Intégration de Spring au projet

Avant de pouvoir utiliser Spring, il faut d'abord l'intégrer à notre application. Pour ceux qui veulent un lien, la dernière version (2.0.7) est ici (prenez la version avec les dépendances).
On va faire simple et mettre le fichier spring.jar (dans le répertoire dist de la distribution Spring) dans le répertoire WEB-INF/lib de notre projet.

Au niveau dépendances, nous allons faire simple également. On se limitera à copier le fichier commons-logging.jar (du répertoire lib/jakarta-commons de la distribution Spring) dans notre répertoire WEB-INF/lib.

Nous en avons terminé avec l'intégration de spring. Maintenant, nous allons ajouter une extension pour combiner JAX-WS et Spring.

Intégration de l'extension JAX-WS-spring

Il existe une extension JAX-WS (dans les projets JAX-WS commons) qui permet de configurer nos services Web avec Spring. Vous la trouverez ici. Elle reste malheureusement assez peu documentée ...

Cette librairie à intégrer dans notre webapp (répertoire WEB-INF/lib) se nomme jaxws-spring-1.7.jar. Seule cette librairie ne suffira pas. Il nous faut ajouter une librairie externe permettant l'ajout d'extension spring : xbean-spring, détail important que je n'ai pas vu dans la documentation...

Nous sommes maintenant prêt à modifier notre configuration.

Descripteur de déploiement (fichier web.xml)

Nous allons ajouter le listener de Spring classique pour charger la configuration du (des) fichier(s) Spring :
Et changer de servlet pour en prendre une spécifique pour Spring :

Configuration Spring (fichier applicationContext.xml)

Il ne reste plus que la configuration Spring qui se fait dans le fichier WEB-INF/applicationContext.xml de la manière suivante :

Il ne vous reste plus qu'à redémarrer votre Tomcat et re-tester votre Web Service ...


dimanche 7 octobre 2007

Tutoriel JAX-WS - Partie III (Déploiement)

Voici la troisième partie de la série "Tutoriel JAX-WS". Cette dernière va nous permettre de déployer votre Web Service à l'aide de Metro.

Descripteur de déploiement (web.xml)

Globalement, ce dont on a besoin, c'est d'exposer notre Web Service sur une URL donnée. Metro met à disposition une servlet pour le "routage" des appels clients vers les services Web. On va donc indiquer ce qu'il faut à notre container Web (Tomcat) pour cette servlet dans le fichier WEB-INF/web.xml :
Le pattern utilisé pour l'URL d'accès à la servlet permet d'intercepter toutes les URLs commençant par /services/. Ceci nous permet de déployer plusieurs Web Services.

Il manque encore l'information de mapping entre l'URL complète (appelé endpoint en Web Service) et notre classe d'implémentation. Metro utilise pour cela un fichier xml de configuration (WEB-INF/sun-jaxws.xml) qui est chargé par un listener. Nous devons donc également déclarer ce listener dans notre fichier web.xml.
Au final, voici à quoi doit ressembler notre descripteur de déploiement :


Configuration du endpoint (sun-jaxws.xml)

La configuration de notre Web Service sous Metro se fait donc dans le fichier WEB-INF/sun-jaxws.xml. L'ensemble des endpoints doivent se retrouver dans ce fichier. Voici celui qui correspond à notre cas d'école :


Configuration de Tomcat

Si vous utilisez le JDK 6, vous allez être confronté au même souci de conflit de version de JAX-WS. Par défaut, Eclipse lance Tomcat avec l'option : -Djava.endorsed.dirs="/chemin_de_tomcat6/common/endorsed"
Il suffit donc de copier la librairie webservices-api.jar de Metro ou les librairies jaxws-api.jar/jaxb-api.jar de JAX-WS RI (ce qui est équivalent) dans le répertoire défini ci-dessus.

Test du Web Service

Voilà, vous êtes maintenant prêt à lancer Tomcat et tester votre Web Service. Si vous avez tout suivi, l'URL d'accès à votre Web Service (endpoint) sera :
http://localhost:8080/testMetro/services/addnumbers
Vous devriez avoir quelque chose du genre :


Pour faire des tests complets, vous pouvez utiliser un outil comme soapUI ou celui fourni avec Eclipse (un peu plus lourd à mon goût).

N'hésitez pas à laisser des commentaires si vous avez des questions ...

vendredi 5 octobre 2007

Tutoriel JAX-WS - Partie II (Développement)

Voici la seconde partie de la série "Tutoriel JAX-WS". Celle-ci est consacrée au développement à proprement parlé du Web Service. On va commencer par importer un WSDL d'exemple. Par la suite, on va générer du code avec les outils de JAX-WS. Enfin, on terminera par l'implémentation du service à proprement parler.

Import du WSDL

La configuration n'es pas complètement terminée mais on peut commencer à coder notre Web Service. Dans notre cas d'école, on va prendre un WSDL fourni avec les samples de Metro, plus précisément, le fichier samples/fromwsdl/etc/AddNumbers.wsdl. Nous allons importer ce fichier dans le répertoire src du projet. La copie d'écran suivante montre à quoi doit ressembler votre eclipse à ce stade :

Génération de code

Nous allons maintenant générer le code du service et des "artifacts" associées à partir du fichier WSDL. Je n'ai pas trouvé de plugin Eclipse pour Metro ou JAX-WS alors on va utiliser directement l'outil fourni avec l'implémentation JAX-WS (dans le Jar webservices-tools.jar). Pour cela, on va lancer l'utilitaire WSImport à partir d'eclipse.

A partir du menu Run/Open Run Dialog..., on va créer un nouveau "lanceur" de type Java Application. Vous pouvez lui donner un joli petit nom histoire de pouvoir le reconnaître par la suite. Ensuite, dans l'encart Main class et à l'aide du bouton Search, vous allez utiliser la classe com.sun.tools.ws.WsImport qui correspond à l'outil de génération de code. Vous devez avoir quelque chose du genre :


Il faut passer des infos à cet outil, notamment le fichier WSDL à prendre en entrée et lui dire à quel endroit mettre les fichiers générés. Toutes ces options sont documentées sur le site de JAX-WS. Attention, si vous avez des espaces dans les noms de répertoire (je pense aux personnes sous Windows avec le C:\Documents and Settings par exemple), veillez à mettre entre "" les options ...

Si vous utilisez le JDK 6+, vous allez être confronté à un problème de conflit de version entre l'API JAX-WS intégrée au JDK (version 2.0) et celle utilisée par Metro (Version 2.1). Le symptôme est le suivant :

You are running on JDK6 which comes with JAX-WS 2.0 API, but this tool requires JAX-WS 2.1 API. Use the endorsed standards override mechanism (http://java.sun.com/javase/6/docs/technotes/guides/standards/), or use -Xendorsed option.

Pour résoudre ce problème, il faut indiquer à la JVM où trouver la bonne version avec le mécanisme suggéré par le message d'erreur. Le screenhot suivant montre, en plus des options de génération de code, l'argument à passer à la JVM (les Jar jaxws-api.jar et jaxb-api.jar suffisent) :

Voici une explication rapide des options utilisées :

  • -wsdllocation : JAX-WS utilise le WSDL au "runtime" et cette balise permet de mettre une annotation JAX-WS pour spécifier où trouver le WSDL. Dans notre exemple, c'est pour le retrouver dans notre projet dans le package par défaut. Par défaut, l'URL ou le chemin utilisé pour la génération de code est utilisé. Ne voulant pas mettre une dépendance avec ce lien dans mon code, je spécifie cette option.
  • -verbose : Permet d'afficher ce que fait l'outil dans la console.
  • -s : Donne le répertoire où mettre le code généré.
Cliquez sur le bouton Run et faîtes un Refresh sur votre projet. Les sources vont alors apparaître dans votre projet. Il ne nous reste plus qu'à implémenter notre classe de service. Une classe peut être supprimée, celle du client, à savoir AddNumbersService.

Implémentation du service

Une interface a été générée (org.example.duke.AddNumbersPortType). Nous allons l'implémenter. Pour cela, on créé une classe org.example.duke.AddNumbersServiceImpl qui implémente cette interface. On rajoute la décoration JAX-WS pour exposer cette classe sous forme de Web Service à l'aide de l'annotation @WebService avec en paramètre l'interface exposée : @WebService(endpointInterface="org.example.duke.AddNumbersPortType").
Il reste à ajouter du code dans nos méthodes et nous aurons terminé l'implémentation. Voici ce que cela peut donner :


Note : J'ai rencontré dans certain cas, des erreurs de compilation d'eclipse que je n'ai pas su expliquer. En redémarrant Eclipse, aidé d'un petit "clean", j'ai résolu le problème mais cela n'est quand même pas très "clean' ...

Nous avons terminé l'implémentation du service. Il reste maintenant à déployer notre Web Service sous Tomcat à l'aide de Metro. Ceci fera l'objet de la 3ème partie du tutoriel ...

vendredi 28 septembre 2007

Tutoriel JAX-WS - Partie I (Projet Eclipse)

Voici le premier article d'une série pour présenter l'utilisation de JAX-WS avec Metro, Tomcat 6, Eclipse 3.3 et le JDK 6.0.

Introduction

Le nombre de frameworks Web Services en Java EE est assez important avec, pour chacun, un historique plus ou moins lourd. On va retrouver des noms comme Axis (1 et 2), XFire, Apache CXF (pour Celtix XFire, considérée comme la V2 de XFire), JBossWS, ... Depuis quelques temps émerge un standard qui simplifie et uniformise le développement des Web Services en Java : JAX-WS.

Dans la suite de ce billet, on va créer un Web Service (Serveur et Client) avec JAX-WS sous Eclipse 3.3 / Tomcat 6.0 avec le JDK 6.0. Je profite de la sortie de la version 1.0 finale de Metro (Framework Sun Open Source incluant JAX-WS RI/ JAXB et Tango) pour ce mini-tutoriel. L'approche utilisée sera celle du "contract-first" (développement à partir du WSDL).

Pré-Requis

Avant de commencer, il vous faut installer tous les outils :

  • Le dernier JDK 6.0 (si vous avez le 5.0, cela fera l'affaire également).
  • Eclipse 3.3 avec WTP et touti quanti.
  • Tomcat 6.0 (la version 5 ou 5.5 devrait également fonctionnée)
  • Metro (qui inclut JAX-WS et JAXB)
On suppose que tout ces outils sont installés correctement et notamment que, dans Eclipse :
  • Tomcat 6 a bien été configuré dans les runtimes de serveurs
  • le JDK 6.0 est également le JDK par défaut.

Création et configuration d'un projet Eclipse

La première étape va être de créer un projet Web dynamique dans Eclipse.


Lors du "wizard" de création de projet, on veillera à choisir le Tomcat 6.0 avec les valeurs par défaut.

Eclipse créé alors le projet Web dans votre Workspace ainsi qu'une instance de configuration de serveur Tomcat 6 qui nous servira pour tester notre Web Service.

Configuration de notre WebApp avec Metro

Maintenant que nous avons notre WebApp, il va falloir qu'on ajoute les librairies de Metro. Pour cela, il suffit de copier les librairies de Metro (fichiers jar présent dans le répertoire lib de la distribution Metro) dans le répertoire du projet Eclipse WebContent/WEB-INF/lib.
Voici ce qu'indique la documentation Metro sur ces librairies :

mardi 25 septembre 2007

Vente liée OS / PC : un pas en avant ?

La vente liée d'OS (Win...) sur les PC rencontrerait-elle de plus en plus de résistance ?

Un recours en justice vient d'aboutir favorablement pour un consommateur ayant acheter un portable. Il lui aura fallu un an de procédure ...

Cela fait l'objet de quelques news sur pas mal de sites. Voici quelques liens :
J'ai personnellement cherché à acheter un portable sans OS pour y mettre Ubuntu. Je dois dire que c'est assez difficile, encore plus si on veut bénéficier des offres d'entrée de gamme. J'ai eu de la chance de tomber sur une offre HP. Celle-ci n'a tenu que 1 mois sur 3 sites internet uniquement ! Le délai de livraison a été de 2 mois tellement l'offre a suscité d'intérêt !

Ce qu'il y a de pire dans tout cela, c'est que l'industrie informatique ne respecte pas la loi dans cette affaire et qu'il faut faire preuve de pugnacité (c'est le moins qu'on puisse dire) pour être dans son droit.
C'est la même industrie qui s'offusque ensuite que des consommateurs ne la respecte pas en piratant ses licences ou ses produits ...

mercredi 12 septembre 2007

OGM : Conférence/Débat à ne pas manquer

Vendredi 21 septembre (semaine prochaine) aura lieu une conférence/débat animée par Christian Vélot, chercheur en génétique moléculaire à l'unsiversité de Paris Orsay.

J'ai eu l'occasion de visionner une de ses interventions (Vidéos sur DailyMotion : 1ère partie, 2ème partie) et mon avis est que la personne vaut le détour. Je le trouve très didactique et la vulgarisation faite permet de comprendre réellement ce qu'est un OGM.

Si vous êtes dans la région rennaise, c'est un rendez-vous à ne pas manquer. Cela se passera à Gahard (petite commune à 20 km au nord de Rennes) :
Vue globale sur Google Maps
Itinéraire pour ceux qui viennent de Rennes

Voici l'affiche :

mardi 11 septembre 2007

Neuf : Soucieux de l'écologie ??

Ce matin, j'ai reçu un email d'un collègue pour me suggérer de mettre en avant une info suite à un mail reçu de son FAI Neuf. En effet, Neuf vient d'envoyer à tous ses clients un mail intitulé : Information importante sur votre Neuf Box



PCInpact relaye également cette news ... mais sous un autre angle en montrant le message sur le site d'assistance de Neuf :



Le message est effectivement un peu moins "vert" ... On voit qu'effectivement le coté environnement n'est qu'une conséquence du changement et non la motivation de celui-ci ...

Quoi, vous pensez que je ne devrais pas douter de la bonne foie de gens du marketing au niveau écologique ???

mercredi 5 septembre 2007

Pb encoding d'une page Web

Je viens d'être confronté à un petit souci d'encoding avec Firefox.
Pour résoudre mon petit souci, j'ai été obligé de "sniffer" le réseau avec wireshark ...

Voici quels étaient les symptômes.Mon application web me fournit une page HTML avec la balise suivante :
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Jusque là, tout est normal. Ma page comprend la balise qui va bien pour indiquer au navigateur qu'il faut s'attendre à avoir du contenu ISO-8859-1.

Mais voilà, l'algorithme de Firefox trouvait un encodage UTF-8. Tous les accents de la page et autres caractères spéciaux se font la malle :((

Une capture d'une requête HTTP réseau m'a permis de voir que la requête renvoyée par le serveur contenait un en-tête ayant une incidence significative ;-) pour mon problème :
Content-Type: text/html; charset=UTF-8
Effectivement, en vérifiant la configuration de mon serveur HTTP apache, je m'aperçois que l'encoding par défaut a été défini à UTF-8 à l'aide de la directive :
AddDefaultCharset UTF-8
Sur mon serveur Ubuntu, cela se trouve dans le fichier /etc/apache2/conf.d/charset
Pour résoudre mon problème, je n'ai eu qu'à mettre cette balise en commentaire. De cette manière, la gestion de l'encoding est déléguée à l'application.

mercredi 29 août 2007

Sortie officielle de GWT 1.4

La version 1.4 de GWT est sortie hier officiellement et GWT n'est plus considéré par Google comme étant en Beta.

Pour ceux qui veulent découvrir ou se mettre à GWT. Voici les quelques liens importants pour commencer :

jeudi 23 août 2007

Retour de congés ... et quelques news en vrac

Ca y est les vacances sont terminées ...

Que de nouvelles pendant mon absence. En voici juste une petite sélections :

V2.0 de Geronimo
Le serveur d'application Geronimo de la fondation Apache vient de sortir en version 2.0 ... ou plutôt 2.0.1 (petit souci de sécurité de dernière minute). Il s'agit d'une version Java EE 5.0 avec notamment l'apparition de Apache CXF (fusion de Celtix et XFire) en plus de Axis2 ...

V2.0 de JasperReport
Je m'intéresse au sujet du reporting. Cette news me sautent donc aux yeux. Je n'ai pas encore eu le temps de regarder ce qui se cache derrière cette nouvelle version.

V1.0 beta de RedHat Developper Studio
Le nouvel outil de développement de RedHat (Basé sur Eclipse) est en cours de finalisation. Il s'agit d'une fusion de Exadel Studio avec les plugins JBoss Tools. A suivre ...

Dell sort des PC (laptop et desktop) sous Ubuntu en france
Ce n'était pas une nouveauté pour les "ricains" mais c'est l'est pour nous. Il y a quelques temps, j'ai essayé d'acheter un portable sans Window$ et cela n'a pas été simple. Maintenant, vous pouvez directement l'acheter avec Ubuntu pré-installé ... Encore un effort Mr Dell pour faire évoluer les possibilités de la machine ...


mardi 17 juillet 2007

Grenellorama





Eh bien, je découvre un nouveau blog fort intéressant : le Grenellorama.

Celui-ci est mis en place par L'Alliance pour la Planète, composée de plus de 70 associations environnementales (Amis de la Terre, Ecologie Sans Frontières, Greenpeace, WWF-France ...) .

Le premier billet ne semble pas montrer une discussion sans arrière pensée du ministère de l'écologie ...

A suivre donc avec attention !


[Edit 20/07] : Les associations écologiques ont envoyés un courrier au ministère pour demander une audience en urgence compte tenu des "difficultés" de démarrage des réunions ... A suivre de très près donc !

mardi 10 juillet 2007

Electricité verte : Qui choisir ?

Je suis un peu en retard sur mes billets. J'en ai plein à faire mais je manque de temps ...
Pour celui-ci, le sujet correspond à l'actualité sur la "libéralisation du marché de l'énergie".

Depuis le 1er juillet et pour les particuliers, il est possible pour le gaz et l'électricité de choisir un autre fournisseur que EDF ou GDF. Ceci était déjà possible depuis quelques années pour les entreprises, associations, professions libérales, ...

Comme d'habitude, on a su faire simple ... en gardant (temporairement) une notion de tarif régulé/règlementé (ie. prix fixés par l'état pour le gaz et l'électricité).
Pour changer de fournisseur, il faut quitter cette notion de marché régulé sans retour arrière possible. C'est ce point que l'UFC Que Choisir dénonce en incitant les gens à ne rien faire ... Les arguments sont très orientés "porte-monnaie" ... Les arguments sont intéressants mais je ne m'étendrais pas sur ceci et me focaliserais par la suite uniquement sur le coté écologique de la chose.

Du point de vue écologique, nous avons effectivement l'opportunité de faire un choix en tant que consommateurs : Celui de consommer de l'électricité verte (ie. à base d'énergies renouvelables). Ce choix est l'occasion de montrer notre volonté d'aller vers de l'énergie renouvelable ... tout en se rappelant que l'énergie la plus verte est celle qu'on ne consomme pas !

Il existe plusieurs offres d'électricité verte mais toutes les offres ne se valent pas ... En effet, on retrouve dans certaines offres de l'énergie qu'on produisait déjà (gros hydraulique) et faire le choix de certaines offres ne va pas forcément dans le sens de la promotion des énergies propres. Il y a effectivement des lacunes sur les certificats verts (ne prennent pas en compte l'impact écologique et la politique environnementale). Pourquoi payer plus chère une énergie si on n'a aucune garantie d'objtectif de réduction de notre empreinte écologique ? C'est pour répondre à cette question que le Label EVE a été mis en place par le CLER et WWF. Pour le moment, seul Enercoop dispose de ce label.


Le comparatifs "ecolo-watts" de greanpeace met en évidence ceci. Un rapport complet explique les critères du comparatif. Voici un résumé en image :



J'espère vous avoir amener quelques éléments de réflexion ...

Laurent

mercredi 27 juin 2007

Test de performance IHM Web

Dans la série outils de test, je découvre un nouvel outil Open Source de "Web Load Testing" : WEBLOAD. Cet outil est passé en open source récemment, peut-être pour lui redonner un second souffle ...
En outil équivalent commercial, il y a l'incontournable LoadRunner (de Mercury) qui est très puissant mais également très cher ...

Phase 1 : le scénario

L'objectif de ce genre d'outil est d'enregistrer un scénario de navigation d'un utilisateur à l'aide d'un browser Web classisque. Ce scénario peut alors être customisé pour mettre un peu d'aléa, simuler plusieurs utilisateurs avec plusieurs profils, ... Bref, tenter de rendre le scénario crédible par rapport à une utilisation réelle de production.

Phase 2 : les tirs de bench

Une fois le scénario obtenu, vous pouvez simuler un grand nombre d'utilisateur et l'outil enregistre le comportement de la plate-forme. Vous analysez ensuite les résultats pour voir si votre application supporte la charge voulue ...

Phase 3 : l'analyse

C'est à ce moment que vient une phase qui peut-être longue d'analyse, de tuning système, applicatif, ... pour mieux exploiter les ressources de votre machine. Il n'est pas rare de voir les temps de réponse augmenter alors que le CPU du serveur plafonne à 5 ou 10 % ! La solution dans ce cas n'est certainement pas d'augmenter la puissance du serveur ...

Ensuite on répète les phases 2 et 3 pour vérifier que les modifications apportées suite à l'analyse ont un effet bénéfique ...
Si vous êtes pas trop bon, le nombre d'itération peut être important ... C'est un métier le bench !

WebLoad


Pour revenir au nouvel outil énoncé au début du billet, vous pouvez le téléchargez sur sourceforge.
Le site de webload montre des demos (en flash) et des screenshots de son outil.

En Open Source, les outils concurrents que j'ai eu l'occasion d'utiliser sont :
  • OpenSTA : Gros inconvénient d'être uniquement disponible sous Windows (je suis sous Ubuntu ...). Il est assez performant en injection et riche en fonctionnalité mais il est parfois instable. Il n'a pas évolué depuis 2 ans ...
  • L'incontournable JMeter : Fait en Java, il est portable sur n'importe quelle plate-forme et dispose d'un grand nombre d'utilisateur. Il a l'avantage de pouvoir s'intégrer facilement dans une chaine d'intégration continue, permettant ainsi de suivre les évolutions des performances en même temps que j'ajout de fonctionnalités.
  • L'inconnu Tsung (anciennement IDX-Tsunami) : Développé à l'origine par Idealx, cet outil m'a impressionné par sa puissance d'injection. Il n'est pas très "user friendly" car il faut aimé la ligne de commande et édité des fichiers XML mais sur mon portable (Dell Latitude D505, 1.7 GhZ), j'ai réussi à dépasser les 1000 requêtes par seconde ...
  • The Grinder : Outil que je connais mal mais dont on m'a dit du bien. Il semble très riche en fonctionnalité. BEA ne semble pas très loin derrière ...
  • Le Microsoft web application stress tool que j'ai utilisé il y a longtemps maintenant. Bien sûr, cet ouil ne fonctionne que sous environnement Microsoft ...
  • En bien d'autres qui ne me viennent pas à l'esprit !
Dès que j'ai un peu de temps, je teste ce nouveau venu ... Peut-être l'occasion d'un nouveau billet !

jeudi 21 juin 2007

Outil de tests fonctionnels d'IHM Web

Vous avez commencé à utiliser des outils de test de type JUnit pour réaliser des tests de non régression et/ou mettre en place une plate-forme d'intégration continue.

Dans une application Web, on ne peut se contenter de tester uniquement des services métiers, seulement in a fait qu'une partie du boulot.

Qu'est-ce qui assure que lorsqu'on a fait un changement sur un service métier, il n'y a pas un impact sur une page de notre application Web ?

Le test de la partie présentation est est donc également important.

Comment tester la partie présentation de manière automatique ?

Dans cette question, je parle uniquement de tests fonctionnels et non de tests multi-navigateurs de présentation du genre mon cadre est décalé de tant de pixels sur IE et pas sur Safari ou Firefox ...

Il existe quelques outils pour tester les IHM Web et je suis tombé sur cette vidéo Google présentant l'outil Selenium :


D'autres outils existent comme : Sahi, FIT, Watir, FitNesse, ...

Je n'ai pas testé l'ensemble de ces outils de manière approfondie mais, après quelques tests basics, Selenium me semble être le plus souple ayant entre autre pour qualité :
  • Scénario facile à générer grâce à une extension Firefox
  • Pas sectaire au niveau OS : Windows, Linux et Mac OSX (ben oui, c'est important pour moi cela ...)
  • Pas sectaire non plus en terme de langage : Java, .NET, Perl, Python et Ruby
  • Compatible AJAX
Vous n'avez plus qu'à essayer ;-)

lundi 18 juin 2007

OGM : Mais Monsanto NK603 et MON863 sur la sellette ...

Après avoir assisté en France à une "comédie quasi burlesque" de nos politiques (ex-ministre de l'écologie et ministre de l'agriculture) sur la non-interdiction du mais transgénique MON810 (cf. PS en bas de ce post), nous voici avec un nouveau pavé dans la marre des OGM :

Le CRIIGEN (organisme indépendant) vient de sortir une nouvelle étude sur le Mais NK603 à la suite de celle sur le Mais MON863 montrant des risques sérieux de toxicité ...
Voici quelques liens pour vous informer :
Combien d'études faudra t'il pour que nos politiques ouvrent les yeux et arrêtent d'écouter les lobbies de l'agriculture

PS : Cet évènement a eu lieu suite à un interdiction récente du MON810 en Allemagne s'ajoutant à la liste des pays où ce maïs est proscrit : l'Autriche, la Grèce, l'Italie, la Suisse, la Hongrie et la Pologne... Je parle de comédie mais malheureusement, il n'y a rien de comique ...

Les Logiciels Libres sur LCI ...

Je relaye une news de Tristan Nitot (President de Mozilla Europe) dont le Standblog fait parti de mes lectures quotidiennes ... pour l'aider à faire péter le compteur de téléchargement des podcasts sur LCI ...

Le magazine Plein Ecran passé ce week-end sur LCI avait pour sujet les logiciels libres. Les podcasts sont disponibles :
  • Sur le portail LCI
  • En téléchargement de fichier MPEG4 :
On y parle du dernier évènement sur Paris (Paris Capitale du Libre) avec un reportage à la clef. Ceci ne pourra que faire plaisir à, je l'espère, un de mes nouveaux et nombreux lecteurs (je l'espère en tout cas), appelé biologeek

Globalement, c'est l'aspect des logiciels libres pour le grand public qu'on retrouve et c'est assez intéressant ...

vendredi 15 juin 2007

Rencontres GWT 2007

Pour ceux qui ne connaissent pas GWT, il s'agit d'un framework pour développer des IHM Web "full Ajax" promu par Google. GWT signifie Google Web Toolkit. Les applications Web développées par Google utilise ce framework, Gmail par exemple.

Google a eu la bonne idée à la fin 2006 de rendre Open Source son framework. Il a dépassé récemment le millions de téléchargement et semble avoir un bel avenir.

Les sites de référence application-servers et dotnetguru s'associent avec TV4IT et developpez.com pour créer un nouvel évènement : Les rencontres GWT 2007

Je me suis inscrit et espère faire parti des "élus" chanceux car le nombre de place est limitée.

Rendez-vous donc le 4 juillet à La Défense

mercredi 13 juin 2007

Batch avec Hibernate ...

Voici une problématique à laquelle j'ai été récemment confronté. Mon problème était de faire un batch java
  • pour importer des données dans une base de reporting
  • pour consolider ces données pour préparer les rapports
Dans un premier temps, avec les mots clés Java et Base de données, je me suis naturellement tourné vers MySql (de base sur mon Ubuntu) et Hibernate.

Je fais ma petite recherche sur Internet et trouve plusieurs moyens de réaliser des batchs. Voici les pointeurs que j'ai retenu :
Au final, j'ai opté pour une solution simple, l'utilisation de l'objet ScrollableResults pour lire mes quelques 100000 lignes et l'ajout de l'option batch-size=30 dans mon fichier de mapping pour limiter le nombre de requêtes insert (hibernate faisant des insert par paquets de 30).

Au final, voici un bout de code réutilisable pour l'utilisation de l'objet
ScrollableResults :
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();

Query query = session.createQuery("from TableData t where ...");

ScrollableResults results = query.scroll();

while (results.next()){
// Récupération des données et exploitation
TableData tableData = TableData (results.get()[0]);
...
// Ajout de données consolidées
// => requêtes insert par paquet par Hibernate
...
session.saveOrUpdate(element);
...

}
results.close();

tx.commit();
session.close();

Si vous avez d'autres suggestions, n'hésitez pas à laisser un commentaire ...

mardi 5 juin 2007

La maison des negawatts

Maintenant que vous êtes au point sur les systèmes de chauffage et la production d'energie pour la maison (cf. billet précédent du livre Guide des énergies vertes pour la maison), il vous faut, pour vous guider sur vos actions de tous les jours, un livre qui illustre la démarche des négawatts : La Maison des [néga] watt, toujours aux éditions Terre vivante

Voici sa couverture :


lundi 4 juin 2007

Guides des énergies vertes pour la maison

Après la voiture et l'electro-ménager, vous pouvez vous intéresser aux énergies vertes ...

J'ai lu en décembre dernier un excellent ouvrage sur le sujet qui synthétise ce qu'il existe aujourd'hui comme source d'énergie renouvelable. Je vous le conseille vivement à la lecture. Ce livre est aux éditions terre vivante. Voici la couverture :

Guide Top Ten WWF-France / CLCV

Un premier billet spécial dédicace pour Alexis ;-)

A tout celui qui veut s'équiper en lave-linge, congélateur, frigo ou voiture. Un excellent point de départ est :

le Guide Top Ten : http://www.guide-topten.com/

Il s'agit d'un site qui fait un comparatif avec une vue écologique sur la consommation et les nuisances (pollution, bruits, ...).

vendredi 1 juin 2007

Et hop, un blog de plus dans la blogosphère !

Bonjour et ...

Bienvenue au lecteur itinérant qui lira mes news sur les sujets qui m'intéressent.
Coté professionnel, je suis architecte Java EE. Coté personnel, j'ai une certaine sensibilité pour l'écologie. Ces 2 sujets sont tellement présents chez moi que des collègues m'aurait volontiers acheter un T-shirt ayant comme inscription "Ecolo Geek" ... J'ai donc repris ces 2 termes dans le titre de ce blog comme un clin d'oeil à cette anecdote ...

Les sujets seront donc probablement :
  • L'informatique
    • avec des sujets assez techniques sur le monde Java EE
    • avec des news sur les logiciels libres que j'utilise quotidiennement
  • L'écologie en général
A bientôt dans mes prochaines news ...

Laurent