
La conférence Européene de référence sur le Software Craftsmanship se tiendra cette année à Milton Keynes, en Grande Bretagne, non loin de Londres, ce Jeudi 26 mai. Aprés un conférence 2010 réussie, réunissant les pionniers du mouvement Craftsmanship, cette année s’annonce tout aussi prometteuse.
Ordinateur portable avec IDE obligatoire pour cette journée qui s’organisera autour de
4 tracks en paralléles, essentiellement des sessions hands-on. On va voir du code.
Lire la suite de cet article »

Pour le quatrième volet de notre projet de plateforme de musique libre, NoThunes, nous allons ajouter les dernières fonctionnalités du backlog original :
- En tant qu’internaute, je dois pouvoir écouter un morceau
- En tant qu’internaute, je dois pouvoir rechercher des morceaux par mots-clés
Pour cela, nous passerons par l’utilisation de 2 plugins très pratiques :
- Sound Manager, qui offre des tags GSP pour ajouter facilement des fonctions de media player dans les vues
- Searchable, qui apporte des fonctionnalités de recherche basées sur Compass (et donc indirectement sur le moteur Lucene)
Suivez le guide …
Lire la suite de cet article »

Retour sur notre plateforme de musique en ligne préférée. Comme promis, dans ce chapitre, nous allons ajouter une pincée de 2.0 à notre application. Nous allons donc nous pencher sur la mise en oeuvre d’AJAX à la mode de Grails.
- Listes déroulantes dynamiques avec JSON
- Mise à jour de fragments de page avec modèles GSP
Vous allez pouvoir découvrir l’intégration d’AJAX dans Grails, et à quel point la vie du développeur est facilitée. Les exemples d’utilisation sont simples mais déclinables à l’infini.
Lire la suite de cet article »

Continuons le montage de notre projet OpenSource propulsé par Grails. Au dernier épisode, nous avions démarré le projet, façonné les styles CSS, mis en place la sécurité, mais aussi et surtout, rédigé les classes du modèle de données. Aujourd’hui nous allons leur donner vie en ajoutant des fonctionnalités aux utilisateurs membres.
Nous nous attarderons sur :
- la gestion du profil utilisateur
- la génération des écrans CRUD de nos données
- leur adaptation à nos ‘règles métier’
- la gestion des upload et download
Ces étapes peuvent paraître triviales à ceux qui ont déjà une expérience de Grails. Cependant, j’ai choisi de les traiter malgré tout. J’ai moi-même perdu trop de temps à chercher des exemples concrets et simples sur la toile pour oser faire l’impasse dessus. Donc, toi qui débute sur Grails, sois le bienvenu.
Lire la suite de cet article »

Les exemples de prise en main du framework Grails ne manquent pas sur la toile. Nous allons tenter de dépasser les Getting started en déroulant la réalisation d’une application web de bout en bout :
- Conception
- Réalisation
- Mise en production
- Evolutions et maintenance
Parce qu’il est toujours plus agréable de travailler sur du concret, nous allons réaliser pas à pas une plateforme de musique libre en ligne, que nous baptisons : Projet NoThunes, en clin d’oeil à une autre célèbre plateforme de musique payante. Tout le code du projet est disponible sur GitHub. Ce projet est donc Open Source mais aussi « Open méthode » puisque je vous ferai partager toutes les étapes de conception/réalisation au travers d’une série d’article. Chaque article sera associé à un tag du dépôt GitHub, pour que tout le monde puisse savoir à quelle version on se réfère.
Bien évidemment il y a plus d’une bonne façon de faire. Ce projet est mené dans une optique d’amélioration personnelle et de partage donc n’hésitez pas à discuter les choix techniques et à fournir des solutions alternatives en commentaire.
Dans ce premier billet, nous allons :
- définir le product backlog du projet
- présenter les classes du modèle
- démarrer notre projet
- mettre en place la sécurité et les classes du modèle
- créer un menu dynamique, différencié par rôle utilisateur
Lire la suite de cet article »
Gérer les modifications d’une base de données est toujours une affaire délicate, que ce soit lors du développement d’une application, pendant le déroulement des tests unitaires et même lors du déploiement en production.
On observe un grand nombre de difficultés, en particulier dans les projets Agile, où les changements sur le modèle de données sont fréquents.
A l’heure actuelle, peu d’outils sont disponibles sur le marché et on pense rarement à les mettre en place sur nos projets. On passe par des solutions « maisons » avec toutes les difficultés que cela peut engendrer.
Tout d’abord, nous ferons un point sur les problèmes posés par la gestion des bases de données, puis nous verrons comment Liquibase, outils de refactorisation, peut nous aider à les surmonter.
Nous continuerons par la description de ses caractéristiques et fonctionnalités principales et par les différents moyens de l’exécuter.
Un petit exercice pour se familiariser avec cet outil viendra conclure ce billet.
Lire la suite de cet article »
Voici la liste des billets les plus lus sur ce blog en juillet, août et septembre :
Tout au long du cycle de vie d’une application J2EE, il est nécessaire de posséder des traces de qualité :
- durant le développement, afin de suivre l’exécution pas à pas et de détecter d’éventuelles anomalies.
- durant la recette, afin de corréler anomalies fonctionnelles et exécution du programme.
- durant l’exploitation, afin de surveiller la « bonne santé » de l’application.
Mais obtenir des traces de qualité n’est pas un exercice trivial. C’est pourquoi nous vous proposons nos 10 commandements des logs.
Lire cet article »
Spring 2.5 est sorti depuis le 19 novembre 2007 comme nous l’annoncions, il y a quelques temps, dans notre revue de presse. Vous avez comme moi sagement mis à jour vos poms Maven2 vers la dernière release de Spring (normalement et la plupart du temps compatible avec les versions 2.0.x).
Mais avez-vous vraiment profité des nouveautés de cette version en terme de configuration ?
Lire cet article »
Jouer avec les Threads n’est pas trivial. En informatique de gestion, cette difficulté est heureusement masquée par les serveurs d’application et les API spécifiques. La plupart du temps, ils permettent aux développeurs de s’abstraire de ces contraintes et de se concentrer sur le code métier, moins technique. Il arrive pourtant qu’il faille se relever les manches. Certains besoins vous ont certainement déjà poussé à faire communiquer 2 Threads.
Si le développement n’est pas facile, le debug peut devenir une calamité ! La programmation concurrente ne soulève pourtant que 3 types majeurs de problèmes. Faites le sondage autour de vous, les développeurs associent trop rapidement le mot clé synchronize au multithreading sans en comprendre véritablement le fonctionnement. Demandez-leur ensuite de vous décrire l’utilité du mot clé volatile …
Cet article revient sur les grands principes de la programmation concurrente.
Lire cet article »
Tout au long du cycle de vie d’une application J2EE, il est nécessaire de posséder des traces de qualité :
- durant le développement, afin de suivre l’exécution pas à pas et de détecter d’éventuelles anomalies.
- durant la recette, afin de corréler anomalies fonctionnelles et exécution du programme.
- durant l’exploitation, afin de surveiller la « bonne santé » de l’application.
Mais obtenir des traces de qualité n’est pas un exercice trivial. C’est pourquoi nous vous proposons nos 10 commandements des logs.
Une application J2EE possède de nombreux types de logs :
- Des logs purement techniques, ponctuelles, générées automatiquement ou à la demande comme les dumps (ThreadDump, MemoryDump…).
- Des logs provenant de l’environnement d’exécution : logs Système (journaux d’évènements serveur…), logs du serveur applicatif et logs générées par les librairies tierces utilisées par l’application.
- Les logs générées par le code développé pour l’application, que nous désignerons comme logs applicatives, sur lesquelles l’équipe projet a la main.
Nous traiterons quasi exclusivement de ces dernières dans cet article.
Lire la suite de cet article »
Voici la liste des billets les plus lus sur ce blog en avril, mai et juin :
Le XKE (Xebia Knowledge Exchange) de mars a été l’occasion de présenter la démarche d’urbanisation. L’exemple présenté ne suivait pas le déroulement type : une démarche d’urbanisation est adaptée suivant les projets et organisations auxquels elle est appliquée.
Le but de ce billet est de dérouler cette démarche de manière simplifiée. Cela nous donnera l’occasion de définir le vocabulaire employé, et de faire un constat sur cette démarche.
Nous déroulerons l’exemple avec une approche TOP-DOWN, c’est-à-dire que l’analyse commence par la définition de la stratégie pour descendre ensuite au travers des différentes strates du SI. Pour l’exemple, nous prendrons le cas d’une agence de voyages qui achète et vend des voyages.
Lire cet article »
Les tests unitaires ne sont pas qu’une bonne pratique des méthodes agiles, ils sont un véritable pré-requis à la mise en place d’un développement itératif.
Le refactoring et la modification d’une base de code existante, bien que facilités par les environnements de développement actuels, comportent un évident risque de régression, en partie couvert par les tests unitaires.
Vous trouverez dans ce billet nos 10 commandements des tests unitaires.
Lire cet article »
L’annonce de SpringSource a des allures de schisme. Après des années à critiquer la complexité et le monolithisme de Java Enterprise Edition (Java EE), les équipes de Rod Johnson ont franchi le Rubicon et proposent un serveur d’applications Java qui ne reposera pas sur la monolithique spécification Java EE.
SpringSource Application Platform se limite à quelques fragments de cette spécification (principalement Servlet et JPA) assemblés dans un conteneur OSGI augmenté de quelques particularités Spring. Les applications web ne seront plus assemblées sous forme de WAR avec un fichier web.xml mais sous forme de plusieurs bundles OSGI avec des fichiers de configuration Spring.
Lire cet article »
Dans les précédents articles sur Wicket, nous avons exploré les bases du framework. Nous allons nous intéresser maintenant à quelques fonctionnalités avancées comme le templating ou l’internationalisation.
Les mécanismes de templating
Avec Wicket, même le templating est très simple. L’implémentation du templating dans Wicket est très proche de la façon de faire de SiteMesh (au moins pour la partie HTML). La mise en œuvre se fait par des mécanismes d’héritage : Wicket nomme ceci le Markup Inheritance. Prenons un exemple concret.
Lire la suite de cet article »