Archive

Articles taggués ‘tutoriel’

Développer ses propres règles PMD pour Sonar

PMD est un analyseur de code source. Il permet de détecter le code inutile, trop complexe… Il est par exemple intégré à Sonar, qui l’utilise conjointement avec FindBugs (plutôt destiné, comme son nom l’indique, à détecter les sources potentielles de bugs) et de Checkstyle (qui vérifie le respect de règles de codage).

PMD est intégré à Sonar avec un ensemble de règles prédéfinies. Il est cependant possible d’écrire soi-même des règles de détection puis de packager ces nouvelles règles sous la forme d’un plugin pour Sonar. C’est ce que nous allons faire dans cet article.

Lire la suite…

Share
Categories: Non classé Tags: , ,

La pagination facile avec Spring 3.x et jQuery.


Introduction

Qu’est ce que je veux faire ?

Mon objectif principal est la présentation de résultats de recherche sous forme de tableau avec gestion de la pagination. Du grand classique!

Quelles sont mes contraintes ?

  • Pour des raisons de performance et de bon sens, je veux que la pagination soit gérée côté serveur pour éviter de charger entièrement tous les résultats;
  • J’aimerais que la navigation entre les différentes pages de recherche soit fluide;
  • Enfin, j’aimerais en tant que développeur que ça marche et que ça soit relativement beau avec le minimum d’effort.

Comment je vais m’y prendre ?

Comme j’ai envie que ça soit beau sans faire trop d’effort, je pense très rapidement à jQuery.  Après une rapide recherche, j’opte pour un plugin très populaire de présentation de données tabulaires : dataTable. En effet, celui-ci permet en très peu de configuration de gérer la “présentation des résultats paginés” tout en déléguant la gestion de la pagination  au serveur : bingo!

Par contre, si j’opte pour cette solution les résultats à afficher devront être récupérés grâce à des requêtes AJAX. D’un côté ça m’arrange car ça me permet de coller à ma deuxième contrainte, qui était de rendre la navigation plus fluide;  mais d’un autre côté, ça m’embête un peu parce que je n’ai pas envie de rentrer dans les problématiques techniques d’AJAX.

Je fais donc ma petite enquête et me rends compte que Spring 3.x apporte un support intéressant pour AJAX censé faciliter la vie du développeur. Spring et jQuery, je signe sans hésitation et me lance dans l’aventure.
Lire la suite…

Share

Introduction à Spring-Batch

Contexte

Dans le cadre de la refonte d’une application extranet chez un client, j’ai été plus particulièrement chargé du développement des batchs. Les batchs à développer devaient tous réaliser des tâches similaires :

  • transferts FTP de fichiers (upload et download)
  • traitements sur les fichiers ainsi obtenus (redimensionnement d’images JPEG, parsing de fichiers XML)
  • enregistrement des méta-données sur les fichiers ainsi manipulés en base de données.

Dans l’ancienne version de l’application, les batchs étaient développés grâce à un framework interne (vieillissant). J’ai donc recherché des frameworks de batch permettant de remplacer l’ancienne architecture tout en s’intégrant avec les composants utilisés dans la partie web de l’application (développée en Spring et Struts 1).

Choix du framework

Dans un souci de facilitation de la maintenance, le choix de Spring-batch s’est rapidement imposé. En effet, la plupart des composants (DAOs, services) nécessaires pour réaliser les tâches ci-dessus avaient déjà été développés sous la forme beans Spring utilisés par l’application web ; la principale tâche restant à accomplir étant le câblage de ces différents composants. Il était donc plus efficace et plus maintenable de réutiliser les composants existants et de les injecter dans les batchs via IOC.

Le développement a donc consisté à créer les classes composant la partie « front » des batchs et à gérer leur enchaînement.

Le but de cet article n’est pas de décrire de manière détaillée le fonctionnement de Spring-batch. Il s’agit plutôt de réaliser par étapes un petit tutoriel, la documentation officielle de Spring étant très complète mais peu adaptée à une prise en main rapide : http://static.springsource.org/spring-batch/reference/html-single/index.html

Ce tutoriel traitera surtout du développement de tâches pour lesquels un composant de Spring-batch n’existe pas déjà. En effet, ce framework propose des classes permettant de mettre en place rapidement (et généralement en ne manipulant que les fichiers de configuration Spring) des tâches récurrentes dans le domaine des batchs :

  • parsing de fichiers XML pour insertion dans une base de données ;
  • export de données d’une base vers un fichier plat ;

Des exemples fonctionnels pour ces tâches sont disponibles sur le web, notamment dans la documentation officielle ; en revanche, il n’existe que très peu d’exemples de la mise en place de tâches “spécifiques” : dans le cas qui nous intéresse, ces tâches étaient par exemple l’upload/download de fichiers via FTP et de manipulation sur des fichiers images (en tant que fichiers, et donc sans lire leur contenu comme c’est le cas avec des fichiers CSV ou XML plus fréquemment manipulés par les batchs).

Lire la suite…

Share
Categories: Frameworks Tags: , ,

CAS et Grails, sans sarCASmes !

Grails.orgCAS

Propos liminaire

Cet article traite de la cassification d’une application Grails. Ce néologisme pas très catholique, plus souvent employé dans la langue Shakespearienne, est synonyme d’intégration d’une application avec le système d’authentification centralisée Open Source le plus stylé au monde, j’ai nommé : CAS.

Lire la suite…

Share

Menez le web à la baguette avec symfony (3) : refonte des glasses

L’habit fait le moine

ours-pwn3d-glaceBienvenue dans le troisième épisode de la série “symfony, sex and fun”. Si vous arrivez en cours de route, vous pouvez consulter les articles précédents. Pour l’instant nous disposons d’un module bookmark fonctionnel (ajout, suppression etc.) mais qui n’est pas très joli. Voyons comment symfony permet de gérer les vues.

Note : à partir de maintenant, nous allons faire pas mal de modifications dans les fichiers. Je vous suggère de vous munir d’un bon éditeur PHP si vous souhaitez refaire la démarche chez vous. Pourquoi pas Netbeans et son très bon support de symfony, par exemple ?

L’affichage des vues dans symfony suit le design pattern decorator : chaque application dispose d’un layout global, dans lequel on va injecter le rendu du template de l’action appelée (il va venir le décorer). L’approche généralement utilisée dans d’autres projets suit le chemin inverse : on concatène un en-tête, puis le contenu, et enfin un pied de page, mais ni le header ni le footer ne représentent un document HTML valide.

Lire la suite…

Share