Retrouvez cet article dans : Linux Magazine 101
Après Paris et Marseille, les Journées Perl se sont déplacées cette fois-ci dans la troisième grande ville de France, et la capitale de la charcutaille, Lyon. Plus précisément, dans les locaux de CPE Lyon (École Supérieure de Chimie, Physique et Électronique), situés à côté du CC IN2P3 (Centre de Calculs de l’Institut National de Physique Nucléaire et de Physique des Particules) qui a fourni un webcast en direct et maintenant l’hébergement des vidéos.
Le jour d’avant, jeudi 15 novembre
Comme bien souvent, la plupart des participants et en particulier les conférenciers viennent la veille afin de se retrouver pour un repas convivial. C’était d’autant plus vrai cette année étant donné que, par manque de chance, la conférence est tombée en plein pendant la grève des transports. Pour oublier ces problèmes et faire découvrir la cuisine locale, les organisateurs ont indiqué l’adresse d’un restaurant où la charcuterie était servie par paniers entiers, assurant une joyeuse ambiance.Premier jour, vendredi 16 novembre
Après un discours présentant les Journées Perl aux nouveaux venus, Philippe Bruhat laisse la parole aux différentes sociétés qui ont sponsorisé l’événement pour qu’elles puissent se présenter et expliquer, pour celles désirant recruter, les profils recherchés.Rafaël Garcia-Suarez – Perl 5.10
Rafaël, pumpking de Perl 5.10, explique quelles seront les nouveautés de cette nouvelle version majeure de Perl 5, attendue depuis plusieurs années. Plusieurs sont d’ailleurs des fonctionnalités importées de Perl 6, telle le defined-or qui va permettre de remplacer du code commeSébastien Aperghis-Tramoni – Vieux Perl et nouveau code
Le public, dans la salle principale
Farceurs, les organisateurs ont placé la présentation de votre serviteur sur comment gérer les vieux Perl juste après celle de Rafaël sur la toute nouvelle version :-)
Il s’agit de la même que celle réalisée à Bruxelles, avec la mise à jour suite aux conseils de Nicholas Clark. Je ne reviens pas dessus, car un prochain article sera consacré à ce sujet.
Laurent Dami – Gestion des procédures judiciaires genevoises
Laurent explique l’utilisation qui est faite de Perl dans le cadre des procédures judiciaires genevoises : un gros applicatif de gestion de ces procédures, écrit en COBOL, est en train d’être remplacé par l’équivalent en Apache/mod_perl/Catalyst. Laurent décrit les technologies qu’ils ont utilisées, en particulier les modules CPAN :Michel Rodriguez – XML::Twig pour les nuls

Jérôme Quelin – Introduction à POE
En complément à l’article publié dans le numéro 100 de GNU/Linux Magazine France, Jérôme présente POE, l’environnement d’exécution multitâche objet Perl. Totalement orienté événements, POE propose une immense quantité de composants de haut niveau et s’interface sans souci avec les toolkits graphiques. Il fait remarquer que si on y perd en performances, cela ne l’empêche pas de supporter une charge de l’ordre du millier de messages par seconde. Il entre ensuite dans le détail de fonctionnement de POE, les différents niveaux d’abstraction, puis montre différents exemples. Je vous renvoie à son article pour une présentation plus complète.Damien Krotkine – RT::Client::Console
Damien commence par jeter des fleurs à RT (Request Tracker), l’outil de gestion des tickets utilisé sur le CPAN et par Perl, mais se plaint de son interface web, jolie, mais un peu lente. Les solutions évidentes de type web scraping ne lui ont pas semblé pratiques et il s’est orienté vers REST. Il rappelle ce qu’est REST : une interface simple à une application web complexe, qui fonctionne avec peu d’opérations, sans états et réutilise les sémantiques HTTP. RT propose une interface REST, et un module existe déjà pour l’encapsuler,Pierrick Le Gall – Génération de code Perl avec Talend Open Studio

Aaron Crane – Faster Regexes : What to do when text matching is your bottleneck
Aaron Crane montre comment optimiser l’utilisation des expressions régulières.
Aaron travaille pour The Register, un site d’informations du net, où il utilise de manière intensive les expressions régulières pour analyser les logs. Il montre le code utilisé, et explique les micro-optimisations déjà en place. Il faut environ 10 microsecondes par ligne de log, mais, comme on parle de plusieurs dizaines de gigaoctets de logs, c’est encore trop. Un problème est qu’il y a des parties plus complexes, comme la détermination du client et du type MIME. Mais, en mettant les résultats en cache, il arrive à doubler la vitesse.
Sur les expressions régulières mêmes, il les créait en concaténant une longue liste de mots fixes (par exemple, les noms des robots web) avec la barre verticale pour créer les alternances. Facile, mais peu optimal. Comme il n’utilise pas véritablement les expressions régulières, les modules comme Regexp::Trie ou Regexp:Assemble, quoique excellents, ne sont pas ici d’un grand secours. Il a donc écrit le module XS Text::Match::FastAlternatives, qui s’avère 90 fois plus rapide que l’expression régulière habituelle !
Jonathan Worthington – Perl in secure web environment
Jonathan commence par un peu de théorie et définit la sécurité comme la protection de données (qui ont de la valeur) contre une personne mal intentionnée. Les applications interagissant avec les utilisateurs en recevant et en traitant des données de ceux-ci, l’application doit les valider pour n’accepter que les données valides, et non juste vérifier de potentielles attaques. Plusieurs modules existent déjà pour réaliser cette tâche (Visite du centre de calcul

Second jour, samedi 17 novembre
Laurent Dami – Data::Domain – validation d’arbres de données
Laurent présente son moduleJonathan Worthington – Parallel New World
Jonathan cite certains grands nombres comme la vitesse de la lumière, qui est aussi la vitesse limite de l’information, et explique les limitations intrinsèques des ordinateurs actuels. Pour les contourner, le moyen est d’exécuter les opérations en parallèle. Par exemple, on peut appliquer une même opération à un ensemble de données homogènes. Il rappelle les notions de base sur les threads, mutex et sémaphores, et fait remarquer que les threads ont un coût (d’ordonnancement, de synchronisation, de communication) et que cela n’apporte un gain que si l’on dispose d’autant de processeurs. Sans compter les problèmes de verrous où il est facile de tomber dans un interblocage. Par ailleurs, il faut savoir utiliser le cache CPU correctement afin de véritablement bénéficier de temps d’accès réduits, en particulier en lecture. Dans le cas d’architectures multiprocesseurs, l’écriture dans les zones de mémoire partagées pose des problèmes de contention et doit donc être évitée. Perl 6 est très orienté parallélisme, avec par exemple les blocsChristian Aperghis-Tramoni – La magie dans Parrot
Christian présente les PMC et les macros de Parrot. Je vous renvoie à ses articles publiés dans les numéros 97 à 99 de GNU/Linux Magazine France pour les détails.Rafaël Garcia-Suarez – encoding::source
Rafaël Garcia-Suarez explique le fonctionnement de la pragma lexicale encoding::source.
Rafaël explique le fonctionnement du module encoding::source pour illustrer comment on peut maintenant écrire ses propres pragmas lexicales, une nouveauté de Perl 5.10. La partie lexicale fonctionne principalement par la variable %^H. La gestion des encodages est-elle gérée par la variable ${^ENCODING}, qui attend un objet Encode et l’implémentation de trois fonctions qui seront invoquées par l’interpréteur.
Jonathan Worthington – Understanding roles, constraints and classes
Après quelques rappels, Jonathan introduit le modèle objet de Perl 6 : class Puppy {
has $.name is rw;
has $.colour;
has @paws;
has $tail;
}
Le point method bark() { say "woof!" }
method chew($item) { $item.damage++ }
On accède aux attributs avec la syntaxe my $puppy = Puppy.new(name => "Rosey", colour => white);
$puppy.bark();
On peut aussi l’écrire :
my Puppy $puppy .= new(name => "Rosey", colour => white);car une variable peut être non définie, mais néanmoins associée à une classe. L’héritage multiple est toujours supporté :
class Puppy is Dog is Pet { ... }
Nouveauté, les rôles permettent de partager du code en dehors du modèle d’héritage, un rôle étant un groupe de méthodes que l’on attache à une classe.
role Walk {
has Paw @paws;
method walk($num_steps) {
for 1..$num_steps {
.step for @paws
}
}
}
class Dog does Walk { ... }
Autre nouveauté, on peut appliquer des contraintes permettant de réduire les valeurs possibles afin de créer des sous-ensembles :
subset EvenInt of Int where { $^n % 2 == 0 };
Cela permet aussi d’écrire des genres de méta-classes :
subset Walkable of Any where { .can("step") }
role Walk {
has Walkable @paws;
...
}
Alexis Sukrieh – Redécouvrir le Perl Objet avec Moose
Teh Møøse!
Alexis présente Moose, une méta-classe basée sur Class::MOP très inspirée du modèle objet de Perl 6. Bien sûr, cela reste du Perl 5, mais on voit les similarités :
package Hero;
use Moose;
has name => ( is => ‘ro’, required => 1, isa => ‘Str’ );
On peut même définir des déclencheurs s’exécutant avant, pendant ou après l’accès ou la modification des attributs :
has life => (
is => ‘rw’, required => 1, isa => ‘Int’,
default => 20,
trigger => sub {
my ($self, $life, @args) = @_;
$self->dies if $life == 0;
}
);
package Weapon;
use Moose::Role;
requires "hits";
1;
package Sword;
use Moose;
with "Weapon";
sub hit_points { 3 }
1;
Un problème de Sébastien Aperghis-Tramoni – Le meilleur du CPAN
" CPAN is the language, Perl is just its syntax ", Audrey Tang L’auteur présente à l’assistance une liste de modules du CPAN, classés par domaine d’utilisation, pour débroussailler ce qui peut apparaître comme une jungle aux débutants. C’est loin d’être exhaustif, mais au vu des questions et des retours, cela en a intéressé plus d’un.Présentations éclairs
Serge Hoffmann montre comment créer une base de données Access, sans utiliser Access. Laurent Dami revient sur le concours Plat-Forms qui avait opposé des équipes représentant les langages Java, Python et Perl, et explique les points où ils ont été forts et ceux où ils ont été faibles. En direct, en live et sans filet, Rafaël publie, sous les yeux du public, la Release Candidate 1 de Perl 5.10. Applaudissements nourris pour cette version si longtemps attendue. Je viens parler de deux modules que j’ai récemment écris :
Vente de charité
Comme souvent, la vente de charité est l’occasion de s’amuser en achetant des livres, des t-shirts et autres objets véritablement exceptionnels. Ainsi, on aura vu passer des jeux Fluxx de la boîte hippie Looney Labs, et surtout des t-shirts uniques, réalisés par des grands noms de la communauté Perl, y compris un par Larry Wall. Inutile de préciser que la bataille a été plutôt sévère, en particulier pour celui de Larry, qui est finalement parti pour 250 euros.Conclusion
La date pouvait difficilement plus mal tomber, la conférence commençant juste après le début de la grève des transports, privant ainsi les organisateurs de deux conférenciers (un troisième ayant déjà dû se désister pour raison de maladie). Une soixantaine de personnes s’étant finalement déplacées (sur les 90 inscrites). On peut considérer que la conférence est quand même un succès, surtout si l’on en juge par le nombre de nouveaux venus. Un grand bravo donc aux organisateurs. Pour ceux qui n’ont pu se déplacer, notez que vous pouvez visionner une bonne partie des présentations grâce aux vidéos mises en ligne par le CC IN2P3. Liens:- Les Journées Perl 2007, http://conferences.mongueurs.net/fpw2007/
- Les supports des présentations, http://conferences.mongueurs.net/fpw2007/talks
- Les vidéos des présentations, http://webcast.in2p3.fr/FPW2007
- Les nombreuses photos de la conférence publiées sur Flickr, http://flickr.com/photos/tags/fpw2007/
- CPE Lyon, http://www.cpe.fr/
- CC IN2P3, http://cc.in2p3.fr/
RT::Client::Console, http://code.bestpractical.com/project/RT-Client-Console- Moose, http://www.iinteractive.com/moose/
Retrouvez cet article dans : Linux Magazine 101





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.