TPC 6

Copyright © 2002 - Michel Rodriguez.

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

Chapeau

Michel Rodriguez, fondateur de Toulouse.pm (http://toulouse.pm.org/) était présent à The Perl Conference 6 (TPC 6), dans le cadre d'OSCON (Open Source CONference) 2002 organisée par O'Reilly à San Diego..

Cet article, mis en forme par Philippe "BooK" Bruhat, reprend ses comptes-rendus, rédigés en direct depuis la conférence et envoyés par mail à la liste de Toulouse.pm.

Michel a également pris des photos : http://www.xmltwig.com/mirod/pict/geek_stuff/tpc_6/.

Jour 1

Date: Mon, 22 Jul 2002 11:54:20 -0400 (EDT)

Premier compte-rendu

Salut!

Bon, ben me v'la en direct de San Diego, à la Conférence Perl, sixième du nom, TPC6 quoi.

Je suis arrivé hier soir, j'ai déja mal à la tête (comme à chaque fois que je croise London.pm...), j'ai croisé quelques français (Eric Cholet, Antoine Quint)...

Ce matin au programme : Perl pour l'administration système, ça peut me servir, vous savez que je suis le pire sysadmin que la terre ait jamais porté. Cet après-midi je vais probablement embêter Kip Hampton qui fait Perl & XML.

Bon, le premier tutorial commence, à plus.

Oh, et je suppose qu'il y aura des commentaires sur #perl sur rhizomatic.net.

Au rayon teeshirts, 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.

Date: Mon, 22 Jul 2002 16:25:41 -0400 (EDT)

Perl pour sysadmin

Bon, y a que des vrais sysadmins ici, je me sens pas bien. À part ca 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. Où recuperer 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 installes sur la machine, cool. J'ai 316 modules installés sans numéro de version !

Sur PC Windows 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 :

Infos variées :

Une recette pour éviter le "symlink shuffle" (un méchant symlinke un fichier entre le moment où un fichier est ouvert et celui où le programme écrit). J'ai le code, demandez le moi quand je rentre si ça vous intéresse.

Un slide intéressant comparant les file systems sur différents OS, un autre qui détaille les valeurs retournées par stat sur differents OS.

File::Spec aide à écrire du code portable. C'est chmod 0666, $file, PAS chmod 666, $file, 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 plutôt 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 a l'heure, le talk de MJD Conference Presentation Judo (http://perl.plover.com/yak/judo/presentation/, lien depuis un de mes messages de YAPC) a l'air d'avoir été lu par tout le monde !

Chic, un cartoon ! Une compile de vieux jeux videos, avec un personnage qui se promene dans pacman, frogger, pong, etc, y a au moins 20 jeux differents, il devrait nous passer l'URL plus tard.

Se promener dans les répertoires : utiliser File::Find. Au passage je DÉTESTE 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 utilisé pour trouver les fichiers corrompus sur le disque d'un laptop qui était tombé par terre.

Une partie sur les comportements anti-sociaux des utilisateurs (j'ai ça à la maison mais comme le seul utilisateur c'est moi je peux pas trop sévir ;--))

Proc::ProcessTable permet de récuperer des infos sur l'état du système, pour par exemple killer tout process qui consomme trop de mémoire ou de CPU. Comment détecter les utilisateurs qui font tourner des binaires "suspects" (non autorisés, genre des bots IRC ou nmap) mais qui finement changent le nom de l'exécutable : lsof peut aider (en détectant les ports utilisés par un process par exemple).

Détecter les intrusions ; quelques trucs intéressants :

De nombreux exemples de courts scripts pour établir des démons utiles, ou simuler un client ou un serveur.

Quelques anecdotes rigolotes... et c'est fini.

Infos diverses :

Ah oui, j'ai récupéré la version 2 de Mastering Regular Expressions, plus le bouquin sur OpenSSL.

Et j'ai un draft de la review de Perl & LWP à http://www.xmltwig.com/review/perl_lwp_review.html.

Jour 2

Date: mardi 23 juillet 2002 15:19 -0400

Advanced DBI

Salut,

Bon, ben j'ai pas trop de compte-rendu pour l'après-midi de lundi, vu que plutôt que d'aller voir Perl & XML (très bien d'après mon chef) j'ai préféré rester à la terrasse de l'hôtel à descendre des bières avec les français du coing, Eric Cholet, qui bosse sur mod_perl, Antoine Quint, 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).

Ce matin c'est Advanced DBI (je sais bien que je fais même pas de Basic DBI, mais si vous croyez que ça va m'arrêter!).

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 :

Profiling. DBI::Profile permet de profiler du code DBI.

Error Handling. les erreurs ça arrive, c'est de ne pas prévoir 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 méthodes DBI pour avoir plus d'info (il y a une nouvelle façon de récuperer l'instruction qui a planté 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 même faire un reset de l'erreur si on veut l'ignorer).

Transactions. Un petit coup sur MySQL qui jusqu'à il n'y a pas longtemps prétendait qu'il n'y a pas besoin de transactions, jusqu'a qu'ils les ajoutent à la DB ;--) Monty ne répond pas.

Comment faire des transactions avec DBI : $dbh->begin_work commence une transaction ($dbh->commit pour la terminer).

Après la pause :

Un aperçu 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 résoudre les problèmes. Je vous passe le detail des différents niveaux de trace, la doc est là pour ça (perldoc DBI et chercher DEBUGGING).

DBI pour le web. D'abord les conseils classiques : utilise mod_perl et Apache::DBI qui accèlere le code de manière transparente. Un conseil pratique : comme le handler reste en vie entre les transactions, ne pas le modifier (du genre jouer avec autocommit).

Si vous avez énormément d'accès à la DB, utiliser un proxy sur les scripts qui accèdent a la DB, sur une machine dédiée par exemple.

Problèmes dus au fait que le Web ne garde pas l'état (il est stateless quoi) : utiliser des hidden fields (facile mais pas sûr), 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 ça assez bien. Un inconvénient est que les insert/delete ne sont pas bien traités. Une autre solution est de stocker les résultats de la query la première fois et de ne renvoyer que les résultats voulus. C'est mieux de ne stocker que 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.

Sécurité. UTILISER -T (taint mode). Si vous écrivez 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 début.

Traitement des BLOBs. DBI se debrouille bien, il manque juste des fonctions pour découper les BLOBs et les traiter morceau par morceau. Si vous en avez besoin vous pouvez emailer Tim pour faire monter la pression ;--).

Portabilité. 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 méthode type_info pour recuperer le type exact d'un champ dans une DB et choisir le meilleur type équivalent dans une autre.

Curieusement une des fonctions qui varie le plus entre DBs est la concatenation de chaines de caracteres (CONCAT, avec différentes syntaxes, '.', '-'...). Il y aura bientôt une méthode dans DBI qui fera ça de maniere portable. Bien sûr les drivers devront être mis à jour aussi remarque Monty (réponse de Tim : "ça 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.

Proxying. DBD::Proxy et DBI::ProxyServer permettent de contacter à distance des DBs qui ne supportent pas les connexions à distance. C'est complètement transparent, il suffit de changer une variable d'environnement (dont j'ai raté le nom, darn! Eric ? (Cholet, assis 3 rangées devant moi, qui doit suivre au lieu de taper le CR en direct)) Le proxy supporte aussi l'encryptage des données, la compression, et faire du controle d'acces. Kewl!

DBI::PurePerl peut être utile sur des plateformes sans compilateur. Il faut bien sûr 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 méthodes selectrow_hashref, fetchall_arrayref, select_all_hasref, fetchall_hasref, $h-{FetchHashReuse} = 1>> améliore la vitesse de fetchrow_hasref (non encore implementé), voir la doc...

Prévu dans un futur proche : nouvelle FAQ, vitesse, swap_internal_handle fait une "greffe de cerveau a un DB handle", me demandez pas de détails ! Renommer finish() en close(), scroll permet de se déplacer dans les résultats, sans les lire forcément dans l'ordre). execute_array : une méthode qui permet de faire des operations par lots, execute est exécuté pour les valeurs dans le tableau (de références à des tableaux).

Autres

Plus de compte-rendus sur use Perl (regarder les 'journals', notament celui de gnat (Nat Torkington, il organise la conférence 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).

Jour 3

Date: mercredi 24 juillet 2002 12:00 -0400

SOAP

Et oui ! C'est l'après-midi buzzword !

Ça commence comme d'habitude avec une photo de bébé, MJD soit maudit ! Par Ian Kallen, qui bosse pour Covalent si j'ai bieng suivi. Il a bossé pour Salon.com avant, excellent site web au passage.

Puis pub pour Teach Yourself Apache 2 in 24 hours (http://www.apacheworld.org/ty24/, il y aura un tirage au sort pour en gagner un exemplaire à la fin de la session. Un conseil quand même : 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 général) mais aussi SMTP, Jabber... (SOAP::Lite en Perl a probablement le plus de protocoles différents)

WSDL est le protocole qui décrit les services offerts et UDDI "publie" le service (Ian le décrit comme le DNS des Web Services).

Il décrit RSS comme un proto-protocole dans le genre (je suis assez content du mot proto-protocole).

Mythes (faux) à propos de SOAP :

Mais ce qui est vrai :

Le format d'une requête (non, je vais pas le taper, Google devrait avoir ça !)

WSDL definit les types de données et generalement les interfaces d'un service. Et généralement c'est des gros pavés!

Si on utilise directement les messages SOAP on doit se taper le processing du XML qui contient les données. Si on utilise SOAP-RPC le message est un appel de procédure. Les outils se debrouillent d'après ce que je comprends (NdM : OK, d'après ce que je sais SOAP::Lite est complètement Magique (TM)).

À la base les types de données sont les mêmes que dans XML W3C Schema (on crée des types complexes avec W3C Schema (NdM : bonjour le mal à la tête, mais bon, je suis pas trop impartial, je déteste tous les standards XML à part XML lui-même, XPath et des bouts de SAX).

En cas d'erreur le message contient uniquement une erreur.

Bon, après tout ça on rentre dans le domaine des outils qui masquent tout ça : JWS pour Java ; côté serveur c'est simple, on doit juste renommer le .java en .jws (NdM : ah les joies des extensions !) et on le met dans le répertoire qui va bieng. C'est un peu plus compliqué côté client. Diable ! Il faut écrire du code ! Les classes ne peuvent pas être compilées, le serveur doit avoir accès au source.

Côté Perl le client est juste une liste d'appels de méthodes chainées. Le serveur ne change pas. Regardez la doc de SOAP::Lite, c'est beau ! Sans rire, si on vous demande de faire du SOAP précipitez vous sur SOAP::Lite (récent, il y avait un gigantesque problème de sécurité il y a pas longtemps). Vous ridiculiserez vos collègues Java (surtout que l'outil Java génère des messages qui plantent avec les outils Microsoft).

Pour installer un serveur SOAP avec mod_perl, il suffit d'ajouter une directive Location dans la config Apache. Le code du server ne change pas par rapport à du code local (les return des fonctions dans le package sont SOAP-és).

Le gars a son serveur web en ligne pour la demo depuis 30 minutes et il a déjà 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 légal.

SOAP::Lite se débrouille généralement bien avec les conversions de types. Juste des fois si une chaine de caratères 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 ça posera des problèmes à des langages plus fortement typés comme Java.

Il donne quelques moyens de simplifier l'installation avec Java, je l'ignore.

Pour publier un web service en Perl : ajouter une ligne à la liste d'appels de méthodes.

Fait chier, je crois que je suis malade, ma femme a ça aussi, j'ai froid et je suis crevé. Ceci dit j'ai pas dormi beaucoup la nuit dernière, alors ça ira peut etre mieux demain. Demain c'est loin ceci dit, alors vous étonnez pas si je finis pas le cours. :--(

Pause, café, il fait chaud dehors (la clim doit être réglée à -15 ici !), ça 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 était dédiée aux trolls du CULTe). Il patauge un peu avec la démo, l'écran est trop petit... ah bon, c'est fini, ouf !

Il montre un client Perl pour le serveur qu'il a écrit en Java. Il faut ajouter une ligne plutôt coton pour désérialiser proprement les données émises par le serveur. Ah maintenant il montre la vrai façon de faire, avec WSDL. Ça marche sans verrue horrible. Et maintenant il utilise la magie de SOAP::Lite pour autogénérer des accesseurs.

Il liste des implémentations dans d'autres langages.

On arrive a la fin, il complimente SOAP::Lite (moi aussi), il répète que le standard n'est pas mature et qu'il a des trous qui conduisent à des problèmes de compatibilité. L'en-tête HTTP Host est souvent mal traité, ce qui cause des problèmes avec les outils MS qui sont très strict sur ça.

UDDI progresse lentement, mais pour l'instant pas vraiment d'implémentation intéressante.

La sécurité n'est pas traitée à ce niveau (HTTPS bonjour, mais à mon avis ça va créer des problèmes ou les niveaux vont se mélanger). Comme il dit c'est Microsoft qui pousse ces standards, donc faut pas s'attendre à un truc trop sur à la base.

Désolé de taper sur Java et MS autant, mais bon, déjà 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 même chose en Perl.

Avec SOAP::Lite et mod_perl, Apache::Session peut aider à gérer une session raisonablement sûre (me demandez pas comment, c'est un exercice pour le lecteur).

C'est fini, au bout du compte c'était plutôt ennuyeux, mais bon, j'aurais dû m'y attendre, SOAP c'est pas vraiment un domaine où on rigole tous les jours !

Apres ça je me sens vraiment pas en forme et je vais me coucher !

Autres

Leçon après seulement 2 jours de conférence : n'emmenez pas votre époux(se) ou "significant other" comme y disent ici a une conférence si elle n'est pas extremêment tolérante et qu'elle ne peut pas supporter 4 heures de descendage de bière en causant de Perl, XML et de gens qu'elle ne connaît pas. Le taux de crises conjugales est déjà impressionant !

Leon Brocard a l'air de bosser sur un nouveau film, genre le film de YAPC mais sans les jurons (bouh !). Ingy récolte des photos rigolotes pour son Lightning talk (j'en ai une où Elaine lui met des raisins dans la bouche, à la romaine, je la posterai demain, je peut charger la photo sur mon portable dans ma chambre mais y a pas de connection rapide à cet étage !@##$%%^&*).

Date: mercredi 24 juillet 2002 13:26 -0400

Lawrence Lessig

Merde ! Je réalise que du coup j'ai rate le State of the Onion de Larry et le Quizz Show, quel idiot !

Une description de l'histoire du copyright depuis 1740.

Walt Disney, quand il a crée Mickey, en fait s'est inspiré de Buster Keaton et l'a "Ripped, Mixed and Burned".

Il montre comment le copyright a été étendu depuis 1950 : "Nul ne peut faire a Disney Inc. ce que Disney a fait aux frères Grimm".

Il montre une série de "permissions" pour des ebooks, genre "copier 10 textes dans le clipboard tous les 10 jours"... débile. Le mieux c'est que le bouquin avec la license la plus restrictive est... le sien !

Évidemment il prèche des convaincus, mais c'est bien quand même, c'est bien pensé.

Il nous engueule pour ne pas avoir fait plus pour nous défendre, et nous demande de donner plus a l'EFF (je vous y encourage aussi, ça a l'air lointain tout ça, mais si on fait rien on va tous l'avoir dans l'os, c'est ce qu'il explique d'ailleurs, c'est un problème americain, mais si on le résout pas aux US il va infecter le reste du monde).

Stallman

C'est la première fois que je le vois parler.

Il commence par "je ne suis pas un développeur Open-Source", rires. Il fait même des blagues ! ("GNU c'était pour rire, les gens devraient avoir le droit de rire") Il demande a 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'intérêt de se battre entre nous et pas pour écrire du code propre ?

Là c'est plus intéressant : "You have to learn to say no to what business want" au moins il parle des différences qui comptent, Open-Source/Closed-Source et (comme Lawrence Lessig) il nous demande de nous mobiliser politiquement.

Il défend Napster.

Il finit sur un truc rigolo : il s'habille en saint et déclare qu'il est un saint de l'église 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 défendent pas la liberté. Il défend la liberté plutôt 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 ça puisse marcher.

Au final il a causé plutôt 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".

Ça finit sur une standing ovation.

Date: mercredi 24 juillet 2002 15:22 -0400

Perl 6: where is it? (Damian et Larry)

Qu'est-ce qui est déjà fait: structures de controles, regexps, fonctions...

Architecture : voir Dan (Sugalski) et son talk sur Parrot vendredi.

Ce qui change :

Tout bloc est une sub/closure. Normalement le bloc est juste exécuté. Entre autre ça permet de passer des blocs en paramètres (pour écrire des fonctions avec la même syntaxe que sort, map et grep).

Hyperopérateurs : ^<operateur> fait marcher l'opérateur sur une liste : @result= @x ^- @y.

Currying : on peut appeler toute fonction avec moins d'arguments que déclarés et on récupère une fonction qu'on peut appeler avec le reste des arguments. Damian plaisante que personne n'y comprend rieng mais que c'est cool quand même.

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" }
              }

ça utilise le même "smart equal" que =~

Il n'y a plus besoin d'avoir des parenthèses autour des tests.

Topics : une boucle for (il n'y a plus de foreach) crée un "topic", en gros l'équivalent de $_. Une fonction crée un topic : son premier argument (ça permet d'écrire de l'objet plus naturellement) La syntaxe de for est maintenant for LIST BLOCK. Plus de paramètres, Chip Salzenberg proteste ;--). Mais comme le block est une fonction il peut prendre des paramètres. Du coup il existe un autre syntaxe pour déclarer les paramètres: for @data -> $next { print $next } (le block n'a pas de nom mais il a un paramètre quand même !). Du coup on peut rajouter des paramètres et boucler plusieurs éléments à la fois : for @data -> $x, $y { ... }. On peut même boucler sur plusieurs tableaux en parallèle : for @arr1; @arr2 -> $v1; $v2 { ... }.

Exceptions

try { block } remplace eval { block } On peut mettre CATCH dans le block (pour avoir accès aux variables du bloc) pour choper les exceptions. Je vous passe les détails sur les types d'exceptions. Y a même 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 ça doit etre dans le CR de YAPC.

Je suis de retour pour les questions.

En général le but du design de Perl 6 est de trouver des principes simples qui permettent d'avoir un langage plus puissant.

C'est fini!

Jour 4

Date: Thu, 25 Jul 2002 22:05:00 -0400 (EDT)

Les keynotes du matin

Perl & Bioinformatics

Ewan Birney décrit le projet Génome Humain, base sur des softs OpenSource, beaucoup de Perl et lui même ouvert (tous les résultats sont publics).

Les plus de Perl : au premier rang la facilité d'apprentissage, regexes, hashes... Les moins : plus de 10 façons de faire, exception, objets. Au final ils utilisent Perl comme du Java. Il voudrait pouvoir mélanger Perl, Python et Java (au niveau source, pas bytecode, ça il s'en tape). Il paiera une bière a 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 mélange codeurs (qui connaissent rieng à la biologie et font des erreurs énormes à cause de ça) et biologistes.

Jim Kent

http://genome.ucsc.edu/

Il décrit le génome humain comme une énorme pile de code mal programmé (tout est global, infecté par des virus, prend 18 ans à compiler, et de toute façon pas designé). Plus tard Larry commente que tout n'est pas vraiment global, que des bouts du DNA dynamiquement activent certaines parties du génome.

Il décrit les mécanismes de l'évolution, le DNA, je vous passe les détails vu que je suis occupé à essayer de suivre et que c'est dur de traduire et taper ça à la volée. Un point intéressant : comment on passe d'un gène à une cellule est à peu près connu, mais comment on passe de cellules à des organismes est plus mystérieux.

Leçons pour les programmeurs : importance des tests.

Perl Content Management Systems

Par Robin Berjon, qui corrigera mon compte-rendu si je dis des conneries.

En plus je viens de m'inscrire pour faire un Lightning Talk sur XML et les regexps donc je risque de pas faire trop attention, il faut que je prépare les slides.

Qu'est-ce que c'est qu'un Content Management System (CMS)?

Ça manage (surtout) des documents, souvent pour le Web mais pas forcément.

Après avoir écrit son système de template, puis sa surcouche a DBI (NdM : et son module XML) il semblerait que la nouvelle mode soit d'écrire un CMS. Donc du coup il y en a plein partout.

Il va en décrire 3 principaux : Slash, Bricolage, XIMS

Slash :

Bricolage :

XIMS :

mod_perl 2.0

Stats Bekman

Disponible à http://stason.org/talks/.

Stas a été sponsorisé cette année par ticketmaster.com et il les remercie.

Ça va super vite, je vais pas avoir le temps de tout noter.

mod_perl a été ré-écrit pour Apache 2.0 et il tire parti de toutes ses possibilites. Pourquoi utiliser Apache avec POP3 et SMTP ? Pour avoir une seule admin et pouvoir utiliser les filtres d'Apache (SSL, authentication...)

Dans Apache 2.0 les données sont passées dans des "bucket brigades", rigolo.

En gros mod_perl 2.0 utilise toutes les améliorations de Apache 2.0 et de Perl 5.6 et maintenant 5.8.

Tout le système de threads a été amélioré.

L'install est très simple (NdM : qu'il dit !), il faut faire use Apache 2.0 pour utiliser les modules (ils ont le même nom que sous mod_perl 1.xx mais sont différents)

On peut désactiver mod_perl pour différent virtual hosts, et même configurer plus finement. De nouvelles phases ont été ajoutées à Apache.

Il y a une doc pour la migration, qui demande de changer certaines directives (heureusement)

Mapping XML to RDBMS: XML-DBMS

Ron Bourret (qui maintient un excellent site sur les BD et XML, http://www.rpbourret.com/)

Un outil domaine public pour faire communiquer XML et BD relationnelles. Traite du XML "orienté données". C'est du Java :--(

On définit un mapping XML -> objet (pas le DOM, un mapping spécifique à une classe de documents). Les objets sont utilisés pour remplir la BD.

Les éléments peuvent être simples (texte uniquement, équivalent a des scalars) ou complexes (contiennent d'autres éléments, du mixed-content et/ou des attributs). On mappe les éléments simples vers des colonnes et les éléments complexes vers des classes. Le système génère les tables qui vont bien, y compris les tables de liens primary key/foreign key. L'ordre des éléments peut etre sauvegarde (par type d'element, pas pour des éléments de même type).

Il est possible de "mettre à plat" des éléments (genre une addresse ou les différents champs sont groupes dans l'élément addresse mais juste des colonnes de l'élément englobant dans la BD), les namespaces sont supportés.

Les fichiers de config sont en... XML bieng sur!

Si le document et la BD sont trop différents on peut utiliser XSLT (dans le futur XQuery)

L'outil a une interface ligne-de-commande et 2 API (une de haut niveau et une de bas niveau)

La map file peut être générée automatiquement soit à partir de la DTD soit à partir du schéma relationel. En général il faut la finir a la main.

Dans le futur l'utilisation des W3C Schema (NdM: que je deteste) pourrait simplifier la génération de la map file.

Autres

Rigolo aussi : il semble que pendant que RealNetworks faisait son annonce Stallman a commencé à gueuler... et se soit fait virer de la tente ou on mange (merci à Eric Cholet pour l'info).

Tous les films de TPC (sauf celui, censuré, de Nat) : http://www.perl.org/tpc/2002/movies/tpf/

Jour 5

Date: vendredi 26 juillet 2002 16:19 -0400

Bon, ils vont couper le réseau à 2h, donc je poste le dernier CR d'ici, et je le complèterai dimanche ou lundi, une fois rentré.

Dur réveil... la soiree d'hier fut plutôt dure (quoique pas autant qu'une réunion de Toulouse.pm !). Au final, après un bon nombre de bières (merci à Randal Schwartz qui payait pour tout le monde), j'ai fini par utiliser mon espagnol de cuisine pour tchatcher avec le député péruvien qui a écrit la lettre a Microsoft... épuisant !

Les keynotes

Paul Pangaro et Elaine Coleman de Sun qui sont charges d'étudier le comportement des développeurs chez Sun et d'étudier comment intégrer les dévelopeurs dans la strategie de l'entreprise.

Intro : leur thèse : les boîtes de haute technologie doivent intégrer les développeurs plus à leur stratégie. Il faut que les développeurs soient associés plus étroitement au design des produits... boring...

Elaine est plutôt rigolote : "I love technology but it does not love me", c'est une spécialiste en "cognitive science". Elle a étudié des codeurs Java. Elle leur a posé des questions sur leur boulot, ce qu'ils font, tout ça...

Video d'interviews, conclusion : "vous êtes tous différents !" Sans rire !

Les interviews sont plutôt 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 vraie réponse (les Java Monkeys doivent pas faire ça).

Nat présente le prochain speaker, qui vient de la même école (de "sheep-shaggers") que lui, en NZ : Milton Ngan, qui a bossé sur les effets spéciaux de Lord of the Rings.

Au moins ses fonds d'écrans 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, ça fait 300Mb/s de données. Ils ont 12 TB de données stockées (75Tb en ligne) sur le premier film, 300 machines sous linux qui tournent 6j/semaine à faire du rendering. Ils visionnent sur Mac.

Ils nous montre comment ils ont réalisé certains effets spéciaux. Le plus gourmand c'est d'appliquer les textures.

Dans certaines scènes les acteurs sont doublés par des doubles digitaux : quand la compagnie traverse le pont, dans les mines de Moria, à la fin du film, en fait c'est tout digital.

Peter Jackson a utilisé le fait que les scènes étaient modélisées en 3D pour pouvoir répéter et mettre au point les mouvements de la caméra avant de filmer la "vraie" scène.

Rigolo : même quand ils augmentent la vitesse de calcul les temps de rendering restent les mêmes : les artistes demandent plus de résolution ! Une scène de bataille (juste en fil-de-fer), où on voit l'AI en action : un perso se retrouve tout seul, s'éloigne, l'AI réalise 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 marché.

Il finit par un bout de poésie Perl ! Yeah !

Question de l'auditoire sur le MPAA et les lois sur le copyright. En résumé 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 prépare 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, ça n'est pas vraiment du Perl.

An Opposing view of OS Software

Bruce Sterling (oui, LE Bruce Sterling)

Un long rant contre Microsoft, la passivité des américains, le capitalisme...

Hilarant !

Il a un problème avec Microsoft comparé à une cathédrale (le bazaar ça lui va !). Il rapelle que Jésus était contre les marchands du temple. C'est très rigolo. Pour lui OS/Propriétaire, c'est plutôt artisans/usines. OS c'est "hanging out with the Cool Guys (tm)", plutôt genre artistes. En plus les enfants et les femmes qui meurent de faim vous remercient. Et pis quand on en a marre on peut arrêter et personne a le droit de se plaindre, ils peuvent mourir de faim ;--) Il tape un peu sur Bill Gates qui se transforme en Nazgul ou un truc comme ça. Il répand FUH (Fear Uncertainty and Hate).

Where do you go today? La vrai réponse est « je veux aller pirater des MP3 ».

Palladium: an OS that Hates and Mistrust You.

Il tchatche sur la sécurité dans les aéroports, compare les OS du futur à ça.

Trop de monde, on change de salle (en bêlant comme des moutons). Larry et la moitié de sa famille sont assis par terre.

Bruce reprend et nous reproche de ne pas être créatifs.

"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 délire sur OSX, l'open-source... tout le monde se marre.

Open Source c'est comme la vie dans un camps de refugié : on bosse dur pour pas un rond, et il faut pas que ça ait l'air trop joli sinon Médecin sans Frontière vient pas (NdM : me demandez pas d'expliquer).

Il devient un peu sérieux : 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 spécifiques sur un produit, augmenter le coût de la recherche d'alternatives, un langage spécifique, des gros investissement, des programmes de fidélisation.

Il décrit 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 enlève ses fringues super facile, elle enleve même ses côtes! En plus même 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 génère une explosion démographique à elle seule.

Notre destinée de geeks : bientôt nous passerons de l'état de geeks a l'état de dissidents.

Standing Ovation, excellent !

Date: vendredi 26 juillet 2002 18:57 -0400

Yipee, le réseau est encore là.

XML Lightning talks

Antoine Quint: Flash Sux, SVG RoX

Le titre résume le talk : Macromedia est le Mal, ils mentent, ils trichent, SVG est ultra-cool (y a un mec de Macromedia dans la salle, il confirme qu'il est Evil mais pas qu'il suxe ;--). Je suis plutôt d'accord avec lui, surtout le fait qu'une fois que c'est dans Flash ça 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 "ça peut causer à des bases relationelles". C'est pas con en fait. Le problème c'est que XML est pas très bon pour faire des liens.

Craig Buchek (?) : comment créer des templates en XSLT.

Il ajoute un attribut dans un template HTML, genre id="replace1", après il ecrit du XSLT qui prend en entrée le template et le document qui contient le contenu et voili ! Le contenu se retrouve dans le template. La feuille de style XSLT est plutôt simple, ça a l'air assez élegant.

Le mec de Macromedia répond à Antoine

Flash est supérieur à SVG parce qu'il y a un éditeur.

Simon St-Laurent

Un rant (habituel pour ceux qui suivent xml-dev) sur l'état 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 épaisses et ils se foutent de la simplicite d'implémentation. Il prévoit un futur où XML est remplacé par quelque chose de plus simple (pas XML lui-même, mais les autres specs).

Voir son site http://monasticxml.org/.

Justin Shaw: XML Table

Il reçoit des données (télémétrie satellite) de diverses sources et il doit mixer le tout. Il utilise XML pour décrire le format de chaque source.

Antoine revient: The Good The Bad and the Ugly

C'est court, il menace d'en faire un autre, on l'emmène, c'est la fing.

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