TPC 6
Compte-rendu par Michel Rodriguez
Lundi Matin
Salut!
Bon, ben me v'la en direct de San Diego, à la Conférence Perl, sixième du nom, TPC6 quoi.
Je suis arrive hier soir, j'ai déjà mal à la tête (comme à chaque fois que je croise London.pm...), j'ai croisé quelques français (Eric Cholet, Antoine Quin). Ce matin au programme: Perl pour l'administration système, ca peut me servir, et cet après-midi je vais embêter Kip Hampton qui fait Perl & XML. Bon, le premier tutorial commence, à plus.
Au rayon tee shirts, pour l'instant le score s'établit à 3: le O'Reilly habituel, plus 2 de London.pm, un rouge Sunnidale.pm et un noir Ank-Morpork.pm.
Matinée du Lundi
Perl pour Sysadmin
Bon, ya que des vrais sysadmins ici, je me sens pas bien. A part ça l'instructeur est rigolo, c'est David Blank-Edelman, l'auteur du bouquin de O'Reilly sur le sujet.
Première partie: quand utiliser un hack et quand éviter, comment s'en débarasser. De l'importance d'avoir des outils prêts en cas de crise. Ou récupérer du code utilisable (le Cookbook, son bouquin, perlmonks). Bien sur le plus utile c'est CPAN. Damned, je savais pas que taper r dans le shell de CPAN donne la liste des modules installés sur la machine, cool. J'ai 316 modules installèes sans numèero de version! Sur PC ppm est l'équivalent de CPAN. Un truc qui peut être utile si vous avez cassé le fichier de config (XML) de ppm:ppm gen_config > perl/ppm.xml
D'autres outils utiles:
perl -d -e0
pour démarrer le debugger perl "à vide" et pouvoir tester des bouts de codesinetd
peut faire tourner des scripts perllsof
liste les fichiers ouverts (ça je savais, na!)procmail
rsync
unison
(comme rsync mais permet de synchroniser différentes machines, la home page à l'air morte mais Mandrake a un package, http://rpmfind.net/linux/rpm2html/search.php?query=unison et LinuxWorld a un article http://www.linuxworld.com/site-stories/2002/0111.unison.html)l0pht-watch
surveille un répertoire et donne les noms de fichiers écrits et déetruit, y compris les fichiers temporaires (lien depuis http://www.shmoo.com/prog.shtml)lockfile
un programme qui est installé avecprocmail
permet de... locker (je sais pas traduire) un fichier. C'est dur de faire ça proprement ( http://perlmonks.org/index.pl?node_id=14139 décrit une façon propre de le faire en Perl), mais c'est plus simple de juste utiliser lockfile
Une recette pour eviter le "symlink shuffle" (un méchant symlinke un fichier entre le moment ou il est ouvert et celui ou le programme écrit). J'ai le code, demandez le moi quand je rentre si ca vous intéresse.
Il passe un slide interessant comparant les file systems sur différents OS, un autre qui détaille les valeurs retournées par stat
sur différents OS.
File::Spec
aide à écrire du code portable C'est chmod 0666, $file
, PAS chmod 666
, Stat::lsMode
peut aider
MD5: know it, use it, love it! Il montre comment s'en servir non seulement pour des fichiers mais aussi pour les résultats de services (une zone DNS par example)
Source Control System: je le fait pas pour mes fichiers systèmes et j'ai honte maintenant ;--( Il conseille RCS
plutot que CVS
pour les fichiers systèmes (rcs
n'autorise pas des accès concurrents, et cvs
ne remet pas les fichiers au bon endroit quand on commet une modif), il y a un module Rcs
qui permet de s'interfacer depuis Perl.
Ouf! C'est la pause! Pile à l'heure, le talk de MJD "Conference Presentation Judo, lien depuis un de mes messages de YAPC) à l'air d'avoir été lu par tout le monde!
Chic, un cartoon! Une compile de vieux jeux videos, avec un personnage qui se promène dans pacman, frogger, pong, etc, ya au moins 20 jeux différents, il devrait nous passer l'URL plus tard.
Se promener dans les répertoires: utiliser File::Find. Au passage je DETESTE File::Find, l'interface est nulle. J'ai un post sur perlmonks (http://perlmonks.org/index.pl?node_id=109068 c'est mon post le plus populaire, je dois pas être le seul à avoir des problemes avec File::Find) qui explique comment utiliser des closures pour passer des arguments au callback. Il n'a pas l'air de l'aimer non plus, aucun de ses exemples ne l'utilise. Un example intéressant d'un script qu'il a utilise pour trouver les fichiers corrompu sur le disque d'un laptop qui etait tombe par terre.
Une partie sur les comportements anti-sociaux des utilisateurs (j'ai ca à la maison mais comme le seul utilisateur c'est moi je peux pas trop sevir ;--) Proc::ProcessTable permet de recuperer des infos sur l'etat du systeme, pour par exemple kill-er tout process qui consomme trop de memoire ou de CPU. Comment detecter les utilisateurs qui font tourner des binaires "suspects" (non autorises, genre des bots IRC ou nmap) mais qui finement changent le nom de l'executable: lsof peut aider (en detectant les ports utilises par un process par exemple)
Detecter les intrusions: quelques trucs interessants:
- regarder les process qui tournent avec "./"au debut peut donner des indices
- regarder les utilisateurs qui se loggent de plusieurs domaines differents (surtout si c'est à 5 minutes d'intervalles depuis Boston et la Norvege)
De nombreux examples de courts scripts pour etablir des demons utiles, ou simuler un client ou un serveur.
Quelques anectodes rigolotes... et c'est fini.
A plus
Infos diverses:
La nouvelle version du moteur de recherce de CPAN est à http://search-beta.cpan.org/ et a l'air cool.
A oui, jai recupere la version 2 de Mastering Regular Expressions, plus le bouquin sur OpenSSL.
Et j'ai un draft de la review de Perl et LWP à http://www.xmltwig.com/review/perl_lwp_review.html
Mardi Matin
Salut,
Bon, ben j'ai pas trop de compte-rendu pour l'après-midi de lundi, vu que plutot que d'aller voir Perl & XML (tres bien d'après mon chef) j'ai prefere rester à la terrasse de l'hotel à descendre des bieres avec les français du coing, Eric Cholet, qui bosse sur mod_perl, Antoine Quin, qui faisait du SVG et du DOM dans son coin, Robin Berjon qui fait dans le SAX et quelques XML-ers comme Matt Sergeant (54 modules sur CPAN la derniere fois qu'il a compte).
Advanced DBI
Ce matin c'est donc Advanced DBI (je sais bien que je fais meme pas de Basic DBI, mais si vous croyez que ca va m'arreter!).
Au debut c'est surtout sur "comment optimiser votre code pour qu'il aille le plus vite possible". C'est Tim Bunce, l'auteur de DBI qui presente.
En vrac:
- analyser les requetes avex
EXPLAIN
(ca depend de la DB) - utiliser des placeholders meme avec
do
fetchrow_arrayref
est la methode la plus rapide pour recuperer les resultats...- sauf que bind-er des colonness est encore plus rapide!
fetchall_arrayref
a ete ameliore et est assez rapide maintenantconnect_cached
peut être utile pour cacher un DB handle (si on garde la connection toujours ouverte on peut avoir des pb si la DB est redemarree), sauf si on utilise des transactions.
Monty Widenius, le chef developpeur de MySQL est dans la salle et chaque fois que Tim lui pose une question ils finissent par ne pas être d'accord!
Profiling: DBI::Profile permet de profiler du code DBI
Error Handling: les erreurs ca arrive, c'est de ne pas prevoir qu'elles peuvent arriver qui les transforme en catastrophes.
Le plus rapide (et simple) pour traiter les erreurs d'après lui: Avoir RaiseError à 1 (qui fait un die si une erreur arrive), et mettre le code qui utilise la db (plusieurs instructions donc) dans un eval. Tester $@ après le bloc, en cas d'erreur analyser le message et utiliser les methodes DBI pour avoir plus d'info (il y a une nouvelle facon de recuperer l'instruction qui a plante mais j'ai pas eu le temps de la lire :--( Une autre facon de faire c'est d'utiliser HandleError: $h->{Handle::Error}= sub toto (le handler peut meme faire un reset de l'erreur si on veut l'ignorer)
Transactions: Un petit coup sur MySQL qui jusqu'a il n'y a pas longtemps pretendait qu'il n'y a pas besoin de transactions, jusqu'a qu'ils les ajoutent a la DB ;--) Monty ne repond pas. Comment faire des transactions avec DBI:$dbh->begin_work # commence un transaction $dbh->commit #la termine
Un apercu de l'architecture de DBI. Tim conseille d'utiliser les fonctions de trace ($h->TraceLevel}= $level;
ou la variable d'environnement DBI_TRACE dans laquelle on peut mettre un nom de fichier qui recevra la trace) pour resoudre les problemes. Je vous passe le detail des differents niveaux de trace, la doc est la pour ca (perldoc DBI et chercher DEBUGGING).
DBI pour le web
D'abord les conseils classiques: utiliser mod_perl et Apache::DBI qui accelere le code de maniere transparente. Un conseil pratique: comme le handler reste en vie entre les transactions, ne pas le modifier (du genre jouer avec auto commit).
Si vous avez enormement d'acces à la DB, utiliser un proxy sur les scripts qui accedent à la DB, sur une machine dediee par exampe.
Problemes dus au fait que le Web ne garde pas l'etat (il est stateless quoi): utiliser des hidden fields (facile mais pas sur), Apache::Session peut aider aussi.
Browser une DB page par page: refaire la query et jeter les records inutiles, facile à faire, surtout que MySQL par exemple supporte ca assez bien. Un inconvenient est que les insert/delete ne sont pas bien traites. Une autre solution est de stocker les resultats de la query la premiere fois et de ne renvoyer que les resultats voulus. C'est mieux de ne stocker ques les ID (tous) et d'aller chercher les records voulus (rapidement à l'aide de la key) Beaucoup de DB ont un pseudo champ ROWID, avec MySQL _ROWID retourne la primary key d'un record quel qu'il soit.
Securite: UTILISER -T (taint mode). Si vous ecrivez quoi que ce soit pour le web (ou accessible par des utilisateurs auxquels vous ne faites pas confiance) et que vous ne connaissez pas -T, RENSEIGNEZ-VOUS! perldoc perlsec est un bon debut.
Traitement des BLOBs: DBI se debrouille bien, il manque juste des fonctions pour decouper les BLOBs et les traiter morceau par morceau. Si vous en avez besoin vous pouvez emailer Tim pour faire monter la pression ;--)
Portabilite: SQL a plein de dialectes, dans le langage, dans les types de champs et dans les fonctionalites des drivers (DBD) Il manque une test suite unique pour tester les fonctionalites des drivers (volontaires bienvenus!).
On peut utiliser la methode type_info pour recuperer le type exact d'un champ dans une DB et choisir le meilleur type equivalent dans une autre.
Curieusement une des fonctions qui varie le plus entre DBs est la concatenation de chaines de caracteres (CONCAT, avec differentes syntaxes, '.', '-'...). Il y aura bientot une methode dans DBI qui fera ca de maniere portable. Bien sur les drivers devront être mis-a-jour aussi remarque Monty (reponse de Tim: "ca arrivera naturellement").
Citation du jour: "DBI has taken over the World": Tim explique qu'il n'y a vraiment aucune raison d'utiliser OBDC, DBI est plus rapide et couvre toutes les fonctionalites d'OBDC.
DBI::Proxy et DBI::ProxyServer permettent de contacter à distance des DBs qui ne supportent pas les connections à distance. C'est completement transparent, il suffit de changer une variable d'environnement (dont j'ai rate le nom, darn! Eric? (Cholet, assis 3 rangees devant moi, qui doit suivre au lieu de taper le CR en direct) Le proxy supporte aussi l'encryptage des donnees,la compression, et faire du controle d'acces. Kewl!
DBI::PurePerl peut être utile sur des plateforme sans compilateur. Il faut bien sur avoir des DBDs (et autres modules en pur Perl): AnyData (excellent DBD pour des fichiers textes et autres), LDAP, mysqlPP je crois etc...
La variable d'environement DBI_PUREPERL (je fais attention maintenant) permet d'activer ce mode (c'est juste 2x plus lent que la version C, ce qui reste rapide).
Nouvelles methodes selectrow_hashref, fetchall_arrayref, select_all_hasref, fetchall_hasref, $h->{FetchHashReuse}=1 ameliore la vitesse de fetchrow_hasref (non encore implemente), voir la doc...
Prevu dans un futur proche: nouvelle FAQ, vitesse, swap_internal_handle fait une "greffe de cerveau à un DB handle", me demandez pas de details! Renommer finish() en close() scroll permet de se deplacer dans les resultats, sans les lire forcement dans l'order). execute_array: une methode qui permet de faire des operations par lots, execute est execute pour les valeurs dans le tableau (de references à des tableaux)
Autres
Plus de compte-rendus sur use.perl.org (regarder les 'journals', notament celui de gnat (Nat Torkington, il organise la conference donc il devrait être au courant), et à http://www.oreillynet.com/weblogs/author/945. Photos par Leon à http://www.astray.com/photos/?search=tpc6 (les miennes arrivent ce soir).
Mardi Après-midi
SOAP
Et oui! C'est l'après-midi buzzword!
Ca commence comme d'habitude avec une photo de bebe, MJD soit maudit! Par Ian Kallen, qui bosse pour Covalent si j'ai bieng suivi. Il a bosse pour salon.com avant, excellent site web au passage.
Puis pub pour Teach Yourself Apache 2 in 24 hours, il y aura un tirage au sort pour en gagner un exemplaire à la fin de la session. Un conseil quand meme: ne pas lire le livre en 24 heures consecutives. Pratique!
Apparement le tutorial utilise Java et Perl. Damn! Java! Horreur malheur!
SOAP: Simple Object Access Protocol. C'est un des protocoles pour faire des Web Services. Le protocole de transport peut être HTTP (en general) mais aussi SMTP, Jabber... ( SOAP::Lite en Perl a probablement le plus de protocoles differents)
WSDL est le protocole qui decrit les services offerts et UDDI "publie" le service (Ian le decrit comme le DNS des Web Services).
Il decrit RSS comme un proto-protocole dans le genre (je suis assez content du mot proto-protocole).
Mythes (faux) à propos de SOAP:
- c'est simple (il faut se taper XML, les W3C Schemas plus SOAP pour implementer SOAP),
- c'est à propos d'objets (nope, 'est juste des donnees),
- il y a un web dans web service (ca utilise souvent HTTP, mais ca n'a pas de lien direct avec le web),
- ca s'integre facilement avec .NET (pas vraiment le cas d'après lui),
- il faut connaitre XML pour l'utiliser (nope, le bas niveau est du XML, mais l'utilisateur ne le voit pas),
- le standard est mature (non, il y a beaucoup d'outils, souvent cher, mais rien de vraiment solide et qui communique sans probleme avec d'autres outils),
- ca fait tout et le cafe ("don't believe the hype!", faire un proto d'abord)
Mais ce qui est vrai:
- c'est ouvert, on peut implementer son truc dans le langage qu'on veut,
- ca peut utiliser different protocoles de transport
- c'est independant des vendeurs (ca veut pas dire que les outils marchent bien ensemble, juste que personne ne domine completement le standard)
- chaque langage a sa propre maniere d'implementer les objets
- il peut faire cooperer des systèmes "loosely coupled"
- les applications n'ont pas forcement besoin de connaitre SOAP
- c'est un standard au lieu de protocoles proprietaires (ca sonne bien aussi)
- ca peut traverser les firewall (NdM (Note de Mirod): pas bon à mon humble avis , mais bon, j'ai iptable actif sur la moitie de mes machines à l'interieur de mon firewall...)
Le format d'une requete (non, je vais pas le taper, google devrait avoir ca!)
WSDL definit les types de donnees et generalement les interfaces d'un service. En generalement c'est des gros paves!
Si on utilise directement les messages SOAP on doit se taper le processing du XML qui contient les donnees. Si on utilise SOAP-RPC le message est un appel de procedure. Les outils se debrouillent d'après ce que je comprends (NdM: OK, d'après ce que je _sais_ SOAP::Lite est completement Magique (tm)).
A la base les types de donnees sont les memes que dans XML W3C Schema (on cree des types complexes avec W3C Schema (NdM: bonjour le mal à la tete, mais bon, je suis pas trop impartial, je deteste tous les standards XML à part XML lui meme , XPath et des bouts de SAX).
En cas d'erreur le message contient uniquement une erreur
Bon, après tout ca on rentre dans le domaine des outils qui masquent tout ca: JWS pour Java: cote server c'est simple, on doit juste renommer le .java en .jws (NdM: ah les joies des extensions!) et on le met dans le repertoire qui va bieng. C'est un peu plus complique cote client. Diable! Il faut ecrire du code! Les classes ne peuvent pas être compilees, le serveur doit avoir acces au source.
Cote Perl le client est juste un liste d'appels de methode chainees. Le serveur change pas. Regarder la doc de SOAP::Lite, c'est beau! Sans rire, si on vous demande de faire du SOAP precipitez vous sur SOAP::Lite (recent, il y avait un gigantesque pb de securite il y a pas longtemps). Vous ridiculiserez vos collegues Java (surtout que l'outil Java genere des messages qui plantent avec les ouils Microsoft).
Pour installer un serveur SOAP avecmod_perl il suffit d'ajouter un directive Location dans la config Apache. Le code du server ne change pas par rapport a du code local (les return des fonctions dans le package sont SOAP-es).
Le gars a son serveur web en ligne pour la demo depuis 30mn et il a deja des tentatives d'intrusion de virus IIS!
Un truc pas joli avec SOAP::Lite c'est que le XML transmis (il nous le montre avec un sniffeur) est tout sur une ligne. Mais bon, c'est legal.
SOAP::Lite se debrouille generalement bien avec les conversions de types. Juste des fois si une chaine de carateres ressemble à un nombre il envoie un nombre. C'est pas grave si en face c'est aussi du Perl, qui convertira gentiment en string si il faut, mais ca posera des problemes à des langages plus fortement typees comme Java.
Il donne quelques moyens de simplifier l'installation avec Java, je l'ignore.
Pour publier un web service en Perl: ajouter un ligne à la liste d'appels de methodes.
Fais chier, je crois que je suis malade, ma femme a ca aussi, j'ai froid et je suis creve. Ceci dit j'ai pas dormi beaucoup la nuit derniere, alors ca ira peut être mieux demain. Demain c'est loin ceci dit, alors vous etonnez pas si je finis pas le cours :--(
Pause, cafe, il fait chaud dehors (la clim doit être reglée a -15 ici!), ca va mieux.
Un vrai example, genre e-business.
D'abord avec Java, c'est l'heure de lire /. sur Mandrake 9.0 beta (NdM: cette phrase etait dediee aux trolls du CULTe). Il patauge un peu avec la demo, l'ecran est trop petit... ah bon, c'est fini, ouf!
Il montre un client Perl pour le serveur qu'il a ecrit en Java. Il faut ajouter une ligne plutot coton pour deserialiser proprement les donnees emises par le serveur. Ah maintenant il montre la vrai facon de faire, avec WSDL. Ca marche sans verrue horrible. Et maintenant il utilise la magie de SOAP::Lite pour autogenerer des accesseurs.
Il liste des implementations dans d'autres langages.
On arrive à la fin, il complimente SOAP::Lite (moi aussi), il repete que le standard n'est pas mature et qu'il a des trous qui conduisent à des pd de compatibilite. L'en-tete HTTP Host est souvent mal traite, ce qui cause des problemes avec les outils MS qui sont tres strict sur ca.
UDDI progresse lentement, mais pour l'instant pas vraiment d'implementation interessante.
La securite n'est pas traitee à ce niveau (HTTPS bonjour, mais à mon avis ca va creer des problemes ou les niveaux vont se melanger). Comme il dit c'est Microsoft qui pousse ces standards, donc faut pas s'attendre à un truc trop sur à la base.
Desole de taper sur Java et MS autant, mais bon,deja je les aime pas trop c'est vrai et en plus l'instructeur tape sur MS et me montre du code Java 10x plus long que la meme chose en Perl.
Avec SOAP::Lite et mod_perl Apache::Session peut aider à gerer une session raisonablement sure (me demandez pas comment, c'est un exercice pour le lecteur).
C'est fini,au bout du compte c'etait plutot ennuyeux, mais bon, j'aurais du m'y attendre, SOAP c'est pas vraiment un domaine ou on rigole tous les jours!
Après ca je me sens vraiment pas en forme et je vais me coucher!
Autres
Lecon après seulement 2 jours de conference: n'emmenez pas votre epoux(se) ou "significant other" comme y disent ici à une conference si elle n'est pas _extremement_ tolerante et qu'elle ne peut pas supporter 4 heures de descendage de biere en causant de Perl, XML et de gens qu'elle ne connait pas. Le taux de crises conjugales est deja impressionant!
Leon Brocard a l'air de bosser sur un nouveau film, genre le film de YAPC mais sans les jurons (bouh!). Ingy recolte des photos rigolotes pour son Lightning talk (j'en ai une ou Elaine lui met des raisins dans la bouche, a la romaine, je la posterai demain, je peut charger la photo sur mon portable dans ma chambre mais ya pas de connection rapide à cet etage !@##$%%^&*).
Mercredi Matin
Merde! Je realise que du coup j'ai rate le State of the Onion de Larry et le Quizz Show, quel idiot!
Keynotes
Lawrence Lessig
Une description de l'histoire du copyright depuis 1740.
Walt Disney, quand il a cree Mickey, en fait s'est inspire de Buster Keaton et l'a "Ripped, Mixed and Burned".
Il montre comment le copyright a ete etendu depuis 1950: "Nul ne peut faire a Disney Inc. ce que Disney a fait aux freres Grimm"
Il montre une serie de "permissions" pour des ebooks, genre "copier 10 textes dans le clipboard tous les 10 jours"... debile. Le mieux c'est que le bouquin avec la license la plus restrictive est... le sien!
Evidemment il preche des convaincus, mais c'est bien quand meme, c'est bien pense.
Il nous engueule pour ne pas avoir fait plus pour nous defendre, et nous demande de donner plus à l'EFF (je vous y encourage aussi, ca à l'air lointain tout ca, mais si on fait rien on va tous l'avoir dans l'os, c'est ce qu'il explique d'ailleurs, c'est un probleme americain, mais si on le resoud pas aux US il va infecter le reste du monde).
Stallman.
C'est la premiere fois que je le vois parler.
Il commence par "je ne suis pas un developpeur Open-Source", rires. Il fait meme des blagues! ("Gnu c'etait pour rire, les gens devraient avoir le droit de rire") Il demande à O'Reilly de publier tous ses manuels en Open-Source Ah, il cause de Gnu/Linux, ce qui me fait toujours rire. 10 minutes sur le sujet. Il souligne les differences entre Free et Open-Source. Rontudjeu, quel est l'interet de se battre entre nous et pas pour ecrire du code propre?
La c'est plus interessant: "You have to learn to say no to what business want" au moins il parle des differences qui compte, Open-Source/Closed-Source Et (comme Lawrence Lessig) il nous demande de nous mobiliser politiquement.
Il defend Napster.
Il finit sur une truc rigolo: il s'habille en saint et declare qu'il est un saint de l'eglise EMACS: "there is no system but Gnu and Linux is one of its kernel". "Emacs started as a text editor but became a way of life and a church".
Larry Wall pose une question: Il est d'accord avec la plupart de ce que RMS a dit mais il conteste le fait que les developpeurs Open-Source ne defendent pas la liberte. Il defend la liberte plutot en faisant de l'Aikido que de la boxe. RMS tente de le recruter dans la FSF. Si l'Aikido marche c'est bien, mais il ne pense pas que ca puisse marcher.
Au final il a cause plutot bieng, assez rigolo, mais il sonne plus comme un politicien que comme un geek.
Une voix dans la foule: l'an prochain on appelle la convention "Open Source et Free Software Convention".
Ca finit sur une standing ovation.
Mercredi Soir
Perl 6: where is it? (Damian et Larry)
Qu'est-ce qui est deja fait: structures de controles, regexps, fonctions...
Architecture: voir Dan (Sugalski) et son talk sur Parrot vendredi.
Ce qui change:
-> devient . (j'espere que tout le monde est au courant) mais la plupart du temps on peut s'en passer completement $ref->(@args) devient en fait $ref(@args) (le dereferencement se fait automagiquement).
$@% sont invariant: $toto[$index] devient @toto[$index] (de toute facon le système de perl5 est complique avec des donnees complexes @hash{@keys}=@values par exemple). D'après Damian "as soon as ou move to Perl 6, all your buggy code is fixed"
' _ ' pour la concatenation ("you don't have to like it", "yes we tried everything else")
attributs (appeles properties en Perl 6): ce sont des "post-it" notes attachees a une variable (ou une fonction). On peut meme retourner "0 but true". Si vous avez pas regarde ces trucs faites-le, c'est vraiment tres cool. C'est disponible avec Perl 5, c'est meme dans le core de 5.8.0: http://search.cpan.org/doc/JHI/perl-5.8.0/lib/attributes.pm .
if( 1 < $x < 10) { ... } va marcher (y compris avec plus de 3 termes)
=~ teste l'egalite "au mieux", numerique si il faut, string, objet, en fait il y a 35 cas
// (prononcer eur), j'ai deja du en parler, equivalent à || mais faux si le terme de gauche est undef, la version equivalente à or et and est err
Parameter lists: sub( $value, $from, $to, @except) marche attention, ici @except doit être un tableau ou une reference à un tableau, pas une liste, mais sub( $value, $from, $to, *@except) marche avec une liste.
:= vole à Pascal (au moins la syntaxe) cree un alias $toto:= @arr[7]; maintenant modifier $toto modifie @arr[7]. Ca me rapelle l'EQUIVALENT du Fortran, super! Du coup (@a, @b):=(@b, @a); marche et echange les tableaux (en fait les noms des tableaux, donc c'est tres rapide)
Tout bloc est une sub/closure. Normalement le bloc est juste execute. Entre autre ca permet de passer des blocs en paramêtre (pour ecrire des fonctions avec la meme syntaxe que sort, map et grep)
Hyperoperateurs: ^<operateur> fait marcher l'operateur sur une liste: @result= @x ^- @y
Currying: on peut appeler toute fonction avec - d'arguments que declares et on recupere une fonction qu'on peut appeler avec le reste des arguments. Damian plaisante que personne n'y comprends rieng mais que c'est cool quand meme.
Switch:
given $val { when 1 { print "number 1" }
when [1..10, 42] { print "number in list" and continue}
when @array { print "number in list" and break}
do_something_here();
when &sub { print "argument to subroutine" }
}
ca utilise le meme "smart equal"que =~
Il n'y a plus besoin d'avoir des parentheses autour des tests.
Topics: une boucle for (il n'y a plus de foreach) cree un "topic", en gros l'equivalent de $_. Une fonction cree un topic: son premier argument (ca permet d'ecrire de l'objet plus naturellement) La syntaxe de for est maintenant for LIST BLOCK Plus de paramêtre, Chip Salzenberg proteste ;--). Mais comme le block est une fonction il peut prendre des paramêtre. Du coup il existe un autre syntaxe pour declarer les paramêtre: for @data -> $next { print $next }
(le block n'a pas de nom mais il a un paramêtre quand meme!). Du coup on peut rajouter des paramêtre et boucler plusieurs elements à la fois: for @data -> $x, $y { ... }
On peut meme boucler sur plusieurs tableaux en //: for @arr1; @arr2 -> $v1; $v2 { ... }
Exceptions
try { block } remplace eval { block }
On peut mettre CATCH dans le block (pour avoir acces aux variables du bloc) pour choper les exceptions. Je vous passe les details sur les types d'exceptions. Ya meme pas besoin de mettre try en fait.
Bon, je dois changer la batterie de mon portable, je vais donc sauter le passage sur les regexps, mais de toute facon ca doit être dans le CR de YAPC.
Je suis de retour pour les questions. Dates? On va prendre notre temps, on veut que ca soit "Right, not Right Now" Un idiot demande si les nouvelles regexps (qui utilisent < et > vont l'obliger a backslasher tous ses < et > Ca se resoud en donnant un nom à une regexp. (NdM: ou en utilisant un parser XML, creting!). Une question sur la lisibilite de Perl 6: Damian dit que en fait Perl 6 est plus lisible, voir son talk de cet après-midi (qu'il avait fait à YAPC) sur des programmes Perl 5 portes sous Perl 6. Une question sur "les livres sur Perl 6": il y en aura plein, OO Perl 6 sera plus court ;--) Une question sur les modules: Perl 6 ne devrait inclure que tres peu de modules dans le core.
En general le but du design de Perl 6 est de trouver des principes simples qui permettent d'avoir un langage plus puissant.
C'est fini!
Perl 5.8 at last! (Jarkko Hietaniemi et Hugo Van der Sanden)
Les mauvaises nouvelles d'abord: pas de compatibilite binaire, il faut recompilerles modules en C.
Unicode: tres cool, on peut ecrire du POD en chinois, Jarkko nous montre une man page (je sais pas sur quoi! En chinois). Encode (le module qui traite Unicode) supporte Unicode 3.2 (en fait Perl devait être le premier langage à le faire vu que Jarkko a recupere la spec sur le site Unicode _avant_ qu'elle ne soit annoncee officiellement). Du coup la distribution est bien plus grosse (les tables unicodes prennent enormement de place).
Ce qui marche maintenant: ithreads, signaux
PerlIO: la couche IO est maintenant specifique à Perl, ce qui permet de faire de la compression/decompression, de la conversion d'encodage, de l'encryptage... de maniere transparente.
Une enorme table avec tous les nouveaux modules inclus dansle core: Encode, Tie::File (si vous connaissez pas allez voir), des modules de test, File::Temp, Storable...
Amelioration diverses: sort, map, unshift vont plus vite, les nombres sont plus precis (moins dependant des librairies natives des differents systèmes).
Beaucoup plus de tests, le système de gestion des bugs est maintenant RT (au passage RT est aussi utilise pour les modules, à http://rt.cpan.org/ utilisez le, c'est tres pratique pour les auteurs de modules).
Plus de docs
De nouvelles plateformes: Mac OSX, Mac OS Classic, AtheOS, NetWare et quelques autres dont j'ai jamais entendu parler. Plus la PlayStation 2 bien sur!
Jarkko se retire, et abandonne le role de Pumking après une standing ovation.
Hugo lui succede pour 5.9 (instable) et peut être 5.10.
Ses buts pour le futur: plus de stabilite, accroissement des performances. Si possible les fonctions additionelles seront dans des modules, le core offrira juste les "hooks" necessaires.
Perl 6 (Damian Conway)
Le talk de Damian commence comme celui qu'il a fait à YAPC sur le portage de programmes Perl 5 vers Perl 6. Je fais pas trop attention et je cherche desesperement le patch de XPath que j'ai (j'espere!) reussi à convaincre Matt Sergeant de prendre.
Ensuite il parle de modules qui permettent d'avoir des fonctions qui seront dans Perl 6 avec Perl 5: Want, Exporter::Simple, les Perl6::*
Conclusion: "The sky isn't falling"
Lightning talks
C'est rigolo, cette annee c'est plutot des poids lourds de Perl qui causent, vous verrez:
Dan Brian: The What-Sucks-O-Meter
De nos jours tout le monde a une opinion, en general tres simple: X sucks ou Y rocks. Il montre un bout de code qui s'interface avec Google (en utilisant SOAP::Lite, pas moins!) pour recuperer la liste des pages qui contiennent le mot "sucks" ensuite il recupere les pages elles meme (avec LWP simple, depuis le cache de Google), pui utilise un module qui fat du parsing de phrases (en anglais) et recuperent le sujet de la phrase. Du coup il recupere la liste des trucs qui suxe le plus (et symetriquement qui roxent).
Les trucs qui suxent, dans l'ordre: life, school, microsoft, windows, work, windows 2000
Ingy: HashBang
Chante, avec #perl qui fait les choeurs. Il presente ensuite son langage: Ingy, avec des fonctions comme stringingy et d'autres que j'ai rate. Le langage n'est pas encore implemente, seul Damian peut le faire. Mais c'est interprete, donc #/usr/bin/ingy ne marchera pas. D'ou le but du talk: hashbang qui permet d'avoir des scripts appeles grace à #! J'ai pas tout compris mais c'etait rigolo.
Plus d'info dans le repertoire d'Ingy dans CPAN, regardez les modules HashBang-...
Joe McMahon: Le debugger Perl
Le debugger est vraiment bieng mais il n'a pas change depuis Perl 4: il n'est pas completement documente example de commentaire dans le code: "here starts uncomprehensible code" (cri dans la foule "fix it!"). Il propose donc de commenter le code du debugger (il a commence, 1200 lignes de commentaires), pour pouvoir ensuite l'ameliorer (avec des commentaires!). Et pourquoi pas re-ecrire un debugger "from scratch"
Casey West: le Perl Documentation Project
Casey West demande de l'aide de l'aide pour le Perl Documentation Project (en criant!) Il veut ameliorer la doc pour y inclure plus de docs "thematiques", à la Linux-Howtos. Ca donne aussi l'occasion à des developpeurs de "se montrer". Brian d Foy est l'editeur en chef, les textes seront edites, ce qui aide les auteurs à s'ameliorer.
Tim Bunce: What's new with the DBI
Bon, vous avez un compte-rendu complet sur le cours sur DBI, donc je vais en profiter pour reposer mes petits doigts!
Chip Salzenberg
"Dear Friends". Il preche... pouvons nous vraiment croire qu'un linguiste, programmeur du dimanche travaillant pour le gouvernement ait pu creer quoi que ce soit d'utile? Et plus encore un langage universellement repandu. Larry Wall-muhadib? ... plus tard... la lecon ultime: "There Is More Than One Way To Do It". En resume, ca vaut le coup de reflechir à l'histoire de Perl pour voir comment une construction aussi invraisemblable a pu reussir aussi bieng!
Allison Randal &Doctor Seuss: Perl 6
Doctor Seuss est un auteur de bouquins pour enfants tres celebre par ici. Ca rhyme, ca explique pourquoi Perl 6, les topics (Allison est la specialiste des topics pour Perl 6)
Intermede Rigolo: l'annonceur donne une liste de mots de passe qui passent en clair sur le reseau wireless. Ouf, ya pas les miens!
101 Damnations par Matt Sergeant
Il affiche la liste de ses 50+ modules sur CPAN. Pourquoi? Il est feneant et ca lui permet de re-utiliser son code quand il change de boulot, d'avoir des testeurs pour pas cher et pis... personne d'autre ne le fait!
Il a aussi des outils qui vont bieng: newproj qui remplace h2xspour initialiser un module, Test::Harness ("you cannot write enough tests" repete 3x!), il a un script qui uploade un module sur CPAN, CVS
D'autres recuperent les modules qu'il a cree et les maintiennent.
IRC est un truc magnifique qui permet de passer ses journees sans rien faire ;--) irc.rhizomatic.net si je l'ait pas deja dit
CPAN est genial, ca peut être minable aussi des fois (c'est le bordel)
rt.cpan.org est genial (je suis d'accord)
Gong!
Casey West revient pour remercier des gens de la communaute: Nat, David Adler, Tom Christiansen, Randall Schwartz, Elaine et Jarkko, Hugo... c'est illustre par des persos de SouthPark (y faut Flash) http://southpark.gamesweb.com/flash/sp-studio.html et c'est rigolo
Je suis desole si ce compte rendu semble bien incomplet, les Lighning Talks il faut y être, et en plus j'arrive pas à taper assez vite...
Ken Williams: the Perl Apprenticeship Site:
Le Perl Apprenticeship Site: http://apprentice.perl.org/
Tom Phoenix: les principaux euphemisme utilise par les Perleurs
- Forking
- Improper Access to someone else package
- Google whacking
- Consulting the Blue Camel
- Quantum Suerpositions
- Enabling promiscuous mode to someone else socket
- Sniffing your own packets
- Pound Perl
Entre autres et j'ai pas tout compris... desole
Adam Turoff (aka Ziggy): 10 raisons d'acheter un iBook
Demande au possesseurs de Mac de les montrer. Le talk est pour les autres. 10 raisons d'acheter un iBook:
- ya Perl
- c'est un unix
- ca marche, tout simplement
- ya pas Python dessus (mais ca va changer ;--(
Pierre Denis: Fotango
Pierre est un français qui bosse avec Leon Brocard (voir photos sur mon site), Andy Wardley et James Duncan. Cause de Fotango, le site web sur lequel ils bossent tous. C'est base sur un web service qui peut communiquer avec le site web mais aussi avec un telephone portable, un Palm... n'importe quoi. Il montre les methodes qui permettent de maniper des photos tres simplement. Dessous ya 2 BD OO (OO, web services, c'est la foire au buzzword!)
Le système est disponible à http://opensource.fotango.com
Graham Barr: la nouvelle version de search.cpan.org
Graham Barr presente la nouvelle version du moteur de recherche de cpan (celui dont je vous ai donne l'URL ya pas longtemps),c'est vrai que c'est bieng plus rapide (c'est ce que j'utilise pour vous donner les liens vers CPAN. Maintenant c'est mis à jour automatiquement (avant c'etait lui ou Elaine qui mettaient à jour à la paluche), les PODs sont indexes plein-texte et s'affichent super joli, il utilise soundex sur les noms des auteurs, il donne acces aux versions precedentes des modules, on peut browser les fichiers des modules.
Michael Schwern: perl-1.014
Retour en 1988 (il demande qui programmait en 1988? moi! moi! puis qui programmait Perl à l'epoque, Larry leve la main) Puis il compile perl-1.014, configure pose 3 questions, il recupere 2 millions de warnings, il lui manque la libcrypt, rires, il la rajoute, ca marche! Temps de compile? Presque rien, taille? J'ai pas vu! make test sort des erreurs, donc Schwern a mis à jour les tests Print Hello world marche! NON! Il lui manque le ; (obligatoire à l'epoque meme avant } Larry le corrige. C'est disponible, j'ai pas l'URL. (perl 1.0014 etait la derniere version de perl 1)
Damian
Il monte sur scene et montre qu'il a implemente le langage decrit par Ingy 1 heure plus tot! 10 secondes et puis s'en va!
Leon Brocard et Rael Dornfest
Ils montrent une pub 'Switch' de Apple (c'est toute une serie ou des gens expliquent que Windows ca suxe et qu'ils sont passes à Apple)
La meme avec Chris DiBona qui a switche de EMACS à Vi YEAH!
- Python -> Perl
- Ken Williams -> calecons!
- Nat Perl -> Python (c'est sarcastique! "my ass loves Python!")
- Sarah Burkham linux -> XP (sarcastique!)
J'espere que ca sera disponible, c'est assez cool
Nat montre le film de YAPC, mais vous le connaissez tous! (le son foire, c'est la zique d'ambiance, du country et western pourri... ca y est, ca marche, non! Je croyais que les Macs ca marchait, tout simplement!). Ils changent de machine, ca y est!
Un nouveau film! The Perl Foundation Movie!
Une pub pour la Perl Foundation, tres bien. Nat est tare' (vous comprendrez ai vous voyez la chose).
Autre
Au repas RealNetworks annonce qu'il vont publier une partie de leur software avec une license simili-Open-Source (apparement à la Java: vous pouvez regarder, toucher, mais ils peuvent recuperer les modifs et changer la license). Matt Sergeant (l'heureux vainqueur de 2 prix, meilleur codeur Perl et meilleur codeur XSLT) en cause mieux que moi: http://use.perl.org/~Matts/journal/6614
Jeudi Matin
Le soir je vais voir "Whose code is it anyway?" une seance d'improv avec Damian, Nat, Chip Salzenberg et Allison Randall. Plutot rigolo, ils sont doues ces petits. Rigolo aussi: il semble que pendant que RealNetworks faisait son annonce Stallman a commence à gueuler... et se soit fait virer de la tente ou on mange (merci à Eric Cholet pour l'info).
Perl & Bioinformatics
Les keynotes du matin
Le premier speaker decrit le projet Genome Humain, base sur des soft OpenSource, beaucoup de Perl et lui meme ouvert (tous les resultats sont publics).
Les plus de Perl: au premier rang la facilite d'apprentissage, regexes, hashes... Les moins: plus de 10 facons de faire, exception, objets.
Au final ils utilisent Perl comme du Java. Il voudrait pouvoir melanger Perl, Python et Java (au niveau source, pas bytecode, ca il s'en tape). Il paiera une biere à qui le fait!
Question de l'auditoire: comment faire pour que des scientifiques (non-programmeurs à la base) arrivent à produire du code potable. Il s'inspire de XP et melange codeurs (qui connaissent rieng a la biologie et font des erreurs enormes à cause de ca) et biologistes.
speaker
http://genome.ucsc.edu/
Vendredi Matin
Dur reveil... la soiree d'hier fut plutot dure (quoique pas autant qu'une reunion de Toulouse.pm!). Au final, après un bon nombre de bieres (merci a Randall Schwartz qui payait pour tout le monde), j'ai fini par utiliser mon espagnol de cuisine pour tchatcher avec le depute peruvien qui a ecrit la lettre à Microsoft... epuisant!
Les keynotes
Paul Pangaro et Elaine Coleman de Sun qui sont charges d'etudier le comportement des developpeurs chez Sun et d'etudier comment integrer les developeurs dans la strategie de l'entreprise.
Intro: leur these les boites de haute technologie doivent integrer les developpeurs plus à leur strategie. Il faut que les developpeurs soient associes plus etroitement au design des produits... boring...
Elaine est plutot rigolote: "I love technology but it does not love me", c'est une specialiste en "cognitive science". Elle a etudie des codeurs Java. Elle leur a pose des questions sur leur boulot, ce qu'ils font,tout ca...
Video d'interviews, conclusion: "vous etes tous differents!" Sans rire!
Les interviews sont plutot rigolotes, mais ce qu'ils racontent est assez chiant. Une bonne question de l'auditoire: "pourquoi la Perl Poetry, l'obfus, le Perl golf etc...?" (il doit s'inquieter pour BooK ;--) Pas de vrai reponse (les Java Monkeys doivent pas faire ca).
Nat presente le prochain speaker, qui vient de la meme ecole (de "sheep-shaggers") que lui, en NZ: Milton Ngan, qui a bosse sur les effets speciaux de Lord of the Rings.
Au moins ses fonds d'ecrans sont spectaculaires
Et pis on a droit à une version longue de la bande-annonce du film, yeah!
Quelques chiffres, images rigolotes "behind the scene"...
12Mb/image, ca fait 300Mb/s de donnees Ils ont 12 TB de donnees stockees (75Tb en ligne) sur le premier film, 300 machines sous linux qui tournent 6j/semaine a faire du rendering. Ils visionnent sur Mac.
Ils nous montre comment ils ont realises certains effets speciaux. Le plus gourmant c'est d'appliquer les textures.
Dans certaines scenes les acteurs sont doubles par des doubles digitaux: quand la companie traverse le pont, dans le mines de Moria, à la fin du film, en fait c'est tout digital.
Peter Jackson a aussi utilise le fait que les scenes etaient modelisees en 3D pour pouvoir repeter et mettre au point les mouvements de la camera avant de filmer la "vrai" scene.
Rigolo: meme quand ils augmente la vitesse de calcul les temps de rendering restent les meme: les artistes demandent plus de resolution! Une scene de bataille (juste en fil-de-fer), ou on voit l'AI en action: un perso se retrouve tout seul, s'eloigne, l'AI realise et il se met à courir vers la bataille!
L'outil qu'ils utilisent le plus: Perl! Applaudissements. MySQL.
Apple avec OSX essaye de rentrer sur ce marche.
Il finit par un bout de poesie Perl! Yeah!
Question de l'auditoire sur le MPAA et les lois sur le copyright. En resume sa reponse c'est qu'il est juste un technicien, il ne peut pas grand chose face aux studios.
Tests... par Michael Schwern
Test::More et Test::Builder ont l'air vraiment cool, mais il faut que je prepare mes slides pour le lighning talk, donc je suis pas trop... voir CPAN.
A la fin quelqu'un commente que Test::Unit est horrible. Commentaire de Schwern: c'est un port d'une librairie Java, ca n'est pas vraiment du Perl.
An Opposing view of OS Software
Bruce Sterling (oui, LE Bruce Sterling)
Un long rant contre Microsoft, la passivite des americains, le capitalisme... hilarant!
Il a un probleme avec Microsoft compare à une cathedrale (le bazaar ca lui va!) Il rapelle que Jesus etait contre les marchands du temple. C'est tres rigolo. Pour lui OS/Proprietaire c'est plutot artisans/usines OS c'est "hanging out with the Cool Guys (tm)", plutot genre artiste. En plus les enfants et les femmes qui meurent de faim vous remercient. Et pis quand on en à marre on peut arreter et personne à droit de se plaindre, ils peuvent mourrir de faim ;--) Il tape un peu sur Bill Gates qui se transforme en Nazgul ou un truc comme ca. Il repand FUH (Fear Uncertainty and Hate).
Where do you go today? La vrai reponse est "je veux aller pirater des MP3"
Palladium: an OS that Hates and Mistrust You
Il tchatche sur la securite dans les aeroports, compare les OS du futur a ca.
Trop de monde, on change de salle (en belant comme des moutons). Larry et la moitie de sa famille sont assis par terre.
Bruce reprend et nous reproche de ne pas être creatif.
"Do you want to make Jack Valenti the king of your box and Mickey Mouse his Komisaar?"
Les virus: avec les virus on infecte non seulement sa copine, mais aussi sa maman!
Il delire sur OSX, l'open-source... tout le monde se marre.
Open Source c'est commela vie dans un camps de refugie: on bosse dur pour pas un rond, et il faut pas que ca ait l'air trop joli sinon Medecin sans Frontiere vient pas (NdM: me demandez pas d'expliquer).
Il devient un peu serieux: pourquoi l'information n'est pas libre. L'industrie informatique est maintenant aussi chiante que l'industrie du livre..
Les 6 facons pour un vendeur de lier le client: le contrat, offrir des formations specifiques sur un produit, augmenter le cout de la recherche d'alternatives, un langage specifique, des gros investissement, des programmes de fidelisation.
Il decrit la relation d'un client avec un vendeur comme une relation sexuelle. Linux est une hippie qui aime le Free Love, Free Beer, Free Speech, Free everything. Elle enleve ses fringues super facile, elle enleve meme ses cotes! En plus meme si elle couche avec tout le monde elle chope pas de virus. Et pis elle a des enfants: Apache, procmail, Perl... certains meurent jeunes, d'autres sont attardes mentaux (NdM: Python?)... elle genere une explosion demographique à elle seule.
Notre destinee de geeks: bientot nous passerons de l'etat de geeks à l'etat de dissidents.
Standing Ovation, excellent!
XML Lightning talks
Antoine Quint: Flash Sux, SVG RoX
Le titre resume le talk: Macromedia est le Mal, ils mentent, ils trichent, SVG est ultra-cool (ya un mec de Macromedia dans la salle, il confirme qu'il est Evil mais pas qu'il suxe ;--). Je suis plutot d'accord avec lui, surtout le fait qu'une fois que c'est dans Flash ca peut que difficilement être indexe.
Michel Rodriguez: XML and Regular Expressions
Je posterai les slides (6) plus tard
Paul Prescod : the practical semantic web
Pour lui "pratique", dans le vaste monde, c'est "ca peut causer à des bases relationelles". C'est pas con en fait. Le probleme c'est que XML est pas tres bon pour faire des liens
Craig Buchek
Comment creer des templates en XSLT. Il ajoute un attribut dans un template HTML, genre id="replace1", après il ecrit du XSLT qui prend en entree le template et le document qui contient le contenu et voili! Le contenu se retrouve dans le template. La feuille de style XSLT est plutot simple, ca a l'air assez elegant.
Interlude: le mec de Macromedia repond à Antoine: Flash est superieur à SVG parce qu'il y a un editeur. Ca va changer dit Antoine.
Simon St-Laurent
Un rant (habituel pour ceux qui suivent xml-dev, mais c'est probablement pas la majorite ici ;--) sur l'etat de XML qui va de mal en pire. Toutes les specs qui sortent du W3C suxent grave. "If you think Macromedia is Evil, they are not: W3C is Evil" Les specs sont de plus en plus epaisses et ils se foutent de la simplicite d'implementation. Il prevoit un futur ou XML est remplace par quelque chose de plus simple (pas XML lui meme, mais les autres specs).
Je suis assez d'accord.
Voir son site http://monasticxml.org/
Justin Shaw: XML Table
Il recoit des donnees (telemetrie satellite) de diverses sources et il doit mixer le tout. Il utilise XML pour decrire le format de chaque source.
Antoine revient: "XML: The Good The Bad and the Ugly"
Good: SVG XSLT XPath, Relax, Perl & XML, XMLForms
Bad: Web service, W3C Schema
Ugly: XML in Java, XML in Flash, Web Services Hype
C'est court mais bon (Il menace d'en faire un autre, on l'emmene ;--)