lundi 29 juin 2009

Le design pattern Interpreter

Le design pattern Interpreter offre une représentation objet de la grammaire d'un langage.
Vous voulez en savoir plus, en voici une description succinte, avec un diagramme UML.LienMais vous trouverez ici, un article plus détaillé avec le code d'un parser expliqué de bout en bout.

Les bugs dans Java

L'erreur est humaine, on peut donc penser que notre JDK préféré n'est pas exempt de bugs.
Vous pouvez trouver la liste des bugs qui ont recu le plus de vote sur le site de Sun.
Pour n'en citer que quelqu'uns :
- Semantics of external process is not defined in JLS
Ce bug regroupe de nombreux problèmes entre processus.
- ClassLoader.loadClass() throws java.lang.ClassNotFoundException: [Ljava.lang.String; in JDK 6.0
- Control-C ne termine pas les processus Java "forké"(w2k, wnt)

Ce ne sont pas forcément les 3 premiers de la liste, ce sont ceux qui m'interpellent le plus.

jeudi 25 juin 2009

Stresse ton appli

JConsole permet d'obtenir pas mal de stats, mais Apache JMeter, permet de configurer des groupes de Thread pour jouer plusieurs fois des requêtes HTTP.
Une petite étape de configuration de JMeter, et du browser, et on devrait pouvoir s'en sortir.

C'est un peu confus, car je découvre JMeter et je n'ai pour l'instant jamais eu à l'utiliser.
Vous voudrez donc sans doute avoir plus d'infos, ca se passe .

Développement IPhone

Vous venez d'acquérir votre nouvel iPhone, vous en êtes plutôt fier, et vous vous dites, tiens si je développais une petite application pour voir comment ca marche.
Après vous être enregistrer sur apple dev center, vous avez télécharger l'ide et le SDK(une image qui fait plus de 2.5Go), vous vous dites et maintenant ?
Et bien lancez vous dans l'apprentissage d'objective C, et suivez l'article qui vous donnera quelques pistes.
Bon courage!

P.S : celui qui c'est exécuter le SDK sous Linux m'intéresse ;)

mardi 23 juin 2009

lambdaj - gérer vos collections d'une manière différente

Ils vous arrivent souvent d'avoir à traiter des collections.
Meme avec les évolutions du jdk, et le foreach, vous trouvez cette tâche répétitive.
Et bien pensez à lambdaj.

Juste un exemple pour vous donner envie d'aller voir ce que c'est, comment faites vous pour affecter une valeur à tous les objets d'une liste ?
Voici une nouvelle manière de le réécrire avec lambdaj :

List<Person> personInFamily = asList(new Person("Domenico"), new Person("Mario"), new Person("Irma"));
forEach
(personInFamily).setLastName("Fusco");

Ca marche avec le tri, la récupération d'un des membres des objets de la liste, bref, à découvrir, ce sont peut être des petites choses comme ca qui font gagner du temps.

dimanche 21 juin 2009

Les patterns de securité

Quel framework va bien pouvoir nous aider à sécuriser nos développements ?
3, 2, 1... SPRING Security, yeah!
Trève de plaisanterie, je crois qu'on pourrait passer une vie entière à apprendre tout ce que Spring permet de faire. Cette fois-ci, voici une vidéo de présentation (en anglais) des patterns de sécurité, et les dix dernières minutes présentes quelques-unes des annotations utilisé par Spring security.
Vous ne souhaitez pas regarder cette vidéo, mais vous voulez tout de même vous informez, regardez la description des patterns sur le coresecuritypattern.

Have fun

Faire un jeu en JavaFX

JavaFx 1.2 est sorti il y a quelques semaines déjà, et on peut remarquer une certaine augmentation des performances.
Ainsi, certains choisissent cette technologie pour rapidement créer des jeux simples. Leur choix est détaillé ici.
On remarquera dans cette nouvelle version, la sortie d'un vrai plugin pour eclipse, même si Netbeans reste l'environnement le plus approprié pour le développement.
Cette sortie s'accompagne aussi d'une liste de widgets qui facilite le développement, qui devient aussi simple qu'une appli Swing.
Vous découvrirez ici les 10 fonctionnalités phares et après avoir lu tout ca, puisque vous serez conquis, dirigez vous le site officiel et ses nombreux tutoriels.

mercredi 17 juin 2009

7 étapes pour corriger un bug

Debugger est une étape plus que fréquente en programmation. Corriger des anomalies est une grosse partie du travail.
L'article décrit 7 étapes pour corriger une erreur, et d'après l'auteur, devenir un meilleur programmeur.
Les étapes sont :
- Identifier l'erreur (la reproduire et valider le scénario de reproduction)
- La trouver (grâce aux logs, et au debugger)
- Analyser
- Prouver l'analyse
- Couvrir les effets de bords (par des tests unitaires)
- Corriger
- Valider

Et voila, ne reste plus qu'à appliquer ces méthodes.

mardi 16 juin 2009

Ca y est, on sait! Opera Unite is coming

Opera créait le buzz depuis plusieurs jours. Avec une seule page où il était marqué qu'ils allaient réinventer le web.
Tout le monde se posait nombre de questions, et la réponse est apparue aujourd'hui.
Voici les mots de Lawrence End, product analyst pour Opera Software :

"Opera Unite est une technologie unique qui permet a chaque ordinateur ou périphérique sur lequel tourne Opera de devenir un serveur web. En d'autres mots, votre ordinateur (qui fait tourner Opera Unite) est partie intégrante de la toile, plutôt que de simplement interagir avec lui, et c'est quelque chose que tout le monde peut utiliser. Avec Opera Unite, chaque utilisateur , même non-technicien, peut mettre à disposition du contenu directement depuis son pc, grâce a des applications intuitives.
Avec Opera Unite, on donne une chance aux développeurs de produire des applications (connues sous le nom de Opera Unite services) qui lient directement l'ordinateur des gens ensemble, donc vous pouvez être connecté avec un ou plusieurs amis en même temps. Tout se passe via le navigateur, aucun autre logiciel ne doit être téléchargé, et ca marchera partout ou Opera fonctionne (Windows, Mac, Linux, les nouveaux modèles de téléphones portables et autres périphériques). Opera fournit la platforme et vous fournissez les applications, la seule limite de vos créations est votre imagination."

Et bien que de promesses, en gros un serveur web à l'intérieur du navigateur!
Attendons de voir ce que ca va vraiment donner à l'usage.

L'article original et beaucoup plus complet est disponible ici.
Le site officiel d'Opera Unite, c'est par .

Spring Security 3.0.0M1

Une nouvelle release de Spring Security est sortie, et cette page vous montre comment l'utiliser et ce qu'il apporte.
Il est aussi intéressant de remonter sur ses articles précédents, puisque l'auteur à commencer une application qu'il appelle Spring Finance, pour gérer les comptes de la Famille Simpsons, tout en utilisant les nombreuses possibilités du framework Spring.

Vous voulez apprendre linux ?

Ca y est vous avez fait le grand saut. Plus de windows sur votre PC, vous êtes passé à Linux.
Peu importe la distribution, Ubuntu, Debian, Fedora, Mandriva et consort vous ont séduits.
Une fois installé, vous arrivez à faire les choses de la vie courante, aller sur internet, ouvrir un document Word et l'imprimer. Bref, c'est génial!

Tellement génial que vous vous voulez aller plus loin encore dans l'apprentissage de votre nouveau système d'exploitation. Ne cherchez plus, une liste de tutoriaux est mis à votre disposition.

lundi 15 juin 2009

Patcher un programme

Si vous vous demandiez comment patcher un programme dont vous n'avez pas le code source.
Et bien sur cette page, on vous explique la marche à suivre.
Amoureux de l'assembleur et du debug, bon courage!

Sortie Sonar 1.9

On l'apprend sur linuxfr, Sonar 1.9 est sortie.
Cet outil permettant d'obtenir des métriques sur un code source Java. Facile à regarder, un peu moins à comprendre, ils ont décidé de réécrire la partie relative au calcul.
Toutefois, même si cette version apporte beaucoup d'améliorations, le moteur de calcul a été ré-écrit. Ce qui pourrait poser problème si vous souhaitiez faire un simple upgrade.
Il sera donc plus simple de partir d'une nouvelle installation.

jeudi 11 juin 2009

Incompatibilité entre Subversion 1.6 et 1.5

Je pense que Subversion est le système de gestion de versions le plus utilisé dans le monde Open source. Sa dernière release (1.6.2) est tout récente elle date du moi de mai 2009.
Seulement la version 1.6 ne semble pas rétro compatible à 100% et certains rapportent les problèmes qu'ils ont pu rencontrer.
Le problème sera d'autant plus important si votre client SVN, comme Tortoise, n'est pas en adéquation avec la version de votre serveur.

mercredi 10 juin 2009

Une introduction simple à SOA

Cet article est traduit de l'anglais. Vous trouverez l'article original ici.

Les entreprises utilisent des systèmes informatiques afin d’améliorer leurs opérations, en terme de productivité, de justesse, de sécurité, de coût, etc. (bien sûr, certains de ces points ne sont pas interdépendants). Mais le problème est qu’il n’y a rien de prédéfini sur la manière d’utiliser ces systèmes. Et si les logiciels ne sont pas utilisés correctement, vous n’en verrez jamais le bout ou vous rendrez vos opérations plus complexes et inefficaces.
Ce qui arrive fréquemment c’est que ce sont des parties individuelles et isolées du business qui seront automatisées en utilisant un système informatique. Ca peut aussi être des parties étrangères comme la relation client, le management RH, l’inventaire, tout comme des parties plus petites et plus spécifiques. Les entreprises peuvent utiliser des systèmes commerciaux comme les CRM, SCM et les systèmes de contrôle d’inventaire pour automatiser certaines de ces parties. Elles peuvent utiliser des systèmes développés en interne ou externalisés pour des tâches business plus spécifiques. A la fin, on obtient des systèmes indépendants qui fonctionnent isolément pour exécuter des tâches propres à l’entreprise. Cette méthode fonctionne bien et peut très bien introduire des améliorations dans le processus métier. Mais si on y réfléchit bien, il y a un fort potentiel pour plusieurs améliorations, qui ne peuvent être atteinte qu’en allant une étape plus loin. C’est d’intégrer les systèmes existants en les faisant interagir.Comment peut-on en arriver là ? Il existe beaucoup de systèmes développés par différents éditeurs ainsi que des systèmes propres, concus pour un besoin particulier. Eventuellement, ils ont des interfaces différentes et différents formats de donnée. Comment pouvons-nous établir un flux de contrôle/données parmi les systèmes pour les faire fonctionner entre eux. Attendez, c’est la qu’SOA peut vous aider! Alors, comment SOA peut être utilisé dans un environnement particulier qui varie selon la nature du problème, les besoins d’évolutions et bien d’autres facteurs. D’une manière simple, il n’y a aucune règle fixe sur la manière de l’utiliser. Mais, nous allons utiliser un exemple simple pour expliquer comment appliquer SOA. Considérons une librairie en ligne. Elle a un site web pour parcourir et commander des livres, un inventaire, un système d’expédition, de paiement, etc. Une façon simple de concevoir ce système de vente de livres est de créer un programme orienté web (on pensera aux JSP/servlets), qui accèdera aux systèmes externes et exécutera les opérations métiers. L’un des problèmes de cette approche est que le programme orienté web doit accéder à chacun des systèmes en utilisant une interface spécifique, qui requiert des modules client séparés pour chacun de ces systèmes. Et s’il y a besoin d’effectuer un simple changement sur une opération, il faut faire des modifications et redéployer l’application. La pire des parties arrive bientôt. Considérons que nous voulions créer un autre processus qui utilise l’application. Alors, il faut en écrire une nouvelle application. Même si, nous étions parti sur une application de type 3 tiers, en séparant l’interface de la logique métier, il n’y aura aucune différence. Cette Situation est illustrée ci-dessous.


Comment SOA peut faire évoluer ce scénario ? A la première étape d’SOA, nous avons besoin d’identifier les unités de fonctionnement de notre systèmes afin d’en faire des services. Pour simplifier, on peut dire que chaque système (inventaire, paiement, etc…) est un service simple. Mais dans la vie courante, on pourrait identifier plusieurs services au sein d’un seul ou, exposer des fonctionnalités de plusieurs systèmes comme un seul service. Une fois les services identifiés, on doit les implémenter comme des services standards. Une façon de faire, la plus recommandée, serait de créer des web services. Il existe beaucoup de produits qui vous aideront à créer et déployer des web services et à automatiser ce processus à plusieurs niveaux. WSO2 Web Services Application Server peut être très utile dans cette phase d’implémentation de SOA. Ces web services devraient remplacer l’ancien système (en cachant leur complexité interne) et exposer, les fonctionnalités attendues ainsi que leur définition. Une fois cette étape franchie, nous disposons d’un ensemble de services, dont la définition des fonctionnalités est connue (en utilisant WSDL) et qui communique en utilisant des protocoles connus (comme SOAP).

La prochaine étape est de les faire marcher ensemble pour exécuter des opérations métier. Pour cela on peut utiliser les Business Process Management Systems (BPMS). Un processus métier se définit en spécifiant comment contrôler le flux entre les différents systèmes (et utilisateurs) et les données utilisées en entrée et sortie de chaque système. Une fois que le processus métier est défini, on peut le déployer dans un BPMS qui l’exposera en tant que service. Donc, la seule chose que notre interface web a à faire est d’appeler le web service dans notre BPMS avec les paramètres requis. De plus, il existe plusieurs solutions de BPMS, qui peuvent être utilisés pour mettre en place cette solution. Particulièrement, le WSO2 Business Process Server fournit nombre de fonctionnalités pour simplifier le déploiement et la gestion des processus métier.

Maintenant, examinons comment cette approche basée sur SOA améliore le processus par rapport aux anciennes méthodes. Premièrement, nous avons standardisé les interfaces de chacun des systèmes. Cependant, d’autres systèmes peuvent communiquer avec les notre grâce au même protocole (même modules client). Et leur fonctionnalités sont définies dans un format prédéfini (WSDL), donc n’importe quel système externes peut comprendre ce qu’ils font. Puis, nous avons bougé la logique métier vers un BPMS. Les processus sont définis en utilisant des fichiers plats (fichiers textes) dans le BPMS. Il est donc très facile de changer et redéployer les processus métier selon les demandes de changements. La plupart des BPMS disposent d’interfaces graphiques pour amplifier la simplification de ce processus. L'introduction d'une nouvelle activité économique est également plus simple dans cet environnement. Il faut seulement écrire un nouveau processus et le déployer dans le BPMS. Il sait déjà de quelle manière communiquer avec les systèmes existants (puisque ce sont des webservices) et toute l’infrastructure déjà en place. Ceci est décrit dans le diagramme ci-dessous.




C’est un exemple simple de la manière dont SOA peut vous aider à améliorer vos opérations. Comme il est dit plus haut, l’application d’SOA varie selon des scénarios et des conditions.

mardi 9 juin 2009

N'utilisez plus les archetypes maven

Allé premier billet après le retour de vacances, youh ouh!
Les archetypes maven créent des projets maven dont la structure est assez vieillote.
Toutefois les archetypes disponibles via codehaus respectent des standards plus récents.

Si vous voulez en savoir plus, regarder cette page.