Italian Perl Workshop 2008

Copyright © 2008 - Michel Rodriguez.

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

Chapeau

Salut tout le monde.

Donc aprés avoir glandé à YAPC::EU, voilà le retour de compte-rendus, pour l'Italian Perl Workshop 2008.

Encore une fois c'est à Pise, dans les locaux de la fac. Grosse affluence cette année, plus de 100 personnes, 2 fois plus qu'en 2006 pour la conf précédente. Au passage on n'a aucune idée de pourquoi.

Si ça vous dit pour la prochaine fois, il y a 2 tracks, dont un quasiment tout en anglais, avec Marcus Ramberg, Tim Bunce, Rafaël et Matt Trout. Donc un but de vacances^Wvoyage d'étude sympa (sauf qu'aujourd'hui il pleut, mais bon, c'est pas trop normal).

Jeudi

Radio Couloir

Demain Matt Trout va nous causer de son idée de pouvoir rajouter des mots-clefs en Perl. Il fait ça au moment de la compilation, donc c'est robuste, contrairement aux source filters. Ce que je retiens de ses explications sur comment il fait ça, c'est que c'est un peu de la magie noire, mais de la magie noire... propre!

Son idée c'est que comme ça on pourra tester de nouveaux mots-clefs, dans des modules, avent, si ils sont populaires, de les intégrer dans le langage lui même. Ils veut s'en servir pour rajouter par example le mot-clef method. Moi ça me plairait bien de rajouter inline, ça serait très, très cool.

Bon je passe sur quelques présentations pour lesquelles je n'était pas trop réveillé, ou pas d'humeur à compte-rendre, voire en train de préparer mes slides pour demain, y compris réinstaller le systême sur mon eee pour la n-ième fois (aujourd'hui il ne me laisse pas écrire sur la flash interne... grr...).

Realizziamo un captive portal da zero - Emiliano Bruni

Une présentation rigolote : il fait des systêmes genre ceux qu'on trouve dans les hotels, où la première fois qu'on veut se connecter au réseau (par le web) on est redirigé sur une page d'accueil où on doit rentrer un login et mot de passe.

Il fait ça entièrement en Perl, avec un démon qui tripatouille les paquets, redirige, ment sur son adresse IP, couvre tous les cas, même laisse passer les connections vers une liste de sites prédéfinie... brèfle, j'apprends des trucs, pas forcément en Perl mais plutôt sur les réseaux.

Coding Style: the One True Way - rgs

Rafaël est enrhumé, mais il va vaillament nous esspliquer qu'il n'y a que one way to do it. Parfait comme sujet pas polémique.

Il explique que son but est de produire des patchs propre, qui n'embêtent pas le gestion de source, qui se mergent facilement, sans générer de modifs dans le formatage.

Donc il a quelques trucs :

Il utilise git: au lieu d'un gros biniou monolithique comme subversion par exemple, c'est un ensemble de petits outils (certains écrits en Perl d'ailleurs), facilement extensible et modifiable.

Il nous fait une démo d'un browser d'historique, intégré a vim, qui affiche chaque ligne avec sa date et l'auteur, et la possibilité pour chacune de voir tout le patch qui l'a créé.

Il a ça sur http://consttype.org

Lightning Talks

Functional Programing in Perl - Osfameron

Il nous montre quelques examples avec map, un générateur d'itérateurs, utilisant du currying, avec Sub::Curry (qui utilise le module de Matt dont je parlais plus tôt), mentionne quelques autres modules qui font la même chose plus ou moins (HOF::Stream, Data::Thunk).

Un autre exemple: la gestion de la conccurence (ça se dit comme ça?), avec futures (qui vient de Java). Hum... il a écrit Acme::Fork::Lazy, qui selon lui est un pas dans cette direction. Apparement IO::Lambda (dont j'ai entendu dire du bieng à YAPC::EU) fait ça assez bien.

Gofer - Tim Bunce

Il me semble avoir déjà causé de ce projet, je crois dans mon compte-rendu d'OSCON en 2007. Il s'agit donc d'un scalable, stateless proxy for DBI

Petit sondage : qui utilise DBI ?. Tout le monde (sauf ceux qui sont trop timides, ou fénéants, ou en train de taper le compte-rendu).

Donc c'es le successeur de DBI::Proxy. Sauf que comme il est stateless, c'est facile de retenter quand on tombe sur une erreur. En plus on peut le mettre sur une autre machine que celle qui l'utilise. Il peut faire à la fois du cache sur le client et sur le serveur. Il peut aussi utiliser http mais aussi ssh ou autre comme protocole de trnsport.

Quelques trucs pour augmenter la productivité et vivre heureux - Marco Masetti

Environnement de travail: un OS qui marche (linux ou OS X)

IDE: il utilise vim avec une config qui a l'air sympa, pleins de fenêtres, avec des plugins pour voir l'arbre de son projet, et d'autres (je vois pas bieng, c'est tout en vert sur noir, pas facile à lire de loing).

Worflow: ses outils préférés: svn + track, rsynk, sshfs, Module::Starter, il écrit les tests d'abord, utilise PAR pour le déployement.

Le repas du soir

Repas rigolo, peu arrosé (on est en Italie), à regarder l'ultra expansif Matt Trout discuter avec l'ultra réservé Tim Bunce.

Vendredi

XML::Compile

Je cause, c'est très bieng (ok, en fait très basique, "mes 2 premières heures avec XML::Compile"). Je mettrai la présentation (en très mauvais italien) sur mon site ce weekend. Ah oui, pour la première fois je cause en LOCALE=it_IT, ce qui fait rire les gens.

Devel::Declare - Matt Trout

Il nous explique d'abord comment ça marche, je comprends pas tout, mais le principe général c'est de trouver le point ou il peut changer ce que fait le parser. En fait c'est vraiment similaire a ce qu'un cracker ferait.

Apparement chaque fois qu'il creusait bien dans le code, il tombait sur des bout que Larry avait écrit, que personne n'avait osé toucher depuis, et dont Larry ne se rappelait plus du tout.

Rigolo extrait de leurs discussions: "there are 7 ways for a compiler to lie to itself" - Larry mais Matt affrme qu'il en a trouvé 2 de plus dans le code de Perl, et en a inventé une autre lui même.

Après ça il noue explique comment il implément le mot-clef method

Je ne suis plus trop, passque je suis en train de m'insulter copieusement (et intérieurement) : hier on causait de mettre un mot-clef xml qui permettrait de récupérer par exemple un objet... XML::Twig en faisant:

    my $t = xml <doc><blah><blah>blah<blah/><blah></doc>;

Pour ça on a besoin d'un parser XML non-bloquant. J'ai passé 2 heures à réfléchir à comment faire avec pleins de hacks ... avant de lire la doc de XML::Parser::Expat, qui me rapelle qu'il a déjà un parseur non bloquant. Créting!

Il nous montre un nouvel "evil trick" pour éviter d'avoirà taper un ; à la fin de la méthode (hint: il utilise %^H).

Brèfle c'est beau, si ça passe les tests ça marche, c'est pas trop documenté (mais Osfameron va l'aider à écrire la doc).

Devel::NYTProf - Tim Bunce

La présentation décrit le profiler, et reprend ce qu'il a écrit dans son blog, cf http://wordpress.com/tag/nytprof/.

En gros le profiler vous donne un joli rapport, à la Devel::Cover, avec le temps (temps réel) passé dans chaque sub, et même sur chaque ligne ou dans chaque bloc.

En plus il est rapide (à peine 3x plus lent que d'exécuter le code sans profiler, excellent pour un profiler), précis (il affecte le temps passé à retourner d'une sub à la sub par exemple, pas au code qui l'appelle par exemple, sa précision est 1ms ou 100ns), il a des tests, il génère relativement (pour un profiler) peu de données)... en clair c'est maintenant LE profiler à utiliser en Perl. On peut aussi démarrer le profiler depuis l'intérieur du code, y compris en lui disant pendant quelle phase bosser (genre END, qui m'intéresse).

Matt bieng sûr demande où est-ce qu'il trifouille les opcodes dans le module, vu que c'est son passe-temps favoris ces jour-ci, voir plus haut.

Il nous montre une démo, le rapport produit en faisant tourner Perl::Critic sur lui même.

Readable Perl - Osfameron

Bon, je sêche Rafaël sur perl 5.10 que j'ai déjà vu à Lyon, pour me refaire un peu d'italien (avec les slides en anglais, cause que c'est un talk de remplacement).

Donc c'est sur le Perl lisible (comment on dit oxymoron en français?)

Il a fait cette présentation à une réunion de geeks à Liverpool, donc c'est très "advocacy": ça peut être interessant à reprendre et à traduire pour d'autres occasions de ce genre.

Il commence par quelques citations de Larry Wall: "It is possible to write messy programs in Perl" ... "In case you hadn't noticed"

Il montre par exemple comment écrire des chaînes de caractères en Perl, des listes qw{ } comparé à Visual Basic.

Autres exemples: le or, qui permet d'écrire facilement, sans se planter dans les priorités, <instruction> or die "..."

Les expressions régulières: c'est pas vraiment la faute de Perl si c'est un langage... peu agréable à l'œil. Par contre Perl les gère bien et les intègre bien au langage. En plus il y a assez de modules pour parser les divers types de données qu'on rencontre en pratique (XML, CSV...) pour ne pas avoir recours aux regexps sans arrêt. Et si on doit s'en servir, elles sont quand même bien faites, il mentionne les "named captures" en 5.10.

Il compare comment créer un tableau contenant 10 fois 1 en C#, par rapport à la même chose en Perl (plus naturel en Perl, sans 2 appels de méthodes.

Un peu de programmation fonctionnelle avec map et grep (sa marotte), fonctions comme objets de premiére classe, qui permettent la mémoisation par exemple (Memoize est un de ces modules qu'on oublie toujours d'utiliser).

Bon, je vous posterai la suite plus tard, comme ça vous avez déjà quelque chose à lire en ce vendredi après-midi.

Ciao

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