08 novembre 2008

ça bouge autour de m2eclipse

L'intégration de maven sous Eclipse est un sujet qui a pris .. un certain retard si on compare à NetBeans ou Idea. La faute (sans doute) à la gueguerre entre Sonatype et Exists, les deux sociétés qui emploient des core-développeurs de maven, et qui supportent chacune un projet concurrent (m2eclipse vs q4e).

Dans le monde opensource on a coutume de dire que la concurrence est bénéfique. Seulement dans ce cas, chacun développe grosso-modo les mêmes fonctionnalités, et sur la base de la même plateforme à quelques détails techniques près.

m2eclipse remporte pour ma part un court avantage (mais ce n'est qu'un avis parmi tant d'autres) : les échanges que j'ai pu avoir avec les développeurs montrent une grande réactivité et une réelle volonté d'ouverture.

Dans mon cas, j'ai voulu ajouter le support de CheckStyle à m2eclipse; autrement dit, une extension m2eclipse qui va lire la conf de maven-checkstyle-plugin et la "traduire" pour configurer eclipse-cs, le plugin Checkstyle pour Eclipse.

Le bon point de départ, c'est que la plateforme Eclipse est conçue pour ce type de greffe de fonctionnalités (les fameux plugins) et m2eclipse ne déroge pas à la règle. Il y a donc une API très simple pour venir participer à la phase de configuration d'un projet Maven sous Eclipse.

La mauvaise surprise, c'est que cete API est un peu trop simple même dès qu'on a besoin de manipuler des concepts maven (classpath, résolution de dependances, ...). Comme il faut en plus découvrir comment se programme le plugin eclipse qu'on désire supporter, ça fait beaucoup de choses. A moins d'être un pro d'Eclipse + un guru de Maven, on en bave !

De rapides échanges avec Eugene Kuleshov m'ont convaincu que :
  1. je ne suis pas tout seul dans cette galère, et toute l'équipe de dev de maven est prête à apporter aide et conseils
  2. le seul moyen d'améliorer les choses est de "communiquer" pour que chacun apporte sa petite pierre à l'édifice.
Voici donc ma petite pierre :
  • une page du Wiki qui décrit le principe et les pratiques à connaître.
  • un ticket Jira pour permettre à chaque contributeur qui est contraint de réinventer l'eau chaude de "mutualiser" ses efforts.

02 novembre 2008

un processeur Quinte-core



Après le dual-core, puis le quad-core, voici une nouvelle génération de processeur qui va venir motoriser nos PCs de demain : le quintuple coeur.

Issu d'une colle-laboration active entre IBM et Intel, celui-ci utilise des coeurs extrèmement simplistes par rapport aux Pentiums IV. Cette (relative) simplicité permet de réduire la complexité du processeur et au final de bien mieux l'exploiter. L'ensemble permet de répartir la charge entre les 5 coeurs de manière optimale via un algorithme de à-la-rache-cétait-moi-le-premier.

Les résultats parlent d'eux même :

Seul bémol, ce nouveau processeur nécessite une carte mère spécifique équipée d'un slot 3D, donc réservé dans un premier temps aux machines haut de gamme.

La bête en images :



22 octobre 2008

mon ami Word

Mon projet actuel utilise activement la modélisation UML pour sa conception. Nous avons donc une panoplie complète de diagrammes, et bien sur des documents au format Word à produire, respectant le formalisme maison et une structure stricte.

L'outil de modélisation UML utilisé n'ayant pas le bon goût de supporter notre format de sortie, nous sommes passé par une solution (si on peut dire) d'une simplicité impressionnante :
  • export du modèle UML en XMI (compter 30 minutes)
  • lancement d'une transformation XSL:FO pour produire les documents en RTF (compter 15 bonnes minutes)
  • utilisation d'une macro word pour la mise en forme (compter 15 bonnes minutes par document)
Des optimisations sont très probablement possibles, mais dans tous les cas c'est très long...

Comment automatiser tout ça, pour éviter de passer des heures devant son PC à attendre l'étape suivante ?

Pour la transformation XSL, j'ai crée un petit plugin maven basé sur FOP. Ce n'était pas le plus difficile

Pour le reste ... je suis tombé sur le projet JACOB, qui permet de manipuler en Java l'API COM de Windows, et donc de faire de l' "automation" d'applications sous Windows. J'ai donc réussi à :
  • lancer word,
  • ouvrir le fichier RTF,
  • copier/coller son contenu dans le document contenant les macros,
  • ... qui sont ensuite exécutées
  • et enfin sauvegarder le résultat dans le répertorie cible (ouf!).
Il faut encore que j'essaie d'utiliser le même mécanisme pour piloter l'extraction XMI, qui n'est pas "légère" elle non plus.

Comme quoi, l'automatisation de la chaîne de production n'est pas impossible (parfois juste un peu délicate). Et au final, on pourra avoir une version complète des docs en cohérence avec le modèle UML deux fois par jour.

17 octobre 2008

Androïd : déjà dispo ?

Vous voulez tester Google Androïd avant tout le monde ? Vous êtes un Geek pur et dur du genre incurable ?
Il sera disponible dès le 10 novembre ici...
pour ceux qui ont un buget Geekitude solide !

22 septembre 2008

Lors du Google Developer Day, une session (la plus technique) était consacrée à Chrome, et plus précisément à son moteur JavaScript très sophistiqué visant à obtenir (enfin) de très bonnes performances en JavaScript. La concurrence avec SquirrelFish (projet similaire de WebKit) a été évoquée, et il est surprenant que Google, tout en investissant sur WebKit, n'ait pas vu venir ce projet et préféré faire cavalier seul.

Quoi qu'il en soit, SquirrelFish relance la guerre des bench et des records avec une nouvelle version "extreme", encore plus mieux. Google v8 va t-il réussir à surenchérir ?
Qu'est ce qu'on gagne dans tout ça ? Tout d'abord, la démonstration que du code JavaScript PEUT être rapide. Si l'équipe de Firefox doit se tâter pour choisir son futur moteur JS, c'est surtout du côté d'Internet Explorer que la pression va monter :

Jusqu'ici l'utilisateur lambda n'avait pas trop de raison d'abandonner son IE, installé par défaut (le "par défaut" étant un atout d'une puissance sans égal). Parmi les quelques curieux qui ont entendu parler de Firefox aux infos comme record du logiciel le plus téléchargé, 1% (?) pourront aller jusqu'à l'installer pour voir. Actuellement, ça ne changera pas leur vie et il garderont leurs habitudes. 

Mais demain ? Si Firefox lance et exécute leur webmail "orange" (ou alice ou neuf ou ...) en trois fois moins de temps que leur vieux IE, là ça pourrait donner des idées. IE8 n'a donc pas d'autre choix (IMHO) que de développer un moteur JS raisonnablement performant.

Qui gagnera la course à la rapidité du JavaScript ? Les utilisateurs !



Google Developer Day 08

Pour ceux que les technos de Google intéressent, je publie un compte rendu du Google Developer Day 2008.

16 septembre 2008

Breizhjug #1 : le succès au rendez-vous

La première réunion du BreizhJug a été une réussite. Avec près de 80 personnes présentes pour suivre la conférence de Didier Girard, le succès a été au rendez-vous.

Didier nous a démontré ses qualités de conférencier, dynamique et enthousiaste, et l'assistance semble avoir grandement apprécié sa prestation vu les nombreux encouragements que j'ai reçus ce matin.

Merci à tous pour votre soutien !

Seul ombre au tableau : j'avais prévu de filmer la session pour la diffuser sur parleys.com, et j'ai lamentablement merdé (disk full) :-/

... ce qui me motive pour faire mieux la prochaine fois, avec une conférence Maven 2 que je co-présenterais avec Raphaël Piéroni. Infos et inscriptions sur www.breizhjug.org

11 septembre 2008

GWTx


GWTx est un projet sur Google Code qui vise à proposer des extensions pour GWT, dans le but de les voir (peut-être) un jour intégrées dans GWT.

Je viens de rejoindre l'équipe de dev ... enfin, Sandy McArthur m'as plutôt passé la main faute de temps libre pour mettre à jour son projet avec la sortie de GWT 1.5.

Au programme, une remise à niveau pour assurer la compatibilité GWT 1.5 / Java 5, et une collaboration avec le projet GwToolbox pour émuler les APIs Java "utiles", comme par exemple les annotations JPA, nécessaires si on veut réutiliser les entités du domaine métier directement dans GWT.

l'effet "11 septembre "

Ce mattin, les locaux de Cap étaient bizarrement "aérés", afin d'évacuer la fumée...

incendie ? Non : des piles dans le micro-onde de la cafétéria.
Vengeance ? Attentat ? Bêtise pure et dure ?

Une nouvelle idée pour Al Qaida : poster sur le forum Leroy Merlin une "astuce" pour recharger les piles à moindre coup, par micro onde interposé. De nombreux blessés à attendre, même plus besoin  de kamikaze. En plus, ça peut relancer le marché du micro-onde.

La bêtise humaine va donc bien plus loin que la fiction.

03 septembre 2008

Google astique ses chromes


Google a sorti cette nuit son navigateur "Google Chrome".
Basé sur le moteur de rendu WebKit (utilisé également par Safari) il apporte :

d'une part un modèle multi-processus, basé sur le constat qu'on utilise aujourd'hui le navigateur pour exécuter des applications, et non plus pour visualiser des pages. Une application = un processus, c'est logique et cela stabilise le navigateur (étanchéité entre applications).

d'autre part un moteur d'exécution JavaScript basé sur une machine virtuelle crée par Google DK, "V8". Compilé plutôt qu'interprété, le code JS est nettement plus rapide, comme l'a déjà démontré le moteur SquirelFish (cf mon billet sur le sujet). V8 semble particulièrement efficace d'après les premiers benchs, et je confirme l'impression générale de rapidité.

Pour découvrir en image les idées derrière Chrome, consultez la BD éditée par Google : http://www.google.com/googlebooks/chrome/. L'accent porté sur les tests et l'intégration continue associée est intéressant.

Basé sur WebKit, il ne devrait pas y avoir de problème de compatibilité majeure. Peut-être aura t-on tout de même droit à une combinatoire dédiée dans la prochaine version du compilo GWT.

Quel intérêt ?

Pour Google, dans l'esprit "the browser is the platform", une application dans le navigateur doit être au moins aussi rapide, stable et démarrer aussi vite qu'une application installée. 
  • Pour la rapidité, le passage par la compilation du JavaScript est la clé. 
  • Pour la stabilité, le modèle 1 onglet = 1 processus est la solution poussée par Google. 
  • Pour le temps de démarrage, il suffit d'utiliser le mode "raccourci sur le bureau" de chrome pour comprendre : on lance gMail en un temps record, avec un "navigateur" réduit à sa plus simple expression.
Résultat : gMail exécuté sous chrome en mode "application" écrase tous les clients de messagerie connus - ce n'est que mon point de vue ;-)

Il est juste domage que gMail n'exploite pas Gear (à moins que j'ai raté quelque chose?).

01 septembre 2008

GWT 1.5

Google Web Toolkit version 1.5 sort aujourd'hui en version finale - juste à temps pour faire la pub de la première réunion du BreizhJug !

Il sera sous peu disponible dans le référentiel Maven, et je vais en profiter pour mettre à jour le plugin associé du projet Mojo.

26 août 2008

eee

Après des années à envisager l'achat d'un portable, l'essai le temps de SpringOne d'un magnifique 17" (plus transportable que portable), j'entre enfin dans le monde nomade avec un eee-pc 900A : 300€ tout juste pour un concentré d'informatique qui tient presque dans la poche.

Pas question d'installer Eclipse sur cette mini-machine, qui malgré ses 1.6GHz reste très en dessous des PC modernes (mais déjà plus puissant que celui que j'ai à la maison ;-)

Le système linux utilisé est très convivial, même pour un total novice, assez bien francisé, et seul le clavier posera problème (c'est vraiment tout petit !)

Ce billet est donc écrit sur un clavier de 20cm de large, avec de nombreuses fautes de frappe, mais je vais probablement m'habituer.

21 août 2008

Plain Old Binary Services


Les services web sont venu pour nous sauver de tout ces protocoles binaires, propriétaires et non-interopérant qui ont pourri l'informatique depuis tant d'année (alleluïa).

Pourtant, les performances n'étant pas toujours au rendez-vous, et le réseau véhiculant une quantité d'entêtes soap WS-TrucMuch qui fait peur, de nombreux petits malins cherchent à améliorer les choses.

Permière solution : SOAP 1.2 étant basé sur InfoSet (une norme de représentation pour un arbre de données) et non sur XML (une façon textuelle de représenter ce même arbre), rien n'interdit de véhiculer le message SOAP encodé en binaire par FastInfoset. Non seulement le message est très fortement réduit en taille, mais le parsing est nettement plus efficace.

Seconde solution : SOAP over TCP (développé par SUN), disponible pour .NET. Il s'agit cette fois de simplifier la couche de transport, puisqu'on s'est donné comme base de ne pas en dépendre. Donc autant faire au plus simple, et attaquer en TCP - j'attend de pied ferme SOAP sur IP ;-)

En combinant les deux, les perfs deviennent probablement exceptionnelles... Un format d'encodage binaire, basé sur un équivalence ASN.1 du schéma XML, et un transport sur TCP - je ne sais pas pour vous, mais moi ça me rappelle furieusement Tuxedo ou Corba !

Qui réussira à nous faire passer RMI/IP pour du "service web" ?

Google Developer Day '08


Mon inscription - bien que tardive - au Google Developer Day 2008 a été acceptée. Cette journée atelier/conférence autour des outils Google pour les développeurs rencontre un succès qui dépasse largement ses capacités d'accueil, d'ou un passage quasi obligé par la liste d'attente ...

Après l'ouverture de ses APIs de programmation, qui lui permettait de promouvoir ses sites, Google passe la vitesse supérieure avec GWT, Google App Engine, Androïd, plus de nouvelles APIs (Google Visualization, YouTube).

A son habiture, Google essaie d'être présent partout. Nouveaux monopole à la Microsoft crieront certains ! L'avenir nous le dira... mais pour l'instant tous les outils/services de Google sont gratuits !

18 août 2008

GPL : la license des pros

La licence GPL a fait couler beaucoup d'encre, et canalisé quelques frayeurs - auxquelles j'ai moi aussi participé - sur son aspect "viral". Symbole d'un idéalisme du libre, elle s'est longtemps heurtée à la réalité du monde économique purement guidé par des considérations lucratives.

Aujourd'hui, retournement de situation, la GPL devient l'arme numéro 1 de l'entreprise désireuse de porter son outil fétiche. Quelques exemples au hasard :
  • L'excellent librairie EXT-JS
  • SpringSource Application Platform
  • Le framework de Lyria
  • et plein d'autres que je vous laisse découvrir...
L'idée derrière tout ça ? Fàce aux géants du logiciel et à des développeurs Java qui misent beaucoup sur l'opensource, la licence GPL assure à une société de ne pas se voir canibaliser son code (et ses bonnes idées) tout en touchant un public aussi large que possible.

S'il s'avère que SpringSource à raison avec sa "plateforme", à mi-chemin entre OSGi et JEE, IBM ne pourra pas lui piquer - même par morceaux - pour l'intégrer à Websphere 9.

Retournement amusant de situation pour cette licence pas comme les autres ;-)

des Logs pour GWT

Lors d'un développement GWT, le mode Hosted permet de deboguer à loisir depuis Eclipse, ce qui est extrêmement puissant si on compare aux solutions existantes pour le développement JavaScript.

Mais le debogueur ne fait pas tout, et l'utilisation de logs est un complément indispensable.

Petit coup de pub donc pour la librairie gwt-log, qui propose une interface de type log4j pour produire des logs.

Premier point, le code des logs sera totalement supprimé lors de la compilation par GWT pour la combinaison log_level=OFF. Ceci permet donc de ne pas pourrir l'application de production avec des logs. Une "variante" peut être compilée en mode log_level=DEBUG pour le développement, et l'ajout d'un simple paramètre à l'URL permet de la sélectionner - merci la gestion combinatoire du compilo GWT !

Second point, gwt-log sait envoyer ses logs vers à peut près tout ce qu'il est possible d'imaginer :
un [div] de debug, le shell du mode Hosted, la sortie standard (i.e. la console d'Eclipse), ou la console de Firebug pour les amateurs ... Chacun prendra ce qui lui convient le mieux !

En attendant que le projet log4gwt du même auteur murisse, c'est une solution simple, utilisant le mécanisme de compilation de GWT avec intelligence.

13 août 2008

GWT et JPA, main dans la main ?

J'ai raté la sortie d'Hibernate4Gwt en version 1.1. En plus de corriger quelques bugs, cette version est une mise à niveau pour GWT 1.5.

Pour ceux qui ne connaissent pas, H4GWT permet d'utiliser les entités Hibernate/JPA comme données dans une application GWT, ce qui comporte pas mal de complications techniques, habilement résolues par Bruno Marchesson.

Avec le support de Java5 dans GWT, et une "émulation" des annotations JPA, il devient possible d'utiliser le même modèle métier depuis la couche de persistance jusqu'à l'IHM web. Tout le code de type "contrôles et validation" peut alors être placé dans les setters du modèle, c'est à dire là ou il est finalement le plus logique de le placer !

Je n'ai pas pu tester personnellement (mon projet actuel ne s'y prête pas) mais l'idée me plaît beaucoup et me fait définitivement apprécier le concept phare derrière GWT : un langage et une plateforme pour toute la chaîne de développement.

inutile, donc indispensable


Je viens de découvrir le dernier jeux en Flash, très bien réalisé : labrute.

On s'y combat entre avatars, en mode "spectateur", autant dire un combat de lancé de dés. C'est donc totalement inutile mais absolument incontournable. Si vous avez deux minutes à perdre, venez vous frotter à mon avatar http://cyberloof.labrute.com/

Originalité du jeu (tout de même), la possibilité de revoir les combats passés, ce qui nous offre quelques perles, comme un Microsoft vs Apple.

Je regrette juste de ne pas pouvoir coller mon chocobo préféré comme personnage...
A quand un Final Fantasy en flash ?

31 juillet 2008

Sprechen sie Deutsch ?


Je pars en congé pour une semaine en Allemagne.

Sachant que j'ai fait Allemand première langue, avec 7 années de cours pendant lesquels mes profs se sont acharnés pour me faire comprendre le gérondif, ai-je une petite chance de savoir aligner deux mots ?

Déjà à l'époque j'étais très mauvais en Allemand (j'ai préféré présenter l'option "dessin" au bac), alors aujourd'hui il n'en reste plus grand chose.

Une pub pour des cours de langue dit "il vaut mieux apprendre le français que chercher à comprendre un Français qui parle anglais", j'ai peur de ne pas faire entorse à la règle :-/

update :

De retour d'Allemagne, après une semaine formidable, accueilli dans une famille d'une gentillesse inouïe, j'ai quelques kilos à perdre - la bière Allemande est vraiment excellente - et le retour à la dure réalité est un peu rude ...

Ce jumelage a été une expérience géniale, que je vous recommande si votre ville en propose un, et les 14h de car (!) sont vite oubliées.

règlement à l'amiable

Hier soir j'ai passé deux heures dans les locaux de l'Ordre des Architecte pour négocier une résolution à l'amiable du conflit qui m'oppose à Mme B... sur la rénovation de ma maison.

De mon point de vue, 11% de dépassement du budget, un retard conséquent (2 ans depuis le lancement du projet), une méthode purement pifométrique, une comptabilité pitoyable, et enfin une communication minable pour une transparence nulle.

Le médiateur qui s'est chargé du dossier a été très bon, ramenant le calme et ne cherchant pas à enfoncer l'un ou l'autre tout en soulignant les torts respectifs. On s'en sort donc avec une sorte de "50/50" de marchand de tapis, mais au moins l'affaire est close.

Heureusement que ce genre de situation ne nous arrive jamais à nous, Architectes Java ;-)