From mrodrigu at ieee.org Mon Jul 24 21:02:48 2006 From: mrodrigu at ieee.org (Michel Rodriguez) Date: Tue, 25 Jul 2006 00:02:48 -0400 (EDT) Subject: [Toulouse-pm] OSCON 2006, Lundi Message-ID: OSCON 2006 - Portland, OR Salut les p'tits gars. Donc cette ann?e encore, pas de YAPC::Europe pour moi, mais par contre un petit compte-rendu d'OSCON, au cas o? quelques un d'entre vous ne seraient pas l?. Dimanche soir J'arrive donc dans l'apr?s-midi, sous une chaleur accablante, bonne excuse pour gouter les bi?res locales, l?g?rement meilleures que les Nostro Azzuro ou Moretti auquelles je suis condann?es a la maison. Je tombe sur quelques t?tes connues, MJD avec sa fille, Iris, Nat Torkington qui porte un T-shirt Google et un sac MSN qui se battent (la femme de MJD ?loigne sa fille pour qu'elle ne soit pas contamin?e par le langage... fleuri de Nat). Bon, si je commence comme ?a, je crois que dans la version HTML du compte rendu je mettrais des div avec des classes ("technique", "people", "news", "non_perl", "insultes_gratuites", ...) La soir?e est assez calme, j'ai encore le double jet-lag (je ne suis arriv? que mardi sur la c?te est). Donc une paire de bi?res avec Scott Matthews, que je n'avais pas vu depuis une ?ternit?, quelques "ribs"... et au lit. Lundi Matin The 7 principles of better API design - Damian Conway J'ai deja vu des bouts de ce cours, mais franchement il n'y avait pas grand chose de plus excitant au programme. Donc Damian explique que le but c'est de proposer des interfaces minimales. Principe 1: "Do one thing really well" L'API d'un module peut etre tres simple. En exemple, il propose IO::All () ou Perl6::Say (). Il detaille un peu Perl6::Say, qui exporte 1 fonction, "say", un print avec un \n a la fin). Curieusement le code de la fonction est un peu plus complique que ce que j'aurait pense (pas trop, juste un peu), ce qui montre bieng que perl cache bien des choses sous son capot. Au passage perl 5.10 aura la fonction "say", et d'autres ("switch"!). Sur CPAN, les modules Perl6::* sont souvent de ce type. Pour lui, toute s?quence d'instructions souvent r?p?t?e devrait se retrouver dans une fonction, elle-m?me stock?e dans un module. Il a ?crit un module, Toolkit, qui permet de mettre un paquet de modules dans un r?pertoire, et "use Toolkit" les charge d'un coup () Principe 2: Design by Coding Commencez par ?crire le code qui va utiliser le module/fonction que vous devez d?velopper, ca vous permet de d?tecter tr?s t?t la meilleure mani?re d'?crire l'interface. Ecrire des tests est une bonne fa?on de faire ?a. Exemple: Regexp::Common (): *"Who do you want to write your regular expressions? Abigail!"*. Il explique comment il est pass? d'une interface o? la regexp ?tait renvoy?e par une fonction, a un simple hash (qui masque une... certaine complexit?e, qu'il explique). C'est pas mal, ?a compl?te bien la pr?sentation d'Abigail que j'avais vu a Londres l'an dernier ? la London Perl Workshop (c'est masculin ou f?minin Worksop?). Au passage, une th?orie de Larry Wall: certaines t?ches ont une complexit? intrins?que, le code de toute fa?on sera compliqu?. Par contre on peut distribuer cette complexit?, et en l'occurence la cacher dans les couches basses de l'application. Du coup ?a permet d'avoir des couches hautes simples, qui peuvent ?tre ?crites par des codeurs moins exp?riment?s. Puis un conseil: quand on ?crit une suite de "if", toujours, TOUJOURS, avoir le "else" ? la fin. M?me si le else ne doit janmais arriver. Dans ce cas le faire emettre un message ad?quat. Prendre cette habitude permet de d?tecter pas mal de bugs, quand le cas impossible se produit! Puis il d?crit l'interface de Contextual::Return () (il note que "wantarray" en fait ne dit pas si l'appelant veut un tableau, juste si il veut une une liste!). Le code de Contextual::Return est assez chiad? par contre, un peu trop pour que je puisse l'expliquer ici (la marge de ma fen?tre n'est pas assez large). A la pause je croise mister Cholet, un couple de fervent Pythoniste et Nat qui devient "corporate" (il porte des tongues au lieu de se promener pieds-nu comme d'hab). Evolve by substraction En 2 mots, a partir de l'API initiale, identifier les endroits o? l'utilisation est un peu bizarre, et r?duire la bizarrerie. Souvent ?a consiste a rajouter des options aux fonctions pour d?placer la complexit? du code utilisateur vers la fonction de plus bas niveau. pause... A la reprise, c'est l'heure pour Damian de parler deIO::Prompt (), dont l'interface "Does The Right Thing". Comme Contextual::Return il est base sur Want (), qui est un super "wantarray", mais donne beaucoup plus d'infos sur le contexte dans lequel une fonction est appel?e. IO::Prompt exporte une unique fonction, qui fait pleing de choses diff?rentes, en fonction des options qui lui sont pass?es. Declarative beats imperative Eviter les interfaces o? la premi?re chose que l'utilisateur doit faire est d'initialiser un paquet de variables. D'abord ?a force l'utilsateur ? lire la doc. Et pis du coup le "vrai" code ne commence qu'assez bas dans le code. Exemple: "Exporter", avec ses "EXPORT, EXPORT_OK" et autres variables. Perl6::Export::Attrs () est plus naturel: sub toto :Export( :DEFAULT :ALL) { ... } On voit bien que c'est au niveau de la fonction, on d?clare l'export, pas loin de l?. en plus le module offre quelques fonctions que Exporter n'offre pas, comme des fonctions qui sont export?es quoique l'utilisateur dise (dans le "use"). Il semble que Damian lui m?me (qui a ?crit le module) ne sait pas exactement ? que point le module est magique: apr?s une question, il d?couvre dans le code du module que si on fait "use :ALL" toutes les fonctions sont export?es (sauf celles qui commencent par "_" je suppose). Un autre module qui montre l'int?r?t des interfaces d?claratives: Getopt::Euclid () (Euclid est un accronyme, mais il le dit tellement vite que je ne saisit pas tout. Dans le POD du code on rajoute la description de l'interface de l'outil, avec une syntaxe simple... et ?a marche. Preserve the metadata Ne pas obliger l'utilisateur ? r?p?ter plusieurs fois les m?mes infos. Exemple: Config::Std (), qui pr?serve les commentaires dans un fichier de configuration quand il est mis ? jour. Ca n'est pas tr?s compliqu? (pour Damian!), ?a suppose juste d'avoir un parser qui garde tout, commentaires et ordre des options dans le fichier, et de ruser un peu avant de sauver le fichier. Oh, et quand on sauve le fichier, pas besoin de redonner le nom du fichier, par d?fault c'est le m?me. Ca ?vite souvent de devoir passer le nom du fichier partout dans le code o? la config peut ?tre mise-?-jour. Si on fait ce genre de chose ? la maison, le comportement exact d?pend du type de fichier: on peut vouloir par exemple "comment out" (comment ?a se dit en fran?ais?) les options qu'on a enlev?. Leverage the familiar Il s'excuse pour l'utilisatin du terme "leverage"... Exemple: Log::StdLog (). L'interface est la m?me que... "print"! Au niveau de log pr?s. Comme ?a l'utilisateur n'a pas trop de probl?me a savoir comment utiliser le module. if( $verbose) { local *STDOUT = *STDLOG; print debug => "coucou"; print info => "rmatique"; print fatal => "Aaaarrrrrgghhh!"; } Bon, pour les explications techniques sur comment ?a marche, j'?coute, donc pas de commentaires. Il a regard? sur CPAN, les 30+ modules qui font du log. Son commentaire est que quand il n'y a qu'un ou 2 modules sur CPAN qui font un truc, en g?n?ral c'est qu'il y a consensus sur la mani?re de r1soudre le probl?me. Par contre Il admet que Log4Perl est pas mal, mais un peu compliqu?. Pourquoi avoir un module OO pour du log? Commentaire de mon voisin dans la salle: Log4Perl a un "easy" mode qui ?vite de devoir se trimballer un objet partout dans le code. Damian recommende d'y jeter un oeil. Oops, son micro le l?che. Il va devoir crier, ce qui ne le d?range pas trop! Citations: *"This is maintenance by complaint"* ? quelqu'un qui demande un option suppl?mentaire, je saisis pas laquelle. The best code is no code at all Le simple fait de faire un "use Module" fait que *"shit happens"*. Exemple: Object::Dumper () use Object::Dumper; my $object= MyClass->new( ...); print $obj; Et ?a marche! Ca dumpe le contenu de l'objet, au lieu du classique HASH[0x12a8f2] Au passage ?a fait aussi un "die" si on essaye de se servir de l'objet dans un contexte num?rique, sauf bieng s?r si on overloade la num?rification de la classe. Conclusion 2 grandes forces de perl: Il fait d?j? plein de chose pour nous, et il ne g?ne pas (*"it doesn't get in the way"*). On devrait essayer de faire la m?me chose avec notre propre code. Un bon tutorial, int?ressant parce qu'il allait de principes g?n?raux de design d'interface, ? des exemples de code assez pointus. Lundi apres-midi Mastering vim - Damian Conway Et oui, c'est la journ?e Conway. Je me sers ? peu pr?s bin de vim, mais comme dit Damian "je me sers de vim, il fait ce que je veux, mais je sais vaguement qu'il y a plein de trucs super cool qu'il peut faire mais que je ne connais pas". Donc tutorial. En plus je tape ce CR avec vim, donc ?a devrait donner un super texte. Son premier conseil: utiliser vim, pas vi. Jusque l? j'ai tout bong. Je vais pas vous r?p?ter tout ce qu'il dit, juste vous donner les trucs sympas (et que je connaissais pas) qu'il donne. Toutes les touches du clavier sont des commandes valides. Celles qu'on utilise le plus sont ? moiti? effac?es (o? compl?tement dans le cas de mon vieux Mac, ce qui me handicape pas mal vu que je connais pas bien le clavier). Il n'arr?te pas de dire "perl" ? la place de vim, il menace d'unifier les 2 dans le futur. Donc une longue liste de trucs que je ne connaissais pas: W/B font la m?me chose que w/b, mais en prenant l'espace comme s?parateur de mots. ^ debut du premier mot de la ligne gg debut du fichier g comme G, mais avec plus de d?tails. set set matchpair <:> # < et > sont maintenant des d?limiteurs (% va de l'un ? l'autre) mL (m avec une lettre majuscule) m?me chose que ml, mais global, permet de naviguer entre different fichiers. :marks montre tous les marqueurs utiliser les marqueurs avec d'autres commandes d'a efface toutes les lignes du curseur au marqueur `` retour au dernier endroit, coupl? avec l'utilisation de marqueurs, permet de sauter facilement entre 2 r?gions d'un fichier. " le dernier endroit ou on ?tait la derni?re fois qu'on a ?dit? le fichier. navigue vers l'avant et l'arri?re dans l'historique des sauts entre marqueurs s remplace charact?res par le texte tap? ensuite. c remplace depuis le curseur jusqu'? la fin du d?placement :set backspace=indent,eol,start delete efface maintenant tout, sans s'arr?ter ins?re le charact?re de la m?me colonne de la ligne au-dessus pareil avec la ligne au-dessous. = evalue une expression et ins?re le r?sultat repasse en mode normal (d'un autre mode) pour une seule commande f trouve le charact?re, int?ressant coupl? a d par example t trouve le charact?re, et se positionne devant set ignorecase search devient non case-sensitive "set smartcase": case-sensitive seulement si le pattern est tout en minuscule. \c \C case-sensitivity on/off dans un pattern :set nohlsearch annule le highlighting du search (utile surtout si mapp?e sur une touche) 10,+33s// dans le genre: le + veut dire 33 lignes apr?s la ligne 10 . est la ligne courante .+1 est la ligne d'apr?s : initialise le range a .,+ %s: initialise le ragne ? 1,$ on peut utiliser des searches dans le range: "//;<\/body>/s///" wahouh! Ca marche aussi avec des marqueurs. Damian ne le savait pas. Il essaye, ?a marche avec ', pas avec ` Ne pas oublier le g ? la fin du s. Un c ? la fin du pattern demande confirmation de toutes les substitutions ":s" ou "&" refait la derni?re substitution (pratique si on traite plusieurs fichiers ? la file) yap iap "yanke" le paragraphe courant (la version avec i ne prends pas les espaces avant/apr?s) (je crois, mon Mac a crash? depuis la derni?re phrase. ]p/]P paste en respectant le niveau d'indentation. Cool pour bouger du code. :copy devinez ce que ?a fait? n ins?re (en fait tape) le contenu du registre n. n fait un vrai insert (les charact?res de contr?le sont vraiment ins?r?s). :set autowrite apr?s ?a ":next" sauve le fichier courant gf ouvre le fichier dont le nom est sous le curseur :read ins?re le contenu du fichier ":read !" marche aussi avec un pr?fixe: ":Gread " ins?re ? la fin du fichier on peut aussi remplacer du contenu ":%!sort" Tr?s utile pour trier un paragraphe par exemple (au passage ":sort" est aussi une commande de vim, avec diverses options (n numeriquement, u unique, i case-insensitive...) "sort!" trie en ordre inverse. auto-compl?tion on peut donner des fichiers qu'on ne veut pas auto-completer: ":set ???" (j'ai pas saisi) Ca marche aussi en mode commande En mode perl (ou si on le d?finit soi-m?me) auto-compl?te un nom de fonction. auto compl?te un nom (un mot en fait). On peut m?me avoir un fichier avec une liste de noms standards (" set complete+=k~/data/my_std_identifiers") compl?te avec une ligne (du fichier) qui commence comme la ligne courante. configuration faire ":options" choisir parmis les milliers d'options possibles, puis faire ":mkvimrc" (dans $HOME) indentation ma config de choix, si je suis bien :set shiftround :set expandtab :set tabstop=4 substitutions Il y a un moyen (par une variable magique) de configurer le moteur d'expressions r?guli?res pour qu'il soit plus proche des regexp de Perl. D'une mani?re g?n?rale, sauts ? marqueurs et recherches peuvent toujours ?tre utilis?s comme modificateurs de commandes: "d/__END__" efface tout jusqu'au __END__ registres Les registres sont sauv?s entre session, donc on peut s'en resservir. "A3yy ajoute les 3 liges ? la fin du registre a undo/redo En vim 7 g- et g+ permettent de naviguer entre les branches de l'edition. les commandes ":earlier" et ":later" permettent de se retrouver dans un ?tat diff?rent (genre ":earlier 10mn"). On peut ?diter normalement (avec les commandes de vim) l'historique des commandes ':' en faisant "q:" visual mode "V" met en mode visuel. Tout d?placement s?lectionne le texte, ensuite les commandes normales s'appliquent. "v" est similaire, mais s?lectionne des lignes enti?res "" fait pareil, mais sur un block rectangulaire de texte. mega-funky comme dit Damian, que je ne sais pas expliquer proprement en 3 mots. "vip>" selectionne le paragraphe et l'indente "vipJ" selectionne le paragraphe et joint les lignes abbr?viations :abbreviate Par exemple ":abbreviate =i =item" pour ce pod A noter qu'on peut par exemple avoir pour avoir des commandes dans les abbreviations. ":iabbrev" marche en mode insert et ":cabbrev" uniquement en mode commande (et ":abbrev" dans les 2 modes) map :imap Les abbr?viations sont ins?r?es uniquement si l'abbr?viation est suivi d'un charact?re non-mot, les map sont ins?r?es d?s que les charact?res sont tap?s. On peut programmer les maps pour avoir encore plus de possibilits. ":help :map-modes" d?crit d'autres modes (xmap pour mode visual, omap pour operator-pending mode...) Comandes pas tr?s utiles: 23% envoie ? 23% du fichier... Il avoue qu'il a couvert ? peu pr?s 10% de ce que peut faire vim. Au final un tutorial tr?s dense, avec pleins de trucs. Les notes sont tr?s compl?tes. Ca va me prendre quelques temps pour dig?rer tout ?a. Mais d?j? j'ai utilis? pas mals de ses trucs en tapant ce CR, donc j'ai espoir. D?sol? pour le franglais dans la liste au dessus, mais ?a va assez vite, et j'ai pas toujours le temps de traduire tout comme il faut ;--( En plus, du coup j'ai saut? presque tout ce que je connaissais d?j?, ?a m'a laiss? le temps de respirer un peu. Ah uoi, en plus j'ai saut? tout ce qui causait C. Bon, fini pour la partie s?rieuse d'aujourd'hui, ? demain! Oh, et d?sol? pour le manque de g ? la fin des mots, je crois que je suis en traing de perdre mon assent :--(. -- Michel Rodriguez IEEE Standards - Electronic Services From philippe.bruhat at free.fr Tue Jul 25 01:39:52 2006 From: philippe.bruhat at free.fr (Philippe "BooK" Bruhat) Date: Tue, 25 Jul 2006 10:39:52 +0200 Subject: [Toulouse-pm] [perl] OSCON 2006, Lundi In-Reply-To: References: Message-ID: <20060725083951.GA30825@localhost.localdomain> Le mardi 25 juillet 2006 ? 00:02, Michel Rodriguez ?crivait: > OSCON 2006 - Portland, OR > Salut les p'tits gars. Donc cette ann?e encore, pas de YAPC::Europe pour > moi, mais par contre un petit compte-rendu d'OSCON, au cas o? quelques > un d'entre vous ne seraient pas l?. Le compte-rendu de Michel est en ligne sur le site articles : http://articles.mongueurs.net/comptes-rendus/oscon-2006.html Il sera mis ? jour au fur et ? mesure des envois des Michel (merci ? lui de m'avoir envoy? son CR en pod). -- Philippe "BooK" Bruhat Mankind is the story of the same mistakes in different places. (Moral from Groo #1 (Image)) From mrodrigu at ieee.org Tue Jul 25 17:19:34 2006 From: mrodrigu at ieee.org (Michel Rodriguez) Date: Tue, 25 Jul 2006 20:19:34 -0400 (EDT) Subject: [Toulouse-pm] OSCON 2006, Mardi Message-ID: Mardi matin Donc me revoila tout frais, apr?s une soir?e tranquille hier soir, en companie de quelques italiens, vu qu'il faut bien que je bosse un peu (mon italien) pendant cette conf. donc quelques bi?res, peu de chanve de convaincre 2 adeptes de Rails que Perl est bieng mieux, et au dodo. Real World Web Services - Scott Davis est une partie de la pr?sentation. Et oui, c'est l'ann?e du ou?be tout poynt ziro, donc je m'int?resse aux technologies de l'an dernier... mais vous inqui?tez pas, O'Reilly donne un livre gratuit aux participants, et j'ai choisi "Ajax Hacks". Il commence par un peu de pub pour sa boite, dont je tairais le nom parce que je suis m?chant et rancunier. Au passage, pour taper les compte-rendus en fran?ais sur un clavier US, quelques imap en vi comme ":imap e' ?" ?vitent de taper avant... bien pratique, et ?a me donne l'impression de pas avoir perdu mon temps hier. Ca donne juste des trucs un peu bizzare avec le curseur, apr?s une voyelle il se positionne _devant_ la lettre pendant 1 seconde, mais on s'y habitue. Remapper sur est aussi excellent, ?a auto-compl?te les mots si je les ai d?ja utilis?s dans le fichier (?a tombe bien, je me rep?te souvent et j'ai un vocabulaire limit?). Je ne peux plus taper de tabs, mais de toute fa?on j'aime pas les tabs, et ?a sert ? rieng en POD. Maintenant une longue liste d'accronymes... beurk! Bonne id?e, il donne les d?finitions des accronymes tir?es de Wikipedia. SOA Il commence par SOA: au choix Service-Oriented Architecture, ou Sarbanes-Oxley act (si vous savez pas ce que c'est, vous avez bien de la chance, ou Soldiers of Allah) Il parle beaucoup, vite, donc ?a va ?tre dur de tout retranscrire, je pense que je vais devoir me limiter ? vous donner les liens vers les d?finitions. WS Maintenant on passe ? Web Services (WS) Un truc: un web service n'est pas forc?ment en XML, le plus important c'est qu'il soit "remote", et "message-oriented". En plus il devrait ?tre "platform-independant", "vendor-neutral" et "internet-based". Pour l'instant c'est un peu du vent quand m?me, beaucoup de "c'est super" et pas beaucoup de d?tails technique. Ajax L. Client/SOA: pour certains c'est l'?tape apr?s Ajax. Un gros probl?me cependant: XSS (cross-site scripting), les requ?tes Ajax ne peuvent pas contacter un server dans un domaine diff?rent pour limiter le risque. On pourrait avoir du javascript sign? par le site web d'origine, mais ?a ne marche pas cross-browser. Donc ?a doit ?tre le serveur d'origine qui appelle les autres sites web pour le client. Par exemple on peut avoir un proxy qui g?re les appels ? diff?rents sites. L? ?a commence ? devenir int?ressant. Web 2.0 Donc comme c'est une conf?rence O'Reilly, il doit maintenant nous causer de Web 2.0 Il demande ? la salle: qui a d?j? utilis? Mapquest? Toutes les mains se l?vent. Qui ? d?j? utilis? Google Maps? Pareil. Qui a utilis? Mapquest depuis que Google Maps existe? 3 mains! Web 2.0 - Web: 1 - 0 Mash-ups: pour ceux qui vivent dans une grotte, c'est la combinaison de donn?es venues de plusieurs sources. Exemples . Au passage, en cherchant autre chose, je tombe sur un catchpa sympa: (pas forc?ment un truc ? voir au boulot) SOAP Avant SOAP il y avait XML-RPC, qui une fois tritur? par un commit? est devenu SOAP (la trituration ? ?t? assez importante!). WSDL SOAP est le format du message, WSDL d?crit l'interface du WS. Il y a plein d'outils pour g?n?rer au moins un squelette de code ? partir du WSDL... en Java. En Perl je sais pas, les sp?cialistes peuvent nous dire. UDDI Pas vraiment utilis?, au contraire des 2 pr?cedentes technologies. Ca permet de faire des r?pertoires de WS, mais en pratique on r?cup?re le WSDL directement, sans passer par une ?tape interm?diaire. SOAP en action SOAP avec l'API WS de Google (en b?ta depuis le dernier mill?naire). Il nous montre le format des messages, requ?tes et r?ponses. Je tape pas assez vite pour retranscrire le tout! En plus ?a cause surtout Java, fait chier. Il nous montre le r?sultat de WSDL2Java sur le WSDL de Google. Puis d?clare que c'est pas trop joli, donc il pr?f?re utliser l'API fournie par Google, plus pratique. Je vous passe le code en Java, pour ne pas me faire virer de la liste. Pause, il est content que tout le monde revienne apr?s le caf?. Une remarque du public: pourquoi c'est tot en Java. Il s'excuse et avoue que ses exemples en Perl sont trop horrible pour qu'il les montre en public. Conclusion sur SOAP: c'est lourd, pas vraiment browser-friendly. Donc on va passer ?: REST Plus simple (mais il y a quand m?me une th?se par Roy Fielding dessus () Il y a 2 types d'applications REST: pur REST, qui suit les principes d?velopp?s par Fielding, et "popular REST", en fait tout ce qui est WS mais pas SOAP. Il explique l'origine du terme "cargo-cult" () Le principe c'est de faire des requ?tes simplement avec une URL et des param?tres, et de r?cup?rer le r?sultat en simple XML (ou en fait autre chose, genre JSON). Ce qui est cool c'est qu'en regardant la requ?te on la comprend. Par contre il faut lire la d?finition de l'API pour pouvoir l'utiliser, il n'y a pas l'?quivalent de WSDL (encore qu'il semble qu'il y ait un projet pour ?a). Rest en action Un service REST: Yahoo! Ca tombe bien, ?a compl?te bien le service SOAP de Google. Effectivement, sur ce qu'il montre, c'est bien plus simple ? utiliser que le WS de Google. Pas besoing de g?n?rer le squelette du client, c'est tellement simple qu'il n'y en a pas besoin! Il demande: "comment rendre ?a s?r?" Ben de la m?me fa?on qu'on rend un site web s?r: https! C'est un des avantages de REST: ?a r?utilise l'infrastructure existante (ceci dit il me semble qu'on peut faire ?a aussi avec SOAP). REST toujours Un exemple avec l'API REST d'Amazon (Amazon a aussi une API SOAP, mais vraiment c'est plus simple d'utiliser l'API REST). pr?sente un peu toutes les possibilt?s offertes par Amazon. Je peux pas trop tester le site, la connection wireless est pas terrible ici (pour une raison ? laquelle je n'aurais pas pens?e: ), mais le site a l'air assez impressionant: il pr?sente aussi la version SOAP du service, g?n?re du code si on veut... la totale ("really cool stuff" d'apr?s le speaker). Il fait une erreur en tapant le crit?re de tri dans une requ?te, r?cup?re un message d'erreur: avec SOAP il aurait utilis? le WSDL et n'aurait pas eu ce probl?me (mais bon, s'il avait lu la doc du service REST non plus, et pis les tests devraient r?v?ler l'erreur assez t?t dans le processus de d?veloppement). Un peu de philosophie sur REST En fait, pour lui, il n'y a pas vraiment de diff?rence philosophique entre la version SOAP (Google) et la version Yahoo! (REST). L'impl?mentation est diff?rente, mais le code suit exactement les m?me principes. Il rentre dans une discussion sur la diff?rence entre URI et URL. Les vrai RESTeurs (ou RESTafarians) affirment que seule les URIs devraient ?tre utilis?es, pas les URL. Il avoue ne pas vraiment ?tre d'accord. J'avoue ne rieng comprendre au d?bat! Donc j'en profite pour aller faire un tour sur le site de la Gazzeta dello Sport pour voir le r?sultat de l'appel des clubs punis... zut, ?a sera dans demi-heure, donc je retourne ? mon compte-rendu, vous avez de la chance. Je vois qu'il recommande de jeter un oeil ? (et aux autres articles du m?me auteur (). Une des forces du "popular REST" est qu'en utilisant GET, ?a permet de bookmarker facilement le r?sultat d'une requ?te. Bien s?r ?a limite aussi la taille des donn?s pass?es entre le client et le serveur. Il n'y a pas de r?gles qui force ? utiliser GET, mais c'est recommend? pour respecter l'esprit REST. Encore quelques exemples de services REST Un peu de Google maps (oblig? non?). Il nous montre le lien g?n?r? par le bouton "link to this page". Ca montre bien l'inter?t de REST, qui permet de retrouver facilement les choses, en donnant une URL ? tout les r?sultats renvoy?s par un service. Par exemple je suis l?: http://maps.google.com/maps?f=q&hl=en&ie=UTF8&t=k&om=1&ll=45.529508,-122 .663008&spn=0.001853,0.003573 Atom suit aussi les principes REST (et au passage, je trouve Atom bien mieux fait que RSS, c'est plus logique, ?a permet de mettre ? peu pr?s tout ce que je veux dans le feed... recommand?!) JSON Le principal avantage de JSON, c'est que ?a n'est pas XML! (*"we don't need no stinkin' XML"*) C'est dur de parser du XML en Javascript, tandis que JSON ?a se charge hyper facilement en Javascript dans le client. Malgr? mon (lourd!) pass? XMLien, je dois dire que je suis compl?tement d'accord. Tiens, je savais pas que JSON est un sous-ensemble de YAML. json.org pour plus d'info. En perl on a JSON et JSON::Syck (parce que *"JSON is YAML"*) ESB Un dernier accronyme pour nous achever, mais je saisis pas ce que ?a veut dire: le E est pour "Enterprise", donc mon cerveau se d?connecte automatiquement, d?sol?. C'est fini, c'?tait pas mal en fait, des fois d'un peu trop haut niveau, et un peu marketing parfois, mais c'?tait un bon tour d'horizon quanf m?me. Bon, je vais devoir aller manger sans savoir ce qui se passe en Italie... je pense que je survivrais quand m?me. A plus. Mardi Apr?s-midi Rolling your own Google Maps - Scott Davis Il recommence avec sa pub au d?but du cours. Il commence par expliquer en quoi Google maps est important: l'utilisation de Javascript et CSS pour une application compl?tement nouvelle, et impossible ? faire sans ?a. En plus il n'y a pas besoin de plug-in pour s'en servir. En plus Google a publie' une API pour Google maps. Les limitations du service: c'est gratuit, mais pas libre. L'utilisateur DOIT utiliser l'API fournit par Google. 2 frameworks pour faire la m?me chose: MapBuilder () et OpenLayers () Donc attaquons la partie pratique: cr?ons notre propre appli! Le code est disponible pour les participants au cours, il sera disponible pour le public d?s que le livre qu'il est en train d'?crire sera publi?. Donc vous n'aurez pas le code aujourd'hui, juste la description de la d?marche qu'il utilise. Version 1: d'abord on cr?e une image avec des "tiles", dans une table, 3 lignes, 4 colonnes. Version 2: il cr?e 2 "div"s autour de la table: une qui d?finit la table enti?re, et une qui d?finit la partie affich?e de la table. Il utilise CSS pour que la partie affich?e soit plus petite que la table enti?re. Version 3-5: Il commence ? ?crire le js qui fait bouger la table enti?re. Du coup la table affich?e montre une autre partie de la table. Il assigne ?a au drag-n-drop de la souris (entre mouseDown et MouseUp il "dragge"). Il utilise prototype (librairie javascript). Un truc qui me plait: dans son script il ?crit "Event.observe( window, 'load', myscript, false);" au lieu de mettre le script dans l'attribut "onload" du tag "body". Je d?bute en js, et c'est le genre d'info que j'appr?cie (je sais pas si c'est sp?cifique ? prototype ou si ?a marche de base en js, j'essaierai plus tard). Le "false" emp?che l'?v?nement de "bubbler". Version 6: il ajoute un peu de code pour emp?cher l'utilisateur de dragger trop loin, pour bloquer le d?placement de la table enti?re. Version 7-8: Il se d?barasse de la table, et commence ? faire des calculs (semi-)sophistiqu?s pour savoir quelles sont les lignes/colonnes affich?es et ajuster le positionnement de la carte enti?re avec CSS, puis il t?l?charge les images (toujours de fausses images ? lui. Bon, en fait ce tutorial me fait quand m?me un peu chier. Ce genre d'exercice, pour moi, ?a marche si c'est un TP. Mais suivre un mec qui explique son code au podium pendant 3 heures, ?a commence ? me fatiguer. Donc je suis pas s?r de rentrer apr?s la pause... Ma conclusion perso sur ces 2 cours est que Web Services ou Google maps ou Ajax bidule... au bout d'un moment, c'est plus la peine de lire des papiers ou d'aller ? des cours, il faut se poser devant le clavier et JFDI (*"Just Fucking Do It!"*). Doc... ce soir il y a la soir?e MySQL au bar d'un des hotels de la conf, puis le State of The Onion de Larry Wall, donc c'est l'heure d'aller faire la sieste et de prendre des forces. Ciao -- Michel Rodriguez IEEE Standards - Electronic Services From paul.gaborit+pm at enstimac.fr Wed Jul 26 00:34:43 2006 From: paul.gaborit+pm at enstimac.fr (Paul Gaborit) Date: Wed, 26 Jul 2006 09:34:43 +0200 Subject: [Toulouse-pm] [perl] OSCON 2006, Lundi (et Mardi) In-Reply-To: <20060725083951.GA30825@localhost.localdomain> References: <20060725083951.GA30825@localhost.localdomain> Message-ID: <44C71B13.30602@enstimac.fr> Philippe BooK Bruhat a ?crit : > Le mardi 25 juillet 2006 ? 00:02, Michel Rodriguez ?crivait: >> OSCON 2006 - Portland, OR >> Salut les p'tits gars. Donc cette ann?e encore, pas de YAPC::Europe pour >> moi, mais par contre un petit compte-rendu d'OSCON, au cas o? quelques >> un d'entre vous ne seraient pas l?. > > Le compte-rendu de Michel est en ligne sur le site articles : > http://articles.mongueurs.net/comptes-rendus/oscon-2006.html > > Il sera mis ? jour au fur et ? mesure des envois des Michel > (merci ? lui de m'avoir envoy? son CR en pod). > Merci ? tous les deux pour ces documents. C'est toujours aussi passionnant. -- Paul Gaborit Perl en Fran?ais EMAC From mrodrigu at ieee.org Wed Jul 26 18:15:42 2006 From: mrodrigu at ieee.org (Michel Rodriguez) Date: Wed, 26 Jul 2006 21:15:42 -0400 (EDT) Subject: [Toulouse-pm] Oscon 2006, Mercredi Message-ID: Lundi soir Apr?s la r?ception MySQL dans un h?tel pas loin, retour au centre de la conf?rence pour la session du soir. Je passe sur les remises de prix, vu qu'encore une fois j'en ai pas eu. Le State of the Onion de Larry ?tait centr? sur la famille. Il d?crit Perl comme son enfant. Comme Perl approche les 20 ans, c'est le moment de la derni?re phase de croissance, et gr?ce ? la grande famille qu'est la communaut? Perl, il pense qu'elle (Perl) a ?t? bien ?duqu?e. A la fin, Nat en conclut que maintenat il comprend tout: Perl couche! (*"Perl got laid!"*), avec Haskell par exemple. Ensuite un talk int?ressant de Kathie Sierra, d'O'Reilly, sur "comment cr?er des utilisateurs passionn?s". Quelques points dont je me rapelle: il faut s'addresser non seulement ? l'intellect (*mind*) mais aussi au cerveau profond (*brain*) (je connais pas les termes exact, si on a un psychologue dans le coing il me corrigera), en jouant sur les ?motions "primitives". Si je trouve la pr?sentation sur le web je vous passerai l'url, parce qu'il y avait vraiment beaucoup de points qui m'ont sembl?s pertinents. Finalement une pi?ce de Damian Conway "DaVinci Codebase", une histoire polici?re (avec l'obligatoire minette fran?aise) assez impossible ? retranscrire, mais bien marrante, qui finit par un clip sur les MP3 libres. Apr?s retour ? l'h?tel et dodo. Comme le Dr Nicholas Clark (dont j'esp?re que pour une fois je n'?corche pas le nom, Hi Nick!) remarquais, cette ann?e il manque un point central pour rencontrer des gens. Le soir le centre de conf est d?sert, et les participants sont ?parpill?s dans pleins d'h?tels, pas tous tout pr?s. en plus le lobby est tout petit, donc passer dans la chambre poser le sac et redescendre pour tomber sur des gens au hasard ne marche pas. Dommage. Au passage je remercie Eric Cholet pour son soutien moral (il consulte son mail ? c?t? de moi). Mardi matin Keynotes Tim O'Reilly nous cause. 5 id?es sur l'Open Source (en anglais parce que ?a va vite, commentaire d'Eric: "blah blah blah"): Encourager la participation (avec Web 2.0, la marotte de Tim), en utilisant "l'effet r?seau". Open-Source licenses are obsolete Quelques notes au passage: pour lui, avec les nouvelles architectures bas?es sur le r?seau, toutes les licenses libres sont d?pass?es. Du code sur un serveur distant n'est pas soumis ? la license GNU par exemple. Frameworks Une nouvelle tendance pour les projets Open-Source: les Frameworks, qui commencent comme applications propri?taires, d'o? est extrait ensuite une partie g?n?rique qui est Open-Sourc?e (Ruby on Rails, Django...) Operations as Competitive Advantage What freedom matters Regarder movemydata.org d?veloppe ces id?es. Puis un gars de greenplum, qui sponsorise la conf?rence, nous compare l'Open-Source et le Rock'n Roll. C'est assez rigolo, un point qu'il d?veloppe: *keep it real*: le but n'est pas forc?ment de r?cup?rer pleing de pognon, et d'essayer d'?tre le projet le plus t?l?charg? au monde, mais de rester fid?le ? nous-m?mes, ? ?tre dangereux, au sens de r?volutionnaire. Puis Anil Dash, de Six Apart (Movable Type), nous cause de "Making Web 2.0 Mean Something", ?galement intitul? "Trying to Suck Less". C'est pas hyper-passionant, il nous montre les trucs OS que sa bo?te fait. Ca rapelle le talk de Tim plus haut, au sens que ce sont des trucs que Six Apart a d?velopp? pour leur produit, puis Open-Sourc? un fois stable et *working like crazy*. On peut les r?cuperer chez Six Apart (un balancer de charge, un serveur Jabber...). Pour finir: interview du fondateur de Sleepycat (Berkeley DB), r?cemment acquis par Oracle. Il parle des relations entre Oracle et Sleepycat (et ses 25 employ?s). Il souligne que Oracle a une longue tradition d'aider des projets OS, quoique ?a ne se sache pas trop (Linux, Perl...). Il reste tr?s politiquement correct, dit que Oracle n'a pas de probl?me avec MySQL ou PostgreSQL. Il insiste sur le fait que *one size doesn't fit all*: diff?rents SGBD sont adapt?s a diff?rents probl?mes (sur O'Reilly Radar il y avait une s?rie de posts de Tim O'Reilly sur le fait que pas mal de gros, en fait ?normes, projets n'utilisent pas de SGBD, et pourquoi (). Donc pour r?sumer, les keynotes c'est super ?nervant: la plupart du temps elles sont pas terrible, mais de temps en temp il y en a une g?niale. En g?n?ral le jour o? je n'y vais pas ;--( Ensuite un petit tour a l'exposition. Je r?cup?re un T-Shirt du labo Open-Source de Microsoft, portant l'inscription *Reports of Snowballs Seen in Hell*. Pour me rattraper j'ach?te un T-Shirt Firefox, et je renouvelle mon inscription ? l'EFF. Je me sens moins sale. Parsers, Perl 6 rules and the Parror Grammar Engine - Patrick Michaud Le sujet a ?t? bien couvert dans d'autres compte-rendus, donc juste les points saillants (surtout que j'ai rat? le d?but pendant que gozer essayait de me convaincre d'utiliser komodo, qui effectivement semble pas mal comme debugger). Une regexp est juste un autre type de fonction. C'est plus facile pour les autres langages o? les regexps ne sont pas int?gr?s ? la syntaxe de base. Pour sortir des messages d'erreur: rule if_statement { if [ | ] [ then | ] [ | ] } Il montre la grammaire de "bc". J'aime bien la d?finition de la pr?c?dence en utilisant "is_looser( '')" (ou "is_equiv"): c'est facile et maintenable, et en fait c'est comme ?a que notre cerveau fonctionne (on peut aussi utiliser un nombre qui donne le niveau de pr?c?dence. On jette aussi un coup d'oeil aux grammaires de Perl6 et de APL (pour les plus vieux d'entre vous, il faut une fonte unicode pour pouvoir l'afficher bien s?r, cr??e ? partir d'une photocopie d'un manuel APL de 1975). D'apr?s lui il est tr?s facile, et rapide d'?crire des parseurs avec PGE. Pour lui Perl6 est vraiment facile ? parser avec PGE, et Laryy, Damian et les autres ont fait un boulot g?nial. Mind Like Water, The Path to Perl Bliss - Peter Scott Peter Scott est l'auteur de Perl Medic et Perl Debugged, 2 excellent livres, donc ?a vaut le coup de voir ?a (et pour une fois je suis m?me ? l'heure, et ?a laisse le temps ? Damian de s'excuser pour la fa?on dont il a maltrait? les fran?ais hier). Il annonce qu'il ne va pas vraiment parler de sujets techniques, mais plut?t de sujets comme les relations avec d'autres d?veloppeurs, et des citations de d?veloppeurs c?l?bres. Il commence par se demander pourquoi il a falu tant de temps pour qu'on commence ? ?crire les tests avant le code. *We are now smart enough to realize that we are not smart enough to write tests after the code*. Int?grer ses diff?rentes personnalit?s Il explique que nous avons tous diff?rentes personnalit?s, suivant les moments, qui ont diff?rentes forces, faiblesses, buts. Il nus faut apprendre ? les ?couter, ? les conna?tre et ? travailler avec elles. Quelques exemples: le parseur Perl Intervient quand on lit du code. Assez primitif, c'est pour ?a que les variables doivent ?tre d?clar?es localement, les fonctions doivent ?tre courtes... Le module Smart::Comments, qui met des instructions de debug en commentaires, ce qui fait qu'elles sont assez diff?rentes du code pour qu'on ne les voit plus. le programmeur impatient Veut juste coder, d?teste conception, docs, planning, r?unions, travail en ?quipe... le "Glory Hunter" le bon samaritain On a tous ces diff?rent types en nous, arriver ? les int?grer nous rends meilleur programmeurs. Arriver ? les int?grer toutes permet de. Historiquement les programmeurs ?taient plut?t de type "Glory Hunter" dominant. Maintenant l'aspect bon samaritain est plus mis en valeur. Ce qui au passage satisfait aussi souvent le Glory Hunter. Comment arriver ? ?tre "in the zone"? Minimiser les distractions Utiliser un bon ?diteur (par exemple en emacs on peut avoir le d?limiteur fermant appara?tre quand on entre le d?limiteur ouvrant). Utiliser les modules de test Automatiser toute t?che r?p?titive Par exemple module-starter pour commencer ? ?crire un module The Behavioral Cycle Nos croyances (*beliefs*) commandent nos attitudes (je sais pas traduire), qui commandent nos comportements. Mais ?galement nos comportement peuvent modifier nos croyances. Ca s'appelle la discipline. Apparement ?a marche ;--) Imaginer le r?sultat d'un comportement qu'on veut adopter nous aide ? l'adopter. M?me si on y croit pas au d?part, des comportements comme ?tre clair, pr?cis, suivre les m?thodologies appropri?es (contr?le de version...) am?liorent notre code. Les secrets des ma?tres Il veut lancer un projet pour compiler des citations et id?es de bon codeurs. En vrac, sans attribution, pas le temps, et avec des trous: Ne pas h?siter ? dire qu'on ne sait pas, Lire le code des autres Travailler sur ce qu'on aime Ne pas admettre la d?faite trop t?t, ?tre patient essayer de toujours apprendre, et pas forc?ment ce que les autres apprennent, ne pas lutter contre le langage poser des questions... et ?couter la r?ponse essayer les choses, si ?a marche, pourquoi ne pas les essayers dans d'autres contextes have fun! (les conf?rences Java ne sont PAS fun!) prendre des bonnes habitudes, les garder m?me dans des programmes jetables Apprendre, ?tre curieux, essayer avant de demander de l'aide sont des th?mes r?currents. Au final une pr?sentation int?ressante, mais, comme promis, pas tr?s technique. Mardi Apr?s-midi Nothing but Ingi d?t Net Ingy, *Hello, my name is Ingi d?t Net*, avec un tr?s joli mohawk, commence la pr?sentation (?) au son de Rock'nRoll, commence ? se d?shabiller. Chemise, tee shirt, pantalon... Le public lance des billets. Le cale?on descend. Comme promis, *Nothing but Ingi d?t Net*! Il va se rabhiller... *What the fuck was that?* Jemplate Il rapelle la phrase de Nat hier: *Perl finally got laid*. et rapelle que ?a a commenc? en 2001, avec la s?rie des Inline::* : Perl s'est tap? tous les langages. Mais r?cemment Ingy a plut?t fait du Javascript (comme tout le monde?). Il adore JSON, et en Perl JSON::Syck (rapellons que JSON est un sous-ensemble de YAML). L'int?r?t c'est qu'il peut passer des donn?es, quelques soient leur taille, de Perl a js d'une seule ligne de Perl et une de js. Pour se faciliter la vie, il a ?crit Jemplate: tout le Template::Toolkit (le core) port? en js. Donc maintenant on peut utiliser les m?mes templates en Perl et en js. Le fichier Jemplate.js fait un peu plus de 100 lignes (et bien s?r est cach? par le browser). Il nous montre un bout de code. Effectivement les templates se ressemblent beaucoup (ceux en js ont besoin de charger ). Quelqu'un dans le public proteste contre l'utilisation de "innerHTML", disant que ?a va ?tre "deprecated". Ingy r?pond qu'il attendra de voir la fonction enlev?e des js des browsers avant de la remplacer dans son code. Je veux rester poli, mais innerHTML est quand m?me bieng pratique, et fuck les int?gristes qui veulent nous forcer ? faire du DOM sans raison. Module::Compile Apparement tout le monde d?teste la base de beaucoup de ses modules: Spiffy. Alors, doit-il addmettre sa d?faite, ou pousser l'insanit? plus loin et confondre ses d?tracteurs? Connaissant Ingy, il n'y a pas beaucoup de suspense sur la r?ponse. D'o? orz.pm, sur CPAN, (orz: ). Il se sert d'une vieille fonction de Perl, qui, quand il charge un module, cherche un fichier ".pmc" avant de chercher un ".pm" (un reste de vieilles exp?rimentations avec le compilateur Perl). Donc vous l'avez devin?, Ingy applique une transformation ? un module, typiquement un filtre, et stocke le r?sultat dans un fichier ".pmc". En fait, ?a marche m?me avec "perl -c ". Ah ah! Ca permet des trucs sympa: on peut donc utiliser les modules perl v6 sans avoir pugs install?, vu qu'on se sert des versions compil?es de ces modules. Ca a l'air kewl. Dans XML::Twig, pour prendre un exemple au hasard, j'ai effectivement une phase de pr?-compilation du module, pour laquelle je pourrais utiliser Module::Compile (si je ne voulais pas ?tre toujours compatible avec perl 5.004). Je me rends compte que je n'ai rien compris au rapport entre Module::Compile et orz, mais bon, faudra que je creuse. Filter::Simple::Compile peut remplacer Filter::Compile et g?n?re le ".pmc" (qu'on peut aller v?rifier). Donc Ingy a encore ?t? occup? cette ann?e. Plagger - Tatsuhiko Miyagawa Miyagawa est l'auteur de XML::Liberal, que je pense int?grer avec XML::Twig, donc ?a m'int?resse de voir ce qu'il a ? raconter. Plagger est un aggregateur de RSS/Atom "pluggable". Il n'arr?te pas d'?crire des bouts de code qui triture du rss (rss2ipod, rss2audiobook, bloglines2gmail). D'autres on ?crit rss2atom, rss2pdf, rss2gmail, rss2imap, svn2rss, ebay2rss... Il en a marre de r?ecrire sans arr?t le m?me genre de code, avec les in?vitables copier-coller, les difficult?s pour maintenir toutes ces versions. Donc il a d?cid? de cr?er une *platform thingy*: plagger, pour faire du 2 o? truc ou machin est rss ou atom ou opml. Ca marche sur le principe des pipes unix, avec des modules pour lire, transformer et ?crire diff?rents formats, et on peut bien s?r encha?ner les plugins. On programme le syst?me par un fichier de config en YAML. Le tout est assez sophistiqu?, avec d?couverte automatique des feeds, XML::Feed est utilis? pour lire les feeds, et supporte RSS (toutes versions) et Atom, il peut utiliser les cookies du browser (IE/Safari/Firefox), peut faire du screen-scrapping... Plus de 100 plugins sont disponibles, divis?s en plusieurs types (par phases du process de transformation), extraits: subscription: Subscription::Config pour les cas simples, Subscription::OPML pour manager des centaines (ou milliers de feed), Subscription::Bookmarks pour utiliser directement les bookmarks d'un browser. navigation: Aggregator::** (pas le temps de noter) custom feeds (pas en RSS/Atom) CustomFeed::* filter: permet de modifier ou r?parer un feed, par exemple virer la pub publish: Publish::Feed publie en RSS/Atom, Publish::MT publie dans Movable Type, Publish::Excel (! pour le chef?) search notify: Notify::Campfire Notify::Balloon Notify::Eject (ejecte un CD du drive), Notify::Pizza (si on blogge *I am hungry* le syst?me notifie la pizzeria du coin). Il nous montre comment il archive ses feeds sur son compte gmail: les mails pour chaque feed se retrouvent dans la m?me thread ils sont tagg?s (plagger) donc il peut les chercher tr?s facilement, et en plus il a configur? pour les archiver dans un r?pertoire s?par?. Il a aussi un bot qui l'informe des feeds mis-?-jour sur IRC. Plaggnet lui est sa r?ponse ? planet (?crit en Python): il aggr?ge une s?rie de feed et les filtre par mot-clefs. Vous pouvez le voir en action ? (et en plus il peut utiliser les fichiers de config de planet, donc switcher est tr?s facile!). Enfin, en 8 lignes de config, il cr?e un moteur de recherche de blogs, utilisant Subscription::PingServer, Aggregator::Xango et Search::Estraier. Les configs qu'il nous montre sont effectivement tr?s simple. Bien cool! Au rayon, pas si cool: la doc n'est pas super, Plagger d?pends de 73 modules, pour l'installer il faut vraiment charger la version du repository de subversion (sinon, par CPAN, il ne cr?e pas tous les r?pertoires n?cessaire). Mais bon, c'est Open Source, donc tout le monde peut se mettre ? l'am?liorer. Dans le futur il veut ajouter des back-end DB, un meilleur support pour le contenu multimedia, support pour les calendriers... Un excellent talk, je pense que je vais jouer avec ?a quand je rentre ? la maison. Lightning Talks Et oui, c'est l'heure de mon chemin de croix (quasi) annuel. L'heure et demi pass?e ? tapoter fi?vreusement pour essayer de suivre le rythme effr?n? des pr?sentations. D'abord MJD s'excuse pour le fait que les LT, qui auraient du ?tre informels et sans pression, ont tourn?e ? la grande foire. Donc cette ann?e pas de gong, mais quand m?me avec des vedettes. Audrey Tang - ppencode La prochaine OSCON devrait ?tre pr?s d'une chute d'eau (waterfall, le mod?le de d?veloppement), et sur Ruby on Snails. Bon, c'est presque tout des vannes, facile ? transcrire ;--( Elle propose de convertir les codeurs Perl ? Ruby en enlevant les touches $ et ; du clavier. Mais elle nous monter un bout de code ?crit en perl juste avec des fonctions et des espaces, sans aucune ponctuation! Puis un javascript qui convertit un texte en code perl sans ponctuation: ppencode! Bien sur elle nous montre la r?ponse des ruby-ers, qui convertit un texte en code perl sans lettres! Apparement les pythoniste n'ont pas encore finit leur version. Un biologiste Sans slides c'est dur pour moi de vraiment suivre. Il semble qu'il d?crive un syst?me qui ?mule un syst?me sur un autre, pour que ses utilisateurs n'aient pas ? s'adapter au nouveau syst?me. Je crois. Il s'en servent pour distribuer des bouts de codes g?n?tiques dans le domaine public pour ?viter qu'ils ne soient brev?t?s. Je crois. Andy "Petdance" Lester - 4 sparks talk Il avait envoy? pleins de propositions, et comme 2 seulement ont ?t? retenues, il va nous parler de toutes celles qui ont ?t? rejet?es. use ack "ack" remplace "grep": fait -r par default, utilise les regexps de perl, color-code les r?sultats, ignore les fichiers CVS, permet d'inclure/exclure des fichiers par type (par langage) use Perl::Critic Qui suit religieusement "Perl Best Practices"? 3 mains se l?vent. Ah ah! Il recommende Perl::Criti? qui est extr?mement configurable et extensible (les siennes sont dans Perl::Critic::Bangs) Aidez Perl6! C'est le plus important pour le futur de Perl. Tout le monde pense que Perl est sur le d?clin parce que Perl6 tra?ne. Donc il organise les volontaires pour participer, m?me si on n'est pas tr?s fort (genre nettoyer la doc, passer lint sur le C de Parrot...) Real life social networking Pour lui, social networking ?a n'est pas Orkut, LiveJournal... c'est email, aim, IRC, le t?l?phone (il donne son num?ro), la conf ici Son t?l?phone sonne! ? - Perl Critic Encore! Perl::Critic est le premier module de son auteur. Il utilise PPI, qui parse le code Perl sans l'ex?cuter. Quand on lance l'utilitaire "pcritic", inclus dans la distribution, il... se plaint! Beaucoup! Il a un switch pour la s?v?rit? des erreurs qu'il d?tecte (commencer ? 5 et descendre ensuite vers 1). Chaque r?gle du PBP est impl?ment?e dans un module s?par?. Dans le code on peut mettre des commentaires comme ## no critic pour ?viter les plaintes abusives. On peut aussi utiliser un fichier ".perlcriticrc" "Test::Perl::Critic" peut aussi ?tre utilis?. Men Wang - stubmail Un update sur un LT qu'il a donn? l'an dernier. Il pense que ?a serait pas mal si au lieu de recevoir les mails sur notre serveur, on allait chercher les mails sur le serveur de l'exp?diteur. A la RSS par example. Donc en avril, il a organis? un hackaton avec quelques autres anti-spammeurs. Questions: quand "poller"? Il envoie une notification par UDP Question: qui "poller"? longue r?ponse, d?sol?. C'est Email 2.0! Stephan Tramm - xmlawk / xgawk 2 minutes pour arriver ? taper l'URL de... sa home page. Le micro est super fort il est content. XML extension pour awk! M?ga Cool! Pour moi ?a ressemble ? PYX (jetez un oeil ? XML::PYX). En plus pour grepper du XML il y a "xml_grep" (distribu? avec... XML::Twig) ou "xml_grep2" (bas? sur XML::LibXML et libxml2), disponible ? . Ceci dit son projet a l'air assez complet Colin Meyer - Whitepages.com, a Perl success story Sous-titr? *So you think that Perl isn't appropriate for the enterprise?* Whitepages.com est le moteur utilis? pour la recherche de personnes par msn.com, 411.com et d'autres. Ils ont 10 millions de recherches par jour, jusqu'? 2500 hits par seconde. C'est tout en Perl et un peu de XSLT. Il nous montre le sch?ma de leur application, assez complexe, qui servent une requ?te en 1/3s en moyenne. Ils utilisent juste 40 serveurs pour tout ?a. Chris "Pudge" Nandor - Comme chacun sait il est fan de baseball (). Donc il g?n?re ses fiches de score en Perl (un truc inbitable, qui permet de retranscrire exactement ce qui s'est pass? pendant une partie). Bien s?r il nous montre la feuille du dernier match des World Series de 2004 (gagn?e par les Red Sox). Zut, j'ai rat? le nom du module... je suis pas s?r que ?a interesse trop de monde de l'autre c?t? de l'oc?an. Module::Install - une pi?ce en 5 actes Unne bonne douzaine d' acteurs, pour illustrer le processus d'installation d'un module. Bieng sur l'utilisatrice veut un module de templating, donc ?a se bat un peu. Les tests ne passent pas, c'est le souk. Le d?veloppeur patche, "make" grogne, les tests volent sur la sc?ne et chantent... finalement le module s'installe... mais l'utilisatrice en fait en voulait un autre... et ?a recommence au d?but. Tim Bunce - DB interfaces for open source langages suck Il nous pr?vient: pas de blagues dans son LT. Mais une (tr?s courte) vid?o de sa fille de 8 mois. Les interfaces pour Java, C#, VB... suxent aussi, mais elles ont plus de fonctionnalit?s. Les interfaces de Perl/Python/Tcl/Ruby... sont toutes l?g?rement differentes, les efforts sont dupliqu?s... La solution: avoir un unique driver, une unique API, ?crite pour Parrot. Quelle API choisir? JDBC! Il dit bien l'API: elle est connue, stable. Les couches au-dessus pourront ?tre diff?rentes, mais la couche de base (correspondant ? la couche DBD::*) sera JDBC. Il a d?j? ?crit JDBC.pm (avec Inline::Java). La v2 de l'API de DBI suivra, une fois que les probl?mes d'"impedance mismatch" entre JDBC et DBI seront pplus apparents. Pas b?te! Andy "Petdance" Lester - Welcome to Triple Rock Baptist Church Uh? Ca commence par ne sc?ne des Blues Brothers (celle o? James Brown chante ? l'?glise du titre). Il proteste contre les cat?gorisations de langages de programmation. Perl a tout, objets, closures, phase de compilation (comme jave, juste plus rapide), tout quoi... frameworks, plus de froameworks Ca finit en pr?che (? la James Brown) un membre du public qui n'a jamais fait de pr?sentation ici - Log::Dispatch Il n'utilise jamias print dans tous les programmes qu'il ?crit (en g?n?ral de l'admin syst?me) mais plut?t Log::Dispatch. Apr?s il peut envoyer les sorties o? il veut, suivant les cas: moniteur, fichier, log, email... Uri Gutman - A tiny templater Encore un! Je crois que je vais vous passer les d?tails, si vous contactez Uri je suis s?r qu'il sera ravi de vous expliquer tout ?a. Pas encore un module (*DEITE* merci!) Patrick Michaud - Parrot Target Practice Il explique pourquoi tant de langages sont impl?ment?s sur Parrot (au moins il y a des tentatives d'impl?mentations) et que c'est bien pour Parrot. Mais le but de son LT est de nous montrer un peu d'APL, le dernier langage impl?ment? sur Parrot. vous fera peur si vous ne connaissez pas. C'est un langage ou le _code_ est en unicode, mais pas les donn?es. Au passage ?a les a fait progresser pas mal sur l'aspect unicode de Parrot. George Wood - What I did for the Summer in Chicago Un sch?ma qui d?crit les diff?rentes parties de Perl6/Parrot/Pugs/Ponie, les diff?rentes possibilt?s de compilations de Perl6 (sur Parrot Javascript Haskell et Perl5). C'est pleing de diagrammes UML et tout, je crois qu'en voyant ?a je comprends encore moins qu'avant! Il faudra que je regarde ?a de plus pr?s si je le trouve. Quelqu'un a l'url? Bon, apr?s ?a je suis ?puis?, je vous laisse, -- Michel Rodriguez IEEE Standards - Electronic Services From mrodrigu at ieee.org Fri Jul 28 08:51:06 2006 From: mrodrigu at ieee.org (Michel Rodriguez) Date: Fri, 28 Jul 2006 11:51:06 -0400 (EDT) Subject: [Toulouse-pm] Oscon 2006, Mercredi Message-ID: Mercredi soir Mercredi soir ?tait la traditionelle soir?e p5p dans la chambre (ou plut?t suite) de Nat. Traditionnellement, bien que n'?tant pas sur p5p, j'assiste ? la soir?e. C'est vraiment un des aspects d'OSCON que j'aime: je ne cause quasiment pas de Perl, mais j'ai droit ? une description de zimbra et de leurs buts (virer Outlook), de openId, une comparaison de divers t?l?phones portables, je tire sur le hookah de Josh, je vois mon premier canadien en col?re, c'est une canadienne, et j'admire Portland la nuit (si j'avais port? le chargeur de la batterie de mon appareil photo vous auriez une photo :--( heureusement, flickr ? la rescousse: Jeudi Matin Keynotes Je me l?ve un peu en retard, et je rate (comme d'hab apparement!) une bonne partie des keynotes. J'arrive ? la fin du talk de Robert "r0ml" Leibowitz, qui avait l'air bien rigolo, comparant Open Source au l?gumes, et combien de l?gumes est bon pour la sant? (RMS est bien s?r un v?g?tarien). How SQL RDBMSes Work - D. Richard Hipp Par le gars qui fait SQLite, mon SGBD favori (parce que mon sysadmin est nul, c'est moi!). Il devrait savoir de quoi il parle! Pour lui ill faut penser ? SQL comme ? un langage de programmation, simplement il d?crit ce que l'on veut, pas comment le r?cup?rer. Chaque instruction SQL est une fonction. Il montre un peu de pseudo-code, qui impl?menterait une requ?te typique. Puis 3 autres versions, en ajoutant des index ? lalgorithme. Juste pour nous montrer que m?me une simple requ?te peut ?tre traduite de pas mal de fa?on. Une requ?te un peu plus compliqu?e (waouh! l'auto-compl?tion de vi marche super bieng, c'est un vrai plaisir que de taper req). Est-ce que ?a serait facile d'?crire le code? Son talk va surtotu porter sur cette phase, sur la compilation de la requ?te. Pas sur la machine virtuelle et le syst?me de stockage. Diff?rents moteurs g?n?rent diff?rents formats: MySQL, PostgreSQL g?n?rent une structure de donn?e (un arbre), SQLite g?n?re du bytecode, d'autres g?n?rent m?me directement de l'assembleur. Ca n'est pas important, ce qui est important ce sont les principes utilis?s. Donc il nous montre la structure d'une table: chaque ligne a un id, des champs, et l'addresse o? le record est stock?. Puis la structure d'un index (valeur de l'index, qui peut ?tre r?parti sur plusierus colonnes, et addresse du record). Pour l'instant c'est pas d'un tr?s haut niveau. Les questions sont int?ressantes n?anmoins, Monty de MySQL et des gens de PostgreSQL sont dans le public et participent ? la discussion. Par exemple si on a une requ?te sur un champ qui est le second de l'index, PostgreSQL et Oracle (et dans le futur MySQL) peuvent quand m?me utiliser l'index. C'est surtout interessant si par example le premier champ de l'index n'a que peu de valeurs: le moteur doit faire autant de recherches que le nombre de valeurs dans ce champ, mais ?a peut quand m?me ?tre plus efficace que de balayer toute la table. Si une requ?te ne doit retourner que des champs de l'index, le syst?me n'a m?me pas ? lire la table, donc ?a peut ?tre int?ressant d'avoir les champs les plus utilis?s directement dans l'index. Sa recommendation: cr?er des index avec d'abord les termes du WHERE, puis ceux du ORDER BY, puis ceux qui sont retourn?s (pas en PostgreSQL qui va lire la table quoi qu'il arrive). Il nous montre comment un OUTER JOIN marche. L'ordre des tables est vraiment significatif. Le SGBD optimise l'ordre bien s?r, mais avec beaucoup de tables le nombre de combinaisons explose. Alors comment le SGBD choisit-il? Il doit s'arr?ter, plus de temps! ARRRRGGGHHHH! Un bon talk au final, gr?ce au fait que Richard Hipp fait vraiment participer le public. La pr?sentation sera bient?t en ligne. What Would Good Programmers Do - Perrin Harkins Il recommende d'utiliser perltidy sur le code. Ca ?vite de s'engueuler sur le format du code. *Code is always read more time that it is written* : le public (*target audience*) du code n'est pas l'auteur 20 minute apr?s l'avoir ?crit. Son truc: il imagine toujours qu'il va devoir lire le code 1 an plus tard, ? 2 heures du mat, apr?s avoir ?t? r?veill? par un coup de fil de son boss qui hurle au bout du fil. Ses principes de base: Pourquoi faire compliqu? quand on peut faire simple Ne pas utiliser la magie quand on peut utiliser quelque chose d'implicite ("tie"d variables...) Ne pas rendre le code plus compliqu? juste pour avoir une certaine syntaxe (ex: prototypes) Suivre les conventions quand on peut Il a un exemple ou il dit que "s/foo/far/" est mieux que "s{foo}{bar}" (je ne suis absolument pas d'accord, j'utilise _toujours_ la deuxi?me syntaxe) Ne pas utiliser des fonctionnalit?s obscures de perl (plus risqu?, moins test?es..) Il n'utilise _jamais_ les formats, les variables de ponctuations, les fonctions import qui n'importent pas (genre "use Catalyst qw/-Debug/;"), la vieille syntaxe d'appel des m?thodes ("new Class"), ajouter des m?thodes ? UNIVERSAL, re-blesser des objets existants, filtre source, "use constant". Il recommende aussi de s'en tenir aux objets bas?s sur des hash (curieux... tiens au passage je jette un oeil ? Moose qui ? l'air sympa). Il essaye d'?viter: "DESTROY", "AUTOLOAD", "wantarray" (je suis etie`rement d'accord avec celui l?, je suis pas assez fort pour toujours r?aliser dans quel contexte j'appelle une fonction (si j'y pense). Il ?vite de trop utiliser les closures, string "eval", sub attributes, coderefs, fonctions export?es par un package (il pr?f?re utiliser des classes), "map/grep" encha?n?s, op?rateur ternaire (? :) pour lui c'est juste un if/else plus court (Damian intervient pour dire que l'int?r?t est que ?a force ? avoir un else). Questions (de lui): Est ce que ?a rend la programmation chiante? Pour lui non, ?a permet de se concentrer sur le niveau plus g?n?ral, on peut s'amuser lors de la conception. Mais AUTOLOAD est super-cool (*awesome*)! Ouaip, mais pas forc?ment dans un gros projet. Pourquoi ne pas utiliser Java? Qui a laiss? rentrer ce gars dans la salle? A part le code: penser au contr?le de conf, utiliser les branches dans le syst?me de versionnement, ?crire des tests. Un talk un peu bizarre, qui me semble un peu "Perl Best Practices 2001". Il refuse pas mal des r?cents d?veloppements dans et autour du langage. Jeudi Apr?s-midi Perl6: The Final Ascent - Damian Conway, Larry Wall Et oui, c'est le talk annuel sur l'?tat de Perl6, pour la quoi, cinqui?me ann?e cons?cutive. A noter que pendant ce temps Eric et tous les contributeurs ? mod_perl assistent au talk de Doug MacEachern, qui fait son grand retour apr?s quelques ann?es d'absence. Il semblent qu'ils ont pr?par? tout le mar?riel pour jouer les parfaits groupies. Si vous insistez un peu, et s'il a r?cup?r? du repas de midi qui, scandaleusement, ne comprenait pas de confit de canard, Eric vous racontera peut-?tre tout ?a. Larry commence par nous faire un chameau (ok, un dromadaire) en ombres chinoises sur l'?cran. Damian pense que boulot sur la conception du coeur de Perl6 est quasiment finit. Il vont parler uniquement de cet aspect, pas de l'impl?mentation. Au d?part le design du langage etait *annoyance-driven*: r?pondre aux RFC, qui d?crivaient pour la plupart les aspects de Perl5 qe les gens n'aimaient pas. Ensuite, vint la phase o? ils ont tent? de fondre tout ?a dans un ensemble coh?rent, d'extraire les concepts de base qui sous-tendraient Perl6. Maintenant le design est plus bas? sur les impl?mentations. Ce sont plus des modifications mineures, sur des probl?mes r?v?l?s par pugs par exemple. Donc une liste de nouveaut?s dans le langage, principalement destin?es a le rendre plus agr?able ? utiliser. Ca va vite, donc les titres vont pas forc?ment ?tre traduits. Exemples: commentaires en ligne #{ commentaire } ou m?me sur plusieur lignes (on peut utiliser d'autres crochets) whitespace comments: \ et des espaces fait disparaitre le tout: var\ .methode pipe operators: maintenant il s'appellent *feed* (pour ?viter de confondre avec |) une parenth?se fermante ? la fin de la ligne terme l'instruction my $sub= sub { return "foo"; } # pas besoin de mettre un ; ? la fin de la ligne *A tribute to python* repeat repeat { ... } while condition(); repeat while condition() { ... } *A tribute to Pascal* le metaop?rateur de n?gation !< ou !> ou !~~ ... paires: beaucoup utilis?es en perl6 key => $value peut aussi ?tre ?crit :key($value) avec pleins de ruses: on a pas besoin de virgules ":key" est ?quivalent ? key(1), ":!key" est ":key(0), " key est "key("Damian")" "key<>" est "key( "Damian is $old")", et ":$age" est "age($age)" (marche aussi avec tableaux et hash. captures Une liste d'arguments, sans fonction: "\($obj: $pos, $pos2, :opt2)", qui est un vrai objet ranges my @range= $ok ..^ $trop_grand; # ^ marche avant, apr?s ou avant et apr?s le .. my at range = $min..$max :by(2); for ^4 { ... } # parcourt la boucle 4 fois nombres non-d?cimals my $i=03; # n'est plus un nombre octal my $i= 0o05; # octal my $i= 2<101001>; # toute base est autoris?e On peut aussi mettre des fractions type *whatever* Le sigil est * my @endlessly_true = "true" xx * @positives = 1 .. *; # 1 .. infini @numbers= *..*; my( *, $file, *, $name)= func( $arg); # * au lieu de undef multi-dimensional qrray and hashes indices s?par?s par des ; Conclusion: on y est presque! When Interface Design Attack Un bon talk sur le design des UI pour le web. Malheureusement c'?tait complet et j'?tais en dehors de la salle. La pr?sentation devrait ?tre a The Conway Channel Il va pr?senter 2 modules: List::Maker () et Contextual::Return () List::Maker Quelques exemples o? l'utilisation des tableaux (ou listes) en Perl, n'est pas compl?tement naturelle. Bien s?r Perl 6 a des solutions pour tous ces cas. Mais en attendant... List::Maker En surchargeant la notation pour les file globing (< ... >) il offre la syntaxe de Perl 6 pour des listes... en Perl 5. Plus quelques extras:"@list= <4d6>;" jette 4 d6 et retourne la liste (en contexte scalaire ?a retourne le total des 4 jets). On peut ?tendre la syntaxe pour ajouter ses propre d?lires. La seule limitation est que les 2 crochets doivent ?tre sur la m?me ligne. Le module est sur CPAN, mais ne semble pas faire tout ?a encore, il promet de poster une version compl?te dans les jours qui viennent. Curieusement, Ingy et Audrey on aussi surcharg? < ... > pour XML::Literal (), qui semble aussi diabolique. Contextual::Return J'en ai d?j? parle ? l'occasion du tutorial sur les API, donc je vais pas trop insister. Je suis pas s?r que ?a soit vraiment utile en fait. C'est un peu trop rus? pour moi. Ca revient ? avoir plusieurs fonctions diff?rentes... mais avec le m?me nom. Donc ?a veut dire qu'il faut se rappeler de ce que fait la fonction dans chaque contexte, sans que le nom ne soit une aide. The Perl Foundation Auction Uri (Guttman), officie ? la vente aux ench?res traditionelle de la Perl Foundation. C'est bien plus calme que celles de YAPC::Europe, des livres, pas de trucs stupides, c'est pli? en 40 mn. -- Michel Rodriguez IEEE Standards - Electronic Services From mrodrigu at ieee.org Fri Jul 28 15:50:36 2006 From: mrodrigu at ieee.org (Michel Rodriguez) Date: Fri, 28 Jul 2006 18:50:36 -0400 (EDT) Subject: [Toulouse-pm] Oscon 2006, vendredi Message-ID: Jeudi Soir Ce soir petit repas dans un bar ? vin, ou nous appr?cions le magnifique slogan des tee-shirts de Best Practical (), puis soir?e Six Apart, ou j'utilise tout mon Japonais (en 20s), apprends qu'avec MySQL pr?parer les statements en fait diminue les performances dans beaucoup de cas (si on lit toujours les m?mes choses, le fait que la requ?te soit pr?par?e invalide le c?che de r?sultats), que PostgreSQL est mieux que MySQL pour les donn?es g?ographiques... entre autres. On rigole bien de l'histoire d'un pauvre d?velopeur dont la boite a ?t? rachet?e par une ?norme boite, qui veut leur imposer un langage diff?rent de celui qu'ils utilisent habituellement et qui leur va tr? bieng. On rigole parce que sa boite fait du Java, et qu'ils ont ?t? rachet?s par TicketMaster qui est ? fond Perl. Ca change du sch?ma habituel. En plus le povre gar?on ne reconnait pas Nat, qui pourtant est sur sc?ne tous les matins en tant que chair de la conf), ?a fait bien rire les perleurs, nombreux ? descendre les bi?res sixapartiennes. Finalement vers 2 heures j'en ai marre qu'on se moque de ma fran?aiserie, en plus l'occupant de la suite nous mets dehors, donc au dodo. Vendredi Matin Keynotes Je me l?ve tard (cf plus haut), mais j'arrive juste ? temps pour voir Damian Conway pr?senter une invraisemblable parodie de businessman vendant du faux Web 2.0 (sm), une ligne de (non-existants) produits tels que iCxap (prononcer "I crap"), un aggr?gateur de brevets, un OS (cxapix), un site communautaire (cxapr, prononc? "crapper")... du grand Damian, extr?mement amusant et extr?mement dur ? retranscrire! Hacking Real Stuff - Jonathan Oxer C'est pas le vrai nom du talk, mais j'ai pas le programme sous les yeux. la salle est archi-comple. Interfaces: le plus simple (quand on l'a encore): le port prall?le. Il est simple et demande peu d'infracstructure. Par contre il dit qu'il faut une librarie C pour y acc?der, il nous code en direct live un petit programme qui fait ?a. Bien s?r en Perl on a Device::ParallelPort (). Il nous montre ensuite la grille de son jardin. D'abord il nous montre la boite au lettres: un contact l'informe quand le facteur d?pose une lettre. Il invite quelqu'un ? venir sur sc?ne pour souder le circuit qui fait ?a. Il a aussi divers senseurs pour lui dire si quelqu'un pousse la grille, comme ?a il peut allumer la lumi?re si il fait sombre. Il a aussi un radar RFID pour d?tecter les gens qui approchent la porte de la maison. Il utilise un petit utilitaire, qui lit le port USB et le fait appara?tre comme une socket sur le syst?me. La il peut utiliser PHP, Perl (il avoue ne pas trop conna?tre Perl, mais Larry est dans la salle (et dit qu'il y a s?rement un module sur CPAN pour faire ?a)) ou Tcl (il nous montre les 3 bouts de code). Il approche un transmetteur RFID (de la taille d'un grain de riz) du r?cepteur, qui l'identifie, yipee! Dans la chambre de son fils il a un petit contr?leur qui lui permet d'ouvrir et fermer les rideaux avec une t?l?commande. Il a ajout? la t?l?commande lui m?me. Larry commente que pour ?a il doit utiliser Ruby (on Rail... celui du rideau). Il nous montre comment faire, fer ? souder en main. Dans sa cuisine, un lecteur de code barre. Il suppose qu'il pourrait l'utiliser pour manager ses courses. Son syst?me d'arrosage automatique est fait maison, pour 1/10 du prix d'un vrai. Dans son bureau, un t?l?phone portable, reli? ? un ordinateur sur lequel il fait tourner un programme qui entre autre stocke les SMS dans une BD. Encore une fois il nous montre le code. Il envoie un sms a son portable, qui le notifie en faisant sonner un portable dans la salle! Yipee. Sa conclusion: beaucoup hardware peut ?tre d?tourn? et utilis? de facon cr?ative. Tous ? vos fers ? souder. Un excellent talk pour le vendredi matin Conclusion Je s?che le reste de la matin?e, avec juste un passage par le talk de chromatic sur des "perl hacks that you did not know existed", mais je suis trop fatigu? ce matin pour vraiment suivre quelque chose d'aussi avanc?. Au final une bonne conf, j'ai appris pas mal de chose, pas tant en Perl que sur des sujets annexes (le cours sur Vim est probablement le cours le plus utile que j'ai jamais pris). Web 2.0 et Ajax sont vraiment les 2 gros buzzwords du moment, ?a tombe bien, j'aime bien javascript, a part le fait qu'il manque le foreach. Le seul truc qui m'a un peu manqu? c'est que comme la conf n'est pas dans un hotel, il n'y a pas d'endroit "naturel" ou rencontrer des gens le soir. Ca limite la possibilit? de rencontrer des gens au hasard et d'aller manger ou boire un coup avec eux. A noter ?galement que ?a fait bient?t 10 ans que je participe ? ces confs, et que je commence ? voir les gens que je connais prendre de l'?ge. C'est fini l'?poque o? on ?tait tous des jeunes cons ;--( (faut dire aussi que je pense que les boites envoient moins de jeunes codeurs ? Oscon, on est plus ? l'age d'or du Web 1.0). Ciao