creative commons
Belgian Perl Workshop 2007
icone agenda-interview
Signature :
GNU/Linux Magazine
Sommaire de l'article :

Retrouvez cet article dans : Linux Magazine 100

Suivant les exemples français et néerlandais, les Mongueurs de Perl du groupe Bruxelles. pm ont décidé d’organiser, le samedi 27 octobre, la première édition du Belgian Perl Workshop, qui s’est tenue à l’École Supérieure d’Informatique de Bruxelles. Pour éviter les problèmes linguistiques propres à la Belgique, toutes les présentations étaient en anglais, sauf une qui était en français. Erik Colson, l’un des organisateurs, ouvre la conférence en remerciant l’ESI qui off re les locaux, le groupe néerlandais Vlaanderen.pm qui les a aidés pour l’organisation, et les conférenciers qui ont répondu à l’appel.

Dave Cross – Teach-In Extract – OO Pe

/img-articles/lm/100/BPW-perl/fig-1.jpg Dave Cross rappelle les bases de l’orienté objet. Dave rappelle les moyens classiques de faire de l’orienté objet en Perl, et cite Frederick Brooks (l’auteur de Mythical Man-Month et No Silver Bullet) pour ceux qui comptent faire leur parfait environnement OO : Plan to throw one, because you will anyhow. Il conseille donc de simplifi er le futur refactoring par les tests unitaires et l’utilisation d’un SCM. Plus spécifi quement à Perl, il déconseille de permettre que new() soit une méthode d’objet (avec le fameux ref $class || $class). Il vaut mieux en faire juste une méthode de classe, et créer une méthode d’objet clone(). Sous-classer doit être une opération facile. Il prend comme exemple GD::Graph, parce qu’il voulait créer un graphe non proposé par ce module, et a été déçu de voir qu’il devait copier beaucoup de code. Il passe ensuite aux design patterns, et signale que l’on peut très bien appliquer ces méthodes en Perl. Il conseille le site des Perl Design Patterns pour plus d’informations. Dave en vient ensuite aux inside-out objects, ces fameux objets retournés dont les attributs ne sont pas stockés dans l’objet lui-même, mais dans leur classe de défi nition. Cela permet une meilleure encapsulation, et permet à deux classes diff érentes de défi nir des attributs de mêmes noms sans qu’ils entrent en collision. Comme il y a pas mal de détails à peaufi ner pour bien faire, il conseille d’utiliser les modules du CPAN déjà existants comme Class::Std, Class::InsideOut, Object::InsideOut. Il recommande aussi la lecture de Perl Best Practices. Il termine par Moose, le nouveau système objet tiré des métamodèles qui seront utilisés dans Perl 6. Il montre la facilité de mise en place. Erik demande quel est l’impact en termes de performances. Dave reconnaît qu’il faudrait investiguer. Juerd Waalboer pense qu’il n’est pas négligeable.

Wendy Van Dijk – Where and how to start learning Perl

Wendy explique les différents moyens pour apprendre Perl. Elle note qu’il y a une quantité astronomique de textes, documentations, tutoriels et autres disponibles tant en ligne que hors-ligne. Elle-même a principalement appris par les livres (dont elle possède avec Elizabeth Mattijsen une collection assez conséquent, voir GLMF 94, p. 12). Elle conseille aussi d’aller sur Perlmonks, où on peut poser des questions de débutants. Autre moyen, aller aux conférences, ce qui permet d’apprendre à un prix modique (l’auteur de ces lignes confi rme) ou demander à votre société de prendre un expert pour une formation interne. Erik demande comment savoir quel module du CPAN utiliser. Wendy conseille de ne pas hésiter à demander sur Perlmonks, sur IRC, par mail, etc.

/img-articles/lm/100/BPW-perl/fig-2.jpg Des livres apportés par Wendy Van Dijk.

Hendrik Van Belleghem - Clean your code

Hendrik conseille la lecture de Perl Best Practices, sur lequel il s’est appuyé pour cette présentation. Il en explique quelques règles syntaxiques, et illustre comment ne pas nommer ses variables avec Acme::MetaSyntactic. Il conseille d’écrire la documentation en fin de fi chier et de la vérifi er avec podchecker. De même, il est préférable d’utiliser les descripteurs de fichiers indirects (dans des variables lexicales) que les descripteurs directs, qui sont globaux. Il recommande d’utiliser Regexp::Common pour tous les gros besoins en termes d’expressions régulières, et Test::More et dérivés pour l’écriture de tests : la conversion de tout bug en test permet d’augmenter la couverture de code vérifi é. Il termine enfin sur Perl::Critic, qui peut d’ailleurs être inclus dans la suite de tests.

Chris Vertonghen – HTML::Mason by example

Chris rappelle les alternatives comme Template Toolkit et HTML::Template, puis explique la syntaxe de Mason. Il donne aussi quelques exemples de sites connus qui utilisent Mason : Amazon, IMDb, del.icio.us, RT. Il présente quelques fonctionnalités plus avancées comme les autohandlers et dhandlers1.

Eriam Schaffter – Catalyst-Engine-Wx – A wxPerl engine for Catalyst

Eriam commence par poser la question de savoir si, à notre époque de web 2.0 à tout va, on a encore besoin d’applications " lourdes ". Il répond par l’affi rmative pour au moins deux points : l’accès aux périphériques locaux et au système, et le mode hors-ligne. Il note que Google propose beaucoup d’applications lourdes, mêmes si celles-ci sont en fait souvent mixtes, mélangeant une gestion avancée en local et un service web (par exemple Picasa). Il rappelle ensuite les bases du MVC (pendant un peu trop longtemps), puis montre qu’on peut utiliser des widgets locaux tel Wx comme contrôleur et comme vue, ce que permet son module Catalyst::Engine::Wx. Il s’excuse de ne pas avoir de démo qui illustrerait vraiment la possibilité d’avoir une même application qui pourrait s’exécuter à la fois en contexte web et comme application lourde.

Daniel McBrearty – engoi.com – a catalyst use case

Daniel montre un cas concret de conversion d’un site web, basé sur des CGI, en une application Catalyst. engoi.com est un site qu’il a écrit pour aider sa fi lle à apprendre des rudiments d’autres langues (et permettre à d’autres d’en profi ter aussi). Les CGI étant impossibles à maintenir, il a décidé de tout récrire avec Catalyst. Il montre le fonctionnement de certains mécanismes internes et illustre la diff érence d’avec les CGI par le passage d’arguments, où une URL comme /public/menu.cgm?netlang=en〈=fr devient /en/fr/index. Non seulement c’est plus court, mais, en plus, c’est mieux pour les moteurs de recherche.

/img-articles/lm/100/BPW-perl/fig-3.jpg

Les participants déjeunent avant d’aborder les présentations de l’après-midi.

Serge Hoffmann – Perl for Windows How to do

Dans cette unique présentation en français, Serge présente Perl sous Windows, donc principalement ActivePerl. Il explique comment utiliser PPM, et montre les solutions pour résoudre le problème du déploiement : PAR, PerlApp, Perl2EXE 1 Voir les articles de damien Krotkine sur Mason, dans GLMF n°92 et 93.

Dirk De Nijs – Win32 Perl : Introduction to Perl & WMI

Dirk explique les bases de WMI, cette interface qui permet de piloter Windows juste dans ses moindres recoins, si on arrive à comprendre comment. Il montre quelques exemples de codes qui exécutent des requêtes (WMI se contrôle aux travers de WQL, un genre de SQL), puis présente Scriptomatic, un programme de Microsoft qui permet de générer du code d’automation pour plusieurs langages. De manière amusante, le code Perl généré est plus propre que les codes dans les autres langages, qui contiennent plusieurs hacks et trucs pas très beaux pour faire marcher les requêtes.

Abigail – What is new in 5.10 regular expressions

" Perl 5.10 is coming out, after lunch, before Christmas. " Il devrait normalement être disponible au moment où vous lirez ces lignes. Le moteur d’expressions régulières a été revu en profondeur (il a en particulier été dérécursé), faisant disparaître quantité de bugs et de limitations, et apportant un lot de nouvelles fonctionnalités. On trouve ainsi de nouvelles classes de caractères, un nouveau quantifi cateur "+" qui essaye de capturer autant que possible (comme "*"), mais sans jamais rendre, le marqueur \K qui permet de ne pas inclure ce qui le précède dans la capture (comme "<(" en Perl 6). Gros ajout, le support du référencement des buff ers de capture par leur numéro ou par un nom préalablement donné : \g{n} pour le n-ème buff er, \g{-n} pour le n-ème précédent. Les captures nommées se déclarent par (?<name> pattern) et se référent par \g{name}. Perl rattrapant ici son retard, les syntaxes des autres langages sont toutes supportées. Sont de plus disponibles deux hashes pour accéder à ces buffers : %+ qui contient la dernière capture nommée ($+{name}), et %- qui contient toutes les occurrences ($-{name}[0]). Manquant de temps, Abigail doit s’interrompre

Sébastien Aperghis-Tramoni - Old Perls and new code

Je fais à nouveau ma présentation sur les techniques pour maintenir du code compatible avec les vieilles versions de Perl, avec des mises à jour grâce à Nicholas Clark, expliquant que le module constant.pm est maintenant disponible sur le CPAN (et compatible avec Perl 5.005), et que les variables our, en plus d’être mal utilisées, prennent deux fois plus de mémoire que les variables my.

Abigail – Sudoku by Regexp

Abigail explique les règles du sudoku et montre les noms amusants des techniques conçues pour simplifier la résolution des sudokus. Il détaille ensuite comment il résout les sudokus avec des expressions régulières. Le principe est en gros de construire une expression régulière correspondant aux contraintes du sudoku à résoudre, et une chaîne qui ne correspondra à cette expression régulière que si le sudoku a une solution. Abigail montre les chaînes et expressions générées. Même en taille 2, ça dépasse de l’écran pour un sudoku normal 9x9. Il a appliqué le même principe pour résoudre des kakuros, un casse-tête similaire, mais avec des règles de calculs diff érentes. Le problème est qu’il faut réaliser des opérations arithmétiques et que ce n’est normalement pas possible avec des expressions régulières... sauf si on s’en tient à l’arithmétique unaire !

Chris Vertonghen – OpenID authentication by example

Chris explique le fonctionnement d’OpenID, un mécanisme d’authentifi cation qui fait offi ce de SSO (Single Sign-On) à l’échelle du web, simplifi ant la vie de l’internaute (et en particulier celle du blogosurfeur). Le principe est d’utiliser des noms d’hôtes comme login, hôtes qui doivent pointer sur des machines sur lesquelles tourne un serveur OpenID, qui gère l’interaction avec l’utilisateur pour confi rmer l’authentifi cation. (Plusieurs implémentations, dans diff érents langages, sont disponibles.) L’authentifi cation peut, de plus, être déléguée par des pointeurs HTML : <link rel="openid.delegate" src="...">. On demande à Chris s’il existe un plugin pour Firefox. Il confirme que oui, et qu’il s’appelle " Cartsafe ", et pense qu’il en existe aussi un pour Safari.

Lightning Talks

Pour essayer de rattraper le retard (ou du moins éviter d’en prendre plus), la session est écourtée de moitié.

Abigail – %s (...) interpreted as function

Abigail râle encore à propos de cet avertissement, comme il le fait à chaque conférence ;-)

Sébastien Aperghis-Tramoni - relative.pm, puis Win32::Mock

Je passe deux présentations dans le temps d’une, pour montrer deux modules que j’ai écrits : relative.pm qui permet de charger des modules de manière relative au module courant et Win32::Mock, qui permet d’émuler les modules Win32 sur les systèmes Unix.

Dirk De Nijs – Introduction to Perl & Vista’s Feature User Acceptance Control

Dirk montre les nuisances des nouvelles fonctionnalités de Vista et comment y remédier au travers d’un manifeste, une de ces spécifi cités de Win32 complexe à comprendre, mais qui peut s’avérer utile.

Juerd Waalboer – UTF-8 security reminder

Juerd montre un exploit utilisant une couche IO non validante d’UTF-8 de Perl. Les détails sont sur Perl Monks : http://www.perlmonks.org/?node_id=644786

/img-articles/lm/100/BPW-perl/fig-4.jpg Après le dîner, des parties de Fluxx s’organisent aux deux bouts de la table (et Wendy fait le pitre).

Conclusion

Quoique cette conférence a été marquée par un retard constant, elle était globalement très sympathique, et les participants ont apprécié les croissants frais apportés le matin par les organisateurs ;-) La participation fi nale d’une quarantaine de personnes est honorable pour cette première édition du Belgian Perl Workshop, mais il lui faudra probablement trouver sa voie entre les Journées Perl (francophones) d’un côté et le Dutch Perl Workshop (néerlandophone) de l’autre pour se développer plus avant. LIENS

Retrouvez cet article dans : Linux Magazine 100

Il y a : 0 commentaire(s)

Donnez votre avis

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

Brèves
Édito : Linux Pratique Essentiel N°24
Édito : Linux Pratique HS N°23
Édito : GNU/Linux Magazine 146
Édito : GNU/Linux Magazine HS N°58
Édito : Open Silicium N°5
Communication
Linux Pratique HS 23 – Communiqué de presse
Linux Pratique Essentiel N°24 – Communiqué de presse
Gnu/Linux Magazine sponsor et partenaire de PROLOGIN
Linux Essentiel partenaire des Rencontres du Libre de Lion sur Mer (Normandie)
GNU/Linux Magazine HS 58 – Communiqué de presse
prochainement moteur de recherches des articles
 
:
:
Jours heures minutes secondes
En kiosque
Le tout nouveau Linux Pratique Essentiel est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Open Silicium est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...

Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site...

Lire la suite...