From deadcow at free.fr Fri Aug 1 04:09:30 2003 From: deadcow at free.fr (DeadCow) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Faire mumuse avec les compilos... References: Message-ID: <002101c3580c$9e178820$0101a8c0@nico> ----- Original Message ----- From: "S?bastien Aperghis-Tramoni" To: "The exuberant but not so active Marseille Mongers" Sent: Friday, August 01, 2003 3:53 AM Subject: Re: [Marseille-pm] Faire mumuse avec les compilos... > $ l parrot > -rwxr-xr-x 1 maddingu staff 1741140 Aug 1 03:42 parrot* > > C'est vrai qu'il est trop gros pour le moment mais il est encore en > d?veloppement et est compil? avec les options -g -Larry -Wall et sans > optimisations. -Larry -Wall ? Ca fait quoi ca ? > Dans mes ?tudes d'ing?nieur j'ai ?cris des analyseurs syntaxiques, un > assembleur MIPS et un compilateur Pascal. Comprendre les principes de > base est int?ressant mais la programmation compl?te est quand m?me > rapidement emmerdant. > > Utiliser un parser de bonne qualit? pour se retirer du travail chiant > n'a rien de "d?shonorant". C'est g?n?ralement consid?r? comme une bonne > utilisation des outils disponibles. Perl utilise lex pour cette raison > d'ailleurs Je suis partisant de n'utiliser ce genre d'outil que lorsqu'on est capable de le faire ? la main. L? je suis confront? ? plein de probl?mes tr?s interessant concernant les grammaires, les diff?rent algorithmes d'analyse syntaxiques etc. Quand je maitriserai bien tout ?a, j'utiliserai un outil. Sinon je ne vois rien de d?shonorant ? utiliser ce genre d'outil, en effet ?a semble tr?s m?canique et tout ? fait automatisable comme tache. > > C'est pas le fait que ca fasse bricolage qui me g?ne, c'est que t'as > > pas > > vraiment la main sur le truc, ducoup, y a plein de choses que tu > > pourra pas > > faire. D'un autre cot? ?a s'?crit plus vite .. tout d?pend de ce qu'on > > cherche ? faire comme d'hab =) > > Exactement :-) > Mais l? encore je tiens ? rappeler que si lex et yacc (et les modules > remplissant des fonctions similaires en Perl) existent, c'est parce > qu'?crire des parsers lexicaux et syntaxiques est une op?rations tr?s > m?canique : une fois que tu as la grammaire BNF de ton langage, tu peux > passer ?a ? lex et yacc et ils te font le boulot. Sinon il faut se > frapper d'?crire autant de fonctions que tu as de lex?mes, toutes sur > le m?me mod?le. C'est int?ressant ? faire une fois, mais so?lant la > seconde fois. J'imagine assez bien oui =) Mais que fait tu de la satisfaction d'avoir fait tout ? la main ? Je suis un artisant de l'informatique ! > Mais bon, ?videmment, ?a d?pend du niveau auquel on a envie de > travailler, mais je ne trouve pas que ce niveau-ci soit le plus > attrayant; personnellement je pr?f?re visiter les machines au sous-sol > (kernel) et m'amuser sur le toit (Perl) :-) /!\ Attention toit glissant /!\ -- Nicolas From maddingue at free.fr Fri Aug 1 08:34:23 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Faire mumuse avec les compilos... In-Reply-To: <002101c3580c$9e178820$0101a8c0@nico> Message-ID: On vendredi, ao? 1, 2003, at 11:09 Europe/Paris, DeadCow wrote: > ----- Original Message ----- > From: "S?bastien Aperghis-Tramoni" > To: "The exuberant but not so active Marseille Mongers" > > Sent: Friday, August 01, 2003 3:53 AM > Subject: Re: [Marseille-pm] Faire mumuse avec les compilos... > >> $ l parrot >> -rwxr-xr-x 1 maddingu staff 1741140 Aug 1 03:42 parrot* >> >> C'est vrai qu'il est trop gros pour le moment mais il est encore en >> d?veloppement et est compil? avec les options -g -Larry -Wall et sans >> optimisations. > > -Larry -Wall ? Ca fait quoi ca ? On ne dit pas "c'est quoi ?" mais "qui est-ce ?" Larry Wall est le cr?ateur de patch et de Perl, et il contribue ainsi chaque jour ? sauver l'humanit?; il ?tait donc normal que l'?quipe de GCC lui attribue des flags pour qu'on puisse compiler Perl et Parrot dans les meilleurs conditions ;-) >> Dans mes ?tudes d'ing?nieur j'ai ?cris des analyseurs syntaxiques, un >> assembleur MIPS et un compilateur Pascal. Comprendre les principes de >> base est int?ressant mais la programmation compl?te est quand m?me >> rapidement emmerdant. >> >> Utiliser un parser de bonne qualit? pour se retirer du travail chiant >> n'a rien de "d?shonorant". C'est g?n?ralement consid?r? comme une >> bonne >> utilisation des outils disponibles. Perl utilise lex pour cette raison >> d'ailleurs > > Je suis partisant de n'utiliser ce genre d'outil que lorsqu'on est > capable > de le faire ? la main. L? je suis confront? ? plein de probl?mes tr?s > interessant concernant les grammaires, les diff?rent algorithmes > d'analyse > syntaxiques etc. Quand je maitriserai bien tout ?a, j'utiliserai un > outil. > Sinon je ne vois rien de d?shonorant ? utiliser ce genre d'outil, en > effet > ?a semble tr?s m?canique et tout ? fait automatisable comme tache. > J'imagine assez bien oui =) Mais que fait tu de la satisfaction > d'avoir fait > tout ? la main ? Je suis un artisant de l'informatique ! Et la premi?re vertu du programmeur Perl, tu en fait quoi ?!? :-) C'est bien d'?crire les choses une fois pour savoir comment ?a marche, mais pass?e cette phase il vaux mieux utiliser les outils existants pour utiliser son temps et sa cr?ativit? sur les parties vraiment int?ressantes. >> Mais bon, ?videmment, ?a d?pend du niveau auquel on a envie de >> travailler, mais je ne trouve pas que ce niveau-ci soit le plus >> attrayant; personnellement je pr?f?re visiter les machines au sous-sol >> (kernel) et m'amuser sur le toit (Perl) :-) > > /!\ Attention toit glissant /!\ J'ai des chaussures anti-d?rapantes. S?bastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] From robert at mtice.fr Mon Aug 4 01:38:05 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Salut les jeunes Message-ID: <20030804063805.GA18956@mtice.fr> Alors voila je reviens de vacances et ca parle sur la liste !!! trop fort !! Bon donc salut a tout ceux que j'ai vu sur YAPC::Europe et mes sincere salutations aux autres. Vu que je n'ai pas pu assister au derniers jours de la conference, est-ce que quelq'un pourrait me faire un petit topo de ce qu'il en a retenu ?? D'autre part je voudrais vous proposer qu'on en tire quelque chose de cette renaissance de marseille.pm : arnaud m'a propose de faire un petit howto sur Curses et PERL, alors je lui propose de faire un petit topo sur le debugage (nottament la construction de debuggeurs perso avec DB je crois) Si d'autre ont des id?es ??? pour Nicolas (je crois !?) qui veut faire un petit langage : je propose Ocaml qui me semble bien adapte a ca (c'est un des premier exo en (o)caml alors c'est que ca doit le faire) From maddingue at free.fr Mon Aug 4 12:19:44 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Salut les jeunes In-Reply-To: <20030804063805.GA18956@mtice.fr> Message-ID: On lundi, ao? 4, 2003, at 08:38 Europe/Paris, Robert silve wrote: > Alors voila je reviens de vacances et ca parle sur la liste !!! > > trop fort !! dingue, n'est-ce pas ? :-) > Bon donc salut a tout ceux que j'ai vu sur YAPC::Europe et mes sincere > salutations aux autres. > Vu que je n'ai pas pu assister au derniers jours de la conference, > est-ce > que quelq'un pourrait me faire un petit topo de ce qu'il en a retenu ?? Les comptes-rendus de Mirod sont dispos sur son site web : http://xmltwig.com/report/yapc_eu_2003.html Quant ? moi je vais forwarder les miens sur cette liste. S?bastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] From maddingue at free.fr Mon Aug 4 12:22:16 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Fwd: [ppm] YAPC::Europe::2003 (1) Message-ID: <31F81B47-C6A0-11D7-81F1-000502F3279F@free.fr> 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 :-) Son cours est disponible sur son site web : http://www.ccl4.org/~nick/P/Fast_Enough/ * 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 ] From maddingue at free.fr Mon Aug 4 12:30:38 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Fwd: [ppm] YAPC::Europe::2003 (2) Message-ID: <5D4B33C2-C6A1-11D7-81F1-000502F3279F@free.fr> 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. [Correctif de Robin] Pas tout ? fait! DOM est une API d'arbre. Mais ni avec DOM, ni avec d'autres API d'arbres est-il n?cessaire de tout charger en m?moire. C'est juste l'impl?mentation la plus simple. 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. [Correctif de Robin] DOM n'est pas un exemple de pull. Matt Sergeant bosse sur une version pull de PurePerl, et quelqu'un wrappera probablement celle de libxml un jour ou l'autre. Entre temps, notre connaissance du sujet vient d'autres langages (.NET supporte uniquement le pull, pas de SAX, par exemple) d'o? mes pr?cautions. 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 ] From maddingue at free.fr Mon Aug 4 12:56:25 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Fwd: [ppm] YAPC::Europe::2003 (3) Message-ID: 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?. [St?phane Payrard me corrige en signalant que c'est l'inverse : les langages de hauts niveaux sont traduits en PIR qui est un asm ? base de registres typ?s avec support des espaces de noms. IMCC est le compilateur qui traduit le PIR en PASM, qui est ensuite converti en PBC, Parrot Bytecode. Ce dernier est charg? par la VM avec mmap() et apr?s quelques transformation (comme la gestion de l'endianness) est 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)). [St?phane Payrard pr?cise que cela permet aussi de faire des optimisations pour la DOD et le GC mark&sweep.] - 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??. [St?phane Payrard pr?cise que cela marche pour tous les types d'objets natifs car c'est n?cessaire pour la gestion des continuations.] 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 ?) [correctif de J?r?me] Non, c'est L?on lui-m?me le responsable. Par contre, s'il a ?crit un interpr?teur Brainfuck, j'ai ?crit un compilateur Ook! targetant du pasm (Ook! et Brainfuck ?tant bijectifs). 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), [correctif de J?r?me] C'est un langage utilisant un espace cart?sien de Lahey ? deux dimensions pour ?tre pr?cis. 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 :-) [r?ponse de J?r?me] Moi non plus. :-) Certains ont cru que c'?tait un langage temps-r?el pour logiciels de contr?le a?rien ou de pilotage de centrale nucl?aire (private joke). En fait, c'est pour le fun. Le but avou? de Befunge est d'avoir un langage "non facilement compilable". 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. [pr?cision de J?r?me] La norme -98 de Befunge permet de d?finir des Funges concurrents. C'est ? dire avec plusieurs pointeurs d'instruction se baladant sur le m?me espace de Lahey. Ils interagissent, car si un pointeur d'instruction modifie l'espace de Lahey l? o? un autre pointeur d'instruction va se trouver, le deuxi?me va alors ex?cuter la nouvelle op?ration. Pour info, le nombre de pointeur d'instruction n'est pas limit? par la norme. 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. S?bastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] From robert at mtice.fr Tue Aug 5 01:05:03 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Salut les jeunes In-Reply-To: References: <20030804063805.GA18956@mtice.fr> Message-ID: <20030805060503.GA10308@mtice.fr> On Mon, Aug 04, 2003 at 07:19:44PM +0200, S?bastien Aperghis-Tramoni wrote: > > >Bon donc salut a tout ceux que j'ai vu sur YAPC::Europe et mes sincere > >salutations aux autres. > >Vu que je n'ai pas pu assister au derniers jours de la conference, > >est-ce > >que quelq'un pourrait me faire un petit topo de ce qu'il en a retenu ?? > > Les comptes-rendus de Mirod sont dispos sur son site web : > http://xmltwig.com/report/yapc_eu_2003.html > > Quant ? moi je vais forwarder les miens sur cette liste. > > Super merci !!!!! From maddingue at free.fr Thu Aug 7 15:10:04 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Arnaud, et tes comptes-rendus du YAPC... Message-ID: <220A5A0C-C913-11D7-BD0B-000502F3279F@free.fr> ... tu comptes les poster ? :-) Parce qu'il y a des talks auxquels tu as assist? et qui ont int?resseront certains (dont moi). Je pense notamment ? "Network tricks" o? le gars montrait comment forger un paquet avec LWP. Alors ? alors ? :-) S?bastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] From robert at mtice.fr Mon Aug 18 07:06:49 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] In-Reply-To: <20030804063805.GA18956@mtice.fr> References: <20030804063805.GA18956@mtice.fr> Message-ID: <20030818120649.GB24065@mtice.fr> Salut a tous !! Suite a YPAC, j'ai redige une petite doc sur l'utilisation de Curses avec perl. Je sais pas si ca interesse certains parmi vous, mais je sais que arnaud reve de mettre des chose (n'importe quoi !!) sur le site de marseille.pm alors si ca vous branche je peut y mettre les premi?re version de la doc. Alors Arnaud ???????? Robert From arnaud at underlands.org Mon Aug 18 10:12:51 2003 From: arnaud at underlands.org (arnaud@underlands.org) Date: Mon Aug 2 21:32:15 2004 Subject: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] In-Reply-To: <20030818120649.GB24065@mtice.fr> References: <20030804063805.GA18956@mtice.fr> <20030818120649.GB24065@mtice.fr> Message-ID: <20030818151251.GA2030@underlands.org> On Mon, Aug 18, 2003 at 02:06:49PM +0200, Robert silve wrote: > Salut a tous !! > Suite a YPAC, j'ai redige une petite doc sur l'utilisation de > Curses avec perl. > Je sais pas si ca interesse certains parmi vous, mais je sais que arnaud > reve de mettre des chose (n'importe quoi !!) sur le site de marseille.pm > alors si ca vous branche je peut y mettre les premi?re version de la doc. > Alors Arnaud ???????? Oui ! Yes ! JA ! DA ! Balance sur la ml je mettrais sur le site... Pour mes comptes-rendu, je m'excuse, ca arrive, avec une (toute) petite surprise pour ceux qui ont assist? au talk sur Devel::Cover ;-) Arnaud. From robert at mtice.fr Mon Aug 18 11:05:28 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] In-Reply-To: <20030818151251.GA2030@underlands.org> References: <20030804063805.GA18956@mtice.fr> <20030818120649.GB24065@mtice.fr> <20030818151251.GA2030@underlands.org> Message-ID: <20030818160528.GB18470@mtice.fr> On Mon, Aug 18, 2003 at 05:12:51PM +0200, Mr Arhuman wrote: > > Oui ! Yes ! JA ! DA ! > Balance sur la ml je mettrais sur le site... > Je savais que tu serais enthousiaste a l'idee de mettre un truc sur le site :)) Alors c'est vendu : je fait une petit relecture superficielle pour enlever les grosses faute et je reteste tous mes exemples : dans quelques jours je te balance le document. > Pour mes comptes-rendu, je m'excuse, ca arrive, avec une (toute) petite surprise > pour ceux qui ont assist? au talk sur Devel::Cover ;-) > Moi j'attend un (not so short) howto "make my own debugger" avec une vive impatience. > Arnaud. > _______________________________________________ > Marseille-pm mailing list > Marseille-pm@mail.pm.org > http://mail.pm.org/mailman/listinfo/marseille-pm > From maddingue at free.fr Mon Aug 18 14:07:05 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] In-Reply-To: <20030818151251.GA2030@underlands.org> Message-ID: <27F7CA6E-D1AF-11D7-B950-000502F3279F@free.fr> On lundi, ao? 18, 2003, at 17:12 Europe/Paris, arnaud@underlands.org wrote: > Pour mes comptes-rendu, je m'excuse, ca arrive, avec une (toute) > petite surprise > pour ceux qui ont assist? au talk sur Devel::Cover ;-) Tiens je pense d'un coup, ?a t'int?resse si je nettoie un peu mes comptes-rendus et que je les passe en HTML ? pour les rajouter aussi sur le site ? S?bastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] From arnaud at underlands.org Mon Aug 18 16:27:31 2003 From: arnaud at underlands.org (arnaud@underlands.org) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] In-Reply-To: <27F7CA6E-D1AF-11D7-B950-000502F3279F@free.fr> References: <20030818151251.GA2030@underlands.org> <27F7CA6E-D1AF-11D7-B950-000502F3279F@free.fr> Message-ID: <20030818212731.GA20687@underlands.org> On Mon, Aug 18, 2003 at 09:07:05PM +0200, S?bastien Aperghis-Tramoni wrote: > Tiens je pense d'un coup, ?a t'int?resse si je nettoie un peu mes > comptes-rendus et que je les passe en HTML ? pour les rajouter aussi > sur le site ? yipeee ! Comment donner du contenu a un site en une semaine :-) marseille.pm rocks ! Arnaud. From maddingue at free.fr Mon Aug 18 19:47:20 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] In-Reply-To: <20030818212731.GA20687@underlands.org> Message-ID: On lundi, ao? 18, 2003, at 23:27 Europe/Paris, arnaud@underlands.org wrote: > On Mon, Aug 18, 2003 at 09:07:05PM +0200, S?bastien Aperghis-Tramoni > wrote: >> Tiens je pense d'un coup, ?a t'int?resse si je nettoie un peu mes >> comptes-rendus et que je les passe en HTML ? pour les rajouter aussi >> sur le site ? Premier jet : http://maddingue.free.fr/articles/yapc/ Le .txt est un POD en UTF-8. Idem pour le fichier HTML. > yipeee ! > > Comment donner du contenu a un site en une semaine :-) > > marseille.pm rocks ! Autre truc qu'on pourrait poser sur le site (?ventuellement), une copie des modules et programmes qu'on a r?alis?s. M?me s'ils sont sur le CPAN, cela n'emp?che pas d'en avoir une version ici histoire de dire que ?a a ?t? fait par des Marseillais (et ?a augmente toujours la pr?sence desdits logiciels). S?bastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] From deadcow at free.fr Mon Aug 18 20:32:30 2003 From: deadcow at free.fr (DeadCow) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] References: Message-ID: <005801c365f1$c216be60$0101a8c0@nico> ----- Original Message ----- From: "S?bastien Aperghis-Tramoni" To: "The exuberant but not so active Marseille Mongers" Sent: Tuesday, August 19, 2003 2:47 AM Subject: Re: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] > Code is for People, not for Computer > Code is for Others, not for Yourself > Code is What, Comments are Why Ca vaudrait presque le coup de se faire tatouer ?a =) -- Nicolas Repiquet From maddingue at free.fr Tue Aug 19 03:52:44 2003 From: maddingue at free.fr (=?iso-8859-1?b?U+liYXN0aWVu?= Aperghis-Tramoni) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] In-Reply-To: <005801c365f1$c216be60$0101a8c0@nico> References: <005801c365f1$c216be60$0101a8c0@nico> Message-ID: <1061283164.3f41e55ce92f9@impt3-2.free.fr> Selon DeadCow : > From: "S?bastien Aperghis-Tramoni" > To: "The exuberant but not so active Marseille Mongers" > Not so active, not so active.. mine de rien en ce moment il y a plus de mails ici que sur Paris.pm :-) > Sent: Tuesday, August 19, 2003 2:47 AM > Subject: Re: [Marseille-pm] Doc Curses.pm [version 0.0.1.alpha] > > > Code is for People, not for Computer > > Code is for Others, not for Yourself > > Code is What, Comments are Why > > Ca vaudrait presque le coup de se faire tatouer ?a =) Le tatouage est peut-?tre un peu extr?me, mais c'est en effet ? encadrer et ? honorer chaque jour :-) -- Maddingue From robert at mtice.fr Mon Aug 25 04:53:19 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] A propos de Class::DBI Message-ID: <20030825095319.GA21849@mtice.fr> Je m'adresse surtut a Arnaud car je sais qu'i connait les reponse : mais si d'autres ont une idee je suis preneur. J'utilise Class::DBI avec mod_perl et HTML::Template pour faire des appli type CGI. Je me suis decide a prendre la derniere versions de Class::DBI. par rapport a la version que j'utilisai, ils ont rajoute la surcharge de certain operateur notamment '""' . A priori je trouve ca tres bien sauf que des fois ca fait pas vraimment ce que je veux. en fait le plus emmerdant est le cas suivant : je recupere le contenu d'un table my @acc = Table->retrieve_all; # c'est un petite table et je passe le tout a mon template $tmpl->param(table =>\@acc); et hop dans mon template j'ai acces a tout ce qu'il me faut. Le defaut c'est que , si je n'ai qu'un element, je ne recupere que l'identifiant si entre la recuperation et le passage au template j'ajoute warn map { $_->macolonne } @acc; alors tout ce met a marcher. Si ma table contient plus d'un element c'est ok. Je ne comprend pas trop bien ce qui se passe. Arnaud as tu deja eu ce probleme et vois tu d'ou il peut venir ? From maddingue at free.fr Tue Aug 26 02:37:59 2003 From: maddingue at free.fr (=?iso-8859-1?b?U+liYXN0aWVu?= Aperghis-Tramoni) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Compte rendu YAPC Message-ID: <1061883479.3f4b0e57834e6@impt1-1.free.fr> Correction de quelques fautes, remise en forme de certaines parties, int?gration des correctifs et pr?cisions. Je me suis relu jusqu'au talk de Marty Pauley sur Perl6 et le japonais. http://maddingue.free.fr/articles/yapc/ J'attends vos critiques et commentaires. -- Maddingue From maddingue at free.fr Tue Aug 26 19:29:14 2003 From: maddingue at free.fr (=?ISO-8859-1?Q?S=E9bastien_Aperghis-Tramoni?=) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Compte rendu Message-ID: <7C833B4B-D825-11D7-8E2E-000502F3279F@free.fr> Petite mise ? jour : j'ai repris les derniers talks en partant de celui de Marty Pauley (je me suis souvenu de quelques trucs que j'avais oubli? d'?crire) et j'ai ajout? l'URL des slides de Philip Newton. S?bastien Aperghis-Tramoni -- - --- -- - -- - --- -- - --- -- - --[ http://maddingue.org ] From robert at mtice.fr Wed Aug 27 02:09:00 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Howto Curses.pm In-Reply-To: <7C833B4B-D825-11D7-8E2E-000502F3279F@free.fr> References: <7C833B4B-D825-11D7-8E2E-000502F3279F@free.fr> Message-ID: <20030827070900.GA14856@mtice.fr> Tiens Arnaud : on peut trouver le howto sur Curses et Perl en version pre alpa a l'adresse : http://www.silve.net/perl/Curses/ A tchao Robert From robert at mtice.fr Fri Aug 29 07:40:17 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] A l'aide (urgent) Message-ID: <20030829124017.GA8376@mtice.fr> Arnaud j'ai besion de ton aide : Comme toi j'utilise HTML::Template pour l'affichage de mes CGI. tout marche bien jusqu'au moment ou je veut utiliser deux templates dans le meme run mode (un pour l'affichage et un pour envoyer l'equivalent sur une imprimante en automatique). Et la ca marche plus : il trouve pas le second fichier (qui est au meme endroit que le premier) !! apres analyze il semble qu'apres le premier template HTML::Template se place dans le repertoire /tmp !!! En definissant la variable HTML_TEMPLATE_ROOT ca va mieux on se croit sauver. Mais au final si j'appui deux fois sur mon bouton : premier coup ca marche et le second ca marche pas (meme erreur). Je precise que je travaille avec mod_perl (peut-etre un histoire de persistance ??) Que se passe-t-il et comment je peut faire ????? A l'aide syouplait !!!!!! Robert From arnaud at underlands.org Fri Aug 29 09:39:51 2003 From: arnaud at underlands.org (arnaud@underlands.org) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] A l'aide (urgent) In-Reply-To: <20030829124017.GA8376@mtice.fr> References: <20030829124017.GA8376@mtice.fr> Message-ID: <20030829143951.GA24396@underlands.org> On Fri, Aug 29, 2003 at 02:40:17PM +0200, Robert silve wrote: > > Arnaud j'ai besion de ton aide : Oups ! D?sol? pour mon silence, je suis un peu d?bord? actuellement... > Comme toi j'utilise HTML::Template pour l'affichage de mes CGI. > tout marche bien jusqu'au moment ou je veut utiliser deux templates > dans le meme run mode (un pour l'affichage et un pour envoyer l'equivalent > sur une imprimante en automatique). > Et la ca marche plus : il trouve pas le second fichier (qui est au meme > endroit que le premier) !! > apres analyze il semble qu'apres le premier template HTML::Template > se place dans le repertoire /tmp !!! > En definissant la variable HTML_TEMPLATE_ROOT ca va mieux on se croit > sauver. > Mais au final si j'appui deux fois sur mon bouton : premier coup ca > marche et le second ca marche pas (meme erreur). Peux tu me donner un squelette de code pour reproduire dans EXACTEMENT les m?me conditions ? > Je precise que je travaille avec mod_perl (peut-etre un histoire de > persistance ??) Probablement la cause du fait que ca marche la premi?re fois et pas la deuxi?me... > Que se passe-t-il et comment je peut faire ????? > A l'aide syouplait !!!!!! Envoie moi moi ton code simplifi? a l'extr?me, et je promets d'essayer de r?pondre vite... Arnaud. From maddingue at free.fr Fri Aug 29 10:01:41 2003 From: maddingue at free.fr (=?iso-8859-1?b?U+liYXN0aWVu?= Aperghis-Tramoni) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] A l'aide (urgent) In-Reply-To: <20030829124017.GA8376@mtice.fr> References: <20030829124017.GA8376@mtice.fr> Message-ID: <1062169301.3f4f6ad538b08@impt1-2.free.fr> Selon Robert silve : > Comme toi j'utilise HTML::Template pour l'affichage de mes CGI. > tout marche bien jusqu'au moment ou je veut utiliser deux templates > dans le meme run mode (un pour l'affichage et un pour envoyer l'equivalent > sur une imprimante en automatique). > Et la ca marche plus : il trouve pas le second fichier (qui est au meme > endroit que le premier) !! > > apres analyze il semble qu'apres le premier template HTML::Template > se place dans le repertoire /tmp !!! Je peux me tromper mais je dirais que le probl?me ne vient pas de HTML::Template (ou du moins pas directement) pour la simple raison qu'il n'y a pas un seul appel ? chdir dans ce module (il acc?de aux fichiers par leur chemin absolu, construit avec File::Spec). > En definissant la variable HTML_TEMPLATE_ROOT ca va mieux on se croit > sauver. > > Mais au final si j'appui deux fois sur mon bouton : premier coup ca > marche et le second ca marche pas (meme erreur). > > Je precise que je travaille avec mod_perl (peut-etre un histoire de > persistance ??) Peut-?tre un effet de bord d'un autre module ou de mod_perl ? j'avoue mon ignorance concernant ce dernier. D?sol?. -- Maddingue From robert at mtice.fr Fri Aug 29 10:13:34 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] A l'aide (urgent) In-Reply-To: <20030829143951.GA24396@underlands.org> References: <20030829124017.GA8376@mtice.fr> <20030829143951.GA24396@underlands.org> Message-ID: <20030829151334.GB4734@mtice.fr> On Fri, Aug 29, 2003 at 04:39:51PM +0200, Mr Arhuman wrote: > > Oups ! D?sol? pour mon silence, je suis un peu d?bord? actuellement... > C'est pas grave. La reponse de maddingue me met sur la voie ca devrait suffire. J'attend par contre toujours un avis sur ma question sur Class::DBI :) From arnaud at underlands.org Fri Aug 29 10:01:52 2003 From: arnaud at underlands.org (arnaud@underlands.org) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] A propos de Class::DBI In-Reply-To: <20030825095319.GA21849@mtice.fr> References: <20030825095319.GA21849@mtice.fr> Message-ID: <20030829150152.GB24396@underlands.org> On Mon, Aug 25, 2003 at 11:53:19AM +0200, Robert silve wrote: > en fait le plus emmerdant est le cas suivant : > je recupere le contenu d'un table > > my @acc = Table->retrieve_all; # c'est un petite table > et je passe le tout a mon template > $tmpl->param(table =>\@acc); > et hop dans mon template j'ai acces a tout ce qu'il me faut. > Le defaut c'est que , si je n'ai qu'un element, je ne recupere que l'identifiant Que veux tu dire par identifiant ? ARRAY(...) ? > si entre la recuperation et le passage au template j'ajoute > warn map { $_->macolonne } @acc; map "force" le contexte liste (et retransforme ton tableau en tableau) que fait le warn dans l'histoire ? > alors tout ce met a marcher. > Si ma table contient plus d'un element c'est ok. > Je ne comprend pas trop bien ce qui se passe. > Arnaud as tu deja eu ce probleme et vois tu d'ou il peut venir ? J'ai jamais eu ce probl?me... piste possible : _ un wantarray manque dans l'impl?mentation de retreive_all (optimisation?) _ "" interpr?te diff?remment un scalaire et un tableau, quand tu appelles $tmpl->param(table => \@acc); Je *suppose* que le la partie droite de la fl?che '=>' est interpoll?e dans un contexte de double quote... Si l'op?rateur a ?t? red?fini et que \@acc est consacr? dans un type Class::DBI ca pourrait mettre la grouille dans un code qui marchait bien auparavant... que vaut \@acc ? Encore une fois si t'avais un petit jeu de test (minimal) qui me permettrait de me remettre dans les MEMES conditions, je pourrais te donner une reponse plus pr?cise... Arnaud. From robert at mtice.fr Fri Aug 29 11:00:29 2003 From: robert at mtice.fr (Robert silve) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] A propos de Class::DBI In-Reply-To: <20030829150152.GB24396@underlands.org> References: <20030825095319.GA21849@mtice.fr> <20030829150152.GB24396@underlands.org> Message-ID: <20030829160029.GC4734@mtice.fr> Putain t'es rapide toi !! On Fri, Aug 29, 2003 at 05:01:52PM +0200, Mr Arhuman wrote: > On Mon, Aug 25, 2003 at 11:53:19AM +0200, Robert silve wrote: > > en fait le plus emmerdant est le cas suivant : > > je recupere le contenu d'un table > > > > my @acc = Table->retrieve_all; # c'est un petite table > > et je passe le tout a mon template > > $tmpl->param(table =>\@acc); > > et hop dans mon template j'ai acces a tout ce qu'il me faut. > > Le defaut c'est que , si je n'ai qu'un element, je ne recupere que l'identifiant > > Que veux tu dire par identifiant ? ARRAY(...) ? no je veut dire la valeur de la cle primaire correspondante dans la base dans mon template j'ai un truc genre et bien si @acc ne contient qu'une ligne il ne m'affiche pas le label (alors que celui ci existe) si j'ai deux ligne ou plus tout va bien. si avant de traiter le template je fait un print de mon champs label alors apres traitement l'affichage est correct. (note que je fait un print sur n'importe quel colonne tout les colonnes s'affiche correctement) > > > si entre la recuperation et le passage au template j'ajoute > > warn map { $_->macolonne } @acc; > > map "force" le contexte liste (et retransforme ton tableau en tableau) > que fait le warn dans l'histoire ? > le warn fait rien de particulier : en fait des que je fait quelquechose avec une colonne particuliere (comme l'afficher via un warn) alors dans le template ca se met a marcher. > > alors tout ce met a marcher. > > Si ma table contient plus d'un element c'est ok. > > Je ne comprend pas trop bien ce qui se passe. > > > Arnaud as tu deja eu ce probleme et vois tu d'ou il peut venir ? > > J'ai jamais eu ce probl?me... > > piste possible : > > _ un wantarray manque dans l'impl?mentation de retreive_all (optimisation?) non pas d'optimisation > _ "" interpr?te diff?remment un scalaire et un tableau, quand tu appelles > $tmpl->param(table => \@acc); > Je *suppose* que le la partie droite de la fl?che '=>' est interpoll?e dans un > contexte de double quote... > Si l'op?rateur a ?t? red?fini et que \@acc est consacr? dans un type > Class::DBI ca pourrait mettre la grouille dans un code qui marchait bien > auparavant... > en fait l'operateur => n'est pas redifinie (pas par moi en tout cas) > que vaut \@acc ? \@acc et @acc sont ok. Comme je te l'ai dit des que j'affiche les valeurs de acc "a la main", l'appel au template suivant me donne un resultat correct. (en gros la mesure influe sur le phenomene : c'est un peu quantique mais bon) > > Encore une fois si t'avais un petit jeu de test (minimal) qui me permettrait > de me remettre dans les MEMES conditions, je pourrais te donner une reponse > plus pr?cise... > Je vais essayer de faire un petit fichier test Ce dont je suis sur c'est que cette erreur est lie a la derniere version de Class::DBI car le meme code avec la version precedente marche niquel. > Arnaud. > _______________________________________________ > Marseille-pm mailing list > Marseille-pm@mail.pm.org > http://mail.pm.org/mailman/listinfo/marseille-pm > From robert at silve.net Sat Aug 30 01:52:53 2003 From: robert at silve.net (Robert Silve) Date: Mon Aug 2 21:32:16 2004 Subject: [Marseille-pm] Fichier de test pour Class::DBI Message-ID: <20030830065253.GA15234@gandalf.local> Skipped content of type multipart/mixed-------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 248 bytes Desc: not available Url : http://mail.pm.org/pipermail/marseille-pm/attachments/20030830/c1587550/attachment.bin