[couverture de Linux Magazine 116]

Belgian Perl Workshop 2009

Article publié dans Linux Magazine 116, mai 2009.

Copyright © 2009 - Erik Colson

[+ del.icio.us] [+ Developers Zone] [+ Bookmarks.fr] [Digg this] [+ My Yahoo!]

Chapeau

Après le succès du Belgian Perl Workshop 2007 organisé par le groupe de mongueurs Bruxellois, l'évènement vient d'être renouvelé. Cette fois ce sont les mongueurs flamands qui l'ont organisé, mené par Dirk De Nijs et Chris Vertonghen. Les présentateurs sont venu des quatre coins d'Europe (Angleterre, Slovaquie, Russie, France, Luxembourg, Pays-Bas et Belgique) voire même d'Israël et d'Amérique ! Le workshop a eu lieu à Louvain, petite ville estudiantine à 20 km de Bruxelles, et a attiré près de 50 personnes. Étant donné le nombre d'orateurs, le workshop occupait deux locaux.

Samedi 28 février

Comme pour le workshop 2007, les organisateurs ont choisi un samedi pour cet évènement. Dirk De Nijs a ouvert la conférence remerciant tout les participants et sponsors. Le workshop démarre sur les chapeaux de roues avec moins d'un quart d'heure de retard. Les intérêts du public sont suffisamment partagés, ce qui procure des salles remplies de façon équilibrée. Pour moi, le choix fut aisé et j'ai opté pour la salle dédiée à Catalyst, outil de développement web très abouti.

[Ingy döt Net et le chameau Meeltje]
Brian Ingerson (Ingy döt Net) et le chameau Meeltje

Yuval Kogman - Discovering KiokuDB

Le premier orateur est Yuval Kogman, venant d'Israël. Il est l'un des développeurs de KiokuDB, un moteur de stockage d'objets. Le projet est jeune (la première publication sur CPAN datant de décembre 2008) et est très prometteur. La sauvegarde d'objet est une alternative à la sauvegarde de données relationnelles comme le permet DBIx::Class. Les deux forment une couche entre votre programme et la base de données. KiokuDB supporte actuellement Berkeley DB et DBI.

La différence principale entre les deux approches réside dans l'absence de schéma dans le cas de KiokuDB. Les objets sont définis par l'utilisation du framework Moose et KiokuDB sait dès lors exactement ce qui doit être sauvegardé. Il vous offre des méthodes pour chercher, lister, détruire, etc. les objets. Les relations entre objets sont également sauvegardées. Cela permet par exemple de retrouver le lien entre l'objet client et l'objet facture et de cette façon il est aisé de retrouver toutes les factures adressées à un certain client.

Eriam Schaffter - Good old desktop apps with wxPerl

Étant moi-même adepte de wxPerl, je soutiens entièrement Eriam lorsqu'il proclame « wxPerl rocks! ». Les applications desktop ne sont pas mortes (d'ailleurs le navigateur web en est une). wxPerl apporte la compatibilité physique entre les différents systèmes d'exploitations. Le rendu de votre application semble natif sur Linux, Mac OS X et même Windows.

S'il existe une boucle d'évènement dans wxPerl, Eriam nous expose une alternative : POE::Loop::Wx. Ce module ouvre une multitude de possibilité aux programmeurs wxPerl par l'ajout de composants POE. Le nombre de ces composants sur CPAN est d'ailleurs impressionnant.

Si vous souhaitez faire du développement RAD, il existe l'outil wxGlade, écrit en Python. Comme d'autres programmeurs wxPerl, je n'utilise pas (plus) cet outil pour coder un interface. Cela me permet de maintenir plus facilement le code avec des outils tel que Git. wxGlade a néanmoins le grand avantage de vous permettre de comprendre le fonctionnement de wxPerl en étudiant le code généré par cet outil.

Pour être complet, Eriam mentionne également le module XRC qui permet de générer un interface utilisateur par fichier XML. Si ceci semble une approche intéressante, il est important de tenir compte du coût en consommation de ressources de celle-ci, ayant comme résultat une perte de rapidité lors du chargement de l'interface.

Coder en wxPerl peut ressembler à du code en C. En effet, wxPerl est wrappé autour de wxWidgets qui est un framework écrit en C. Le module wxPerl::Styles (disponible sur CPAN) encapsule cela. Forcément, le rajout de cette couche aura lui aussi une incidence sur la consommation de ressources.

Abigail - Regular Expressions and Unicode Guru

Superbe présentation pour ceux qui ne savaient pas que l'Unicode et les expressions régulières font mauvais ménage. Cela dit, Abigail m'a fait réaliser que mes connaissances en expressions régulières méritent une remise à niveau : \h, \v, \p{isDigit}, [[:upper:]], l'importance de l'emplacement d'un tiret dans les plages n'en sont que quelques exemples.

Pour ceux qui n'ont pu suivre le flux impressionnant d'exemples et pour les absents, un lien vers les slides de cette présentation devrait être publié sur le site de la conférence.

[Dirk de Nijs, Chris Vertonghen et le chameau Meeltje]
Dirk de Nijs, Chris Vertonghen et le chameau Meeltje

Chris Vertonghen - Perl & Amazon SQS, SimpleDB, S3

Après une courte démonstration des AWS (Amazon Web Services) par Simone Brunozzi, c'est Chris qui nous explique l'approche de ce service par Perl.

AWS est utilisé entre autre pour le stockage de données ainsi que pour le streaming permettant de soulager votre serveur web. Il existe multiples implémentations de l'API disponible sur CPAN. D'après Chris, Net::Amazon::S3 est le module le plus abouti. Ce module est également maintenu régulièrement. Ce module inclut des méthodes pour accéder à une corbeille et d'y déposer, lire, détruire des fichiers.

Pour le streaming le module préconisé par Chris est Amazon::SQS::Simple.

Matt S. Trout - Catalyst

Matt Trout est l'un des développeurs de Catalyst ainsi que de DBIx::Class. Il a animé l'après-midi en parlant du framework MVC (Model View Controller) Catalyst.

D'emblée, Matt lance le ton en annonçant que le but d'avoir développé Catalyst est de pouvoir créer et gérer des sites complexes et que c'est pour cette raison qu'il est inutile de le comparer avec RoR. Son atout est d'ailleurs de permettre de garder un code structuré et clair. Le rythme du développement de Catalyst reste soutenu et Matt nous explique que la version 5.8 sera modulée autour de Moose et ce dans le but d'obtenir un code encore plus maintenable.

Malgré cette évolution, les développeurs souhaitent garder une compatibilité avec des anciennes versions. C'est d'ailleurs une des exigences primordiales. Lors d'une mise à jour, vous ne devriez recevoir aucune erreur. Si cela devait arriver, veuillez le rapporter car cela doit être corrigé. Matt ajoute qu'il serait tout de même audacieux d'appliquer une mise à jour sur un système en production sans garder la version qui fonctionnait préalablement dans un répertoire différent. C'est une approche qu'il déconseille vivement.

Écrire du code pour des sites internet importants ou complexes nécessite l'écriture de tests. Les tests permettent non seulement d'être certains que votre code fonctionne correctement mais également que des comportements non-souhaités soient le résultat des modifications apportées dans le futur. Pour le test de sites web il recommande le module Test::WWW::Mechanize::Catalyst disponible sur CPAN.

[Matt Trout]
Matt Trout

Catalyst met des scripts à votre disposition pour créer de nouvelles fonctionnalités dans votre application. Ces scripts génèrent non seulement le squelette pour le type de fonctionnalité souhaité, mais également les fichiers de tests accompagnant cela. Tout cela dans le but d'obtenir toujours du code propre et maintenable.

La seule partie que Catalyst ne peut faire pour vous, est de documenter votre code. Cela est important. Grâce à une bonne documentation, vous saurez encore dans le futur ce que vous avez voulu obtenir dans votre code. Penser toujours que votre application « vit » et qu'elle grandira nécessairement !

Matt S. Trout - Catalyst & AWS

Pour ce qui concerne Catalyst, l'utilisation de services AWS tel que SimpleDB et SQS ne sont que des model backends. Les modules pour y accéder sont disponibles sur CPAN. Matt n'a rien d'autre à ajouter à cela excepté que vous ne devriez jamais faire confiance au cloud.

Que se passerait-il si AWS mourait ? Qu'en est-il des backups ? Pouvez-vous tester les sauvegardes de AWS ? La réponse est non et d'ailleurs personne ne garantit que vos données seraient restaurables. Vous devez garder vos données vous-même ET vous devez tester la restauration de vos sauvegardes !

Qu'en est-il de la connectivité et de la performance ? Que se passerait-il si AWS avait un problème ? Cela est improbable mais cela peut arriver. Dans ce cas vous devez pouvoir servir vos données vous-même.

Pourquoi AWS peut-il être utile ?

AWS vous offre du CPU et du CACHE. Utilisez-les pour servir vos données en les synchronisant vers AWS. Vous garder les données chez vous et vous faites les sauvegardes. C'est cela qu'il vous faut. La redondance des données via AWS est en fait également une autre copie de vos données utilisable au cas où votre système devait périr.

[Liz Mattijsen - Lightning talk]
Liz Mattijsen - Lightning talk

Clôture

Le Belgian Perl Workshop s'est clôturé par plusieurs présentations éclair et une vente d'objets. Les bénéfices éventuels du workshop seront reversés à YEF qui est également sponsor pour ce workshop. Merci à tout les organisateurs, orateurs et participants pour cet inoubliable journée !

Liens

Auteur

Erik Colson, Bruxelles.pm, Vlaanderen.pm.

[IE7, par Dean Edwards] [Validation du HTML] [Validation du CSS]