Copyright © 2006 - Sébastien Aperghis-Tramoni
Bien que dénommée workshop, cette conférence est de fait très
internationale tant par son organisation (qui alterne chaque année
entre la Norvège, la Suède et le Danemark) que par les orateurs qui
y ont été invités, tels Audrey Tang, Jesse Vincent et Michael Schwern
(qui a donc accepté de laisser WoW de côté pour au moins quelques
heures ;-)
).
Comme il est souvent de coutume, un petit dîner est organisé la veille pour accueillir les personnes qui viennent de loin et aussi, pour les organisateurs, afin de se donner du courage avant le grand saut. Jos Boumans joue à une version grandeur nature de Où est Charlie en essayant de me trouver dans Oslo pour me guider jusqu'au lieu du dîner. S'y trouvent les organisateurs, Salve Nilsen, Trond Michelsen et Dag Asheim, ainsi que certains conférenciers comme Gisle Aas, Jos Boumans et Marcus Ramberg. Salve et Trond présentent un projet sur lequel ils travaillent : une carte détaillée d'Oslo pour Google Earth, liée à un site web connexe pour fournir des informations complémentaires, par exemple les horaires des bus, tramways et métros.
À la fin du repas, le groupe se sépare en deux : une partie, menée par Jos, va chercher d'autres endroits où boire, l'autre va mettre en place les panneaux pour indiquer le chemin d'accès.
Salve a quelques problèmes pour connecter son PowerBook au projecteur. Son écran apparaît, puis laisse place à un écran noir et enfin une guru meditation. Le Nordic Perl Workshop 2006 est officiellement ouvert. Salve présente le sujet de la conférence, Managing complexity, puis donne quelques informations pratiques comme où boire et manger. Il annonce aussi qu'il y aura un barbecue au bâtiment de chimie.
Gisle a travaillé pendant plusieurs années chez ActiveState sur plusieurs
projets comme leur format d'archive PPM. Le sujet de sa présentation est
un autre projet, Perl Bench, qu'il a codé vers 1997-98. Comme son nom le
laisse entendre, il s'agit d'un programme de comparaison de vitesse entre
différentes versions de Perl, qui fonctionne en exécutant un jeu de
microbenchmarks sur chaque version. Il montre des critiques de Jarkko
Hietaniemi et Nicholas Clark qui doutent fortement de la pertinence de ces
résultats. Gisle continue néanmoins d'améliorer Perl Bench et indique
comment il compte utiliser gettimeofday()
et des fonctions récemment
ajoutées à Time::HiRes
, afin d'avoir de meilleures mesures de temps.
Salve remercie Gisle et lui donne une tasse NPW 2006. Il fera de même pour chaque conférencier.
Jesse présente Jifty, « the only web application framework that JFDI
and comes with a pony ». Tout fonctionne grâce à la commande jifty
et Jesse montre les étapes pour créer un petit blog, y compris comment le
censurer avec Regexp::Common::profanity_us
. L'interface fonctionne même
dans Lynx ! Il présente ensuite les internes d'une application Jifty :
Jifty::DBI
, la partie ORM qui cache toute la gestion de la base de données
et fournit même un outil pour les mises à jour; Jifty::Dispatcher
, le
noyau écrit par Audrey Tang ; Jifty::Continuations
, qui promet de faciliter
le développement des applications web :
« The web is built on GOTO
. I prefer GOSUB
».
Les vues sont actuellement basées sur Mason, mais Jesse promet un support
d'ici peu pour Template Toolkit. Jifty fournit enfin un très bon système de
debuggage, y compris pour les templates et le SQL au travers des halos.
Il est tout de même rapide grâce à Apache, Memcached et des modules comme
CSS::Squish
et JavaScript::Squish
. Jesse promet un éditeur de type
wiki pour le futur.
Membre d'une association qui organise des réunions sur l'eXtreme Programming, Johannes commence par présenter la théorie de Barry Boehms sur l'économie des logiciels (mais ne semble pas convaincu de sa pertinence). Il explique ensuite la base du développement agile : découper les projets en petites unités fonctionnelles en se concentrant sur chacune individuellement, écrire un test, le faire réussir ; livrer régulièrement du code testé et qui fonctionne correctement ; enfin, s'adapter aux retours du client.
Il met l'accent sur l'importance d'une suite de tests automatisée et rappelle que si les tests unitaires sont faciles à écrire, les tests d'acceptation sont d'une plus grande valeur. Une suite de tests, en particulier exécutée par un smoker, permet aussi bien d'écrire du nouveau code en TDD (Test Driven Development que de refactoriser de l'ancien. Il précise que ces techniques ont permis à son équipe de retravailler ainsi plus de 500 mille lignes de code réparties sur plus de 400 fichiers.
Jesse brosse l'histoire de RT, détaillant les principales fonctionnalités de chaque version majeure, par exemple le gros travail de refonte interne de RT 3.0 (ce que Jesse appelle I22N, internal rationalisation) et son support pour l'internationalisation, en particulier le chinois, réalisé par Audrey Tang. RT 3.6 apporte aussi son lot de nouveautés : interface refaite en CSS (Jesse montre RT avec un thème gothique), rappels automatiques, page principale personnalisable, champs personnalisés avec support AJAX, graphes, recherche à la Google et bien d'autres. Jesse explique alors qu'il avait promis lors du précédent NPW de fournir Jifty avant Noël. Il l'a sorti le 25 décembre. Mais où est RT 3.6 ? Jesse le publie sous les yeux du public.
Heiko, qui travaille pour l'Institut norvégien de météorologie, explique comment Perl est utilisé pour vérifier le modèle d'un programme Fortan qui brasse des dizaines de gigaoctets de données. Ils utilisent pour cela PDL, qui apporte à Perl une puissance de calcul comparable à celle de Fortran et de C. Chaque objet PDL est un tableau multidimensionnel fortement typé, mais qui se comporte aussi comme un objet Perl standard.
Pour Audrey, « Perl 6 is here today ». Pugs et Parrot sont déjà
disponibles pour l'expérimentation, mais elle promet Perl 6 pour Noël ;-)
Elle présente la pragma feature
qui sera présente dans Perl 5.10 et qui
offrira certains aspects de syntaxe provenant de Perl 6. Elle présente aussi
Moose
, un module qui offre les sémantiques objets Perl 6 en Perl 5, ainsi
que plusieurs modules de Pugs tel Pugs::Compiler::Rules
, et explique
quelques unes des nouvelles fonctionnalités comme les captures nommées ou le
contrôle du backtrack.
Elle montre ensuite pourquoi « tout le monde déteste Spiffy » : le
code est beaucoup trop magique ! La raison est qu'il est basé sur
Filter::Simple
, ce qui est très coûteux et pose de nombreux problèmes.
Mais en utilisant un comportement peu connu de Perl5 (use Machin
cherche d'abord un Machin.pmc avant un Machin.pm), Audrey a écrit
Module::Compile
qui permet de sauver le résultat du filtre dans un
fichier .pmc, d'où des temps de chargement réduits. Cette technique
permet même d'écrire une meilleure version de Filter::Macro
, qui permet
de remplacer une fonction par son code :
use Inline::Module Filter::Simple => "slurp";
Mieux, on peut même exécuter du Perl 6 sur Perl5 !
use v6-pugs;
Ici, -pugs
est en réalité une option du module v6
, et lui indique
d'utiliser Pugs pour transformer le code Perl 6.
Il s'agit de la même présentation qu'Abigail a faite lors de LPW 2005[1]. Gisle Aas lui demande si ces objets sont compatibles avec le debugguer Perl. Abigail avoue qu'il ne l'utilise pas mais pense que non.
Le barbecue prend place dans un atrium du bâtiment de chimie, ce qui donne accès à une grande quantité de neige carbonique (pour refroidir la bière). Comme Jos Boumans demande à Audrey Tang si elle a encore une maison à Taiwan, vu qu'elle voyage beaucoup, celle-ci le rassure et lui confirme que oui, mais que cela peut changer à tout moment vu le contexte politique. Elle indique aussi que sa prochaine étape dans son tour du monde à la Erdös sera à Seattle, chez Microsoft[2]. Jos and Jesse Vincent plaisantent ensuite sur le fait que, comme il n'y a pas de cabale, il n'y aura pas de réunion certains jours pendant les prochains mois.
De l'autre côté, on distribue des goodies Sun : t-shirts Java, DVD OpenSolaris et une amusante batterie additionnelle pour bidules mobiles.
Jonas présente rapidement sa société logicLab, l'un des sponsors de NPW,
puis continue avec son principal produit, logicShop, un moteur e-commerce
basé sur Class::DBI
et PostgreSQL, montrant son fonctionnement et son
architecture. Il prévoit une intégration avec Handel et espère supporter
d'autres langages que Perl (Ruby, PHP).
Qpsmtp est un daemon SMTP écrit en Perl par Ask Bjørn Hansen, un genre
de mod_perl
du SMTP, et qui fournit une API orientée plugin facilitant
l'écriture d'extensions. Fred commence par expliquer le format de
configuration, puis montre comment écrire un plugin pour filtrer des
mails sur leur sujet. Il explique ensuite le concept d'applications SMTP,
par exemple pouvoir prendre des photos avec un téléphone mobile, les
envoyer par mail où un plugin peut les extraire et les poster sur un
site comme Craig Lists ou FLickr. Il donne enfin quelques conseils
comme exécuter son application après tous les autres plugins et juste
avant la queue, ou renvoyer un mail de réponse indiquant si le processus
s'est bien déroulé ou non.
Adam Kennedy a écrit le module Acme::BadExample
pour montrer un exemple
de code Perl qui est syntaxiquement correct mais impossible à exécuter.
Il a promis un mètre vertical de bière à qui pourrait l'exécuter. Or, Jos
aime vraiment la bière... Il explique d'abord le fonctionnement du code
de Acme::BadExample
, puis montre des astuces de syntaxe à peine légales
(comment déclarer puis invoquer une fonction dont le nom n'est composé que
de chiffres). Il montre aussi qu'on peut faire croire qu'un module
est déjà chargé en alimentant le hachage %INC
. Avec un rappel
du fonctionnement de Acme::CodePolice
et de Acme::FreedomFighter
,
il montre que l'on peut modifier dans une certaine mesure le fonctionnement
des fonctions intrinsèques de Perl. Après un peu
d'expérimentation, il a finalement réussi à faire fonctionner
Acme::BadExample
:-)
brian d foy
Le problème de brian
est qu'il maintient beaucoup de modules et qu'il
doit donc traiter régulièrement des problèmes remontés par les utilisateurs.
brian
explique que si déposer du code sur le CPAN est facile, bien le
faire est plus difficile. C'est donc pour automatiser cette procédure qu'il
a écrit Module::Release
et la commande release
qui va avec. Il lui
suffit alors d'exécuter cette commande pour vérifier différents points de
la distribution, exécuter les tests (disttest
), déposer l'archive sur
PAUSE puis sur SourceForge, tagguer la version dans le SCM et enfin l'annoncer
publiquement. brian
compte offrir un support au-delà des modules Perl
par des plugins.
Michael expose dans sa présentation des principes, principalement de bon
sens, dans le but de construire des systèmes (pas seulement informatiques)
qui rendent les tâches plus faciles et comment en règle générale éviter
de pousser les utilisateurs à faire des choses stupides. Il illustre ses
propos avec des exemples sérieux et amusants :
pour configurer son fuseau horaire, tzconfig
sous Unix demande la zone
géographique, ce qui est une interprétation, alors que sous Mac OS X,
il suffit de cliquer son emplacement sur une carte du monde.
Le feedback est un point important des systèmes complexes : cp(1)
n'en fournit aucun alors que scp(1)
oui ; les informaticiens
étaient habitués à détecter les problèmes des disques durs au bruit,
mais maintenant ils sont silencieux ; et si on parle fort dans un
téléphone mobile, c'est que ces derniers, contrairement aux téléphones
fixes, ne fournissent pas le retour de sa propre voix.
Il recommande chaudement la lecture de The Design of Everyday things, dont il s'est inspiré pour préparer sa présentation.
brian d foy
brian
présente CGI::Prototype
, un module qui permet d'éviter le
travail mécanique d'analyse, de validation et de traitement des données
reçues. Il s'inscrit dans la lignée des environnements MVC type Maypole
et Catalyst, mais s'apparente plus à CGI::Application
pour la légèreté.
CGI::Prototype
s'appuie principalement sur Class::DBI
et XML pour
le modèle et Template Toolkit ou XSLT pour la vue, chaque état du contrôleur
se définissant par un espace de nom et un template. Les actions correspondent
donc à des changements d'espace de noms. Un mode sûr est de plus disponible
afin d'éviter toute erreur 500.
Marcus Ramberg dirige les présentations éclairs. Gisle Aas explique
comment ActiveState a contourné une limitation de Perl, qui est qu'il
ne détecte son environnement qu'à la compilation et pas lors de son
exécution, en introduisant le module ActivePerl::Config
qui permet
de surcharger les valeurs de %Config
pour refléter le système hôte.
Kjetil Kjernsmo prend le relais pour présenter des notions de web
sémantique (principalement le RDF) et les modules Perl associés. Il
enchaîne sur Formatter
, une classe de base qui définit une API
générique de formatage. Vient Dmitry Karasik qui parle de DBIx::Roles
,
encore un autre enrobage "simple" de DBI
, puis de Regexp::Log::DateRange
,
qu'il a écrit pour trier des logs SMTP par date et sortir les lignes
entre deux dates. Abigail vient encore râler sur l'incohérence de Perl
concernant le message "%s (...) interpreted as function"
. Anton
Berezin parle de POOP (Pointless Object Oriented Programming) et
présente un hypothétique module pour "corriger" ça.
Vient enfin Audrey Tang qui présente ppencode
, une présentation mise
au point pour YAPC Asia 2006 et adaptée ici pour le NPW. C'est génialement
délirant : l'unfactoring et comment forcer les programmeurs Perl
à écrire du Ruby sont deux des points abordés avant d'en venir au
programme ppencode
lui-même. Regardez la présentation pour tous
les détails ;-)
Salve promet les vidéos ainsi que les slides des présentations. Il distribue quelques prix par tirage au sort. Tous les organisateurs posent pour une photo de groupe, et ils invitent les locaux à joindre Oslo.pm. Salve annonce enfin que le prochain Nordic Perl Workshop se tiendra à Copenhague et clôture NPW 2006.
Je tiens à remercier encore une fois Salve Nielsen et Trond Michelsen qui m'ont aidé à trouver un hôtel et m'ont même voituré à quelques reprises. Combinée au temps exceptionnel (il faisait aussi chaud à Oslo qu'à Antibes) et au très bon réseau de transports en commun de la ville, cette conférence, préparée avec soin, s'est déroulée de manière fort agréable et conviviale et donne clairement envie de venir participer à la prochaine édition.
cf. London Perl Workshop 2005, GNU/Linux Magazine France n°79, http://articles.mongueurs.net/comptes-rendus/lpw-2005.html#h1.3
Rappelons que c'est chez Microsoft R&D que travaille Simon Peyton Jones, auteur de GHC, l'interpréteur Haskell utilisé par Audrey Tang pour Pugs.
Nordic Perl Workshop 2006 - http://www.perlworkshop.no/2006
Les supports des présentations - http://wiki.perlworkshop.dk/2006?TalkSlides
Copyright © Les Mongueurs de Perl, 2001-2011
pour le site.
Les auteurs conservent le copyright de leurs articles.