XML, the Perl Way


YAPC::EU 2004

Salut, c'est reparti!


Mercredi

Ici Belfast donc. Hier soir la première soirée était bien sympa, et assez arrosée (surtout pour certains membres de London.pm!), au pub local (situé rue Amelia!), avec un entracte kebab/indien pour la partie culinaire.

La grande salle est vraiment magnifique, on est dans un genre d'église, derrière Kasei qui parle il y a un orgue, des vitraux, un balcon en bois fait le tour de la salle... la classe!

State of the Carrot

Allison Randal

Ben ouais, quand on croise un Camel avec un Parrot, on récupère une Carrote. En plus les carrotes c'est orange, ce qui fait plaisir à Leon.

Elle liste les 13 versions de Perl/Parrot/Ponie sortie l'an dernier. Juerd lui rapelle que Perl 1 a aussi été ressorti.

Elle nous fait quelques blagues débiles (what is orange and sticky? a carrot stick)

Elle détaille les nouvelles versions, passe sur CPAN, Perlmonks, perl.org

Perl White Magic

Jose Alves Castro

Un talk sur les options de Perl (command line switches) et les variables spéciales. Je devrais connaître, on va voir! Il a un article là-dessus sur perl.com, mais comme le réseau ne marche pas je vous laisse le trouver vous-mêmes.

Il commence par un programme assez verbeux pour compter le nombre de mots par ligne, puis le simplifie pour finalement en faire un one-liner. Il utilise $., je pense jamais à m'en servir.

Puis un bout de code qui ajoute un commit toutes les 100 lignes dans un fichier qui insère des enregistrements dans une BD. Bon, celui là il se sert de -i, -n (et toujours de $.), c'est pas trop compliqué.

Il est assez rigolo comme speaker, il nous passe une photo de l'audience sur laquelle il a testé sa présentation: son gamin éclaté de rire...

On attaque plus de variables spéciales, $/, $\, -l, qui est plus compliqué qu'on ne le croit généralement.

Maintenant il explique -a, pour faire un autosplit sur les entrées, pour que Perl se comporte un peu comme awk (les champs se retrouvent dans @F).

Il nous montre qu'il nous a expliquéà peu près 10 options, il en reste 50 ou 100...

Conseil final: soyez curieux!

La salle est aussi magnifique, on dirait une salle de tribunal.

Interlude

Du coup j'ai raté le talk de BooK, mais je suppose que quelqu'un d'autre pourra en faire un compte rendu. Ca a du être rigolo, le réseau ne marche pas bieng et il en avait besoin, il avait l'air un peu affolé...

A midi je mange avec Ben Holzman et avec Mock (cf http://xmltwig.com/report/yapc_eu_2003.html#network_tricks_with_perl) qui maintenant bosse pour une boîte qui fait... de l'anti-spam! Comme quoi les gens changent.

Interoperating Perl and the .NET framework

Jonathan Stowe

Non pas que .NET m'intéresse vraiment, mais le speaker est le London.pm-eur mentionné un peu plus haut. Donc ça devrait être rigolo.

Une autre salle, on dirait l'intérieur d'une église.

Il nous explique .NET en 2 mots: un environnement runtime pour différents languages, la définition du bytecode, une librairie standard. Le but est que tout c'a soit interopérable

Ben Holzmn, qui parle après lui, corrige un slide. Ca promet.

Pourquoi essayer de construire des systèmes interopérables? Entre autre parce que ça plait aux chefs. Mais aussi parce que c'est cool.

Comment .NET aide à l'interopérabilité:

XML

.NET repose E<eacute>normE<eacute>ment sur XML (YipeZ<>e! ;--), pour les donnE<eacute>es 
(datasets), pour sE<eacute>rialiser des objets, pour les fichiers de config
(version XML des .INI).

On peut donc utiliser les outils XML de Perl (pas de noms!) sur tout ça.

SOAP
On peut utiliser SOAP::Lite, sauf si le code .NET utilise MarshallByRef, auquel cas on récupère juste la référence de l'objet et non pas l'objet lui même.

Bien sûr aussi des objets un peu compliqués (tie-és par exemple, ou avec des coderefs) ont du mal à être échangés.

Web Services
Idem, on peut utiliser SOAP::Lite. On peut aussi simplement échanger le SGML, sans avoir à le caser dans une enveloppe SOAP.

Son conseil général: s'en tenir à des structures de données simples: tableaux, hashes à un seul niveau.

Ben il a bieng tenu,sa voix aussi, décevant... ;--(

Inlink::C

Ben Holzman

Comment lier des librairies externes en C à Perl en utilisant Inline::C

Il fait ça à partir d'un example. Cool!

Il nous montre donc une petite librairie en C appelé dualVar qui implément une structure à-la-Perl-variable (la variable à une valeur numérique et une valeur de chaîne).

Son conseil: utiliser des path absolus a l'init de Inline::C pour être sûr de savoir où vont tous les fichiers. Il utilise Cwd pour ça. (genre LIBS => '-L' . cwd() . '-ldualvar')

Il nous explique ensuite les TYPEMAPS, notamment T_PTROBJ qui mappe un pointeur vers une structure.

Ne pas oublier d'écrire un DESTROY qui libère la mémoire.

Les trucs chiants avec Inline::C:

quand Inline::C ne reconnait pas la signature d'une fonction, il l'ignore silencieusement, utiliser INFO, NOCLEAN (pendant le developement) et NOISY

quand la librairie change, Inline::C ne recompile pas

Discovering your network neightbourood

Sebastien Apherghis-Tramoni

Comment découvrir tout ce qui est présent sur le réseau local, par IP et adresse MAC, la topologie du réseau, plus les services offerts.

Utiliser le module NetworkInfo::Discovery (http://search.cpan.org/dist/NetworkInfo-Discovery/) pour récupérer les infos.

Il a écrit Net::P0f, qui sera disponible très bientôt, une interface à la commande p0f, que je ne connaissais pas (mais que je suis en train de télécharger): http://freshmeat.net/projects/p0f/

Net::NbName (http://search.cpan.org/dist/Net-NBName/) donne plus d'infos avec NetBIOS. Pour Rendezvous, il existe Net::Rendezvous (http://search.cpan.org/dist/Net-Rendezvous/).

Pour chaque module il nous montre un court example de code et les résultats qu'il produit, qu'il explique.

Building a mail server with Apache and mod_perl

Mock

Donc il explique qu'il voulait écrire un système anti-spam, sans trop se fatiguer. Stas (Beckman) lui a dit que ça pouvait marcher... donc il s'y est mit.

Matt Sergeant a fait ça aussi, avec QPSMTPD. POE avait l'air trop compliqué. Senmail et Milter... plus jamais sendmail! Il a récupéré des bout de... arghh! j'ai raté le nom, un module Perl qui fait ça,ah oui, Net::Server::Mail

En réutilisant Apache comme plate-forme, ça lui donne plein de trucs: mod_ssl, mod_gzip, bientôt mod_throttle (son biniou tourne en Apache 2.0, sur lequel mod_throttle n'est pas encore porté), Apache::DBI pour des connections persistentes à une BD...

Il a donc écrit Apache::TieBucketBrigade, qui lui permet de tie-er un IO::Handle à un BucketBrigade. Celà lui permet notament de faire des select sur des BucketBrigade pour faire de l'IO non-bloquant.

Pour l'instant ça s'appelle Apache::SMTP (http://search.cpan.org/dist/Apache-SMTP/) mais le nom devrait changer prochainement.

Il a du mal à tester, bizarrement les développeurs de Apache::Test sont partis du principe que le module serait utilisépour tester des serveurs Web, donc ça n'est pas vraiment adapté à son problème.

Il pense qu'il serait possible d'utiliser ça pour développer d'autres types de serveurs (POP3, IMAP), qui donc réutiliseraient l'infrastructure offerte par Apache. Peut-être qu'il va merger avec QPSMTPD.

Ca semble un projet intéressant en tout cas.

Bon, ben c'est tout pour aujourd'hui! A demaing.


Jeudi

Yipee! Je me suis réveillé à 9h 30, habillé à toute allure, pensé que j'allais rater les Lightning Talks... et finalement je suis là à l'heure, ça commence à 10h!

Donc sans tarder:

Lighning Talks

Help! Code Overload

Nigel Hamilton

Il commence par une photo de la Tour de Pise, qui représente l'état de son code après quelques années à coder. Les représentants de Pisa.pm (Dakkar et moi) sont enthousiastes!

Extrait: Don't code in fear (quand on lui a dit ça, sa première réaction a été shit! How do you know?)

Une citation de l'excellentissime Pragmatic Programer: write code that writes code.

Donc il nous décrit un système qui documente son code, qui pour chaque module lui donne les modules dont il dépend, avec la possibilité d'éditer les commentaires.

C'est la première

Teaching computer with a Perl based emulator

Quand il a répété son talk son chat s'est endormi au bout d'une minute, donc nous voilà prévenus.

Extrait: Computer Architecture is really fun!

Donc pour expliquer le fonctionnement d'un processor il a décidé de créer un processeur: NICE (Nice Is Charmingly Elegant). Plutot que de le faire réellement il a dévelppéun émulateur. La première version était en Fortran, pas très pratique, donc il l'a réecrit avec Perl/TK.

Joli, l'émulateur montre l'assembleur en train de s'exécuter.

Open VMS

Une photo de sa cave, avec du bon vieux matériel qui tourne sous OpenVMS (coucou Tonton Th.): c'est du bon gros matos qui tâche, heureusement qu'il a une grande cave. C'est pas facile de porter Perl ou des modules sous ça. Donc si quelqu'un est interessé, il suffit de lui passer un mail et il peut mettre son équipement

Buisiness::Worldpay::Junior

Au début de son business il avait un problème: il avait un ``crédit rating'' horrible. Tous les services de paiement en ligne le refusaient. Le seul service qui l'a accepté était World Pay. Il nous montre son module qui interface avec World Pay.

Extrait: Anybody can download it for frée from CPAN, or, if they are really stupid, come to my website and pay me $25 to download it

Autre extrait: no one has ever aid me $25

Organizing YAPC::Europe

Norbert Gruner

Il commence par quelques citations d'organisateurs (genre BooK ``Plus JAMAIS!'' Il y en a pas mal de parisiens, ils pourront compléter, je ne tapes pas assez vite pour les retranscrire (aller, si, David: Organiser YAPC c'est comme avoir un bébé...

BooK (encore!): ``You could be the next guy in PINK''

UTF8 and Perl in 5 minutes

Mark Fowler

Ca fait rire Dakkar qui cause de Perl et Unicode en 45 minutes demain!

Il nous montre les differentes façons de mettre des caratères unicode dans un chaîne.

Quand on lit depuis un fichier il ne faut pas oublier de le mettre en binmode (note de mirod: ou utiliser un parseur XML, bieng sûr)

Devel::Pek est très utile pour savoir exactement ce qu'il y a dans une chaîne. <Test::utf8>, qu'il vient d'écrire est utile aussi.

XML::LibXML

Il a écrit des outils pour faciliter l'utilisation de XML::LibXML. Ca doit s'appeler XML::LibXML::Tools (le projecteur ne marche pas et je n'ai pas le temps de regarder sur CPAN). Pourquoi est-ce qu'il n'utilise pas tout simplement XML::Twig? La vie est pleine de mystêres!

Enterprise Perl

Sebastien Aperghis-Tramoni

Perl n'est pas considéré comme un langage pour les gros projets.

Voyons que faire.

Par exemple quand Java crashe, il génére de vilaines ``stack traces'', il nous montre des exemples. Ca fait trèsprofessionel. Même les logiciels libres suivent cet exemple: un exemple, de Jakarta, 3 pages de stack traces.

D'où: Acme::JavaTrace qui essaye de résoudre ce problème en génerant d'énormes traces qui ressemble à du Java.

Excellent!

Starting your own company

jonasbn

Il nous explique la chose.

Essayer d'avoir plus d'un client, réaliser que la plupart des propositions de projets n'aboutissent jamais, ne pas hésiter à payer pour des services (avocat, comptable...) être flexible (il fait pas mal de PHP ces jours-ci). Essayer de se faire payer à l'heure plutot qu'au projet. Avoir un processus pour traiter les affaires (histoire de ne pas oublier de se faire payer).

Pasmal, réaliste.

Making Perl development easier without using Perl

Scott Whriter

Il nos enjoint d'utiliser nos outils proprement.

Par exemple le browser web: il utilise Firefox. Il se lance dans une explication de l'architecture de Mozilla.

Extrait: creating a plugin is easy!

Il nous montre le code... illisible à l'écran. C'est pour ajouter un moteur de recherche à boîte qui va bieng.

How to test everything

Casey West

La clè c'est d'avoir la couverture de test: Devel::Cover Bon, je crois que j'ai déjà` causé de ce module, excellent.

Il nous montre comment le faire tourner, les jolis résultats, c'est vrai que les sorties sont vraiment complètes et pratiques.

Des conseils généraux: tester des trucs vraiment stupides, des entrès débiles. Un truc rigolo il teste sqrt: sqrt(2) * sqrt(2) affiche 2.00000000000001, mais le test sqrt(2) * sqrt(2)==2 est vrai.

Quelques modules utiles: DBD::Mock pour tester l'interface avec une BD et casser des choses.

CPANTS

CPANTS trace des indicateurs qualité rudimentaires sur les modules de CPAN: est-ce que la distribution est complète, est-ce qu'elle a des tests...

On peut récupérer toutes les données, c'est une BD SQLite, d'où on peut extraire les chiffres qu'on veut.

Rigolo: l'auteur avec la moyenne la plus élevée est Maurizio deMichelis, dont les modules contactaient le site web et charger du code a exécuter dans le make install (evil!). Apparement il a arrétéde faire ça.

Futur plans: intégrer les CPAN ratings, les résultats des tests de CPAN testers, vérifier que l'auteur n'est pas R.U.Thor (le défaut), compter les hits de google sur la distribution, vérifier que le module a use strict...

La principale limite est qu'il est impossible de faire tourner le code, vu qu'il peut dépendre de n'importe quoi.

20 things you may not know about Perl

Jos Boumans

Bon, ça va aller vite, alors j'aurais pas beaucoup de temps pour commenter, mais vous pouvez voir des détails sur CPAN

Inline::C
ça marche
YAML
j'en ai déjà causé
CLASS::ISA
diagnostics
celui là je l'ai raté, ça va trop vite pour moi...
Benchmark
La seule façon de savoir si un bout de code est plus rapide qu'un autre. Après tout qui (à part Rafael) sait ce que fait l'optimiseur?
Devel::*
très utile en dévelopement pour savoir ce qui se passe vraiment en coulisse (et ce que fait l'optimiseur ;--)

Devel::Size par exemple vous donne la taille d'une structure en mémoire.

Devel::Pek affiche comment une variable est stockée

Devel::Cover, encore une fois... la star de la conférence, dommage que Paul Johnson ne soit pas là

B::Deparse essayez avec $owner='Jack'; print ``this is $owners's house'';

Parse::RecDescent
Pour tous vos parseurs
only
Pour spécifier la version d'un module à utiliser (et pas une plus récente), et pour manager les différentes versions pour pouvoir toutes les utiliser.
memoize
Ca je m'en sert, c'est super cool, pour cacher les résultats de fonctions
File::Chdir
Permet de faire des chdir avec une portée. Quand on sort du bloc où on a fait le chdir on retourne dans le répertoire de départ
Config::Auto
Pour pouvoir travailler avec différents formats de fichiers de config. Il lit indifférement du XML, .INI... de manière transparente.
UNIVERSAL::*
peut être abusé de manière créative. Genre UNIVERSAL::AUTOLOAD...
Hook::Scope
exécute du code à la sortie d'un block
Hook::LexWrap
même chose avec des fonctions
Flags
Il nous détaille les flags associés à une variable, je vous passe l'explication, il parle trop vite.
CORE::GLOBAL::*
permet de réécrire les fonctions de base de Perl.
No::Die
die ne marche plus!
Acme::Code::Police
j'en ai déjà causé l'an dernier il me semble (à l'occasion du même talk de Jos dont j'avais manqué le début).

Si on utilise pas use strict ça détruit le fichier. Et bieng sûr Acme::Code::FredomFighter détruit Acme::Code::Police si il essaye d'intervenir.

le debugger
Bon, je suis le seul à lever la main 2 fois quand il demande si on utilise des prints partout ou si on utilise le debugger.

Un des problèmes est que quand on utlise le debugger, l'optimiseur n'est pas utilisé

if
Un module qui
Net::*
Pour remplacer par example open( "|/usr/bin/sendmail") par Net::Sendmail (nom non garanti, ça va vite...)
File::*
File::Spec, File::Path pour être portable, File::Temp pour créer des fichiers temporaires de manière sûre
Acme::Test
Fait semblant de tester un module, avec des tests qui passent toujours.

Il n'a plus de temps, c'est fini!

The Good the Bad and the Ugly

Marty Pauley

Un des organisateurs, qui va râler. Sans slides, ça va être pratique pour moi (je peux râler aussi!)

Donc le point de départ: on veut tous écrire du code plus propre. Mais qu'est-ce que ça veut dire écrire du code pplus propre. De la salle you cannot describe it but you know it when you sée it! Marty: thanks for summarizing my all talk, thank you all, good bye.

Donc il va essayer de nous donner quelques conseils. D'abord du code plus ropre ça veut pas dire du code plus rapide ou plus court (et il se moque d'un glofeur dans la salle).

Donc en fait du code plus propre c'est du code plus maintenable. Note de Nicholas Clark: si vous êtes le seul à comprendre votre code, tout va bien jusqu'a ce que posiez vos congés et que le chef les refuse...

Pour savoir qu'est ce que du bon code, il faut voir du bon et du mauvais code. Et bien sûr, tout ça c'est sur CPAN! (et sûr Matt's Script Archive, au moins pour le mauvais code). Le problème est qu'en Perl il y a du bon code, du mauvais code et du vilain (ugly). Mais certain code vilain est en fait nécessaire (et certains pensent que tout code perl est vilain ;--)

Si vous avez des problèmes de performances, surtout ne sacrifiez pas la maintenabilité. Changez les structures de données, ou les algos, ou la machine, ou le langage (à peu près dans cet ordre). Il cite MJD qui estime que Perl a quasiment toutes les fonctions de LISP, et que on devrait plutot essayer d'écrire du Perl à-la-LISP, pas à-la-C (coupable!).

Et au pire, si Perl ne fait pas ce que vous voulez, parlez-en à Nicholas (Clark). Qui conseille plutôt de parler à Larry et Damian pour qu'ils l'incluent dans Perl 6 (qui de l'avis de Marty aura plus de puissance que LISP).

Extrait: don't hesitate to steal things!

Essential CPAN modules

Un panel sur des modules... j'ai raté la première partie, pendant les 2 présentations précédentes

Tim Bunce commence, il prend des questions sur DBI.

Q: pourquoi le synopsys est-il si long? A: parce des gens se plaignent qu'il est trop court ;--(

Q:DBI asynchrone? A:un jour!

Un idiot se lève pour râler contre XML::Parser et XML::DOM. Je peux pas vraiment vous raconter ce qu'il dit parce que je n'ecoute pas... vu que c'est moi qui cause.

2 minutes et c'est fini.

Puis Mark Fowler va parler de modules dont il a parlé dans le calendrier de l'avent de Perl.

Il nous donne la liste et on peut choisir le sujet:

Structures de données
Tie::IxHash
permet d'avoir des hash ordonnés (keys retourne les clés dans l'ordre d'insertion)
Scalar::Util
des fonctions utilies, comme dualvar ou reftype par exemple
List::Util
même chose sur des scalaires (first est ma préf'érée, reduce est difficile à expliquer, mais je me souviens l'avoir utilisée et elle est bien utile, voir la doc).
Data::Structure::Util
des fonctions comme unbless
Attributs
Il faut que je regarde ça pour un de mes modules (Params::Style)
Attributes::Handler
Ca va trop vite!!!!
Exporter::Simple
arghh!!!
Attribute::Tie::Classes
voir la doc
Attribute::Overload
Permet de dire qu'une méthode surcharge un opérateur:
  sub to_string: Overload("") { ... }
Inline
Il rapelle que Inline::* permet d'écrire du code dans un autre langage, il sera compilé la première fois qu'il sera utilisé, et la version compilée sera cachée (dans le répertoire _Inline).

Inline::Files est un peu différent, j'en ai déjà parlé, je n'y reviens pas, les nouveaux peuvent lire la doc, ça roxe!

Bases de données
DBD::SQLite
Pareil, ça roxe! (je me rapelle de Matt demandant si par hasard ça serait utile, il était pas sûr!)
Class::DBI
Je vous en ait déjà causé dans mon CR de OSCON (http://xmltwig.com/report/oscon_2004.html): ça permet de mapper des objets dans des bases relationnelles.
Pixie
Stocke des objets arbitraires dans une BD. Astucieusement ça charge les objets de manière ``lazy'': les objets contenus dans d'autres objets ne sont chargés que quand ils sont vraiment utilisés
Debugging
Tiens, il parle des mêmes que Jos: diagnostics, Hook::LexWrap, Devel::Pek et autres.
Date and Time
DateTime
Il recommende d'utiliser celui là
DateParse
prends une date en format naturel et retourne l'epoch
Time::Duration
secondes => format lisible (jj jours, hh heures...)
Testing
Quelques modules que je ne connaissais pas:
Test::Exceptions
verifie que le code meurt proprement.
Test::DatabaseRow
teste qu'une DB contient bien ce qu'on veut.
Test::MockObject
Permet de simuler un objet comme un veut
Test::Inline
inclue les tests dans la doc (j'aime pas trop,mais ça a l'air plus subtil que l'impression que j'en avais, faut que je regarde de plus près)
Templating
Template Toolkit
Ca me rapelle qu'il faut que je lise le bouquin sur TT.

Son avis: on peut utiliser ce qu'on veut, du moment qu'on utilise un systême

Template::Extract
utiliser des templates TT pour extraire des données! Kewl!

Voir http://2shortplanks.com/talks


Vendredi

Hier soir grand merci a 火星 (Kasei, ça devrait être bon en HTML, mais pas en texte, vu que pod2text génère de l'ISO-8859-1) qui m'a aidé à installer les diverses couches de logiciels nécessaires pour pouvoir taper du japonais sur ma machine.

Si ça vous intéresse, sur ma Mandrake il m'a fallu installer anthy, uim et uim-applet (un peu de urpmi à chaque fois a suffit). Maintenant le terminal gnome accepte du japonais sans problème.

Au bout du compte c'était pas très compliqué, mais mon problême c'est que je lis pas le japonais, j'installe ça pour que ma femme puisse se servir de la machine. Et comme (logiquement je suppose), la plupart des docs que j'ai trouvées étaient en japonais, ça m'aidait pas beaucoup.

Au passage,hier j'avais pas donné le nom, ni le moyen de contacter le dude qui offre des comptes sur son VAX: Bernd Ulmann à http://vaxman.de

WhereWas

Simon Cozens

Il ne se rapelle jamais où il a vu des infos intèressantes, mail, page web...

Donc il a un bout de code qui tourne en proxy email, et web, qui indexe tout ce qui passe, avec un maximum de meta-data. Apparement c'est dans Placene::SearchEngine::Index. Si j'ai bieng compris...

Sur ce il s'en va, il a un avion a prendre, et on ne le reverra pas avant quelques temps vu qu'il s'en va étudier la divine parole pour quelques années.

Lignting Talks, suite

Bon, je suis mal placé et je lis mon mail de la nuit, donc je rate le premier LT, de Thomas Klausner.

Something...

Leon Brocard

Pas de slides, il délire.. sur le fait qu'il n'a pas de slides, qu'il aime l'orange, que depuis qu'ils on construit une imprimante à chocolat il en mange tous les jours, sur ython, contre lequel il n'a rieng, ah oui, j'allais oublier, le ``CPAN drinking game'', il annonce, pour le 11 décembre, la London Perl Workshop, il parle du dévelopement de Perl (le sujet de départ je crois), disant que en fait on s'en fout un peut du developement de Perl,

du moment qu'on peut écrire des modules, Perl6 is not dead, it's on CPAN, fait de la pub pour Code Complete (2eme édition) une vanne que je capte pas à la fin... ouf! C'est fini!

Je déteste les talks sans slide! C'est vachtement plus dur à compte-render ;--(

Mike (Chamberlain) me regarde taper comme un malade et commente que ça serait plus simple si je tapais en anglais. Pouah! Si je tapais en anglais, cet après-midi je pourrais pas expliquer mon systême idiot pour pouvoir taper les accents avec un clavier QWERTY sans avoir à se rappeler les codes de vim (j'oublie toujours celui pour l'accent grâve (si, je sais, [ctrl-k]e! pour è, que je tape e`).

Bon, en fait il avait pas de slides, mais le texte complet semble être à http://use.perl.org/~acme/journal/20916

``Perl'' gt ``Java'' || die

claes

5 things amusing about Java... du moins c'était le sujet initial, mais apparement il a changé

Donc il explique CPANXR qui analyse CPAN, sans faire tourner le code, cf le CR sur CPANTS. Avec ça on peut se promener dans CPAN, de fonction en fonction,de module en module, en regardant des zolis graphes d'appels de trucs (c'est trop loin pour que je vois ce que c'est, mais en tout cas c'est en SVG, probablement pour que Robin soit content).

Il parle d'autres modules: B::Xref, Module::Xref, qui ou existent déjà ou sont prévus, mais en tout cas il a besoin d'aide

PAR

Encore un truc sympa dont j'ai déjà parlé

Perl Spectrum emulator

John Mitchell

Encore un LT pour Tonton Th. (http://tth.vaboofer.com/projets/Z80/).

Donc il s'est lancé là-dedans parce que tous les autres langages ont un émulateur de Spectrum, donc Perl ne peut pas être un vrai langage sans ça.

C'est encore lent (l'écran est rafraîchit 4x/s, au lieu de 50 pour la vraie machine). Mais il nous montre un jeu qui tourne!

Ca à pas l'air d'être sur CPAN, dommage.

And Finally

Tim Bunce

Un aperçu de DBI v2.0: quelques modifs qui ne seront pas compatibles comme rollback implicite au lieu de commit dans certaines conditions (déconnection, passage en AutoCommit). Les drivers devront être recompilés

En plus: un framework de test, UTF8 mieux suporté (ça fera du bien, ça m'a causé des problèmes récemment), load-balancing.

DBI pour Parrot est prévu.

J'ai du mal à taper le CR parce que de temps en temps je tape shift-space et mon terminal se met en mode japonais...

ja-sais-pas!

Merijn

Ses slides sont vraiment illisible!

Il bosse sur HP-UX, et il compile les logiciels GNU dessus. Comme le site gnu ne met plus à jour les fichiers qui donnent les fichiers uploadés dans la journée, semaine et mois, il a écrit un petit script qui fait ça. Ca filtre aussi ce qui ne l'intéresse pas.

Ca fait bailler Mike... et moi aussi si j'étais pas si occupé à faire des commentaires désopilants.

Tiens, il me réveille avec un peu de hard-rock!

Ah non, c'est le LT d'après, dont je n'ai pas le nom

Il explique qu'il bosse toujour avec la musique, mais le problème c'est qu'il veut écouter que de la bonne musique, mais quand même écouter de nouveaux trucs. Il écoute un radio internet avec XMMS, et il a un bout de code qui règle le volume de son laptop suivant qu'il aime ou pas la musique (il a un fichier avec ses préférences).

C'est rigolo. Le script est disponible sur le site de la radio.

History of a FAQ

Rob McCauley

Donc l'histoire d'une question qui revient assez souvent sur c.l.p.m mais ne semble pas traitée correctement dans les perlfaq

Bon, mon problême c'est que je comprends pas la question là Ca a à voir avec un search-n-replace.

Bon j'essaye: on veut faire

  my $search  = foo(.*)bar;
  my $replace = "toto";
  $string=~ s{$search}{$replace}g;

Il nous montre que la question apparaît sous divers titres, très différents les uns des autres.

Je suis pas tout, désolé.

grinder

Tiens, voilà grinder, qui veut comparer Lewis Carrol et Julie Andrews. Sans slides, grrr...

Il proteste contre les modules qui ont des méthodes nommées start et end. C'est pas naturel. On utilise pas ça quand on parle. Plus préciséement on n'utilise pas start, mais begin.

Les coupables: CGI, XML::Writer... tiens, je devrait ouvoir faire quequ' chose pour XML::Writer. Ou alors il pourrait récupérer la maintenance du module.

Rigolo!

Usenet Gems

Brian McCauley

Donc des questions posés sur usenet, assez génériques, dont les réponses révèlent de sombres choses sur les entrailles de Perl.

Le premier exemple détaille un peu les bizzareries de substr, liées au fait que c'est une lvalue (l'exemple est trop long pour que j'ai le temps de le taper, désolé).

Puis /a[^a]*foo/ ne peut pas être généralisé à plusieurs carateres. La solution est d'utiliser \G

Un autre exemple sur le fait que AUTOLOAD et defined ne se mélangent pas trop bieng (et il y a des bugs dans Perl)

Enfin: trouver l'offset de début et de fin de tous les matches d'un pattern dans une chaîne. Y compris les ``overlapping matches''. Ca c'est compliqué.

XXX

Bon, ben c'est à moi de causer, à ciao.

Ca se passe bieng, une fois que j'ai rebouté ma machine qui s'est bloquée quand j'ai branché la sortie vidéo.

Il y a peu de monde dans la salle (la faute a Live Hacks qui passe en même temps).

Life Hacks

La suite de la session, j'ai raté le début évidement, voir plus haut.

Le principe est de montrer de petits outils, genre ce que Damian ou MJD ont montré lors de précédentes conférences.

Je montre donc l'outil que j'utilise pour générer ces compte-rendus.

C'est sur le wiki, à http://belfast.yapc.org/wiki/index.cgi?LiveHacks

Evidement pendant que je met le code je rate 3 présentation...

Donc dans le désordre:

Bon, j'en ai raté quelques un...

Ici finit ce compte-rendu de la journée, si j'ai une connection, le temps et l'énergie l'Auction suivra


Suite et fin

D'abord les remerciements aux organisateurs (MERCI!!!)

Puis l'annonce du lieu de YAPC::EU 2005:

BRAGA - Portugal, probablement début septembre (Joao: since I have béen in Ireland, I promised myself I would never complain about the weather in Portugal again)

Donc présentation de Braga, en partant de la galaxie, puis la Terre, l'Europe, la Péninsule Ibérique (coucou Tatie!), le Portugal, Porto, finalement Braga, la fac, la rue principale (avec pleins d'ambulances), des églises, la banque du Portugal...

Le symbole du Portugal, le coq, vient de Braga

www.perl-hackers.net a la propal apparement (le réseau est démonté, donc je peux pas vérifier).

Bon, les enchères. Marty: we trust most of you

Après un début timide, Data Munging With Perl a pas mal de succès, 25 £

Les autocollants de Amsterdam.pm partent a 10 £. Le sac de la conf de Pise déclenche les hostilités, BooK le veut vraiment, à 12 £ (je tiens les comptes pour lui, du coup il me faut brancher le portable, ça la foutrait mal si à la fin on savait plus combieng il doit!). Je prends un tee-shirt orange à 5.50 £ BooK réclame une version rose. Refusé!

Pendant qu'on attend que les tee-shirts soient distribués Marty nous met l'eau à la bouche, ça va être bieng!

Tee-shirt Activestate: 10.36 £. Je suis battu, a 55 £ par claes pour un tee-shirt des Copenhaguen.pm, grrrr.... Le tee-shirt de l'Italian Perl Workshop déclenche les hostilités, j'aide Sébastien à l'emporter à 53 £ yipee! Maintenant, les stylos qui ont servis à faire les badges (fournis par Fotango qui avait oublié l'imprimante!). Et 50 £ pour BooK, qui me bat pour un exemplaire unique du Perl Magnetic Poetry Kit (ça lui fait 62 £). Félicitations!

Le bloc-note Movable Type est vendu 50 £ a Karen, une des organisatrices, après une bataille acharnée. Maintenant un stylo super compliqué, genre bic 4 couleurs avec une pointe pour les Palm, plus le sac en plastique, une bonne affaire à 21 £ un tapis de souris Perl avec un onion dessus (pas un vrai, un dessin) que finalement j'arrache pour 25 £ YEAHHH!!! Un bloc avec le Camel code, signé de l'auteur, unique! 2 £ Le même, 2 de plus! Un troisième! Signé par Erudil et les Paris.pm (leur ADN à été testé pour s'assurer que ce sont bien eux!): ça déclenche la bagarre, 20 £ même pas à un membre de paris.pm! Une tasse à café, 35 £, et finalement... ah non, pas finalement, il y en a d'autres. Un Perl 6 and Parrot signé par tout le monde dans le monde Perl6: Nicholas Clark contre mock, 20 £...50 £...80 £...100 £ Applaudissements!!! 120 £...150...190...195...200!!! 210, après hésitations, 250...275...280...300 par mock, Ben Holzman suggère 500, Marty dit 500 £ Ben? Ben s'enfuit...310...320...


330 £ A Nicholas!!

BRAVO!

L'objet final est... The London.pm Experience: London.pm organise une après-midi et une soirée pour vous (plus le temps de récupérer de la soirée), tout compris... 75 £ à l'organisateur de YAPC::EU 2005.

C'est fini.

Ah non! La couleur du tee-shirt de l'an prochain! BooK veut rose, non, il veut un truc à résille, 30 £ (pour les organisateurs). Ah non, maintenant il veut plutôt un truc genre camouflage... trop tard! Jos a embrayé sur résille, c'est hors de contrôle! BooK réussit à combiner sa proposition avec les oranges, emmenés par Leon, pour ``orange à résille''. Apparement il n'y a plus d'organisateur pour Braga... 90 £ pour ça? Non, les oranges splittent, c'est le souk! Quelqu'un a encore le réseau et nous montre ce que ça peut donner...ça fait peur (une espéce de Sylvester Stallone avec juste un fin tee-shirt à résille donc, sur un petit string noir très seyant).

[...]

Bon je reprends le compte-rendu alors que le décompte des 2 piles de billets est en cours... Pour résumer les 2 camps se sont rassemblés chacun d'un côté de la scène , Marty a essayè de mettre un peu d'ordre, finalement il a décidé de faire des enchêres fermées: chaque camp mets ce qu'il veut, sans savoir ce que l'autre fait, la plus forte somme gagne.

Au bout du compte, ça dépend du taux de change Euro/Livres... et le vainqueur est... RESILLE!!! à 540 £!!! (et YAPC garde aussi les sous des oranges).

YIPEEEEEE!!!!!!!!

Et au-revoir, sur un grand merci a Marty et a Belfast.pm


PS

Bon, en fait après la fin officielle de la conf il restait encore la soirée.

Morceaux choisis (du moins ce dont je me rapelle):

18:30 j'entre dans le Crowne Pub
18:31 gellyfish grogne,
18:32 quelques bières sont bues au Crowne Pub
19:00 je pars manger avec Birmingham.pm, chinois, excellent, ils sont prêts pour organiser YAPC::EU 2006 (les italiens aussi, j'évite prudement de prendre partie), quelques bières sont bues,
20:30 retour au Days Hotel, où se trouvent la plupart des mongueurs
20:35 gellyfish a perdu un pari, et devra donc faire sa présentation à Braga en robe de soirée. Il me propose d'en trouver une autre pour moi, si ça m'interesse
20:36 quelques bières sont bues
20:37 j'accepte, mais uniquement si la robe est bleue
22:30 gellyfish se met a ronfler sur sa chaise
22:31 quelques photos sont prises
22:32 le serveur vient réveiller gellyfish, apparement il est illégal de dormir dans les bars au Royaume-Uni
23:00 une blonde avenante se joint à un groupe de mongueurs, annonçant qu'elle a fait des études d'info et que le fait que nous soyons tous des codeurs l'impressione...
23:10 les premiers membres du groupe sortent de l'état de choc dans lequel les a plongé cette déclaration
23:12 la blonde (ci-après appelée TB) semble avoir porté son choix sur S., à la consternation du reste de l'assemblée
23:30 TB et S. se séparent du reste du groupe et continuent à discuter dans un coin
24:00 La main de S. est maintenant posée sur la hanche de TB
24:30 La main de S. est toujours posée sur la hanche de TB (ci-après appelée TFB)
1:00 S. et TFB sont maintenant assis à une table, la main de S. est maintenant posée dans le dos de TFB
1:30 mock se fait prendre en photo avec S. et TFB
1:31 la main de S. se repose sur le dos de TFB
2:00 Matt Sergeant et un autre MessageLabien débarquent dans le bar, la face de Matt, d'une jolie couleur rouge vif, et sa démarche, semblent indiquer que le bar où ils étaient, apparement appelé a fucking lovely place, servait aussi à boire
2:15 quelques bières sont bues, plus quelques Baby-Guiness, mélange délicat de Bayleys, Kalua et je ne sais plus
2:30 Le bar a subrepticement fermé, la désolation s'empare de l'assemblée
2:45 le seul autre groupe à traîner encore dans le lobby est une bande d'irlandais du sud, à Belfast pour un mariage, nous entamons les discussions, mock leur chante une chanson canadienne, commentaires: Irlandais 1: It's a fucking lovely song!, Irlandais 2: No, it's a Canadian song!
3:00 en revenant des gogues, je croise K. et TFB (ci après appelèe KB) qui semblent se diriger ensemble vers les chambres...
3:30 la rumeur veut que le seul bar encore ouvert soit celui de L'hotel Europa, mais qu'il faille être invité par quelqu'un qui y a sa chambre pour y être admis
3:31 je repère JayJay, qui est à l'Europa
4:00 JayJay, BooK et moi arrivont à l'Europa, où le portier vérifie que JayJay est bien descendu ici, et nous laisse rentrer,
4:01 nous arrivons dans le bar désert, un vieux serveur boîteux se traîne jusqu'à la réserve secréte d'où il nous sort 3 bières
4:05 Une voix retentit dans le bar désert: Mister Philippe Bruhat is called at the door! BooK et JayJay descendent, je garde les bières
4:07 ils reviennent avec Eric et David,
4:08 tout le monde disparaît, je garde les bières,
4:10 ils réapparaissent, avec une bonne douzaine de bières de plus dans les mains
4:11 quelques bières sont bues, la discussion reprends, par une analyse critique de la version 1.0 du Monde
4:30 quelques bières de plus sont bues, nous passons au design préliminaire de la version 2.0
4:32 BooK et Eric passent à l'implémentation de la version 1.0 de leur nuit, sur place, malgré l'illégalité flagrante de la chose
4:40 David s'énerve, et demande quelques fonctionnalités de plus pour le Monde 2.0, JayJay et moi demandons si on peut pas les repousser à la version 2.1
4:41 David décide d'entrer à son tour dans l'illégalité
5:00 quelques bières sont bues
5:30 le travail sur la version 2.0 avance rapidement
6:00 BooK, Eric et David décident d'abandonner leur vie de rebelles, se réveillent et nous quittent, laissant quelques bières derrière eux
7:30 les dernières bières sont bues
7:40 l'équipe de jour arrive au bar, et nous fait un café
9:40 JayJay et moi finissons de mettre les dernières touches à la version 2.0 du Monde
9:41 je quitte l'hotel Europa
9:42 j'oublie tout du design du Monde v2.0
9:44 je passe à mon hotel, me douche, me change, ne bois pas de bière
10:00 je saute dans un taxi pour l'aéroport
10:30 j'arrive à l'aéroport
10:31 c'est le mauvais
10:32 je ne bois pas de bière
10:33 je saute dans un autre taxi
11:10 j'arrive à l'aéroport
11:11 c'est le bon
11:33 je vois les passagers pour Birmingham embarquer, Matt est la seule personne dans tout Belfast à porter des lunettes noires ce matin
11:35 je monte dans l'avion
11:36 je ne bois pas de bière
18:10 j'arrive à Pise
18:40 je saute dans le train pour Lucca
19:20 je saute dans le bus pour le centre ville
19:30 ma femme saute dans mes bras
19:31 je saute dans les bras de Morphée