From mirod at xmltwig.com Thu Jul 3 11:54:00 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Retour de vacances Message-ID: Salut, Retour de vacances (1 semaine a Porto Rico, soleil, plage, pas d'ordinateur, c'etait bieng...). Quelques liens vers des photos de YAPC, histoire de voir quelques tetes que les veinards qui vont a YAPC Paris risquent de rencontrer bientot: http://mark.overmeer.net/yapc-na/yapc/medium/index-small.html http://www.teachmeperl.com/YAPC.03/Pics/ Au fait, qui va a YAPC Paris? Le wiki: http://yapc.eu.kwiki.org/ Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Thu Jul 3 19:53:00 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] OSCON Message-ID: Salut, OSCON approche, c'est meme la semaine prochaine, et je vais donc vous faire les compte-rendus en direct, comme d'hab. Juste une petite question: est-ce que vous les voulez en francais ou en anglais? C'est aussi simple pour moi de les faire en anglais, ca m'evite les problemes d'accents et de termes techniques que je sais pas traduire, et en plus ca permet d'avoir une audience plus large. Ceci dit si ca pose probleme a certains d'entre vous et si vous preferez me lire en francais, je peux faire comme d'habitude. Donc le vote est ouvert... Merci Michel Rodriguez Perl & XML http://www.xmltwig.com From Philippe.Bruhat at free.fr Fri Jul 4 03:32:01 2003 From: Philippe.Bruhat at free.fr (Philippe 'BooK' Bruhat) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Re: [ppm] OSCON In-Reply-To: <3F05310B.8000709@art.alcatel.fr> References: <3F05310B.8000709@art.alcatel.fr> Message-ID: <20030704083027.GA918@home.bruhat.net> Le vendredi 04 juillet 2003 ? 09:47, Jean-Luc Pinardon ?crivait: > > Et une fois de plus, on se retrouve dans la situation de "baisser son > froc" devant l'h?g?monie anglo-saxonne ! > Si c'est une question d'audience, ?videmment qu'il faut les faire en > english. On n'a pas trop le choix :-( > Mais je trouve franchement d?solant de voir poser ce genre de question > sur une liste qui cause fran?ais, > et qui cherche ? promouvoir "Perl en Fran?ais" en relan?ant,il y a > quelques temps, l'id?e de traduction de doc Perl. > D'aucun pourrait y voir une sorte d'incoh?rence ... Et qu'est-ce qui emp?che de faire les deux ? Michel peut faire le compte-rendu dans la lanquie lui est le plus simple pour r?giger (n'oubliont pas qu'il fait ?a en direct=; et rien n'emp?che par la suite de traduite dans la langue qui mangue. $francais++ NB: j'ai des compptes rendus de YAPC::Europe 2002 jamais termin?s, ce qui me faire dire qu'il vaut mieux r?diger le plus vite possible, car apr?s on tropuve toujours autre chose ? faire. -- Philippe "BooK" Bruhat -- YAPC::Europe 2003 - http://yapc.mongueurs.net/ There are two sides to every cause. Do not join one until you know the other. (Moral from Groo The Wanderer #105 (Epic)) From jean-luc.pinardon at art.alcatel.fr Fri Jul 4 10:23:00 2003 From: jean-luc.pinardon at art.alcatel.fr (Jean-Luc Pinardon) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Re: [ppm] OSCON References: Message-ID: <3F05310B.8000709@art.alcatel.fr> Bonjour ? tous, Et une fois de plus, on se retrouve dans la situation de "baisser son froc" devant l'h?g?monie anglo-saxonne ! Si c'est une question d'audience, ?videmment qu'il faut les faire en english. On n'a pas trop le choix :-( Mais je trouve franchement d?solant de voir poser ce genre de question sur une liste qui cause fran?ais, et qui cherche ? promouvoir "Perl en Fran?ais" en relan?ant,il y a quelques temps, l'id?e de traduction de doc Perl. D'aucun pourrait y voir une sorte d'incoh?rence ... mais on peut aussi se dire qu'il faut bien connaitre l'ennemi pour mieux le combattre. Plus s?rieusement, cela pose une question bien plus vaste. Comment assurer une large diffusion de la culture technique dans les pays francophones ? Parce que diffuser cette culture, c'est aussi une mani?re d'aider ? r?duire le (soi-disant ?) foss? technologique qui nous s?pare des US. J.L.P. PS : Clea dit,, je fis, dans une autre vie, des ?tudes scientifiques, et l? aussi, hors l'anglais point de salut. Il y avait meme un Australien ? ma soutenance, et ses questions, c'?tait pas du Moli?re ! ;-) Michel Rodriguez wrote: >Salut, > >OSCON approche, c'est meme la semaine prochaine, et je vais donc vous >faire les compte-rendus en direct, comme d'hab. > >Juste une petite question: est-ce que vous les voulez en francais ou en >anglais? C'est aussi simple pour moi de les faire en anglais, ca m'evite >les problemes d'accents et de termes techniques que je sais pas traduire, >et en plus ca permet d'avoir une audience plus large. Ceci dit si ca pose >probleme a certains d'entre vous et si vous preferez me lire en francais, >je peux faire comme d'habitude. > >Donc le vote est ouvert... > >Merci > >Michel Rodriguez >Perl & XML >http://www.xmltwig.com > >- >Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html > > > > -- Jean-Luc Pinardon Alcatel ABS - MPD/TND Software Configuration Management 32, avenue Kleber mailto:jean-luc.pinardon@art.alcatel.fr 92707 Colombes Cedex Phone : +33 1 55 66 77 54 France Fax : +33 1 55 66 33 37 From rgarciasuarez at free.fr Fri Jul 4 10:23:03 2003 From: rgarciasuarez at free.fr (Rafael Garcia-Suarez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Re: [ppm] OSCON In-Reply-To: <3F05310B.8000709@art.alcatel.fr> References: <3F05310B.8000709@art.alcatel.fr> Message-ID: <1057308821.3f0540950c8f4@impt3-1.free.fr> Selon Jean-Luc Pinardon : > Et une fois de plus, on se retrouve dans la situation de "baisser son > froc" devant l'hégémonie anglo-saxonne ! > Si c'est une question d'audience, évidemment qu'il faut les faire en > english. On n'a pas trop le choix :-( > Mais je trouve franchement désolant de voir poser ce genre de question > sur une liste qui cause français, > et qui cherche à promouvoir "Perl en Français" en relançant,il y a > quelques temps, l'idée de traduction de doc Perl. Je suis plus intéressé par promouvoir "Perl en France" que "Perl en français". Le premier est une fin, le deuxième un moyen (dont je ne conteste pas l'efficacité, mais il s'agit seulement d'un moyen parmi d'autres). L'existence des listes de diffusions en mongueurs.net, celle de fr.comp.lang.perl, YAPC::EU::2003 en sont d'autres. > D'aucun pourrait y voir une sorte d'incohérence ... > mais on peut aussi se dire qu'il faut bien connaitre l'ennemi pour mieux > le combattre. > > Plus sérieusement, cela pose une question bien plus vaste. > Comment assurer une large diffusion de la culture technique dans les > pays francophones ? En promouvant l'apprentissage de la lingua franca anglo-saxonne. Le niveau moyen du citoyen français en anglais (et en langues étrangères en général) est particulièrement déplorable. Je connais des gens qui aimeraient bien participer à des projets libres mais qui sont tétanisés à l'idée de poster sur une liste de diffusion anglophone. Je trouve bien sûr que les efforts pour traduire les documentations (aussi bien orientées utilisateur que techniques) sont louables, mais force nous est de constater que là où les choses se passent, elles se passent en anglais. Mais évidemment il s'agit ici d'un problème bien plus général que celui qui nous occupe actuellement. Personnellement, lorsque je dois rédiger un compte-rendu au sujet d'un événement qui se passe en anglais, je trouve plus facile de le faire en anglais, quitte à traduire (ou à faire traduire) par la suite en français afin d'élargir l'audience. Mais ce n'est pas moi qui vais à OSCON. > Parce que diffuser cette culture, c'est aussi une manière d'aider à > réduire le (soi-disant ?) fossé technologique > qui nous sépare des US. Je suis bien d'accord avec ça. Mais pour combler un fossé technologique il faut probablement jeter quelques ponts sur le fossé linguistique. From jean-luc.pinardon at art.alcatel.fr Fri Jul 4 10:23:05 2003 From: jean-luc.pinardon at art.alcatel.fr (Jean-Luc Pinardon) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Re: [ppm] OSCON References: <3F05310B.8000709@art.alcatel.fr> <20030704083027.GA918@home.bruhat.net> Message-ID: <3F05407A.9000605@art.alcatel.fr> Ah oui, ?videmment, il fallait comprendre ou inclusif, et pas ou exclusif ;-) Best Regards (oups, ? m'a ?chapp?) J.L.P. Philippe 'BooK' Bruhat wrote: >Le vendredi 04 juillet 2003 ? 09:47, Jean-Luc Pinardon ?crivait: > > >>Et une fois de plus, on se retrouve dans la situation de "baisser son >>froc" devant l'h?g?monie anglo-saxonne ! >>Si c'est une question d'audience, ?videmment qu'il faut les faire en >>english. On n'a pas trop le choix :-( >>Mais je trouve franchement d?solant de voir poser ce genre de question >>sur une liste qui cause fran?ais, >>et qui cherche ? promouvoir "Perl en Fran?ais" en relan?ant,il y a >>quelques temps, l'id?e de traduction de doc Perl. >>D'aucun pourrait y voir une sorte d'incoh?rence ... >> >> > >Et qu'est-ce qui emp?che de faire les deux ? > >Michel peut faire le compte-rendu dans la lanquie lui est le plus simple >pour r?giger (n'oubliont pas qu'il fait ?a en direct=; et rien n'emp?che >par la suite de traduite dans la langue qui mangue. > >$francais++ > >NB: j'ai des compptes rendus de YAPC::Europe 2002 jamais termin?s, ce > qui me faire dire qu'il vaut mieux r?diger le plus vite possible, car > apr?s on tropuve toujours autre chose ? faire. > > > -- Jean-Luc Pinardon Alcatel ABS - MPD/TND Software Configuration Management 32, avenue Kleber mailto:jean-luc.pinardon@art.alcatel.fr 92707 Colombes Cedex Phone : +33 1 55 66 77 54 France Fax : +33 1 55 66 33 37 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/pipermail/toulouse-pm/attachments/20030704/a461d954/attachment.htm From mirod at xmltwig.com Fri Jul 4 11:39:01 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Re: [ppm] OSCON In-Reply-To: <3F05310B.8000709@art.alcatel.fr> Message-ID: On Fri, 4 Jul 2003, Jean-Luc Pinardon wrote: > Bonjour à tous, > > Et une fois de plus, on se retrouve dans la situation de "baisser son > froc" devant l'hégémonie anglo-saxonne ! Si c'est une question > d'audience, évidemment qu'il faut les faire en english. On n'a pas trop > le choix :-( Mais je trouve franchement désolant de voir poser ce genre > de question sur une liste qui cause français, et qui cherche à > promouvoir "Perl en Français" en relançant,il y a quelques temps, l'idée > de traduction de doc Perl. D'aucun pourrait y voir une sorte > d'incohérence ... mais on peut aussi se dire qu'il faut bien connaitre > l'ennemi pour mieux le combattre. > > Plus sérieusement, cela pose une question bien plus vaste. Comment > assurer une large diffusion de la culture technique dans les pays > francophones ? Parce que diffuser cette culture, c'est aussi une manière > d'aider à réduire le (soi-disant ?) fossé technologique qui nous sépare > des US. Ben, il faut comprendre que je bosse toujours en anglais, que j'ai un clavier qwerty, et que j'ai appris Perl dans le texte. En fait la derniere fois que j'ai fait une presentation en francais j'ai eu quelques problemes a traduire certains termes techniques (scalability?). Pour tout vous dire la config de mon portable est tellement foireuse que je vois meme pas les caracteres accentues de vos mail (je pense qu'il y a un probleme quelque part entre la config du terminal du portable, celle de la machine sur laquelle je ssh et celle de pine). Paris.pm et Toulouse.pm sont quasiment les 2 seules mailing listes en francais auquel je participe. En plus comme mon nom l'indique subtilement ca fait pas si longtemps que ma famille est en France. Donc je me sens pas vraiment l'ame d'un defenseur acharne de la langue francaise ;--) et en plus, pratiquement, c'est un peu plus complique pour moi d'ecrire en francais. Mais je voulais pas lancer un troll (heureusement ya "paquetages debian" contre CPAN sur Paris.pm qui nous occupe bien en ce moment ;--) Donc je ferais le CR en anglais, poste ici et sur use.perl.org (je sais que quelques membres de Toulouse.pm n'ont que le mail au boulot et pas d'acces web). Si de bonnes ames veulent le traduire... pas de probleme (dommage que j'ai pas achete Leon a YAPC, ca aurait ete rigolo de lui faire faire! ;--). Bon, ben ca va etre l'heure de se mettre au barbecue, c'est la fete nationale ici et mes beaux-parents ont decide que ca serait pas mal d'avoir un chef francais pour faire les hamburgers. Dommage qu'il n'y est pas de magrets! Michel Rodriguez Perl & XML http://www.xmltwig.com From Philippe.Bruhat at free.fr Fri Jul 4 18:39:01 2003 From: Philippe.Bruhat at free.fr (Philippe 'BooK' Bruhat) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Re: [ppm] OSCON In-Reply-To: References: <3F05310B.8000709@art.alcatel.fr> Message-ID: <20030704233704.GB5655@home.bruhat.net> Le vendredi 04 juillet 2003 ? 18:38, Michel Rodriguez ?crivait: > On Fri, 4 Jul 2003, Jean-Luc Pinardon wrote: > > Donc je ferais le CR en anglais, poste ici et sur use.perl.org (je sais > que quelques membres de Toulouse.pm n'ont que le mail au boulot et pas > d'acces web). Si de bonnes ames veulent le traduire... pas de probleme > (dommage que j'ai pas achete Leon a YAPC, ca aurait ete rigolo de lui > faire faire! ;--). Il semble probable qu'Elaine et Jos puissent le revendre ? YAPC::Europe, si tu as des projets pour lui. Sinon, j'ai un projet le concernant (mais je n'aurai pas besoin de l'acheter). Pour les CR, on avait commenc? ? faire un truc sur http://www.mongueurs.net/conferences/, mais mes propres CR de YAPC::Europe 2002 sont encore en cours de nettoyage/formatage. :-( Ce qui prouve qui faut un format de doc rapide ? convertir en n'importe quoi... -- Philippe "BooK" Bruhat -- YAPC::Europe 2003 - http://yapc.mongueurs.net/ Friends are people who are there when you need them. (also applies to dogs) (Moral from Groo The Wanderer #43 (Epic)) From eric at vernichon.net Sat Jul 5 07:52:00 2003 From: eric at vernichon.net (Eric Vernichon) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] strict Message-ID: <3F06C98D.6090000@vernichon.net> Bonjour , Une petite question sans doute stupide mais bon. Pourquoi lorsque j'?cris my @lettres =A..Z; foreach $lettre (@lettres) { print $lettre; } et que j'utilise use strict j'ai comme message Bareword "Z" not allowed while "strict subs" in use at ... Bareword "A" not allowed while "strict subs" in use at ... alors que si je vire le use strict ?a marche. -- Eric Vernichon Pr?sident de linux-tarn http://wwww.linux-tarn.org http://www.vernichon.net http://linuxsap.vernichon.net From mirod at xmltwig.com Sat Jul 5 07:55:00 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Re: [ppm] OSCON In-Reply-To: <20030704233704.GB5655@home.bruhat.net> Message-ID: On Sat, 5 Jul 2003, Philippe 'BooK' Bruhat wrote: > Pour les CR, on avait commencé à faire un truc sur > http://www.mongueurs.net/conferences/, mais mes propres CR de > YAPC::Europe 2002 sont encore en cours de nettoyage/formatage. :-( > > Ce qui prouve qui faut un format de doc rapide à convertir en n'importe > quoi... POD, POD, POD! Juste pour rire, la chaine complete que j'ai utilise pour YAPC: POD+ (pod + caracteres accentues genre e' ou a`) -> POD (caracteres accentues remplaces par E<> et quelques corrections comme francais -> franEais -> html (avec) -> envoye sur mon site web avec mise a jour du rss -> POD (sans caracteres accentues) -> texte, poste sur les ml Il me reste a automatiser l'envoie sur toulouse.pm et paris.pm et a me plonger dans SOAP pour interfacer avec use.perl.org... Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Sat Jul 5 08:22:00 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] strict In-Reply-To: <3F06C98D.6090000@vernichon.net> Message-ID: On Sat, 5 Jul 2003, Eric Vernichon wrote: > Une petite question sans doute stupide mais bon. > > Pourquoi lorsque j'écris > > my @lettres =A..Z; > foreach $lettre (@lettres) > { > print $lettre; > } > > et que j'utilise use strict j'ai comme message > Bareword "Z" not allowed while "strict subs" in use at ... > Bareword "A" not allowed while "strict subs" in use at ... > > alors que si je vire le use strict ça marche. Le pourquoi: c'est a ca que sert strict! Ca verifie que toutes les variables sont bien declarees (strict 'vars'), ca empeche les references foireuses (strict 'refs') et ca detecte les mots isoles qui ne sont pas des fonctions (strict 'subs'): strict subs This disables the poetry optimization, generating a compile-time error if you try to use a bareword identifier that's not a subroutine, unless it appears in curly braces or on the left hand side of the "=>" symbol. (tire de http://www.perldoc.com/perl5.6.1/lib/strict.html) Sans 'use strict;' les mots isoles sont pris comme des chaines de caractere: perl -le'$s= toto; print $s' note que si tu fait perl -le'print toto' ca foire parce que (je pense) l'interpreteur ne sait pas si toto est un filehandle ou une chaine de caractere. C'est rigolo d'experimenter un peu: perl -le'$s= toto . tata; print $s' # marche perl -le'print toto . tata' # marche perl -le'print toto , tata' # erreur No comma allowed after filehandle at -e line 1. l'interpreteur supose que toto est un filehandle perl -le'print toto tata' # erreur Can't locate object method "toto" via package "tata" (perhaps you forgot to load "tata"?) at -e line 1. Conclusion: il vaut mieux utiliser strict et mettre les chaines entre guillemets! Donc dans ton cas il faut ecrire: #!/usr/bin/perl -w use strict; my @lettres ='A'..'Z'; # 'A' et 'Z' sont maintenant des chaines foreach my $lettre (@lettres) # note le 'my' qui declare lettre { print $lettre; } Michel Rodriguez Perl & XML http://www.xmltwig.com From mat at zouh.org Sat Jul 5 08:22:02 2003 From: mat at zouh.org (mat@zouh.org) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] strict In-Reply-To: <3F06C98D.6090000@vernichon.net> References: <3F06C98D.6090000@vernichon.net> Message-ID: <20030705130106.GB7125@po.reynerie.org> On Sat, Jul 05, 2003 at 02:50:21PM +0200, Eric Vernichon wrote: > > Bonjour , Bonjour, > Une petite question sans doute stupide mais bon. > > Pourquoi lorsque j'écris > > my @lettres =A..Z; premiere erreur (A et Z sont des 'bareword': my @lettres = ('A' .. 'Z'); > foreach $lettre (@lettres) deuxieme erreur (qui n'apparait que quand on a corrige la 1iere) foreach my $lettre (@lettres) > { > print $lettre; > } -- mat From mirod at xmltwig.com Mon Jul 7 21:15:26 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] OSCON, Lundi Message-ID: Salut, Juste un court message pour aujourd'hui: je voudrais pas poster mes notes relativements detaillees sur les 2 cours que j'ai pris aujourd'hui sans avoir verifie avec les instructeurs que c'est OK... certains d'entre eux en vivent. Donc juste le reste... OSCON Day 1 Arrival I got here on Sunday night, checked in, and headed towards the main conference hotel, a 5 minute walk away. There I quickly spotted Haim, playing with his brand new Mac (shiny!), and soon Eric Cholet joined us, along with way too many mod_perl people (Stas, Geoff...) for me t feeL comfortable ;--) The general comment on Stas' and Eric's Book: it's BIG! Once again this year it looks like everybody here has a Mac. As they all look the same, I wonder how many people will end up swapping them. As yet-another-side-note: Mac users seem to have problems with any device that does not conform to Apple's Gui Standard: Eric could not figure out how to use his O'Reilly bag for example. OTOH I had the worst time configuring my Linux laptop to connect to the O'Reilly wireless network instead of the hotel network (mostly because everybody else was making fun of me while I was fumbling with my config files ;--( I got kind of a revenge later on when the wireless network went AWOL and O'Reilly started handing out flyers asking all mac users to turn out Rendez-vous because it could be the source of the problem... niark niark (although at this point I had no connection either so I wasn't laughing that hard). The latest rumour is that the problems were caused by a rogue Windows machine running a network with the same ID as the O'Reilly one though... A plus Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Tue Jul 8 15:49:07 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] OSCON, tutorials Message-ID: Salut, Bon, comme promis (et non sans mal, le reseau sans-fil est plante et la conf manque serieusement de prises electriques dans les salles, donc en general mon portable ne tiens pas jusqu'a la fin des sessions et je tape la fin d'apres mes notes, grrr... pour YAPC vous tracasser pas les gars, ca pourra pas etre pire!) Making Programs Faster MJD Of course this morning the tutorial I had signed up for, Advanced DBI, is cancelled, my next choice, XSLT is sold-out... I decide sit in MJD's "Making Programs Faster". MJD is always an entertaining speaker. Plus I am terrible at optimizing, the archetypal premature optimizer one might say. MJD shows the Schwartzian transform. He then shows a simple case (from a post on the newsgroup) where it really doesn't make much sense to use it: "lc" is fast, you can use it directly in a sort, the overhead of the ST is not worth it in this case, the ST version is slower than the naive one. Now he gives us some examples of I/O bound, CPU bound and memory bound code and adds some hints about how to optimize them: parallelize I/O bound code (or switch from CGI to mod_perl), optimize the code for CPU bound code, try reducing the memory used or buy more memory for memory bound code. The important is to figure out which factor impacts your code the most. tools for optimizing Timing The shell "time" is the easiest way to quickly figure out how much usr/CPU time a process takes. There are often 2 versions of "time" on a system: the built-in and one in "/usr/bin/time" or equivalent, with different output. In Perl "time()" can be used, and "use Time::Hires;" to get "time()" to work with a resolution better than 1s. The usual way he writes benchmark: an empty loop, then the various options, so he has a base value to compare the different options to. He does not use "Benchmark.pm": the results are different from his simple benchmarks, for some unknown reason, they are not consistent if he repeats the test, he even gets results where the test takes... a negative time to complete! Plus the machinery for a benchmark should be a simple as possible, and you should be able to understand it. Profiling Profile your code before optimizing it, or you will probably optimized the wrong functions. Use "Devel::DProf": perl -d:DProf toto.pl > /dev/null dprofpp Send the output to "/dev/null" so output related problems don't interfere This will give you a list of functions, and how much time the process spent in each one. The usual rule here is 90-10: 10% of the code accounts for 90% of the run time. So focus on the 10%! "Devel::Smallprof" gives you an even more detailed report, line by line. Examples Generic advice A very important piece of advice: TEST THE OPTIMIZED VERSION! Make sure you don't break things in the process: *You probably don't live in a World where you want to get the wrong answer as fast as possible* Also think about the big picture, is the decrease in maintainability worth it? Always remember that hardware is cheap. We still live under the impression that hardware is expensive and precious. This is no longer true. MJD has a cute cat! And nice jokes about him that he somehow manage to tie to the subject at hand. Perception is important too: sometimes removing warning messages that say "this will take a long time" actually makes the users happier and stop them complaining, as in fact they don't notice the "long time"! *Optimize for the common case*. Speeding up a mailbox analyzer - run and save the output (so we can check the optimized version) - profile - look at the most used functions and see what can be done In this case he found out that "Mail::Header" was taking a lot of time. So he replaced it by custom code. This is risky as mail protocols, (like most protocols IMHO) are hard to get right. As it turned out, in this case, when checking the output of the program had changed... for the best! It turns out there was a minor bug in "Mail::Header" that the simpler optimized code fixed! So the optimized version is better, and 81% faster! Yipee! A look at the profiler results, followed by a detailed economic analyzis shows that he can stop here. That's actually a very interesting analyzis: if he spends 20 minutes optimizing the next function, and actually get it to improve its speed by 20%, he will need to run the code 25 million times to get a positive return on investment! I should do this more often, that would save me a lot of time. Speeding up "pod2man" This is useful because it is run quite often, any time you install a new module for example. - run and save the output (so we can check the optimized version) - profile Here he finds out that he can optimize a POD tokenizer, by making it faster in the common case ( "I") at the expense of the less common case "I<< text >>" (man is it a pain to type POD exemples... in POD as I am doing right now! I even have to use the "Z<>" escape for the first time!) To get a better idea of what's going on he needs more detailed output than provided by "Devel::DProf" "Devel::Smallprof" gives too much output, so he now teaches us how to write our own profiling module, using the hooks available for "Devel::" modules: "@{"::_ Salut, http://www.xmltwig.com/mirod/pict/geek_stuff/oscon_2003/index.html Sans legendes et avec les yeux rouges pour l'instant... mais j'ai les yeux rouges aussi, le manque de sommeil commence a se faire sentir ;--( Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Thu Jul 10 12:52:55 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] OSCON Mercredi Message-ID: Salut, Bon, desole pour le retard dans les compte-rendus, mais le reseau ici a toujours des problemes, sans parler du bar qui est souvent ouvert ;--) Wednesday Keynotes: Tim O'Reilly I must say I was a little foggy this morning (see picture of last night ;--( so I don't have much to say. You can find an nterview of Tim there: and my report on the Perl6 talk from YAPC. Lightning Talks Stop using XML everywhere! Damn It! Robert Spier and Ask A new perl.org ! Beecheek A talk I already saw at YAPC, about a regular small company that switched to Open Source, notably replacing Access. A nice success story. CPAN, The Next Generation Autrijus Trang Describes how CPAN works so far. The Mac has resolution problems, niark niark! Lets start again... So he shows us a huge graphic describing the really complex process needed to put a module on CPAN. New tools available: CPANPLUS (replaces CPAN), Test::* (Simple, More...), Module::Build and Module::Install (replace Extutil::MakeMaker), Module::Release, Test::Reporter, rt.cpan.org, PAR, Meta.yml... Cool! I did not know about Module::Release How to get hired Andy Lester (petdance) His advice: make sure you apply for jobs you will like, or you will hate your life later on. Ignore Monster.com and al, no one gets hired through them, perl jobs works though (he got his last 2 jobs this way). Dress properly, do not be afraid of asking questions. The Perl date and Time Project Dave Rolsky Part-of-speech tagging Aaron Coburn He has problems with his Mac (niark...) He describes a software that analyzes English text and tags words with their role in the sentence, based on a Markov Model of the language. It's on CPAN 5 Damian Modules in 5 minutes Walt Mankowski 5 modules from Damian that are actually useful: Lingua::EN::Inflect : convert singular to plural Switch : a last the C C in Perl... except this one is on steroids Class::Multimethods : lets you do C++ style overloading Attribute::Types : lets you type variables NEXT : allows a class to redispatch methods (it does not stop when the first appropriate method is found in the inheritance tree, but lets you look for a method by that name in an other part of by that name in an other part of this tree) New Syntax for Links in POD Ronald Kimball YIPEE!!!! He proposes to have the target of the link marked using attributes: L< p Perl Regular Expression> L< u Perl.com> Neat My Favourite CPAN modules A rap in Chinese by Autrijus Trang Draws a standing ovation from a stunned crowed Saving the World with Inline.m Schuyler Erle How to use Inline to embed an ugly C library into Perl to project data in lat/Long on a Dymaxion projection Complexity Mangement A song by Piers Crawley The power (and danger!) of *just*. 10 Great non-O'Reilly Books OO Perl (Damian Conway - Manning) Effective Perl Programming (Joseph Hall) Network Programing in Perl (Lincoln Stein) mod_perl Developer's Cookbook Code Complete (Steve McConnell) The Pragmatic Programmer (A Hunt and D Thomas) The Practice of System and Network Administration The Elements of Style (Strunk/White) 7 habits of highly effective people (I don't know about this one) The Brand New 50 (Tom Peters) Shell::Posix::select Tim Maher A module that implements the shell "select" loop, except better. It allows you very simply to write little interactive tools. Allison's Restaurant A song by Allison Randal What's new in Parrot Dan Sugalski The most often used word in the talk: *cool* The JIT works, and is is really really *cool*, IMCCs work, C library-call-outs... without having to write ANY C code, Objects are done (single-inheritance so far), exceptions Little Languages in Parrot Acme Pretty pictures (a parrot, a cool Question logo), introduction to Parrot, presentation of all the potential little languages that could use Parrot (regexps, sed/awk, SQL), "real" languages that actually use it: brainfuck, Ook, befunge, Basic, lua. And now... Perl 5, with Ponie Clinton Pierce wrote a Basic on Parrot. Exceptions: not resumable by default but it can be done with continuations Threads are not implemented but the design takes them into account According to Dan Leo is at least 3 people, maybe 4. No Z-machine yet though :--( Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Thu Jul 10 20:38:20 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] OSCON Jeudi Message-ID: Salut, Voila le CR de Jeudi. Notez que j'ai rate pas mal du matin... le prix a payer pour une rude soiree hier ;--( Si vous allez a YAPC vous pouvez sauter la description du talk de MJD, il le fait aussi (en plus long) a Paris. Thursday 45 minutes by MJD The Quilt project (for the French speakers a quilt is un "patchwork") MJD wrote a program to generate quilt patterns to impress his girlfriend. He eventually got married to her. The project was declared highly successful, actually the most successful he ever did. Text::Template "Text::Template" is stable, functional, and no new version needs to be released. So users complain and worry that it has been abandonned. Should he just update it every month? (He blames Microsoft for this deplorable state of mind). He also found out that people do not want to subclass the module and instead want him to add features to the module. He describes how to subclass it and urges not to be afraid of doing it. Getting help from strangers How to increase your chances to get help when asking help (from him or other strangers). Put your name in the email, give context, explain why it is important (if it is), be polite. How to progress (technically) * Read books that other people are not reading (so he cannot tell us which books to read or we would all be eading the same books ;--) * Read original source material (Einstein book, Gallilleo's books) * Read actively, ask yourself questions while reading * Take notes NP-Complete Problems The Holy Grail of computing Science is trying to solve NP-Complete Problems (if you solve 1 you can solve all of them) Even if you cannot find the optimal solution to the problem that does not mean that you can't find a close enough solution. So don't give up. Intermission A (very short) song by MJD On Fish When people ask basic questions he tends to just give the answer, instead of answering "perldoc foo" (he gives a fish instead of teaching them how to fish) He explains why. Why Lisp is never going to win Basically because of the community attitude. He shows a very funny usenet post from A message for the Aliens He shows a real message sent to aliens. It is a REALLY weird message! Perl6 Design Philosophy Allison Randal Simple is better, but not all problems are simple (the simplest language is just no language, but that's not really useful). The waterbed theory: you will need some complexity, and if you simplify an aspect of the language, then an other aspect will have to be complex. The talk summarizes the design discussion in *Perl6 Essentials* which I was reading this morning. Template Toolkit 3 Andy Wardley Lots of cool new syntax features, speed improvements. Andy plans to split up TT in 2: generic template processing tools in Template::Toolkit and Template::TT2,Template::TT3 (and even Template::Mason, Template::HTML) He wants the tookit to be more modular, so you can swap out some parts, replace them, or use equivalent parts from another toolkit. This will also make debugging easier. It will also allow for the creation of custom tags, processed by the templating system. You could also mix templating systems (have some Mason templates, some custom ones and some TT3 ones). Randall throws in the idea that TT4 could compile to Parrot bytecode, which would open the door to interesting extensions. TT3 will be available.... real soon now! Hopefully by the end of the year. TIPS for Learning XSLT Adam "ziggy" Turoff XSLT IS a programing language. And a weird one at that. It actually includes 3 languages: XPath, XSLT and the output language (HTML, or RSS or whatever) It encourages incremental development: change -> test. Start small and grow the program from there. Use XPath as much as possible. XPath is extremely powerful. It appears in "match" templates, in "select" expressions, in attribute values ("att="{count(ancestor::)"}") Use the default behavior (visit children for all element and emit text or attribte nodes) If multiple templates match, the last one is used: place more specific matches after generic ones. You can loop using recursion... but try to avoid it. Iterate over lists of nodes returned by XPath. Re-use is done with importing and including, which are slightly different: include overrides the local definitions, while import doesn't. Look at the Docbook stylesheets Use empty template rules to remove elements Push vs Pull push process current element, then let templates apply to children.This is rule based programing. pull grab current element and the relevant children, process. This is closer to procedural programing. Choose wisely which one to use. Roughly pull is often good for data (very structured) while push is better for documents. Cool, that's one distinction that I have always found very important, but that I rarely see mentioned, at least that clearly. 5 things we do wrong with XML RJ Ray This sounds like a talk for me! This talk is honor of XML's 5th Anniversary People are too quick to use XML Often people just want to be buzzword compliant. People are too slow to use it Sometimes XML IS the right solution. Then don't hesitate. THese things should have schemas Software change logs, diffs, cooking recipes Then my laptop died... no more battery Writing about Perl Randal Schwartz and Tom Phoenix To really learn the subject answer questions, on usent or Perlmonks. Teaching is great because of the immediate feedback. Authoring formats: pod, FrameMaker, troff, LateX (in increasing order of uglyness) Writing a book takes a LONG time: a whole day of work per page. It doesn't really pay either (less than minimum wages). The book's main point is to raise your profile. Write the introduction last (when you know what the rest of the book is). Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Tue Jul 15 16:26:01 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Version finale de mes notes sur OSCON Message-ID: Salut, Mes notes d'OSCON sont donc a http://xmltwig.com/report/oscon_2003.html Le lightning talk et la presentation sur les modules XML sont aussi en ligne: http://xmltwig.com/talk/ Pour completer le CR d'OSCON: excellente ambiance, j'ai cause avec pleins de gens interessants, connus et moins connus, bu avec Kip Hampton, fait la fete avec Andy Wardley, Haim et Schuyler, recolte quelques vieux potins de la bouche de Tom Christiansen, et meme vu pas mal de presentations interessantes. Brefe, c'etait tres bieng, Portland a l'air d'une chouette ville, mais j'ai pas eu le temps de beaucoup visiter (j'etais tellement epuise que le dernier jour j'ai fait la sieste tout l'apres-midi!). Comme OSCON 2004 devrait y etre aussi, je visiterai l'an prochain. Bon, maintenant vivement YAPC Europe la semaine prochaine! Comme ma femme ne rentre que debut Aout, je propose une reunion de Toulouse.pm la semaine d'apres, genre le Jeudi 31 juillet pour le compte-rendu live complet de la saison des confs. A tschao. Michel Rodriguez Perl & XML http://www.xmltwig.com From kernel at vaboofer.com Wed Jul 16 07:19:52 2003 From: kernel at vaboofer.com (kernel) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Version finale de mes notes sur OSCON In-Reply-To: ; from mirod@xmltwig.com on Tue, Jul 15, 2003 at 11:26:01PM +0200 References: Message-ID: <20030716141952.A19471@vaboofer.com> Le Tue, Jul 15, 2003 at 11:26:01PM +0200, Michel Rodriguez pianota: > > Comme ma femme ne rentre que debut Aout, je propose une reunion de > Toulouse.pm la semaine d'apres, genre le Jeudi 31 juillet pour le > compte-rendu live complet de la saison des confs. A priori c'est ok pour moi :) -- laurent "ker2x" laborde From mirod at xmltwig.com Wed Jul 16 21:38:11 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] L'etat de l'Onion Message-ID: Salut, Le message du jour: l'Etat de l'Onion 2003 http://www.perl.com/pub/a/2003/07/16/soto2003.html Merci a chromatic pour l'avoir mis en ligne. Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Fri Jul 18 17:08:57 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Le lien du jour Message-ID: Salut, Le lien du jour est OT: le speech de Matz, le createur de Ruby, a OSCON: http://www.rubyist.net/~matz/slides/oscon2003/index.html Il n'y a que les slides, mais c'est interessant quand meme. Au passage qui a une experience de Ruby? (pas moi ;--( Michel Rodriguez Perl & XML http://www.xmltwig.com From kernel at vaboofer.com Fri Jul 18 17:26:37 2003 From: kernel at vaboofer.com (kernel) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Le lien du jour In-Reply-To: ; from mirod@xmltwig.com on Sat, Jul 19, 2003 at 12:08:57AM +0200 References: Message-ID: <20030719002636.A13762@vaboofer.com> Le Sat, Jul 19, 2003 at 12:08:57AM +0200, Michel Rodriguez pianota: > Salut, > > Le lien du jour est OT: le speech de Matz, le createur de Ruby, a OSCON: > http://www.rubyist.net/~matz/slides/oscon2003/index.html > > Il n'y a que les slides, mais c'est interessant quand meme. > Au passage qui a une experience de Ruby? (pas moi ;--( Tth normalement. Moi j'ai juste survol?. -- laurent "ker2x" laborde From oulala at chez.com Fri Jul 18 19:40:17 2003 From: oulala at chez.com (Thierry B.) Date: Mon Aug 2 21:38:18 2004 Subject: [Toulouse-pm] Le lien du jour In-Reply-To: ; from mirod@xmltwig.com on Sat, Jul 19, 2003 at 12:08:57AM +0200 References: Message-ID: <20030719024017.A1842@hydrangelles> On Sat, Jul 19, 2003 at 12:08:57AM +0200, Michel Rodriguez wrote: > > Au passage qui a une experience de Ruby? (pas moi ;--( > Moi, pourquoi ? petite, certes, mais suffisante pour dire que ?a roxe. En tout cas, c'est le seul langage avec lequel je suis arriv? ? faire des objets qui n'?chappent pas ? mon controle... -- --------------- http://tboudet.free.fr/cv.html --------------- From gerard.maurat at meteo.fr Tue Jul 22 08:02:43 2003 From: gerard.maurat at meteo.fr (maurat gerard) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Lire des =?iso-8859-1?q?donn=E9es?= produites par un script Perl Message-ID: <3F1D35F3.E551480A@meteo.fr> Bonjour, Sur plate-formes Windows NT; depuis un script Perl, est-il possible de lire des donn?es produites par un autre script Perl? Pour ?tre plus clair, ci-dessous un exemple d'un premier script voulant r?cup?rer le STDOUT du second script Code du premier script ------------------------ $ret=`script2.pl dir c:\.`; print "$ret\n"; Code du second script ----------------------- $cde=join(' ',@ARGV); $ret1=`$cde`; print $ret1; A l'issue de l'ex?cution du premier script, $ret est vide et il ne s'affiche rien ? l'?cran. En fait, un autre interpr?teur PERL d?marre pour ex?cuter le second Script. Du coup, je r?cup?re le retour de l'interpr?teur et non celui du second script. J'ai essay? avec diff?rentes m?thodes (system, exec, les pipes) mais aucune am?lioration. Auriez-vous une solution ou une id?e pour me sortir d'affaire? Cordialement -- From mat at reynerie.yi.org Tue Jul 22 14:00:31 2003 From: mat at reynerie.yi.org (mat@reynerie.yi.org) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Lire des =?iso8959-9?Q?d?= =?iso8959-9?Q?onn=E9es?= produites par un script Perl In-Reply-To: <3F1D35F3.E551480A@meteo.fr> References: <3F1D35F3.E551480A@meteo.fr> Message-ID: <20030722190031.GA10190@po.reynerie.org> On Tue, Jul 22, 2003 at 03:02:43PM +0200, maurat gerard wrote: > Bonjour, Bonsoir, > Sur plate-formes Windows NT; depuis un script Perl, est-il possible de > lire des données produites par un autre script Perl? oui. > Pour être plus clair, ci-dessous un exemple d'un premier script voulant > récupérer le STDOUT du second script > > Code du premier script > ------------------------ > $ret=`script2.pl dir c:\.`; > print "$ret\n"; > > Code du second script > ----------------------- > $cde=join(' ',@ARGV); > $ret1=`$cde`; > print $ret1; > > > A l'issue de l'exécution du premier script, $ret est vide et il ne > s'affiche rien à l'écran. j'arrive, apres quelques modifications, a faire fonctionner vos deux scripts : # Premier script : #!C:\Perl\bin\perl -w use strict; my $ret=`c:\\Perl\\bin\\perl test2.pl dir c:\.`; print "$ret\n"; # Deuxieme script : #!C:\Perl\bin\perl -w use strict; my $cde=join(' ',@ARGV); my $ret1=`$cde`; print $ret1 l'execution du script test1.pl produit bien un listing du repertoire C:. > En fait, un autre interpréteur PERL démarre pour exécuter le second > Script. Du coup, je récupère le retour de l'interpréteur et non celui du > second script. Etes vous sur qu'un interpreteur Perl est execute ? Chez moi, avant d'ajouter la path complet du binaire Perl dans le premier script, Windows ne savait que faire du script test2.pl. > J'ai essayé avec différentes méthodes (system, exec, les pipes) mais > aucune amélioration. Il existe IPC::Open2 (et IPC::Open3), qui si je me souviens bien, sont portes sur les systemes Windows, et qui sont fait pile poil pour resoudre ce genre de problemes. ps: c'etait mes premiers tests de Perl sur un Windows :) -- mat From mirod at xmltwig.com Wed Jul 23 10:44:38 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] YAPC::EU Mercredi Message-ID: APC::Eu, Mercredi Excellente soiree hier: vers 8h je trainais dans le quartier CNAM j'ai commence a voir passer des gens avec des sacs YAPC, puis en m'approchant des T-Shirts YAPC... puis des T-Shirts ROSES YAPC... j'avais trouve le bar officiel de YAPC! Ou plus exactement un des bars officiels de YAPC. Paris.pm au complet, une bonne partie de London.pm et d'Amsterdam.pm (avec des T-Shirts speciaement crees pour l'occasion), pas mal d'americains et de canadiens... la grande foule quoi! Ensuite on a envahit la Taverne, le repaire prefere de Paris.pm, mange, descendu quelques bieres, fait la fermeture, puis les derniers survivants ont fini dans un autre bar, jusqu'a 4h du matin. Du coup j'ai un peu rate la matinee, juste eu le temps de griller queques cigarettes en attendant l'heure du dejeuner. Tie and Overloading *Dave Cross* Cet apres-midi je suis dans le cours de Dave Cross sur Tie et overloading. Je veux verifier que j'ai pas trop merde l'interface de Params::Style.pm. Pour l'instant il decrit l'excellent Tie::Hash::Cannabinol (ou THC), qui malheureusement n'est pas legal en France (mais si vous trouvez un serveur en Hollande c'est probablement OK la bas). Overloading Ca commence par les bases, et puis apres la pause cafe (ou je rencontre Blop, cafaisait longtemps que je l'avais pas vu) ca devient ruse. Je savais pas qu'on pouvait surcharger l'interpretations des constantes par Perl: dans son example il a un module qui implemente un objet pour les fractions (il stocke le numerateur et le denominateur), et oui, il arrive a avoir my $half= '1/2', ou my $three_quarter= '1/4' + '1/2', ou les constantes sont transformees en objets. Tres cool! Voir Number::Fraction sur CPAN. Il a aussi un article, publie hier sur perl.com, sur le sujet. Il finit en avance (son cours etait prevu au depart pour etre bieng plus court, mais il a du remplacer le cours sur SVG au pied leve, le presentateur a rate son avion (nirk-nirk, ya pas qu'a moi que ca arrive) Du coup on a droit a des presentation bonus! Cool tricks with AT codes Un script qui lui permet d'utiliser son portable (telephone portable!) pour piloter sa machine. Il compare ca a la meme chose en Applescript, bien plus complique, Il controle xmms, Galeon, Blast... Comme l'indique le titre... c'est tres cool Toute l'architecture est en place, il pilote sa presentation depuis son telephone. Il ne reste plus qu'a ecrire quelques menus interessants et on pourra diffuser ca a grande echelle et "Take Over the World", yipee! Ca marche avec un Ericson, le modue est Device::Ericson je crois. Information, architecture, programming and YOU *Simon Winstow* Information Architecture n'est que vaguement definit (c'est lui qui le dit, pas un commentaire desopilant du compte-rendeur), mais comme il y a un bouquin d'O'Reilly dessus,ben ca doit exister! Son talk va donc essayer de definir ce concet plus precisement. Si je comprends et si je retranscrit correctement (et si la batterie de mon portable ne me lache pas) vous aussi saurez employer ce nouveau buzzword et epater votre famille, vos copains, votre chef... Donc attention: long et touffus paragraphe suit: Il cause donc de la difference entre donnees (data) et information. Le programeur s'inquite de l'origine des donnees, et l'architecte de ou l'information va. Il est important de communiquer entre designeurs et programeurs. En tant que programeur nous devons essayer de ne pas oublier pour qui nous developpons. Nous devons aussi essayer de coder proprement les cas limites (pour que le code ne crashe pas), et creer des interfaces intuitives mais qui ne brident pas les utilisateurs (qui ne sont pas stupides d'apres lui, on doit pas avoir les memes, a mon avis il a pique tous les utilisateurs intelligents et il en restait plus pour moi ;--). Ne pas creer une attitude "Nous contre Eux", (en fait c'est "Nous Tous contre le Marketing!"). Le role de l'Information Architect est de facilter tout ca. Question de Greg: tout ca c'est des trucs que les codeurs et les designeurs devraient faire, pourquoi creer une nouvelle race (les "Information Architects"). Reponse: Oui mais en pratique ca marche, il y a besoin de quelqu'un pour tenir ce role. Ca peut etre le Chef de Projet, ceci dit. En plus on peut trouver du boulot comme IA. Here's one I made earlier *Piers Cawley* Commence devant un ecran vide et nous fait applaudir a tout rompre pour que les gens de la salle a cote soient jaloux. Ca marche, sur IRC Leon demande ce qui se passe. Puis il fait un Poney avec un baudruche... fascinant. La criniere surtout. Applaudissements Le Mac sur lequel il a sa presentation a des problemes. Ca y est, ca commence Salauds! Applaudissements dans la salle voisine. Ca cause de refactorisation. Il remplace une serie de "if" dans une classe par du polymorphisme avec douple-dispatch. Le probleme est que par exemple un objet implemente par un hash n'herite pas de la classe HASH, alors que son code en aurait besoin (son code appele differente methodes suivant le type d'un parametre de la methode). Solution: il surcharge "bless"! Joli! Il recupere le type de 'objet et le pousse dans le @ISA, ce qui fait que la classe en herite. Et un joli coup: *CORE::GLOBAL::bless=\&bless; # le 2cd bless est le sien pour remplacer le "bless"de Perl par le sien (ne marche qu'avec un Perl recent, 5.8 ou peut etre 5.6, il ne sait pas). Puis il utilise "AUTOLOAD" pour eviter de "bless"-er les classes qu'il ne vaut pas blesser, puis rajoute un petit bout de code qui fait que tous les types de bases heritent d'un type unique (j'ai pas tout compris pourquoi) Le tout a ete ecrit ce matin et atterira sur CPAN bientot (dans Acme::). Cool. Ca c'est de la presentation qui va bien a YAPC, c'est pas de l'introduction a va savoir quoi (du coup j'ai honte de ma presentation de demain :--( Bon, ben je vous laisse, ma batterie est presque a plat. Ce soir je vais tacher de pas me coucher trop tard ce soir, je cause demaing. Un dernier mot, l'organisation est vraiment excellente, tout se passe bien, le wireless marche (mieux qu'a OSCON), le cafe, jus de fruit, cake... est la a l'heure, les amphis sont bien.. un grand bravo a Paris.pm! Michel Rodriguez Perl & XML http://www.xmltwig.com From oulala at chez.com Thu Jul 24 06:56:44 2003 From: oulala at chez.com (Thierry B.) Date: Mon Aug 2 21:38:19 2004 Subject: =?iso-8859-1?Q?=5BToulouse-pm=5D_Lire_des_donn=E9es_produites_par_un_scr?= =?iso-8859-1?Q?ipt_Perl?= In-Reply-To: <3F1D35F3.E551480A@meteo.fr>; from gerard.maurat@meteo.fr on Tue, Jul 22, 2003 at 03:02:43PM +0200 References: <3F1D35F3.E551480A@meteo.fr> Message-ID: <20030724135644.B2677@hydrangelles> On Tue, Jul 22, 2003 at 03:02:43PM +0200, maurat gerard wrote: > > Auriez-vous une solution ou une id?e pour me sortir d'affaire? > J'allais dire "?a s'arrode !" mais h?las je ne suis pas libre le 31. Que diriez vous plut?t du 30 ? -- --------------- http://tboudet.free.fr/cv.html --------------- From mirod at xmltwig.com Thu Jul 24 07:13:01 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: =?iso-8859-1?Q?=5BToulouse-pm=5D_Lire_des_donn=E9es_produites_par_un_scr?= =?iso-8859-1?Q?ipt_Perl?= In-Reply-To: <20030724135644.B2677@hydrangelles> Message-ID: On Thu, 24 Jul 2003, Thierry B. wrote: > On Tue, Jul 22, 2003 at 03:02:43PM +0200, maurat gerard wrote: > > > > Auriez-vous une solution ou une idée pour me sortir d'affaire? > > > J'allais dire "ça s'arrode !" mais hélas je ne suis pas > libre le 31. Que diriez vous plutôt du 30 ? Pas de probleme, le mercredi 30.Vous avez un troquet a proposer? Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Thu Jul 24 10:41:30 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] YAPC::Eu: jeudi Message-ID: YAPC::EU Jeudi Salut, Soiree calme hier soir, juste un petit restau avec a peine 15 autres perleurs. Ce matin je croise Christophe, juste avant sa presentation sur Zinc. Prudement il ne l'a pas ecrite en PowerPoint, il devrait donc y survivre. Quelques liens: Le cours de Dave Cross: http://dave.org.uk/talks/toop.pdf Les premieres photos: http://xmltwig.com/mirod/pict/geek_stuff/yapc_paris/ PerlSAX *Robin Berjon* Robin fait une bonne introduction a SAX, nonobstant le fait que SAX SUCKS (qui fut l'objet d'un long debat hier soir entre le clan SAX, Robin et Matt Sergeant, et le clan XML::Twig, compose essentiellement de... moi). Je reste calme pendant la presentation, histoire de ne pas declencher des hostilites qui se poursuivraient pendant mon talk a suivre... XML Modules Bon, mon talk s'est a eu pres bien passe, j'ai pu dire plein de mal de SAX et DOM pendant que Robin etait sortit recuperer. Je rapelle l'URL pour les slides: http://xmltwig.com/talk/xml_modules_2003/, plus le lightning talk wue je case au milieu: Network tricks with Perl *mock* Il commence par expliquer que SSLay n'est pas vraiment sur parce qu'il ne verifie pas vraiment l'autenticite du certificat de la machine avec laquelle il cause. Je ne suis pas tout, vu uqe je suis vraiment nul en reseaux. Puis il montre un example de code qui lui permet de traffiquer l'addresse source quand il utilise LWP. En gros il traffique les packets comme il veut. Ca semble bien evil comme manip. Il faut dire qu'il bosse pour une boite (dont il ne peut pas dire le nom) qui fait dans l'ecommerce de trucs pas vriment illegaux, mais pas completement legaux non plus, en tout cas pas legaux partout. SourceIP sera sur CPAN bientot, et il prevoit d'ecrire ne stack TCP/IP en Perl pour pouvoir en faire encore plus. Le but de la manip est de feinter Google en lui faisant croire qu'une machine est vraiment plusieurs machines. Ca lui permet aussi de truquer les sondages en ligne (les programmes de ce genre sont bases sur le principe de une adresse IP = 1 vote) Matt n'est pas trop content, c'est le cote noir de la force! Anti-virus in Perl *Pete Sergent* File::Scan est l'outil le plus repandu. C'est du pur Perl, facile a utiliser et a installer. Bien sur du coup il est aussi lent "libsavy" est une librairie C, non-libre qui est pas mal aussi Maintenant: comment creer son propre anti-virus: Indices qui trahissent un virus: MIME type bizarres =item double extensiosn avec une extension executable a la fin ("tar.gz" est OK) =item executables Delivering statistics with DBI Apache and mod_perl *Marra Regge* Elle nous montre un joli site web qui genere des statistiques pour des universites, a partir d'une DB, en generant des graphiques a la volee, le tout pilote par quelques fichiers de config ruses (pas en XML!). Son systeme est sympa, facile a configurer pour de nouvelles appli, et assez joli. Le systeme n'est pas Open Source, juste parce qu'elle n'a pas eu le temps de nettoyer le tout et de faire un distribution propre. Elle espere le faire cet ete. Pas revolutionaire mais joli. XML data *Jo Walsh* Ca cause de RDF, coordonnees spatiales et de "mapper" le monde cybernetique sur le monde reel. "mudlondon" est une representation de Londres... et un robot qui cause Jabber. Robin, si tu comprends, eclaire nous! Je suis perdu! Ce que je saisis: des lieux reels sont modelises comme des noeuds de graphes, ces noeuds peuvent etre annotes, y compris en utilisant FOAF (Friends of a Friend), ou des photos, urls... Quelques urls: http://openguides.org/london/ , http://knowhere.co.uk , http://forums.upmystreet.net/ Une url ou ils emploient svg pour visualiser des cartes decrites en RDF: carto.net/svg On peut aussi (bien sur!) rajouter une dimension temporelle. Un slide qui decrit le processus de maniere interessante: la "big picture" est construite a partir des images mentales de multiples individus. Elle note qu'il y a des problemes de copyright: les donnees cartographiques au Royaume-Uni sont propriete de la couronne (et licensiees). Oops! Elle emploie le mot "ontologie", je decroche officiellement! Serieusement, en fait c'est pas mal ces trucs, c'est plus l'aspect utilisation de la technologie pour faire des trucs socialement interessant. Ca fait reflechir. Metadata everywhere: pervasive XML to make computing a real social and economic advantage *Andrea Rota* Bon, la j'avoue je suis la parce que le titre me fait rire. Il semble qu'il veuille parler de l'impact social de notre boulot de programmeur. Apparement on n'est as assez sensibilise a ca (il lit pas slashdot visiblement ;--) Yipee! Une citation en Latin: *mors tua vita mea* (quelqu'un peut traduire?). Ca ne s'applique bieng sur qu'a des objest physiques, zut j'ai rate la citation qui s'applique a des creations de l'esprit. Bon, maintenant il nous explique ce que c'est que les meta-donnees, en commencant par dire que les commentaires du code sont des meta-donnees, hummm... je suis pas sur la... Puis un menu de restaurant, d'abord en version texte, puis en version XML. Les meta donnees nous aident a tirer le meilleur parti de nos donnees. Les utilisateurs devraient les utiliser de maniere transparentes. Autant la presentation precedente semblait touffu et barge au depart, mais prenait du sens petit a petit, , autant celle-ci me semble habiller de grands mots des concepts plutot simple. Tiens, paradigme! Un conseil utile: les programmeurs devraient ecrire du code propre! Incroyable! Un autre: evitez Python (rires) Il rale, on devrait dire *Free Software* et pas *OSS* (perso je suis tres content que la license de Perl soit la *Artistic License*, le nom et son contenu sont parfaits!) Il saute prudement le slide ou il explique que les fichiers de config devraient etre en XML (le sujet d'une partie de mon talk du matin, ou je poussais YAML a la place). On finit par *vita tua, vita mea* En resume, une presentation a oublier bien vite. Image processing in Perl Graphic Application *Dmitri Karasik* Yet Another GUI toolkit: Prima (http://www.prima.eu.org): marche sous X11, Win32 and OS2. Supporte Unicode, utilise postscript pour l'impression, conversions entre different format graphiques. Inclus un outil de creation graphique, Visual Builder, ecrit en Perl et qui genere du code Perl. J'ai un peu de mal a suivre la demo, la fonte est trop petite pour mes yeux fatigues. Il cree un bouton, quand il le tourne une bout de texte tourne en meme temps. Shiny! Il nous montre maintenant un bout de code qui balance des nombres a la Matrix a travers l'ecran. Joli! Puis la presentation continue avec la demo de librairies graphiques (de tranformation d'images): http://www.prima.eu.org/IPA . Ils utilisent PDL (http://pdl.perl.org) pour faire les maths si j'ai bien compris. Managng Digital Music Collections in Perl *Paul Mison* Enfin un talk pratique et utile! Oh non, premier slide et deja le mot metadata vient polluer la presentation ;--( D'abord un rappel sur qu'est-ce que c'est ID3 (le standard de... metadata pour les fichiers audio). ID3v1 => ID3v2 v1 etait tres simple, 7 champs, 30 caracteres par champ, v2 est beaucoup plus complique. ID3v2 est aussi assez complique a ecrire. 3 modules: MP3::Info Pur Perl, lit v1 et v2, ecrit v1 MP3::Tag MP3::ID3Lib Arrghh, ca va trop vite, brefle, aucun module n'est parfait! Un truc qu'on doit souvent faire, c'est generer les tags ID3. Il nous montre un script Perl qui le fait. Je ne comprends pas d'ou il recupere l'info. Du nom de fichier je crois. En sens inverse, souvent on veut renommer le fichier d'apres les tags ID3. Et voili, un script le fait. Un autre qui met les bons tags pour les morceaux tiresde compilations. Pour les cas ou on a pas vraiment le CD sous la main, 2 projets Open Source: FreeDB (simple) et MusicBrainz (plus ambitieux, offre des donnees RDF, des Web Services...). 2 modules Perl: Webservices::FreeDB (probablement fragile, fait du screen scrapping). Music::Brainz::Client base sur une library C, peut recuperer les donnees en RDF. D'apres lui assez difficile a utiliser. Il montre un bout de code, je lis pas bien la fonte 4pt a 10 metres... desole. La presentation des divers modules est pas mal, ca donne une bonne idee de l'ensemble. Bon, je fatigue, je vais fermer mon laptop, aller faire un tour et je reprendrai demaing A tschao Michel Rodriguez Perl & XML http://www.xmltwig.com From mertz at cena.fr Mon Jul 28 03:57:23 2003 From: mertz at cena.fr (Christophe MERTZ) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] reunion estivale des toulouse.pm In-Reply-To: References: Message-ID: <1059382639.16858.3698.camel@sonat.tls.cena.fr> On Thu, 2003-07-24 at 14:13, Michel Rodriguez wrote: > On Thu, 24 Jul 2003, Thierry B. wrote: > > > On Tue, Jul 22, 2003 at 03:02:43PM +0200, maurat gerard wrote: > > > > > > Auriez-vous une solution ou une id?e pour me sortir d'affaire? > > > > > J'allais dire "?a s'arrode !" mais h?las je ne suis pas > > libre le 31. Que diriez vous plut?t du 30 ? > > Pas de probleme, le mercredi 30.Vous avez un troquet a proposer? Bonjour ? Tous... Je pense participer ? la r?union des pm du 30/7, mais je ne pourrais pas rester plus d'une heure... A quelle heure (et ou?) faites vous cela d'habitude? A+ -- Christophe MERTZ From mirod at xmltwig.com Mon Jul 28 04:01:08 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] reunion estivale des toulouse.pm In-Reply-To: <1059382639.16858.3698.camel@sonat.tls.cena.fr> Message-ID: On 28 Jul 2003, Christophe MERTZ wrote: > On Thu, 2003-07-24 at 14:13, Michel Rodriguez wrote: > > On Thu, 24 Jul 2003, Thierry B. wrote: > > > > > On Tue, Jul 22, 2003 at 03:02:43PM +0200, maurat gerard wrote: > > > > > > > > Auriez-vous une solution ou une idée pour me sortir d'affaire? > > > > > > > J'allais dire "ça s'arrode !" mais hélas je ne suis pas > > > libre le 31. Que diriez vous plutôt du 30 ? > > > > Pas de probleme, le mercredi 30.Vous avez un troquet a proposer? > > Bonjour à Tous... > > Je pense participer à la réunion des pm du 30/7, mais je ne pourrais pas > rester plus d'une heure... A quelle heure (et ou?) faites vous cela Est-ce que le Frog & Rosbif est ouvert? Si oui on dit 19h/19h30 la bas? (Je poste le CR de vendredi des que j'ai pris mon cafe, connecte le portable au reseau et recupere les bouts qui trainent sur divers serveurs.) Michel Rodriguez Perl & XML http://www.xmltwig.com From robin at knowscape.com Mon Jul 28 04:08:10 2003 From: robin at knowscape.com (Robin Berjon) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Eu: jeudi In-Reply-To: References: Message-ID: <3F24E7FA.1010904@knowscape.com> Michel Rodriguez wrote: > PerlSAX > *Robin Berjon* > > Robin fait une bonne introduction a SAX, nonobstant le fait que SAX > SUCKS Ouh le faible petit abus de pouvoir! Et dire que je t'ai pr?t? ma b?cane pour que tu puisse ?crire le compte-rendu du lendemain, tout ?a parce que les twiggers ne comprennent pas la notion de dur?e de vie d'une batterie... tssssk. > *Jo Walsh* > > Ca cause de RDF, coordonnees spatiales et de "mapper" le monde > cybernetique sur le monde reel. > > "mudlondon" est une representation de Londres... et un robot qui > cause Jabber. Robin, si tu comprends, eclaire nous! Je suis perdu! Le robot qui cause Jabber, il est aware... euh, enfin il est stateful. Donc tu peux initier une connection avec ? un endroit de Londres, puis te d?placer dans un Londres virtuel enti?rement compos? de noeuds RDF. > Ce que je saisis: des lieux reels sont modelises comme des noeuds de > graphes, ces noeuds peuvent etre annotes, y compris en utilisant > FOAF (Friends of a Friend), ou des photos, urls... N'importe quelle ontologie pourra annoter, le truc des photos r?utilise la co-d?piction je crois (cg http://rdfweb.org/). --r From mirod at xmltwig.com Mon Jul 28 04:16:44 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Eu: jeudi In-Reply-To: <3F24E7FA.1010904@knowscape.com> Message-ID: On Mon, 28 Jul 2003, Robin Berjon wrote: > Michel Rodriguez wrote: > > PerlSAX > > *Robin Berjon* > > > > Robin fait une bonne introduction a SAX, nonobstant le fait que SAX > > SUCKS > > Ouh le faible petit abus de pouvoir! Et dire que je t'ai prété ma bécane pour > que tu puisse écrire le compte-rendu du lendemain, tout ça parce que les > twiggers ne comprennent pas la notion de durée de vie d'une batterie... tssssk. En tout cas c'est toujours mieux que http://use.perl.org/comments.pl?sid=14452 (et pis le Mac il avait peut etre une batterie, mais il avait le vi le plus pourri que j'ai jamais vu si tu rapelles bieng, pas un cadeau quoi ;--). > > Ce que je saisis: des lieux reels sont modelises comme des noeuds de > > graphes, ces noeuds peuvent etre annotes, y compris en utilisant > > FOAF (Friends of a Friend), ou des photos, urls... > > N'importe quelle ontologie pourra annoter, le truc des photos réutilise la > co-dépiction je crois (cg http://rdfweb.org/). La description de foaf en bas de la page m'eclate completement: "foaf: semantic web vapourware for the masses". -- Michel Rodriguez Perl & XML http://www.xmltwig.com From robin at knowscape.com Mon Jul 28 05:06:25 2003 From: robin at knowscape.com (Robin Berjon) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Eu: jeudi In-Reply-To: References: Message-ID: <3F24F5A1.8070305@knowscape.com> Michel Rodriguez wrote: > On Mon, 28 Jul 2003, Robin Berjon wrote: >>Ouh le faible petit abus de pouvoir! Et dire que je t'ai pr?t? ma b?cane pour >>que tu puisse ?crire le compte-rendu du lendemain, tout ?a parce que les >>twiggers ne comprennent pas la notion de dur?e de vie d'une batterie... tssssk. > > En tout cas c'est toujours mieux que http://use.perl.org/comments.pl?sid=14452 Quand on boit avec un abondance comme la tienne, il ne faut pas s'?tonner de voir ses propos appara?tre sur use.perl le lendemain matin. C'est un peu la version geek du Rude Awakening. Un blog alors.heureuse serait peut-?tre plus adapt?. > (et pis le Mac il avait peut etre une batterie, mais il avait le vi le > plus pourri que j'ai jamais vu si tu rapelles bieng, pas un cadeau quoi > ;--). C'est pas mon probl?me si: - tu utilises vi - tu ne sais pas viser les touches sur un clavier - tu utilises vi - tu confonds ` et \n - tu utilises vi --r From rlehy at free.fr Mon Jul 28 06:38:12 2003 From: rlehy at free.fr (Ronan Le Hy) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] ocaml vs perl Message-ID: <3F250B24.3050404@free.fr> Salut, A l'attention de ceux qui se sont endormis pendant mon lightning talk, et de Michel qui a trouv? une meilleure excuse (quoique... utiliser vi, c'est pas terrible comme pr?texte), j'ai mis mes slides comment?es en ligne: http://www.inrialpes.fr/sharp/people/lehy/ocaml_vs_perl_commented.pdf -- Ronan (Blop?) This incantation never fails! Thaddeus Barker of Hightown, Winsconsin omitted -w, and he was plagued with bugs for the rest of his life. Mary Purges of Crenellation, Idaho used strict, and the very next day she found a $100 bill on the sidewalk. Coincidence? I THINK NOT! Simon Cozens on clpmod, about using strict and warnings From mirod at xmltwig.com Mon Jul 28 09:33:28 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] YAPC Paris, Vendredi Message-ID: Salut, Donc le dernier compte rendu... 20 Things you did not know about Perl *Joos Booman* Une excellente presentation sur tout un tas de modules ruse, je vais essayer de trouver les slides, c'etait vraiment excellent (et j'avais pas mon laptop ouvert d'ou la brievete du compte-rendu). Je pense que Hook::LexWrap peut etre vraiment utile pour trafiquer SAX Le soir BOF Axkit, ou principalement je decouvre que le clan SAX est en fait la proie de lutte intestines entre Matt et Robin, et donc que le triomphe de XML::Twig est assure, vu que je me bas rarement avec moi-meme. Ensuite repas des speakers, avec tout le monde, on doit etre 60 dans le restau. C'est simple, il n'y a QUE nous la. Puis nous nous deplacons jusqu'a la Taverne, ou nous restons jusqu'a la fermeture, quelques heures plus tard. La discussion entre Matt Sergeant (anti-spammeur extraordinaire) et Piers Cawley (toujours prompt a s'indigner) d'un cote et Mock (le cote obscur de la force) valait son pesant de cacahouetes. Au lit a 4h du mat... Vendredi Comme d'habitude je rate la plupart des talks de la matinee. Dejeuner rapide, l'apres midi va etre TRES charge! What Perl 6 stole from the Japanese *Marty* Larry vole des idees de pleins de languages (et pas que des langages informatiques). D'apres Marty, Ruby est deja la, et a tout les trucs cools de Perl 6: Matz a la meme philo que Larry et vole des idees partout. Ruby est vraiment cool. Ruby est la Vrai raison de Perl 6 (python n'a jamais ete vraiment menacant). Du coup Larry a commence a piquer des trucs a Ruby (le . a la place de ->), tout est un objet. C'est rigolo... Mais bon, on va pas rester a la traine de Ruby, donc apres avoir pique des idees au langage Larry a decide de piquer des idees au langage d'origine de Matz: le japonais. Pleins de citations de Larry qui prouvent cette theorie sans l'ombre d'un doute. Perl de toute facon est comme le Japonais: concis, TIMTOWDI (il nous montre 6 maniere de dire *aller*), pour les etrangers les 2 sont completement incomprhensibles ;--) Il nous fait chanter en Japonais. Puis nous montre du code Perl avec des variables en japonais (faisable aujourd'hui grace a Unicode), puis du code Perl 6, tout en japonais! Si on le croit ca fait print "Hello World". Les "topics" ($_ en Perl 5, etendus avec "given" en Perl 6) sont tres presents en japonais (*wa* marque une partie d'une phrase comme un "topic" et on n'a plus besoin de la repeter apres). Pour finir il nous conseille de chercher "Larry Wall" et "Japanese" dans les Apocalypses et mailing listes. C'etait tres rigolo, et pas bete. Why you need a degree to get a Programer job *Ann Barcomb* Elle explique pourquoi son diplome en histoire, ecriture et philosophie l'a bien preparee a la vie professionelle. C'est plutot rigolo (je preferes commencer par des talks rigolos, ca laisse a mon cerveau le temps de se mettre en marche doucement). The Porn0graph: a Semantic Web Storytelling Engine in Perl *Jo Walsh* Enfin un talk utile! PornOgraph utilise RDF pour modeliser les relations entre bouts d'histoire. En traversant le graphe RDF et en prenant des chemins au hasard (ou en laissant l'utilisateur choisir) quand il y en a plusieurs on genere des histoires completes. Technologies utilisees: c'est ecrit avec POE, utilise GET et POST (*"none of this WSDL, SOAP, XML-RPC non sense"* ;--). Les triles RDF sont stockes dans mySQL. Le langage de requete sur RDF et Squish, et est traduit en SQL. Il y a des interfaces Jabber ("onanova"), HTML et dans le futur SVG. On peut aussi donner des ordres comme dans un jeu d'aventure (genre *use whip*). Une autre evolution possible est de lier ce moteur a des ontologies (si je me rapelle une ontologie c'est une categorisation d'un sujet, mettre des noms sur des concepts et derire leurs relations, le reseau a des problemes donc je ne peux pas verifier): elle nous montre un graphe qui decrit les fetiches typiques et leurs relations. Talk tres decevant, il manquait vraiment une demo! ;--) CPAN *Elaine "Aevil" Ashton* Bon, j'avais plus de batterie, donc ca sera court: CPAN c'est bieng. Mettez un numero de version (avec $VERSION). Ponie *Arthur Bergman* Arthur va donc porter Perl 5 sur Parrot. Ca comprend toutes les bizarreries de Perl 5, il faut que le code tourne exactement comme maintenant. Fotango le paye pour ca, pour qu'ils puissent faire tourner le code Perl 5 qu'ils ont (pas loin de 100K lignes) et du code Perl 6, en meme temps. Les lexer, parser, tokenizer et moteur de regexp ne sont as touches. Juste le core minimum: une couche d'interface entre qui remplace le noyau de Perl 5 par du code qui genere dy bytecode Parrot. les variables sont implementes comme PMC (Parrot Magic Cookies), certains opcodes aussi. Ca permettra a tout ce qui est XS de marcher. Ca devrait aussi ameliorer la vitesse dans certains domaines (overloading ne ralentira plus tous le reste, tie devrait aussi aller bien plus vite). Un des problemes est la difference entre les GC des 2 systemes. Le deparseur aura un probleme mais Arthur de toute facon pense qu'il ne marche pas, donc ca n'est pas son but principal. Il espere que ca va lui prendre 6-8 mois pour un premier proto, et 2 x ca pour quelque chose de solide. Why I am not making a talk this year *Greg McCarroll* J'ai rate le debut, c'est dommage parce que c'etait rigolo, mais j'ai aucune idee du sujet... Lightning Talks Bon, je sais pas vraiment combien de temps ma batterie va tenir, donc vous aurez pas forcement tous les LT, mais on va essayer... Copy On Write in perl 5.10 *Nicholas Clark* Il explique e mechanisme avec des membres de London.pm, Leon tient une chaine de caractere (*Buffy*) et les autres pointent sur lui, puis sur eux-memes. Ca marche! CamelBones - A FrameWork for building Cocoa Applications *jonasbn* Il nous montre comment il a utilise CamelBones pour faire une calculette (YAPC: Yet Another Perl Calculator!): il cree le machin graphique avec l'editeur et il le connecte a du code Perl. Encore un de ces vantards d'utilisateurs de Mac ;--( Sonette! C'est fini? NON, encore 1 minute! GONG! La c'est fini! Inline Skating can save Perl *Rafiq Ismail* Sa boite fait de plus en plus de Java. Il doit s'interfacer avec pleins de librairies, surtout en C... "Inline" to the rescue! C'est facile a utiliser, c'est puissant... si j'avais pas completement oublier comment faire du C depuis que j'ai commence a utiliser Perl, c'est sur que je m'en servirais! What is the future of Perl/Tk ? *Christophe Mertz* Yipee! Un toulousaing sur scene! Apparement Nick Ing-Simmons, le mainteneur de Perl/Tk, n'est plus tres active. Ca cause des problemes a Christophe qui l'utilise pour TkZinc. Il demande ce qui va se passer? Une petite demo de TK/Zinc, Shiny! Peut-il faire des calculatrices demande la salle? Design-by-contract in Perl *Tim Sweetman* Qu'est-ce qui se passe si on n'utilise pas le "design by contract" (desole, j'ai pas completement le temps de penser a la traduction des expressions anglaises) Il nous montre un example ou refactoring foire parce qu'il manque des tests automatiques qui seraient produits par du design by contract. DbC serait tres important pour Perl, surtout sachant qu'a la base Perl ne verifie pas du tout les parametres passes aux fonctions. Test::DatabaseRow *Mark Fowler (Trelane)* Il vaut tester des lignes dans un DB. Donc il a ecrit un module pour pouvoir specifier simplement les tests. Il nous montre les etapes successives, ou comment il a simplifie et simplifie encore le format pour que ca soit faciel a ecrire.A XML::Filter::TT *Mark Fowler (Trelane)* XSLT is hard (il l'ameme ecrit XLST ;--) Il utilise le TT (Template Toolkit) et des tags specifiques (avec un namespace separe), qui lui laisse faire des transformations a sa maniere. Il utilise SAX (qui SUXE, ndcr). wikis & navigation Bon, a partir de maintenant je passe sur la machine de Robin, que, je suppose, je dois remercier, meme si c'est un Mac avec un clavier Francais ce qui me torture les doigts, et si j'appuies 2 fois sur la touche #, ca se bloque, toutes les touches recuperent un ' devant et je peux plus rien taper ("'i" ne passe pas en mode insertion). Bien sur cette maudite touche est exactement la ou tout bon clavier aurait la touche [return]... Les Mongueurs de Perl *BooK* Ca va vite, le texte defile automatiquement derriere lui. Il passe en Francais... Derriere lui l'ecrqn affiche des commentaires en anglais... *"I am a poor computer, I will just try to keep you enternatined while he is making fun of you in French"*... *"A French Joke... Jacques Chirac"*... tout le monde est ecroule de rire... il n'arrive plus a parler... standing ovation! Il arrete le truc derriere. Je crois que l'idee de son talk c'etait d'annoncer qu'il y aura peut etre un journee Perl, en Francais, l'an prochaing. Mais c'est dur a savoir ;--) BRAVO BOOK ET MERCI! Managing Complexity *Piers Cawley* Pas trop de commentaires, je me bat avec ce putaing de Mac. vi ne marche pas. Il chante. Il avait deja fait ce LT a OSCON (http://xmltwig.com/report/oscon_2003.html#lightning_talks) (non que le CR soit tres instructif non plus ;--( The Year of the Praying Mantis *Gabor Szabo* 3 LT en &: * La Mante Religieuse et le logo de Israel.pm... fin du premier LT. * Quel est le plus gros PM? Il nous donne les statistiques qu'il a compilees: London.pm gagne, Paris.pm est numero 5 en nombre d'adherents et 3 en nombre de posts. En volume d'alcool, ca reste a determiner. * YAPC, 4 YAPC cette annee (Israel, Canada, America et Europe), l'an prochain YAPC Israel sera le plus beau (a mon avis il y etait mele: http://www.perl.org.il/YAPC/2003/organizers.html). OpenGuides *Earle Martin* On a deja vu OpenGuides dans le talk de Jo Walsh. C'est un systeme pour ecrire des guides de villes, de mqniere cooperqtive. C'est un wiki dope aux meta donnees Il utilise CGI::Wiki avec leurs extensions a eux. Il nous montre le guide: ca sort tout les bars dans un rayon de 100 metres d'un point donne par exemple. Ca a l'ai cool. Scrabbling Code *Beatnik* Il parle d'un langage nomme... Beatnik. C'est base sur la valeur des lettres au Scrabble (ca entraine des problemes d'internationalisation ;--) "Acme::Beatnik" sera sur CPAN tres bientot (http://search.cpan.org/author/BEATNIK/Acme-Beatnik-0.02). Il nous montre une page entiere, pleines de mots, qui fait... print "Hello World" Uri rale parce aue ca ne prends pas en compte les mots compte double et triple! Perl Shells Pas de commentaire, je me bats toujours avec le mac, regardez http://zoidberg.student.utwente.nl/ Why OCaml is better than Perl *Blop* Un ex-toulousaion qui aime le risque. Ca fait chier, je me bats toujours avec le Mac et je peux pas vraiment suivre comme je` voudrais. Les slides sont donc a http://www.inrialpes.fr/sharp/people/lehy/ocaml_vs_perl_commented.pd f et je crois que maintenant j'ai compris: il presente une facon alternative de grouper les methodes dans le compilateur, par type de methode plutot que par objet. OCaml fait comme ca. Ca rend l'ajout d'une operation plus simple, mais l'ajout d'un type plus complique. Pas con. WWW::Mechanize *Uri Gutman* Il presente le module, vraiment utile pour faire du screen-scrapping. Wikis and Navigation *Jim Sweetman* C'est facile de se perdre dans un Wiki, et souvent les ecrans ne sont pas vraiment pleins, donc il suggere d'utiliser cet espace pour mettre des liens auto-generes et annotes. Wrap-up Ce qui doit vouloir dire plus ou moins conclusion en francais. Donc, bien plus tard... La conferences'acheve par *L'Auction*, les encheres. Les points forts dont je me rapelle: BooK achete le dernier examplaire du T-Shirt *"Perl is my bitch"*, pour une fortune, puis adjuge son T-Shirt de la conference pour 65 euros. Il remet aussi a Davorg l'obfus qu'il a achete il y a 2 ans, et la fait tourner, je vous laisse la voir quand il la postera. T-Shirts uniques (jusqu'a 3 T-Shirts uniques identiques adjuges a la suite ;--), bouquins divers, en francais et en anglais, ca defile! Surtout, une historique bataille pour langue de la home page de Paris.pm et de London.pm: apres de longues encheres, tractations, apostrophes et insultes diverses le clan anti-anglais remporte la bataille, a plus de 1300 euros! Les 2 home pages seront donc en... esperanto! La conference est quasiment finie, c'est l'heure des premiers adieux, puis des suivants... les organisateurs, et d'autres, se retrouvent au bar habituel (La Taverne de la Republique pour ceux qui n'ont pas suivi). Piers Cawley tonne contre SAX, j'approuve, Robin defend SAX, puis decouvre soudain qu'en fait il adore XML::Twig (il n'a plus de clopes et moi si, il est assez demonstratif, je suppose que les photos de la chose seront diffusees ulterieurement), Hugo veut utiliser XPath pour decrire les optimisations de l'optree, ca me semble faisable, par contre re-utiliser le moteur de regexp de Perl pour faire du pattern matching sur un arbre me semble plus difficile (et croyez moi, j'ai essaye!). Brefle, on traine la jusqu'a la fermeture, comme d'habitude, apres quoi Greg McCarrol fait l'erreur d'inviter tout le monde dans sa chambre d'hotel... tout le monde vient, soit 18 dans 9 metres carres! A 4 h je pars au lit, pour la fin officielle de la conference. Sauf que le samedi il y a encore des BoFs, je me traine jusqu'a la BOF Parrot, mais en les entendant parler de garbage collector j'ai plutot l'impression que c'est moi qui devrait etre garbage collecte... la fatigue de la semaine me tombe dessus d'un coup... je vais faire la sieste... Merci a tous les organisateurs, la conf etait vraiment excellente. Les photos sont a http://xmltwig.com/mirod/pict/geek_stuff/yapc_paris/ La version HTML du CR a http://xmltwig.com/report/yapc_paris.html Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Mon Jul 28 12:08:52 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Reunion Mercredi Message-ID: Salut, Donc reunion Mercredi 30 juillet a 19h15 au Frog and Rosbif (14 rue de l'industrie). Ca devrait etre calme, donc j'emmenerais mon laptop pour vous montrer les presentations de YAPC (et les films des differentes conferences). J'ai aussi un T-Shirt YAPC Europe a faire gagner, yipee! A tschao Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Mon Jul 28 12:39:00 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Les slides de YAPC Message-ID: Salut, Je sais pas si j'ai poste ca deja, alors voila l'adresse du kwiki ou sont postes les liens vers les slides de quelques presentations de YAPC: http://yapc.eu.kwiki.org/index.cgi?Slides Ca me fait rire parce que j'avais perdu l'adresse du wiki, mais je l'ai retrouve... dans le log de mon serveur web... bon, on s'amuse comme on peut... ;--( Michel Rodriguez Perl & XML http://www.xmltwig.com From mertz at cena.fr Tue Jul 29 02:55:41 2003 From: mertz at cena.fr (Christophe MERTZ) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Reunion Mercredi In-Reply-To: References: Message-ID: <1059465338.16853.3775.camel@sonat.tls.cena.fr> On Mon, 2003-07-28 at 19:08, Michel Rodriguez wrote: > Salut, > > Donc reunion Mercredi 30 juillet a 19h15 au Frog and Rosbif (14 rue de > l'industrie). > > Ca devrait etre calme, donc j'emmenerais mon laptop pour vous montrer les > presentations de YAPC (et les films des differentes conferences). > > J'ai aussi un T-Shirt YAPC Europe a faire gagner, yipee! > > A tschao J'y serais aussi avec mon laptop (si TkZinc int?resse qq'un). Par contre je ne pourrais pas rester trop longtemps. Un coll?gue ? moi viendra certainement aussi A demain! -- Christophe MERTZ From mirod at xmltwig.com Tue Jul 29 03:02:28 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Reunion Mercredi In-Reply-To: <1059465338.16853.3775.camel@sonat.tls.cena.fr> Message-ID: On 29 Jul 2003, Christophe MERTZ wrote: > On Mon, 2003-07-28 at 19:08, Michel Rodriguez wrote: > > Salut, > > > > Donc reunion Mercredi 30 juillet a 19h15 au Frog and Rosbif (14 rue de > > l'industrie). > > J'y serais aussi avec mon laptop (si TkZinc intéresse qq'un). Par contre > je ne pourrais pas rester trop longtemps. Un collègue à moi viendra > certainement aussi Excellent, J'ai meme mis a jour la page web. Et on peut voir l'impact des conferences, et notament de la presentation par Damian du contenu de son ~/bin (cf http://xmltwig.com/report/yapc_na_2003.html#everyday%20damian ) vu que je me suis decide a automatiser un certain nombre de process, dont le rsync du site. Je devrais donc etre plus motive pour le faire a l'avenir ;--) Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Tue Jul 29 10:27:42 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] [ppm] YAPC::Europe::2003 (1) (fwd) Message-ID: Salut, Je vous transmet quelques compte-rendus de YAPC, si vous avez des problemes d'encodages dites le moi, ca se melange alegrement chez moi. ---------- Forwarded message ---------- Date: Mon, 28 Jul 2003 18:08:58 +0200 From: "[ISO-8859-1] Sébastien Aperghis-Tramoni" To: Paris.pm Subject: [ppm] YAPC::Europe::2003 (1) Mercredi 23 juillet * Nicholas Clark - When Perl is not quite fast enought Nicholas Clark est un type très marrant : il arrive avec un sourire jusqu'au oreilles et un sombrero mexicain et ne départira pas ni de l'un ni de l'autre durant les trois jours de YAPC. Son talk est consacré aux techniques d'optimisations de Perl. Les premières méthodes sont évidemment d'utiliser XS et/ou Inline. Il conseille aussi de recompiler son Perl avec plus de flags d'optimisation (genre -O2 ou -Os, ainsi que les flags d'archi -march=YOURCPU) et moins de flags de debug (-g et les defines de debug). Autre possibilité, utiliser une autre version de Perl, plus ancienne ou plus récente suivant les fonctionnalités dont on a besoin et la vitesse constatée. Il rappelle que l'ajout d'optimisations ne doit évidemment pas casser le code existant ou introduire de nouveaux bugs, donc use Test, et mettre en place des tests de régression avancés. Il parle ensuite de techniques d'optimisations : comment trouver *quoi* optimiser. Il conseille pour cela Devel::DProf et Devel::SmallProf qui permettent respectivement de faire du profiling de manière globale ou ligne par ligne. Il conseille de tricher avec Devell::DProf en découpant une grosse fonction comportant plusieurs boucles imbriquées en autant de sous-fonctions (en partant des boucles extérieures vers les boucles intérieures). Il conseille ensuite d'utiliser Benchmark pour tester les différentes versions d'un même code pour vérifier de manière expérimentale laquelle est la plus rapide car l'intuition peut souvent s'avérer trompeuse (tr/// est souvent plus rapide qu'on ne le croit par exemple). Il montre ensuite comment on peut voir l'arbre des instructions généré par Perl (-MO=Terse) et fait remarquer le coût des boucles. "Loops are bad". Il montre sur un exemple comment remplacer une boucle basée sur un while et des regexp par pack(). Quelques trucs en vrac : - il montre Devel::Size pour voir la taille mémoire des objets - il conseille d'utiliser des constructions comme /\G.../gc pour les regexps - il rappelle l'emploi d'AutoLoader et d'AutoSplit Il parle maintenant de l'importation et rappelle que c'est un mécanisme intrinsèquement lent puisque Exporter est écrit en Perl et utilise eval "". Il conseille donc (côté module) de ne pas coder de grosses listes @EXPORT et (côté utilisation d'un module) de n'importer que ce qu'on utilise. Il donne un exemple avec POSIX. Conseil intéressant : il montre comment utiliser Memoize pour stocker le résultat d'une fonction. Évidemment, c'est à réserver pour les fonctions dont le calcul et non-trivial (et plutôt du type calculatoire; de fait il donne un exemple avec une fonction de Fibonacci). Il indique que le cache peut même être stockée sur disque. Quelques techniques générales d'optimisations : - éviter les constructions de chaînes de caractères - mettre le maximum de choses en dehors des boucles - écrire les petites fonctions en ligne - l'utilisation de sentinelles permet d'économiser certains tests (grand classique) - trier moins de données; il donne un exemple où il transforme grep /machin/ sort @list en sort grep /machin/ @list Sur l'utilisation des hashes, il conseille de vérifier la qualité des clés de hashes, et éventuellement de les rendre plus courtes avec pack(). Pour la transmission de données entre processus Perl il rappelle qu'il est idiot de parser les données en Perl et conseille d'utiliser Data::Dumper et eval ou Storable. Je crois qu'il y a eu une référence à Acme::Buffy pendant ce talk :-) * Mark-Jason Dominus - Tricks of the Wizards Je ne vais pas détailler son talk puisqu'il est disponible sur son site web et que de plus il l'a écourté pour faire son talk Twelve Views, qu'il avait fait à YAPC::Israel. * Mark-Jason Dominus - Twelve Views Les slides de ce talk étaient aussi sur son site web mais je n'arrive pas à retrouver où. Comme je les avais déjà lus je n'ai pas pris de notes. Dans ce talk, MJD nous parle de 12 points divers et variés sans rapport particulier entre eux voire même sans rapport direct avec Perl. 1. The coolest Perl project I ever did MJD nous explique comment pour un projet il a écrit un programme qui générait toutes les permutations possibles d'un objet composé de triangles. Il avait obtenu 63 configurations différentes. Il nous montre le résultat et nous met au défi de trouver lequel est en double. Il explique ensuite comment il a conquis le coeur de sa bien-aimée grâce à ça. 2. On forking and 'unnecessary' shell calls MJD décide maintenant de râler un peu contre les gens qui disent qu'utiliser system() ou les backtips c'est mal parce que ça prendrait trop d'instructions. Il fait remarquer que certaines choses sont plus compliquées à programmer en pur Perl qu'avec quelques commandes shell bien utilisées. Il rappelle que Perl est un langage de glu et qu'un programme simple et lisible est préférable (et moins sujet à erreur). 3. Should I release a new version every month? MJD décide maintenant de râler contre ceux qui lui écrivent en lui demandant s'il a abandonné Text::Template parce qu'il n'y a pas eu de version dans les N derniers mois. Il se demande pourquoi les gens ne semblent pas comprendre qu'il ne fait pas de nouvelle version parce que ce module est parfait. Il indique le coupable de ce lamentable état d'esprit : Microsoft (le public est en délire). 4. The failure of subclassing on CPAN Il s'interroge sur la raison qui expliquerait la répugnance des programmeurs à créer des sous-classes des modules disponibles sur le CPAN. Il prend là encore comme exemple Text::Template. Beaucoup de personnes lui demande de rajouter telle ou telle fonctionnalité et lui répond que ce serait tout aussi simple pour eux de créer une sous-classe de T::T et d'ajouter la ou les fonctionnalités qu'ils veulent. Il suppose que cette répugnance provient d'une lacune dans la documentation : il faudrait que les auteurs de modules/classes indiquent une API qui devrait rester stable au fil des versions, afin d'établir un genre de contrat moral avec les programmeurs. 5. Why I Hate strict MJD râle maintenant (il râle beaucoup dans ce talk ;-) contre les gens qui disent aux newbies de mettre use strict sans leur expliquer ce que cela signifie. 6. How not to ask for help from strangers Il explique comment il a reçu des mails curieux, comme un étudiant allemand devant écrire un mémoire et lui envoyant un mail du genre "pourriez-vous m'envoyer des informations sur votre système légal aux USA. C'est très pressé car je dois terminer pour dans 2 moins. Merci". Il se contient avec peine tellement c'est burlesque. Une note amusante : il se rend compte au milieu de sa présentation qu'il a oublié de copier certains des fichiers et se prend des 404. Il cherche un peu, puis réclame un portable avec la connexion réseau qui marche. Un type avec un portable sous Win se propose, mais son réseau ne marche pas. MJD déclare forfait et passe au point suivant. 7. How to progress Le conseil de MJD pour devenir meilleur (que les autres bien sûr) : lire les livres que les autres ne lisent pas, et lire les sources. ce dernier terme doit se prendre au sens général car ce conseil s'applique dans tous les domaines, tant littéraire que philosophique, religieux, ou éventuellement informatique. Dans ses slides je me souviens qu'il donnait comme exemple qu'au lieu de lire les commentaires d'un type qui parle d'Einstein, il vaut mieux lire Einstein directement. 8. Don't give up just because it's NP-complete MJD explique la théorie de la complexité. J'ai pas trop suivi car j'ai déjà bouffé pas mal d'articles sur P/NP/coNP/RP/coRP et autres dans le TGV. 9. On giving a man a fish Il explique en quoi il trouve que l'attitude des gens qui répondent aux questions des newbies par un RTFM (ou par la version à peine déguisée "perldoc perlfunc") est négative. Son conseil : donner la réponse et indiquer où trouver des informations complémentaires. 10. Why Lisp will never win Heu, je confesse : je ne me souviens plus de ce qu'il a dit contre Lisp. (Ou alors c'est qu'il avait sauté cette partie.) 11. A message for the Aliens MJD veut nous montrer un truc amusant qu'il a trouvé sur le web : un type qui a réalisé plusieurs parodies du message envoyé en 1974 vers l'amas globulaire M13 depuis le radio-téléscope d'Arecibo. (On peut trouver une version expliquée du message originel à cette URL , où il y a aussi une "réponse" ;-) Il montre plusieurs des dessins (qui sont très drôles) et commence à discuter le plus sérieusement du monde des fautes d'orthographes et de représentation des dessins. Le public est mort de rire. Là encore lorsqu'il veut cliquer sur un des dessins MJD se rend compte qu'il ne l'a lui non plus pas copié. Il réclame encore une fois un portable. Quelqu'un lui donne un portable sous GNU/Linux. Ca marche ! Tonnerre d'applaudissements ! MJD se connecte sur site et après avoir tapé un mot de passe trouve enfin les fichiers qui lui faisaient défaut. Il affiche l'image qu'il propose d'envoyer aux extraterrestres. Re-tonnerre d'applaudissements. 12. What are "strongly typed" languages? MJD se demande ce qu'est un langage "fortement typé". Il montre les résultats de ses recherches sur le net qui donnent à peu près ça : - "Ada est fortement typé, C ne l'est pas" - "C et Pascal sont fortement typés" - "les langages fortement typés comme C ..." - etc En bref, personne ne sait ce que c'est mais beaucoup de monde croit dur comme fer à sa propre définition. Sébastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] - Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html From mirod at xmltwig.com Tue Jul 29 10:28:07 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] [ppm] YAPC::Europe::2003 (2) (fwd) Message-ID: Michel Rodriguez Perl & XML http://www.xmltwig.com ---------- Forwarded message ---------- Date: Tue, 29 Jul 2003 02:24:27 +0200 From: "[ISO-8859-1] Sébastien Aperghis-Tramoni" To: Paris.pm Subject: [ppm] YAPC::Europe::2003 (2) Jeudi 24 juillet * Robin Berjon - Introducing PerlSAX Robin nous expose dans ce talk l'intérêt d'utiliser l'API SAX par rapport à DOM. Il commence en expliquant que les APIs basées sur les arbres sont bien, car contrairement à DOM elles ne nécessitent pas de tout charger en mémoire. Il oppose ainsi les APIs "push" (SAX) aux APIs "pull" (DOM) en indiquant que le contrôle que le programmeur croît conserver par l'utilisation d'une API pull (où le programmeur va extraire les données) est une illusion. Dans le cas d'une API push, les données sont fournies au programme au fur et à mesure de la lecture du document XML, qui ne voit donc ces données que par fragments. On parle alors plutôt de filtre. L'intérêt est qu'on peut alors facilement chaîner plusieurs filtres les uns à la suite des autres, comme on peut chaîner des commandes Unix dans un pipe (ça c'est la comparaison qui m'a permit de comprendre le fonctionnement général, c'était bien vu Robin). Le gros avantage de cette programmation événementielle est qu'un filtre est plus facile à écrire car on peut ne conserver que la partie qui nous intéresse, en laissant tomber le reste. Reste qui pourra être traité par le filtre suivant. Robin présente ensuite XML::SAX::ParserFactory qui permet de sélectionner automatiquement le "meilleur" parser SAX disponible sur le système, avec en dernier recours un parser en pur Perl. Pour comparer, c'est un peu comme si on pouvait faire du DBI sans devoir indiquer le driver de base de données. Il présente enfin XML::SAX::Machines, qui est un module comprenant quelques filtres bien utiles comme les étonnants XML::Filter::Tee et XML::Filter::Merger qui permettent respectivement d'envoyer des événements SAX à plusieurs processeurs et de fusionner plusieurs flux SAX en un seul ! * Uri Guttman - Better Perl code in 65 minutes Ce talk consiste principalement en un ensemble de règles de bon sens de développement. Le code doit être écrit pour le mainteneur, car c'est le mainteneur (que ce soit soi-même ou une autre personne) qui devra relire le code six mois plus tard pour corriger d'éventuels bugs ou ajouter des fonctionnalités. En conséquence, Uri recommande de nommer les choses (variables, fonctions, objets, etc) de manière appropriée, de sorte que ce soit compréhensible. Éviter donc les $foo, @bar et autres $pipo{$machin}. Il donne aussi le conseil suivant sur les commentaires : les commentaires doivent indiquer *pourquoi* le code fait telle ou telle chose. Écrire $a += 1; # add 1 to $a est inutile et ne sert à rien. Il indique aussi que programmer du code spaghetti aboutit à la confusion et recommande donc de programmer du code lasagnes ! En effet le code est organisé en couches réalisant des fonctionnalités spécifiques et communiquant par des interfaces. En résumé : - Code is for People, not for Computers - Code is for Others, not for Yourself - Code is What, Comments are Why Uri présente ensuite quelques exemples autour des contextes d'exécution. Il fait un rappel sur wantarray et montre qu'outre les contextes scalaire et de liste, elle renvoie aussi undef en contexte vide. Il conseille d'utilise Want.pm, qui offre plus de possibilité que wantarray. Il y a aussi toute une discussion autour de l'utilisation des here- documents. Uri essaye de convaincre quelqu'un dans le public qui pense que les here-docs c'est pas bien que, oui, les here-docs c'est bien. * Peter Sergeant - Virus detection with Perl Ce talk est comme son nom l'indique consacré à la détection de virus en Perl. Il présente d'abord File::Scan, un module qui permet de scanner les fichiers et d'y détecter d'éventuels virus. Pour Peter, le module est sympa mais est insuffisant en production puisque les signatures de virus ne sont disponibles qu'une ou deux semaines après la publication de ces signatures chez les éditeurs commerciaux. Et évidemment il ne dispose pas d'un support commercial. Il présente ensuite SAVI qui est un module s'interfaçant avec le logiciel Sophos Antivirus via la bibliothèque libsavi. L'intérêt est que Sophos est disponible gratuitement en version d'évaluation pour une large variété de systèmes (Windows, Unix, Linux, Mac, VMS, etc). Si on achète la version complète on dispose alors d'un support commercial. (Néanmoins je connais des personnes qui refusent d'utiliser Sophos parce que le PDG de cette boîte serait un scientologue). Il explique ensuite les méthode de base pour écrire son propre anti-virus pour emails en exposant les principaux mécanismes de fonctionnement de ces virus. En effet les virus de mails sont pour la plupart basés sur l'exploitation de failles dans les logiciels. Bien que les virus doivent forger des mails semblant valides, ils contiennent nécessairement l'exploit en clair dans le corps de l'email, qu'on peut donc intercepter grâce à Perl. A vrai dire ce talk était un peu décevant car il a juste présenté des techniques assez générales, connues depuis longtemps et sans montrer d'exemple en Perl. * Marty Pauley - Test-driven Perl development Marty nous présente en trois slides une méthodologie de développement basée sur le système suivant : *avant* d'écrire le code, quand on sait ce qu'il doit faire, on écrit les tests correspondants, seulement *ensuite* on écrit effectivement le code, et on exécute make test pour vérifier que cela fonctionne. Le principe est donc que les tests constituent le design fonctionnel du code. L'écriture du programme est terminée quand tous les tests réussissent. * Philip Newton - Building an RFC 1086 simulator using ithreads Dans ce talk Philip nous expose un cas d'utilisation de Perl comme simulateur de RFC 1086. Il explique d'abord ce que c'est : une passerelle TCP/IP - X.25. Sa boîte avait un logiciel en C++ qui marchait au-dessus de X.25 et qui envisageait d'utiliser un système de ce genre. Pour tester quels changement il aurait à effectuer dans le code C++, il a décidé d'écrire ce simulateur. La difficulté résidait dans le fait qu'il devait gérer trois connexions simultanément. _____________ _______________ | | <------------------ | <--\ /--> | | | incoming data | \ / | | X.25 based | | (X) | | application | ------------------> | / \ | | | control connection | <--/ \--> | | | | TCP-IP / X.25 | | | ------------------> | gateway | |_____________| outgoing data |_______________| Il a alors décidé d'utiliser les threads de Perl 5.6, et montre quelques unes des fonctionnalités offertes par Perl. Il montre d'abord comment on peut partager des données (ici des variables) entre threads grâce à threads::shared : use threads::shared; my $data : share; Il montre ensuite comment créer une queue "thread-safe" avec Thread::Queue : on peut ainsi ajouter des données dans cette queue depuis un thread et en lire depuis un autre : use Thread::Queue; my $queue = new Thread::Queue; # thread A: $queue->enqueue("hello the world"); # thread B: print $queue->dequeue; Il montre enfin comment créer un sémaphore avec Thread::Semaphore. use Thread::Semaphore; my $sem = new Thread::Semaphore; # create threads... $sem->down; # do stuff.... $sem->up; Il conclue enfin en expliquant que son simulateur n'a servi à rien car sa boîte a finalement décidé d'utiliser une autre solution, mais il était content car il avait pu découvrir les threads en Perl. * Paul Johnson - Code coverage - Tales from the trenches Ce talk est destiné à nous présenter le module Devel::Cover, dont le but est de déterminer de manière pratique la couverture de code. La couverture d'un code est la partie du code qui est exécutée au cours d'un ensemble d'instances d'exécution. En clair, ce module permet de vérifier si le code contient des parties mortes ainsi que de vérifier quelles sont les parties les plus exécutées (utile pour déterminer quelles sont les parties à optimiser). Cela ressemble donc un peu à Devel::DProf mais en utilisant un système de profilage différent (basé sur la surcharge des ops de l'interpréteur Perl) et surtout en fournissant en sortie un rapport en HTML permettant de suivre l'exécution du code par ligne, par branche et par boucle. L'utilisation de Devel::Cover est aussi simple que ça : $ perl -MDevel::Cover program.pl $ cover -report html Un aspect dommage est que Paul a tendance à traîner en longueur sur son exemple alors que plusieurs personnes (dont moi-même et Arnaud) trépignent d'impatience en se demandant s'il va montrer le Makefile.PL permettant de lancer un make test avec Devel::Cover (ce qui constitue une technique fabuleuse pour vérifier que les tests font s'exécuter tout ou partie du code). Il s'excuse en disant qu'on lui avait déjà posé la question à Munich, qu'il n'avait pas pu la fournir et que là il avait oublié ce qu'il fallait ajouter à Makefile.PL pour avoir "make cover". Il parle après de CPANCover, un projet dérivé de ça qui consiste à exécuter un make cover sur tous les modules du CPAN. * Jos Boumans - 20 things you may not know about Perl Pour certaines raisons, ce talk a attiré beaucoup de personnes qui, venant en avance, ont débarqué dans celui de Guillaume Rousse "Yet another Perl biology toolkit". Désolé Guillaume. Jos a en effet présenté vingt modules (ou pseudo-modules) en prenant comme thème de présentation le Seigneur des Anneaux : Neuf furent donnés aux Hommes mortels, Sept aux Nains avides d'or, Trois furent protégés par les Elfes, Et l'Unique, le Maître Anneau, forgé par Sauron. Les modules n'ont en réalité pas grand-chose à voir avec les Elfes ou les Anneaux, mais l'idée est amusante et surtout Jos était un bon orateur. Sur tous les modules qu'il a présenté au pas de charge, je n'en ai retenu que quelques uns : - Devel::Peek qui permet de voir les structures internes de l'interpréteur Perl; - File::Chdir qui permet de gérer automatiquement le répertoire courant; - Config::Auto, un module de gestion de fichiers de configuration; - Hook::Scope qui permet d'avoir l'équivalent de BEGIN et END mais au niveau scope (c'est-à-dire au niveau des blocs); - Hook::LexWrap, un module de Damian Conway qui fait quelque chose de similaire mais au niveau des fonctions si j'ai bien compris; - Scalar::Utils qui permet de stocker plusieurs valeurs différentes (un entier ET une chaîne) dans une même variable; Je crois que dans ce talk aussi Nick Clark a réussi à parler de Acme::Buffy :-) Sébastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] - Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html From mirod at xmltwig.com Tue Jul 29 10:28:20 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Europe::2003 (1) (fwd) Message-ID: Michel Rodriguez Perl & XML http://www.xmltwig.com ---------- Forwarded message ---------- Date: Tue, 29 Jul 2003 11:03:57 +0200 From: "[ISO-8859-1] Sébastien Aperghis-Tramoni" To: Jean-Luc Pinardon Cc: Paris.pm Subject: Re: [ppm] YAPC::Europe::2003 (1) On mardi, juil 29, 2003, at 08:12 Europe/Paris, Jean-Luc Pinardon wrote: > Ma question concernait donc le talk consacré aux techniques > d'optimisations de Perl. > Y-a-t-il accessible quelque part en ligne une copie des support de > présentation correspondants ? Le cours de Nicholas Clark est disponible sur sa page web When Perl is not quite fast enough Note : je remets la liste en cc: car je pense que cette information intéressera plusieurs colistiers :-) Sébastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] - Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html From mirod at xmltwig.com Tue Jul 29 10:28:34 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] [ppm] my YAPC::Europe (Mercredi) (fwd) Message-ID: Michel Rodriguez Perl & XML http://www.xmltwig.com ---------- Forwarded message ---------- Date: Tue, 29 Jul 2003 14:12:40 +0200 From: Arnaud Arhuman ASSAD To: paris-pm-list@pm.org Subject: [ppm] my YAPC::Europe (Mercredi) Bonjour, Comme prommis mon compte rendu (vous devez commencer à en avoir marre non ?) Je peux continuer à parler des talks, mais peut être préférez vous entendre parler du coté "social" (tout ce qui est pas talks quoi :-) Arnaud. *************************************************** Pour mon premier talk j'ai longtemps hésité... Stas Beckman qui parle de mod_perl 2, Nicolas Clark qui explique comment optimiser la vitesse de Perl et Dominus qui doit parler des itérateurs. J'irai finalement écouter MJD, c'est pas tant le sujet (qui m'intéresse quand même) que l'orateur qui fera pencher la balance... MJD présente d'abord des itérateurs que nous utilisons constamment : Les descripteurs de fichiers (FileHandle), les fonctions readdir et each et enfin les objets DBI... Il explique alors leur intérêt : Gain de mémoire. Possibilité de reprendre un traitement sur un ensemble la ou on l'avait interrompu... Il donne plusieurs exemples dont un assez impressionnant sur la génération de séquence d'ADN et un sur le parcours de répertoire. Il donne plusieurs exemples d'implémentation possible : closure, objet... C'est bien beau tout ça, mais moi j'adore le traitement de liste, car j'adore chaîner les map et les greps, qu'a cela ne tienne il nous sort de son chapeau (en fait il l'a pas encore le fameux chapeau ;-) 'imap' et 'igrep' les fonctions 'map' et 'grep' pour itérateurs. Il explique ensuite comment en chaînant ces commandes on peut modifier simplement le comportement du programme : en ajoutant des fonctionnalités avec 'imap' et en ajoutant des filtres avec 'igrep' Que dire ? C'est...beau ! Un truc que je note aussi sec en haut de ma TODO list ! Il évoque aussi le problème des semi-prédicats (des fonctions dont la valeur fausse de Perl peut être dans les valeurs valides retournées) évoque plusieurs solution dont celle de retourner une référence vers la valeur (comme avec DBI) pour distinguer la valeur undef d'un retour indéfini (pas de résultat) bizarrement il parle pas de la méthode classique qui consiste à ne retourner qu'un code de retour (qui indique uniquement le succès et l'échec de la fonction) et a retourner le résultat par les paramètres (en passant une référence) a la façon du scanf du C. MJD maîtrise visiblement son sujet, il est clair et distille ça et là des astuces et des précisions techniques. C'est l'heure de manger et je quitte la salle avec les doigts qui me démangent (je veux coder !!!) et l'impression d'avoir passé une matinée profitable. 14h15 Je suis dans les starting blocks pour écouter MJD nous donner ses tours de magicien... Il commence par mettre un chapeau (bizarre, sans bord) nous expliquant que lorsqu'il donnait cette présentation au début, il précisait qu'il n'était pas lui-même un magicien (Wizard). Mais qu'un jour Larry lui a dit qu'il le considérait comme un de ses wizards, un de ses hauts-elfes pour être précis (MJD lui se voyait plutôt en nain, a concevoir ses chefs d'oeuvres dans son coin) et depuis : Il fait le talk avec un chapeau de Magicien (et la il nous sort un beau chapeau pointu...) La première partie pourrait s'intituler "Tout ce que vous avez voulu savoir sur les globs et même plus..." C'est bourré d'astuces ! On apprend plus sur Exporter, ou comment faire des alias à passer des descripteurs de fichiers (et surtout pourquoi il vaut mieux utiliser \* pour ça...) ou faire des fonctions qui encapsulent d'autres fonctions d'une manière transparente... Il nous présente les "Globjets" des objets qui sont des glob consacrés. (Je me souviens plus très bien la raison d'utiliser ces bestioles, je crois que le but est de disposer d'un filehandle lié à l'objet...) Suit une présentation d'AUTOLOAD, après la présentation des globs, on est en terrain connu. Il présente encore plusieurs astuces comme gérer tous les accesseurs des attributs d'un objet via une unique fonction AUTOLOAD (Ça j'y vais déjà pensé par moi même...) puis comment on peut encore améliorer la chose en utilisant la compilation dynamique (Et la y'a qu'un wizard pour penser à un truc comme ça ;-) je ne résiste pas au plaisir de vous montrer la chose : sub AUTOLOAD { # ... as before; set up $method ... my $code = q{ sub { my ($self) = @_; my $val = $self->{METHODNAME}; $self->{METHODNAME} = shift if @_; $val; } }; $code =~ s/METHODNAME/$method/g; *$AUTOLOAD = eval $code; goto &$AUTOLOAD; } Au passage il explique le "magic goto" ("goto &$AUTOLOAD") qui est au return ce que exec est à system. (en fait lors d'un "magic goto" la fonction appelée ne voit pas l'appelant intermédiaire (Rassurez vous MJD explique ça beaucoup mieux ;-)) Puis il parle de source Filter : Il faut utiliser Filter::Simple car pour une fois un module ::Simple est vraiment simple à utiliser, surtout par rapport à Filter::Util::Call (Je confirme, je me suis un peu amusé avec en écrivant Devel::StealthDebug, c'est simple et on peut faire des trucs vraiment bizarre...) Il donne un exemple pour coder un source avec Rot13. Il parle de tie (très bien expliqué dans "Programmation avancée en Perl", soit dit en passant) il parle aussi de Next.pm un module étrange qui analyse la hiérarchie d'héritage pour déterminer quelle fonction appeler (Mais la j'avoue que j'ai un peu décroché). Ce talk est en fait impossible a résumer : Il est dense, plaisant, clair (a la différence de ce résumé ;-) et bourré de détails/astuces/précisions techniques : Pourquoi %{$caller."::foo"} est différent de %{"$caller::foo"} :-) J'ai rien noté du talk suivant, mais il a été déjà bien décrit, alors je serai bref. * Les gars de la NASA ont envoyé un message inepte aux extra-terrestres (avec des typos, des erreurs de représentation sur les ondes sonores...) * MJD a séduit sa femme grace a un programme Perl (moi c'est grâce à mon sex-appeal ;-) * Promouvoir 'use strict' ne sert a rien si l'utilisateur ne comprend pas use 'strict' Il fait à ce sujet une remarque assez intéressante sur le fait que la raison la plus souvent invoquée pour promouvoir 'use strict' est que ça encourage les bonnes pratiques de programmation, ce à quoi MJD répond pensez vous vraiment que recopier dans son code des instructions qu'on ne comprends pas soit une bonne pratique ? Il a raison le bougre...) Note pour la prochaine yapc apprendre le touch-type ;-) - Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html From mirod at xmltwig.com Tue Jul 29 10:29:02 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] [ppm] YAPC::Europe::2003 (3) (fwd) Message-ID: Cui-la a l'air tres bizarre chez moi... ---------- Forwarded message ---------- Date: Tue, 29 Jul 2003 16:42:15 +0200 From: "[ISO-8859-1] Sébastien Aperghis-Tramoni" To: Paris.pm Subject: [ppm] YAPC::Europe::2003 (3) Vendredi 25 juillet * Dan Sugalski - Parrot in a nutshell Dan présente Parrot en commençant par expliquer en quoi l'interpréteur Perl5 actuel est un vrai merdier. En effet, Perl5 est le résultat de 9 ans de patches successifs pour ajouter un ensemble de fonctionnalités qui n'avaient pas été prévues au départ car cela n'existait pas à l'époque : on pense tout particulièrement au support des threads et d'Unicode. Des tas de personnes ont donc proposé des patches en disant "cela ne coûte qu'1% du temps d'exécution". Mais les patches étant acceptés, les pourcentages se sont additionnés pour ralentir de manière sensible l'interpréteur Perl. (Raison pour laquelle Nick Clark indiquait qu'un moyen potentiel d'accélérer un programme était d'utiliser une ancienne version de Perl.) Perl6 se base sur une machine virtuelle (VM) totalement nouvelle, Parrot. Cette machine virtuelle a été conçue en utilisant les dernières avancées en matière des techniques de VM, de théorie de compilation et de conception des CPUs (ces domaines étant liés). Le projet est ambitieux mais on espère ainsi que cette VM évoluera de manière plus douce sur la décade à venir. L'autre ambition de Parrot est que cette VM soit suffisamment générique pour servir de base d'exécution à d'autres langages comme Ruby ou Python. Dan expose ensuite la véritable raison qui l'a décidé à programmer Parrot : jouer à Zork nativement. (Si j'ai bien compris Zork était un jeu d'aventures en mode texte). En effet, Parrot supportera nativement bon nombre de fonctionnalités très intéressantes comme le support de bytecode portable (semblable à Java ou Python) et un garbage collector natif de bien meilleur qualité que celui de Perl5 (je crois avoir lu qu'il allait beaucoup ressembler à celui de Lisp). Ce qui nous amène à un point essentiel dans le développement de Parrot : le défi que Guido von Rossum a lancé à Dan Sugalski, à savoir que selon Guido, Parrot ne sera pas capable d'exécuter Python plus rapidement que CPython (l'interpréteur Python écrit en C) d'ici le prochain OScon. L'enjeu est le lancer de tarte à la figure du perdant, d'où l'orthographe spéciale de Python durant tous ces talks, "Pie-thon". Dan a expliqué qu'il a toutes les chances de se trouver du bon côté de la tarte car Parrot est ou sera bientôt capable de charger n'importe quel type de bytecode : Python, Zork et même Java ! * Leopold Tötsch - Of Ops and MOps Dans un anglais quelque peu hésitant, Leo nous explique les bases de la programmation en Parrot. On peut d'ores et déjà programmer en PASM, ou Parrot Assembler, qui est un assembleur (en fait c'est plutôt un macro-assembleur) dont la syntaxe semble assez facile. Lors de l'exécution, l'assembleur est convertit en PIR, Parrot Intermediate Representation Language, qui est ensuite exécuté. Leo présente ensuite quelques points qui permettent à Parrot d'être très rapide : - Parrot est une machine à registre, c'est-à-dire que tant la VM que le langage d'assembleur considère qu'on a beaucoup de registres disponibles, ce qui simplifie la vie du programmeur et est facile à optimiser en aval (par aliasing de registres par exemple). La VM ressemble donc à un processeur RISC (genre PowerPC ou Sparc) mais pas à un processeur Intel ou AMD. - les PMC (Parrot Magic Cookies) ont une taille de 32 octets (là je dois reconnaître qu'il m'a un peu embrouillé et je ne pas trop compris ses arguments, mais une comparaison avec les vrais CPUs indique qu'une taille fixe égale à un multiple entier de mots machine permet de se simplifier la vie lors des calculs d'adresses (là encore voir l'opposition entre les CPUs RISC et x86)). - DOD (Dead Object Detection) - COW (Copy-on-Write) est un mécanisme qui permet de retarder les opérations d'allocations mémoire au pus tard. L'exemple typique est : $foo = "hello world"; $bar = $foo; Habituellement, le contenu de $foo est copié dans un nouvel espace mémoire qui sera pointé par $bar. Avec COW, $bar pointe vers l'espace mémoire de $foo, et ce n'est que si on modifie la valeur de l'une ou l'autre des variables qu'une nouvel espace mémoire est créé. Cette fonctionnalité semblait particulièrement intéresser certaines personnes du public qui avait posé la question à MJD lors de son talk "Tricks of the Wizard". Le mécanisme sera par la suite mis en scène par Nick Clark lors de son lightning talk, comme l'a déjà décrit Mirod. Leo expose ensuite quelques uns des différents run cores disponibles dans Parrot. Si j'ai bien compris, les run cores sont les coeur d'exécution de Parrot, mais comme ils n'étaient pas sûr de savoir quel mécanisme serait le plus efficace, ils ont développé plusieurs run cores : Fast Core, Goto Core, Slow Core, et des combinaisons. Leo montre le Fast Core avec du code C : while(PC) { PC = ((INTERP->op_func_table)[*PC])(PC,INTERP); } Je crois que la majeure partie de la salle est restée dubitative face à ça... Leo explique ensuite que Parrot dispose d'un sous-système JIT (Just-In-Time) disponible pour plusieurs architectures (x86, PowerPC, Sparc, ARM, Alpha). Pour rappel, un système JIT (aussi dit de recompilation dynamique), permet de transformer le bytecode en code natif pour le CPU de la machine hôte. C'est ce qui permet à Java d'avoir des vitesses d'exécution à peu près acceptables. Leo nous montre le résultat d'un benchmark qu'il avait lancé au cours de son talk; c'est un truc calculatoire écrit en Perl et en Python. Les temps d'exécution sont lamentables, à peine 2 ops par seconde en Perl et 1 op par seconde en Python. "Times are rounded up!" précise Leo. Il exécute le même en Parrot : quelques secondes, soit presque 800 ops par secondes (son PowerBook tourne à 800 MHz..) Après cette démonstration, Leo conclut sur le système JIT en indiquant que comme a pu le constater, on peut arriver à exécuter jusqu'à 1 instruction Parrot par cycle CPU ! Évidemment, c'est surtout valable pour les instructions "simples" (ou du moins disponibles dans le CPU), mais c'est néanmoins assez impressionnant. Sa présentation terminée, quelqu'un dans le public demande à Leo de montrer qu'est-ce qu'il utilise pour ses "slides" (du texte affiché dans un terminal qui efface l'écran et défile quand il appuie sur une touche) : "Parrot of course!". Il montre le code assembleur Parrot qu'il a utilisé pour son talk, qui doit faire moins d'une cinquantaine de lignes. Nouvelle salve d'applaudissements. * Leon Brocard - Little languages in Parrot Le talk de Leon est consacré aux petits langages déjà disponibles au-dessus de Parrot. Il commence par expliquer ce qu'il entend par "petit langage". Sa définition est que c'est un langage spécialisé pour une tâche donnée dont la syntaxe est compacte jusqu'à la rendre complètement hermétique pour qui ne "parle" pas ce langage. En clair, un petit langage est "insane". Il donne des exemples pour montrer qu'on est entourés de petits langages : regexp, awk, sed, bc, nroff, pic... Il parle ensuite des langages qui ont été implémentés au-dessus de Parrot. o BrainFuck; il en parle un peu, montre un ou deux exemples et rappelle que c'est Jérôme Quelin qui a écrit l'implémentation (je ne dis pas de bêtises Jérôme ?) o Befunge; il explique que c'est un langage très particulier car il est basé sur un espace de @$#%?X&!! (j'ai pas retenu les noms mais on aurait aussi bien pu me dire que c'était un espace pré- hilbertien, pour moi c'est juste un espace à topologie torique), ce qui en fait donc un langage bidimensionnel : les instructions sont des instructions de directions qui indiquent où on doit aller pour continuer l'exécution. Leon montre un exemple et explique à l'assemblée comment il s'exécute. Celle-ci est un chouia morte de rire :-) Bon, je laisse à Jérôme le soin de compléter et corriger tout ce qui concerne ces deux langages car je n'ai toujours pas compris à quoi ça sert :-) Quelqu'un demande si on peut exécuter deux instances sur un même "source" pour faire un bot-war. Leon répond que non car c'est compliqué mais pas impossible. Il précise que Jérôme est là encore le responsable de l'implémentation de ce langage. o BASIC; car oui, Parrot est capable d'exécuter le GW-BASIC et le QuickBASIC 4.5 de Microsoft. Leon ne montre pas d'exemple mais assure que ça marche. o Lua, qui est un autre langage de script. * Marty Pauley - Perl6 ideas stolen from Japanese Marty commence par nous dire ãŠæ—©ã†ã”ã–ã„ã¾ã™ [ohayô gozaimasu], c'est-à-dire "bonjour" ^_^ Le titre de son talk est æ··åˆèªž. Par bonté d'âme il nous donne l'écriture en furigana ã“ã‚“ã”ã†ã” [kongôgo] et explique le sens de ce mot : il désigne la création d'un nouveau langage par mélange et contamination de deux ou plusieurs autres langages. Selon lui, c'est l'idée fondamentale derrière Perl6. Il explique que Matz (diminutif de Yukihiro Matsumoto) voulait créer le meilleur langage de programmation. Il a donc volé un grand nombre de fonctionnalités à Perl afin d'écrire Ruby. Marty insiste (comme avant lui Dan Sugalski) que Perl6 a démarré dans le but de contrecarrer le concurrence que Ruby risquait de faire à Perl. Larry a d'ailleurs déclaré à plusieurs reprises l'admiration qu'il a envers Ruby. Mais cette admiration ne l'a pas empêché de chercher un moyen de renouveler Perl afin qu'il reste supérieur à Ruby (et évidemment à Python...). La première solution a été de voler à Ruby les fonctionnalités qui risquait d'attirer les programmeurs : - -> s'écrit maintenant . - tout chose est un objet - support des coroutines et des continuations Mais cela signifiait malgré tout rester derrière Ruby en terme d'innovation, ce qui aurait été insuffisant. Larry a donc décidé de voler les fonctionnalités de la langue maternelle de Matz, le japonais, grâce à ses talents de linguiste. Marty commence alors à étayer sa théorie en montrant que Larry a commencé à apprendre le japonais il y a deux ans, peu de temps avant de lancer le projet Perl6. On sait aussi que Larry a fait quelques voyages au Japon et qu'il chante la musique de Totoro ! Par ailleurs Simon Cozens parle couramment japonais et Marty ajoute que plusieurs hackers de Perl6 sont en train d'apprendre le japonais ou du moins de s'y intéresser de près. Il apporte comme preuve le fait qu'on puisse dès maintenant écrire du Perl en japonais dans le source (depuis 5.8 et le support d'Unicode) : my $å° = "ãŠæ—©ã†"; print $å°, "ヲルヅ"; Vous aurez reconnu (!) le code : my $foo = "ohayô"; print $foo, "world"; (ok, je sors... :-) Marty essaye ensuite de nous présenter les fonctionnalités du japonais que Larry a décidé de reprendre pour Perl6 comme la concision et l'utilisation intensive du contexte. Pour nous convaincre il fait répéter à la salle des phrases en japonais : "les deux canards sont dans le jardin", puis "le crocodile a mangé les deux canards dans le jardin". Puis il nous raconte quelques anecdotes de son périple en tant que 外人 [gaijin] au Japon où il s'est laissé abusé par la notion de contexte différente de la notre. Enfin il conclut en nous recommandant de faire une recherche sur le web sur "Larry Wall" et "Japanese" et de prendre peur. Peut-être fait-il allusion à l'un de ces articles ? Larry Wall sur la religion quantique (2002.09.10) Interview de Larry sur /. Où Larry admet être un otaku (et chante Totoro) (2001.01.17) Larry sur la culture postmoderne de Perl (1999.05.01) * Dan Sugalski - The state of Parrot Je n'ai pas pris de notes pour ce talk mais Dan nous a en gros exposé l'état actuel de Parrot, ce qui marche, ce qui ne marche pas. Il est globalement content et reste de toute façon motivé pour avancer rapidement car 1) il veut jouer à Zork, 2) il veut lancer la tarte sur Guido (et pas l'inverse) ! * Arthur Bergman - Ponie: when the old camel rides the Parrot Mirod a déjà mieux résumé que ce que je pourrait en dire car je n'ai pas non plus pris de notes pour ce talk. * Greg McCarroll - Why I am not giving a talk this year Greg nous explique pourquoi il n'a pas voulu faire de talk cette année : il faut choisir un sujet, c'est compliqué, il n'arrive pas à se décider de quoi parler, et même quand il sait de quoi parler il faut qu'il prépare le talk mais alors il n'arrive pas à se concentrer et doit quitter son ordinateur (malheur !). Il a donc décidé de nous parler de trucs cools qu'il a découvert. Jabber - Il aime bien Jabber car il peut s'envoyer des messages instantanés ou des messages à durée de vie plus longue pour savoir s'il a du mail ou monitorer d'autres trucs. CVS - Il a découvert qu'on pouvait ajouter des trucs dans un serveur CVS pour qu'il envoie des mails automatiquement quand quelqu'un committe quelque chose, et a découvert encore mieux : comment envoyer des messages Jabber lors d'un commit; comme ça sa boîte aux lettres n'est pas remplies de mails dont il n'a que faire mais il est quand même averti quand quelqu'un a touché au code pendant qu'il s'est absenté. Il parle encore de quelques autres trucs (désolé, j'ai pas pris de notes là non plus) puis on lui annonce que son temps est écoulé et il est surpris d'avoir terminé son talk qui n'en était pas un. Mirod a assez bien résumé les lightning talks et la vente aux enchères, même s'il semble très partial vis-à-vis des Mac :-) À ce propos, le vi de Mac OS X est un authentique vi BSD, tandis que le vi qu'on trouve sur la plupart des distributions GNU/Linux est en réalité Vim. De fait : - sur Mac OS X 10.2.6 : Version 1.79 (10/23/96) The CSRG, University of California, Berkeley - sur Mandrake GNU/Linux 9.0 : VIM - Vi IMproved 6.1.302 La Debian est une des rares distro (la seule ?) à utiliser un autre éditeur que Vim comme commande vi, à savoir Nvi, qui est un clone "bug-for-bug compatible" du vi BSD. ^_^ Sébastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] - Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html From mirod at xmltwig.com Tue Jul 29 15:14:05 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Europe::2003 (3) (fwd) Message-ID: Encore un mail, avec des precisions sur Parrot Michel Rodriguez Perl & XML http://www.xmltwig.com ---------- Forwarded message ---------- Date: Tue, 29 Jul 2003 21:36:03 +0200 From: "[iso-8859-1] Stéphane Payrard" To: Paris.pm Subject: Re: [ppm] YAPC::Europe::2003 (3) On Tue, Jul 29, 2003 at 04:42:15PM +0200, Sébastien Aperghis-Tramoni wrote: > Vendredi 25 juillet Quel corrections et amplifications. > > * Dan Sugalski - Parrot in a nutshell > Dan présente Parrot en commençant par expliquer en quoi > l'interpréteur Perl5 actuel est un vrai merdier. En effet, Perl5 > est le résultat de 9 ans de patches successifs pour ajouter un > ensemble de fonctionnalités qui n'avaient pas été prévues au > départ car cela n'existait pas à l'époque : on pense tout > particulièrement au support des threads et d'Unicode. > > Des tas de personnes ont donc proposé des patches en disant > "cela ne coûte qu'1% du temps d'exécution". Mais les patches > étant acceptés, les pourcentages se sont additionnés pour > ralentir de manière sensible l'interpréteur Perl. (Raison pour > laquelle Nick Clark indiquait qu'un moyen potentiel d'accélérer > un programme était d'utiliser une ancienne version de Perl.) > > Perl6 se base sur une machine virtuelle (VM) totalement nouvelle, > Parrot. Cette machine virtuelle a été conçue en utilisant les > dernières avancées en matière des techniques de VM, de > théorie de compilation et de conception des CPUs (ces domaines > étant liés). Le projet est ambitieux mais on espère ainsi que > cette VM évoluera de manière plus douce sur la décade à venir. [snip] > > > * Leopold Tötsch - Of Ops and MOps > Dans un anglais quelque peu hésitant, Leo nous explique les > bases de la programmation en Parrot. > > On peut d'ores et déjà programmer en PASM, ou Parrot > Assembler, qui est un assembleur (en fait c'est plutôt un > macro-assembleur) dont la syntaxe semble assez facile. > Lors de l'exécution, l'assembleur est convertit en PIR, > Parrot Intermediate Representation Language, qui est > ensuite exécuté. --> génération exécutable Langage de haut niveaux --> PIR --> PASM --> PBC --> NRJIT ----> interprétation/exécution --------------> NRJIT est l'acronyme que j'invente pour Not Really JIT En fait les formats sont les suivants: PIR: Parrot Intermediate Representation Language. C'est un assembleur à base de registres typés qui gère aussi les espaces de noms. Les registres sont de types: entiers, numériques, chaînes et PMC, pour Perl Magic Cookie. PIR propose un nombre illimitée de registre appelés registres symboliques. IMMC (Intermediate Code Compiler for Parrot, maitenant une passe de Parrot) transcrit ça en PASM en passant de la fiction du nombre illimité de registres à la "réalité" de nombre effectif de registre faisant l'allocation avec un algorithme à base de couleurs qui représentent les registres réels. A un instant donné, deux registres symbolique ne peuvet être affecté au même registre réel donc ne peuvent pas avoir la même couleur. Quand il y a trop de registres symboliques, PIR génère des instructions PASM de gestion de débordement dans un tableau pointé par un registre à cet effet. PASM: PASM est le vériable macro-assembleur de Parrot au sens qu'une fois les macros expansées il y une bijection entre les instructions PASM et les instructions binaires de bytecode générées. Mais maitenant que IMCC est opérationnel, il n'y a aucune raison de travailler à ce niveau. Sauf quand on débugge avec pdb, le parrot debugger. PBC: Parrot Bytcode. Format portable. Il est mappé (mmmap() en mémoire après quelque retouches (dont l'endianness) et génération de code natif pour les opcodes supportable/és dans une architecture donné. Différentes instances de parrot utilisant le un-core du même type du même PBC devraient partager le BPC mappé en mémoire. Je sais pas si c'est vrai aujourd'hui. > > Leo présente ensuite quelques points qui permettent à Parrot > d'être très rapide : > > - Parrot est une machine à registre, c'est-à-dire que tant la VM > que le langage d'assembleur considère qu'on a beaucoup de > registres disponibles, ce qui simplifie la vie du programmeur et > est facile à optimiser en aval (par aliasing de registres par > exemple). La VM ressemble donc à un processeur RISC (genre > PowerPC ou Sparc) mais pas à un processeur Intel ou AMD. > > - les PMC (Parrot Magic Cookies) ont une taille de 32 octets > (là je dois reconnaître qu'il m'a un peu embrouillé et je ne > pas trop compris ses arguments, mais une comparaison avec > les vrais CPUs indique qu'une taille fixe égale à un multiple > entier de mots machine permet de se simplifier la vie lors des > calculs d'adresses (là encore voir l'opposition entre les CPUs > RISC et x86)). Plus que de calcul d'adresses en soi avec les contraintes d'alignement que cela suposse, il s'agit surtout d'optimisations pour le DOD et le GC qui n'ont pas encore l'imprimatur de Dan. DOD et GC acronymes de Garbage Gollection et Dead Object Detection. Pour les pros du GC, la distinction (que je n'ai pas comprise) n'est pas celle entre les deux passes "mark" et "sweep" Passer de la gestion de la mémoire type comptage de référence (Perl5) à celui d'un véritable ramassage de miettes a l'effet souhaité une optimisation optimals des caches. Pour ce faire, Leo casse les PMCs en deux parties. Les premières parties des PMC sont allouées dans la même zone, ce qui fait que le GC utilise mieux les caches du processeur (réel). Mais le coût à payer est une indirection supplémentaire pour accéder les données allouées par le PMC. Le choix est délicat (couramment implémenté par un #ifdef) car il ne faut pas optimiser indûment le collecteur au détriment du mutateur. Ce dernier étant dans la terminologie GC le programme de l'utilisateur avec sa sale propension à tout changer dans le dos du collecteur. > > - DOD (Dead Object Detection) > > - COW (Copy-on-Write) est un mécanisme qui permet de retarder > les opérations d'allocations mémoire au pus tard. L'exemple > typique est : > $foo = "hello world"; > $bar = $foo; > Habituellement, le contenu de $foo est copié dans un nouvel > espace mémoire qui sera pointé par $bar. Avec COW, $bar > pointe vers l'espace mémoire de $foo, et ce n'est que si on > modifie la valeur de l'une ou l'autre des variables qu'une > nouvel espace mémoire est créé. C'est encore plus fort que ça, puisque ça marche aussi pour les substrings, les tableaux et sous tableaux. Presque tout est à base de listes de "morceaux" chaînés sujets à COW. Outre le COW, cela permet de faire des insertions et effacements au milieu d'un tableau sans avoir à décaler le reste du tableau dans la mémoire. Je crois que le contenu d'une chaîne est (encore) en un morceau. Tout est à base de COW dans Parrot. Le COW est absolument nécessaire pour la gestion des continuations qui sont des contextes d'exécution. Ils sont amenés à diverger et l'implémentatin en terme de COW permet de les faire diverger morceau par morceau au lieu de copier entièrement les contextes ou gérer la divergence à la main. Toutes ces optimisations ne sont pas nouvelles mais n'ont guère été utilisées jusqu'ici que dans les mondes lisp et assimilés. > Cette fonctionnalité semblait particulièrement intéresser > certaines personnes du public qui avait posé la question à > MJD lors de son talk "Tricks of the Wizard". Le mécanisme > sera par la suite mis en scène par Nick Clark lors de son > lightning talk, comme l'a déjà décrit Mirod. > > Leo expose ensuite quelques uns des différents run cores > disponibles dans Parrot. Si j'ai bien compris, les run cores sont > les coeur d'exécution de Parrot, mais comme ils n'étaient pas sûr > de savoir quel mécanisme serait le plus efficace, ils ont développé > plusieurs run cores : Fast Core, Goto Core, Slow Core, et des > combinaisons. Leo montre le Fast Core avec du code C : > while(PC) { > PC = ((INTERP->op_func_table)[*PC])(PC,INTERP); > } > Je crois que la majeure partie de la salle est restée dubitative > face à ça... Je suis largué sur ce coup là. > > Leo explique ensuite que Parrot dispose d'un sous-système JIT > (Just-In-Time) disponible pour plusieurs architectures (x86, > PowerPC, Sparc, ARM, Alpha). > Pour rappel, un système JIT (aussi dit de recompilation > dynamique), permet de transformer le bytecode en code > natif pour le CPU de la machine hôte. C'est ce qui permet > à Java d'avoir des vitesses d'exécution à peu près acceptables. > Leo nous montre le résultat d'un benchmark qu'il avait lancé au > cours de son talk; c'est un truc calculatoire écrit en Perl et en > Python. Les temps d'exécution sont lamentables, à peine 2 ops > par seconde en Perl et 1 op par seconde en Python. "Times are > rounded up!" précise Leo. Il exécute le même en Parrot : quelques > secondes, soit presque 800 ops par secondes (son PowerBook > tourne à 800 MHz..) > > Après cette démonstration, Leo conclut sur le système JIT en > indiquant que comme a pu le constater, on peut arriver à exécuter > jusqu'à 1 instruction Parrot par cycle CPU ! Évidemment, c'est > surtout valable pour les instructions "simples" (ou du moins > disponibles dans le CPU), mais c'est néanmoins assez > impressionnant. > > Sa présentation terminée, quelqu'un dans le public demande > à Leo de montrer qu'est-ce qu'il utilise pour ses "slides" (du > texte affiché dans un terminal qui efface l'écran et défile quand > il appuie sur une touche) : "Parrot of course!". Il montre le code > assembleur Parrot qu'il a utilisé pour son talk, qui doit faire > moins d'une cinquantaine de lignes. Nouvelle salve > d'applaudissements. A propos du JIT et comme indiqué sur un des slides de Dan par un TLA (Three Letter Acronym) que j'ai oublié : ce n'est pas vraiment du JIT (Just In Time) puisque la génération du code natif est faite avant l'exécution. Et pour finir, news encore chaude, il est maintenant possible de générer un exécutable (qui doit probablement contenir tout le run-time). Note: le rapport hebdomadaire de pdcauley commence par les enchères YAPC. Welcome to another in the ongoing series of Perl 6 summaries in which your faintly frazzled summarizer attempts to find a native speaker of Esperanto to translate this opening paragraph in honour of the huge amount of money (1371 Euros) raised for TPF during the YAPC::Europe auction, when the official language of both London.pm and Paris.pm's websites were auctioned off as one lot. Somewhat to the surprise of everyone, the winning bid was for Esperanto. As Jouke Visser just commented on IRC, the price was well worth paying just to see the looks of panic on the faces of Mark Fowler, Leon Brocard and other London.pm worthies as the price of keeping the website English (and changing Paris.pm's website to English in the process) shot up beyond the reach of their collective pocket. pdcauley était à YAPC. Quelqu'un peut me le décrire que je mette une tête sur son nom? Dans le BOF parrot, je me suis rencu compte que la communication entre Dan et Leo etait quelquefois difficile. pdcauley se souvient de l'échange de parole le plus significatif: Dan: I'm really bad at reading my mails Leo: You should at least read *my* mails Everyone: Hear! Hear! (or words to that effect) Leo codant plus vite que son ombre, Dan ne suis pas toujours et la chose codée n'est pas toujours congruente avec ses cogitations présentes c'est à dire ses spécifications à venir. ( $a = "Il y a-t'il vraiment un seul Leon" ) =~ s/n$// ; print "$a\n" En tout cas, c'est la première fois (je crois) que Dan rencontre Leo et on a tous constaté Leo existe réellement. > > > Sébastien Aperghis-Tramoni -- stef - Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html From mirod at xmltwig.com Tue Jul 29 16:16:19 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Europe::2003 (3) (fwd) Message-ID: La discussion sur Parrot se poursuit... Si ca vous interesse pas, faites me le savoir. Michel Rodriguez Perl & XML http://www.xmltwig.com ---------- Forwarded message ---------- Date: Tue, 29 Jul 2003 22:56:51 +0200 From: Jerome Quelin To: stef@payrard.net, Paris.pm Subject: Re: [ppm] YAPC::Europe::2003 (3) Stéphane Payrard wrote: > PIR: Parrot Intermediate Representation Language. C'est un > assembleur à base de registres typés qui gère aussi > les espaces de noms. Les registres sont de types: > entiers, numériques, chaînes et PMC, pour Perl Magic > Cookie. PIR propose un nombre illimitée de registre > appelés registres symboliques. Il y a d'autres différences entre PIR et PASM : - affectations plus "simples" PASM: add I0, I1, I2 PIR: $I0 = $I1 + $I2 - gestion d'unités de compilation permettant de réutiliser des labels (dits locaux à l'inverse de labels globaux) - conditions plus faciles à écrires PASM: lt I0, I1, FOOBAR PIR: if $I0 < $I1 goto FOOBAR - utilisation de variables nommées .local int foo foo = 2 +3 - pareil pour des constantes .const string HELLO HELLO = "hello, world!\n" - il y en a certainement d'autres > IMMC (Intermediate Code Compiler for Parrot, maitenant Vous avez rectifié de vous-mêmes : IMCC > une passe de Parrot) transcrit ça en PASM en passant > de la fiction du nombre illimité de registres à la > "réalité" de nombre effectif de registre faisant > l'allocation avec un algorithme à base de couleurs qui > représentent les registres réels. Je croyais qu'il s'agissait d'affecter un score à chacune des variables, et de libérer les registres contenant les variables ayant le score le plus faible en les stockant dans une PerlArray se trouvant dans P31. Les variables ayant une brève durée de vie ou se trouvant dans une boucle verront leur score augmenter. > PASM: [...] > Mais maitenant que IMCC > est opérationnel, il n'y a aucune raison de travailler > à ce niveau. Tsk, tsk... Le fun, stef, le fun ! :o) D'autre part, si tu veux réellement apprécier imcc, il faut auparavant en avoir bavé avec pasm. Et puis cela te donne une bonne connaissance de Parrot, ce qui est pas mal non plus. > Plus que de calcul d'adresses en soi avec les contraintes > d'alignement que cela suposse, il s'agit surtout d'optimisations > pour le DOD et le GC qui n'ont pas encore l'imprimatur de Dan. > DOD et GC acronymes de Garbage Gollection et Dead Object > Detection. Pour les pros du GC, la distinction (que je n'ai pas > comprise) n'est pas celle entre les deux passes "mark" et "sweep" Je crois que le DOD consiste à tout marquer comme dead, et ensuite suivre les "root objects" et ce vers quoi ils pointent en marquant alive l'objet correspondant, puis à virer tout ce qui est encore dead. Le GC serait un simple scan pour rechercher les morceaux de mémoire non encore rendus au système. Par exemple, si j'ai une variable chaîne faisant 1000 caractères de long et que je lui affecte une nouvelle valeur de 100 caractères, il y a 900 octets à récupérer. Ceci dit, je ne suis pas un pro de tout ça, et il faut prendre ce que je dis dans ce domaine avec précautions. Voire même ne pas le lire :-) Je ne sais pas où en est la discussion, car le DOD _serait_ incompatible (selon Leo) avec la notion de "timely destruction", cad la destruction des objets en temps voulu (typiquement à la sortie d'un bloc lexical). > > Leo expose ensuite quelques uns des différents run cores > > disponibles dans Parrot. Si j'ai bien compris, les run cores > > sont les coeur d'exécution de Parrot, mais comme ils n'étaient pas > > sûr de savoir quel mécanisme serait le plus efficace, ils ont > > développé plusieurs run cores : Fast Core, Goto Core, Slow Core, et > > des combinaisons. Leo montre le Fast Core avec du code C : > > while(PC) { > > PC = ((INTERP->op_func_table)[*PC])(PC,INTERP); > > } > > Je crois que la majeure partie de la salle est restée > > dubitative face à ça... > > Je suis largué sur ce coup là. Si je comprends bien : INTERP est l'interpréteur Parrot courant INTERP->op_func_table est un tableau de pointeurs de fonctions PC est l'opcode courant (INTERP->op_func_table)[*PC] est donc la fonction permettant d'exécuter l'opcode courant ((INTERP->op_func_table)[*PC])(PC,INTERP) est donc un appel à cette fonction avec l'opcode courant et l'interpréteur courant. Par convention, les fonctions implémentant les opcodes renvoient le prochain opcode à être exécuté on recommence tant qu'on a un opcode Les autres solutions m'ont semblé plus touchy à comprendre. > A propos du JIT et comme indiqué sur un des slides de Dan par un > TLA (Three Letter Acronym) que j'ai oublié : ce n'est pas > vraiment du JIT (Just In Time) puisque la génération du code > natif est faite avant l'exécution. Je crois qu'il a parlé de WAT, soit Way Ahead Time. > En tout cas, c'est la première fois (je crois) que Dan rencontre Leo > et on a tous constaté Leo existe réellement. En plus il est super sympa. Il veut même modifier le système de commentaire de imcc pour que je puisse rajouter un neuvième langage à mon programme polyglotte ! :-) Jérôme -- jquelin@mongueurs.net - Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html From mirod at xmltwig.com Tue Jul 29 22:55:31 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Et une Exegese, une! Message-ID: Salut, http://www.perl.com/pub/a/2003/07/29/exegesis6.html cause des fonctions, et des mille et une facons de declarer leurs arguments et de les appeler. Ya de quoi lire! Michel Rodriguez Perl & XML http://www.xmltwig.com From Paul.Gaborit+pm at enstimac.fr Wed Jul 30 02:34:09 2003 From: Paul.Gaborit+pm at enstimac.fr (Paul Gaborit) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Europe::2003 (3) (fwd) In-Reply-To: References: Message-ID: At 23:16 +0200 29/07/03, Michel Rodriguez wrote: >La discussion sur Parrot se poursuit... > >Si ca vous interesse pas, faites me le savoir. Au contraire, c'est super int?ressant. Tes compte-rendus (et ceux que tu nous retransmets) sont, pour moi, un vrai plaisir : le plaisir des astuces, des conseils, de ce dont nous pourrons bient?t profiter, des blagues, etc. En bref, le plaisir de se dire qu'on n'est pas le seul fou ? croire en Perl ;-) Un grand merci pour tout cela ! PS: Par contre, une bonne partie de tes mails arrive avec des erreurs d'encodage. Tu annonces "utf-8" quasiment ? chaque fois et la plupart du temps, il n'est pas valide. A voir... -- Paul Gaborit -- DR/GI -- Perl en fran?ais -- From mirod at xmltwig.com Wed Jul 30 02:53:53 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Europe::2003 (3) (fwd) In-Reply-To: Message-ID: On Wed, 30 Jul 2003, Paul Gaborit wrote: > PS: Par contre, une bonne partie de tes mails arrive avec des erreurs > d'encodage. Tu annonces "utf-8" quasiment à chaque fois et la plupart > du temps, il n'est pas valide. A voir... Ca fait combien de temps que j'ai des problemes d'encodages? 3 ans a peine? ;--( Un jour j'y arriverai! Michel Rodriguez Perl & XML http://www.xmltwig.com From mirod at xmltwig.com Wed Jul 30 03:02:06 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] Re: [ppm] YAPC::Europe::2003 (3) (fwd) Message-ID: Je commence a comprendre de plus en plus... il reste des zones d'ombres ceci dit (a quoi ca sert en pratique une continuation?) Michel Rodriguez Perl & XML http://www.xmltwig.com ---------- Forwarded message ---------- Date: Wed, 30 Jul 2003 09:39:23 +0200 From: arnaud.assad@free.fr To: paris-pm-list@pm.org Cc: marseille-pm@mail.pm.org Subject: Re: [ppm] YAPC::Europe::2003 (3) On Wed, Jul 30, 2003 at 02:48:27AM +0200, Sébastien Aperghis-Tramoni wrote: > À ce propos si toi (ou quelqu'un d'autre) pouvait fournir une > explication de ce que sont ces fameuses continuations et autres > coroutines, car pour le moment j'en ai beaucoup entendu parlé, mais je > n'ai aucune idée de ce que c'est. > Comme moi aussi, ca commencait à me tarabuster je me suis renseigné en rentrant. Voici donc l'avis d'un NEWBIE en ce domaine pour d'autres newbies : I) Continuation 1.1) Définition courte (et naive) Une continuation est une espèce de closure (fonction qui "capture" son environement lexical) qui contient AUSSI sa chaine de controle (la chaine de controle représente la pile d'appel, souvent représentée par ue liste chainée) 1.2) Déveleppement D'abord sur le pourquoi de la chose : Cela permet de faire des optimisation sympa (tail calls/tail recursion) simplement et rapidement, parce que cela peut etre la base d'un systeme d'exception. De part la définition donnée plus haut, on comprend aisément que les continuations sont un surensemble des closures. Mais je crois que que Dan a envie de faire d'autres trucs vraiment plus "tordues" avec (dans son talk il parlait par exemple de reprendre l'exécution de la continuation a un autre endroit que celui sauvegardé lors de la capture de l'environnement ! Et la beaucoup de gens ont trouvé ça "evil" ;-) Bon pour faire ca il s'appuie sur une nouvelle facon d'appeller les fonctions : CPS (Continuaton Passing Style) 1.3) Pointeurs Le site de Dan (tant qu'a faire) : http://www.sidhe.org/~dan/blog/ II) Co-routines 2.1) Définition courte (et naive) Une coroutine est une fonction qui peut retourner a nimporte quel moment, et lors de son invocation suivante reprendre son exécution A PARTIR de cet endroit. 2.2) Développement Un exemple simple sub lacoroutine { # code A yeld 1; # retourne 1; # code B yeld 2; # retourne 2; # code C yeld 3; # retourne 3; } lacoroutine(); lacoroutine(); lacoroutine(); lacoroutine(); retournera 1, puis 2, puis 3, puis 1. Lors du premier appel le code A sera exécuté ainsi que le yeld 1 Lors du second appel le code B sera exécuté ainsi que le yeld 2 Lors du troisieme appel le code C sera exécuté ainsi que le yeld 3 Lors du quatrieme appel le code A sera exécuté ainsi que le yeld 1 ... A noter plusieurs comportement sont possibles quand on passe des paramètres (prendre les paramètres de l'appel, précédent, continuer l'exécution avec les nouveaux parametres... 2.3) Pointeurs Le site de Dan : http://www.sidhe.org/~dan/blog/ Tout ce qui dit Damian sur le sujet en particulier : http://archive.develooper.com/perl6-language@perl.org/msg15348.html N'hésitez pas à corriger, annoter, commenter. Arnaud. - Paris Perl Mongueu(r|se)s => http://paris.mongueurs.net/mail.html From buisson at cena.fr Thu Jul 31 03:19:01 2003 From: buisson at cena.fr (Marcellin Buisson) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] nouveau sur toulouse.pm Message-ID: Bonjour, Etant nouveau sur la liste toulouse.pm je me pr?sente rapidement, Plut?t novice en programmation et sp?cialis? conception d'interfaces homme-machine, je travaille avec Christophe Mertz (qui s'est inscrit un peu plus t?t sur la liste) au Centre d'Etudes de la Navigation A?rienne (contr?le a?rien). J'utilise perl essentiellement pour d?velopper des petits protos d'interfaces au travers de Perl/Tk-TkZinc dans un environnement Linux Debian (et un peu Mac OS X) ou pour quelques utilitaires type manipulation de fichier textes etc.. cela ne va pas bien loin mais j'appr?cie bien ce langage.. Je suis ?galement utilisateur perl du bus logiciel ivy qui me permet de faire discuter mes protos entre eux relativement facilement. voil?, j'ai bien appr?ci? la petite r?union informelle avec Christophe, Thierry et Michel hier soir, ? une prochaine, Marcellin. From mirod at xmltwig.com Thu Jul 31 04:33:29 2003 From: mirod at xmltwig.com (Michel Rodriguez) Date: Mon Aug 2 21:38:19 2004 Subject: [Toulouse-pm] nouveau sur toulouse.pm In-Reply-To: Message-ID: Salut, Bon, ben la reunion d'hier fut sportive, avec un Tonton Th en grande forme, qui a successivement descendu Tk/Zinc ("on faisait la meme chose sur Amiga ya 20 ans"), Ivy ("je veux PAS installer Gtk pour le tester"), XML ("beurk!") et DBI ("je veux pas changer de DB, je veux pouvoir changer de langage"). Bon, a part ca la demo de TkZinc etait bien. Comme je l'ai dit a Marcellin, j'ai ete impressionne par la compacite du code necessaire pour generer des effets deja fort sympathiques. Voila, Sinon 5.8.1_RC3 est sortie ce matin: Annonce: http://use.perl.org/article.pl?sid=03/07/31/0813206&tid=6 tar.gz: http://www.cpan.org/authors/id/J/JH/JHI/perl-5.8.1-RC3.tar.gz Pour Marcellin, en cadeau de bienvenu, les URLs des differents films de OSCON et YAPC: Tout est lie depuis http://www.perl.org/events.html YAPC: http://www.perl.org/yapc/ et en particulier YAPC 2002: http://www.perl.org/yapc/2002/movies/themovie/ YAPC 2003: http://www.perl.org/yapc/2003/movies/redux/ OSCON: http://www.perl.org/oscon/ OSCON 2002: http://www.perl.org/tpc/2002/movies/tpf/ OSCON 2003: http://www.perl.org/oscon/2003/movies/truth/ Les presentation/mailing-lists judo de MJD sont bien aussi (mais par pitie, ne mettez pas de photos de bebes partout, j'en ai trop vu! A tschao -- Michel Rodriguez Perl & XML http://www.xmltwig.com