 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Sara nous rend visite</title> <link rel="stylesheet" type="text/css" href="/paris-monger.css"> </head> <body> <table cellspacing="2" border="0" cellpadding="2" width="100%"> <tr valign="top"> <td width="33%" align=left valign=middle><a href="http://www.mongueurs.net/"> <img width="249" height= "108" src="/title.gif" align="left" title="Les Mongueurs de Perl" alt="Les Mongueurs de Perl" border="0"></a> </td><td align=center valign=middle> <h1>Sara nous rend visite</h1> <p>Un historique approximatif des runions de Paris.pm</p> </td> </tr></table> <hr noshade> <!-- HEADER -->   <p>Vous voulez venir  la prochaine runion, et vous ne savez pas o&ugrave; c'est&nbsp;? <a href="../comment.html">Voici le guide</a>.</p>  <h3>Table des matires</h3> <ul> <li><a href="0205.html">samedi 5 fvrier 2000</a> (prcdent)</li> <li><a href="0405.html">mercredi 5 avril 2000</a> (suivant)</li> <li><a href="../">Tous les comptes-rendus</a></li> <li>Les <a href="/photos/20000308/">photos</a> de cette runion. </ul> <hr noshade> <h2><a name="20000308">mercredi 8 mars 2000</a></h2>  <blockquote><i>La voix du secrtaire perptuel permanent informel officiel</i></blockquote>  Lorsque que je suis arriv  la taverne Rpublique,   8 heures plus ou moins quelques minutes, j'ai remarqu un  couple de cyclistes assis en terrasse.  &Agrave; part son quipement  cycliste, l'homme n'avait rien de particulier, mais la femme portait un  T-shirt avec la mention "geek.".  C'est comme cela que j'ai compris qu'il  s'agissait de nos invits Sara et Steve, d'Atlanta.  <p> Nous sommes alls comme de coutume en sous-sol. L, contrairement  l'habitude, la salle tait dj occupe par trois groupes. L'un d'entre eux avait semble-t-il prvu une sance impromptue de karaok (impromptue, donc sans quipement, heureusement), et comme  <a href="http://www.oreilly.com/catalog/regex/author.html">Jeffrey Friedl</a> le dit dans la  <a href="http://public.yahoo.com/~jfriedl/regex/intro.html">prface</a> de <em><a href="http://www.oreilly.com/catalog/regex/">Mastering Regular Expressions</a></em>, les membres de ce groupe  compensent leur manque de talent par un volume sonore lev.  Et nous avons d les supporter pendant plus d'une heure...</p>  <p> Les autres participants, dont deux revenants, sont arrivs rapidement&nbsp;: <ul> <li>Philippe "BooK" <li>Kai Carver <li>Stphane <li>Dao <li>Samuel "s'nuoM" <li>Stphane <li>Artur <li>David </ul>  Nous avons abords les sujets suivants&nbsp;: <ul>  <li>J'ai t lu secrtaire des Perl Mongueurs par acclamations. Lesquelles acclamations ont failli galer le niveau sonore du groupe d' ct.  <blockquote>Cela dit, il n'y a pas eu d'lection pour un secrtaire adjoint. On verra bien qui fera le compte-rendu du mois d'avril. Moi je ne serai pas l.</blockquote>  <blockquote><i>Eh bien je crois que ce sera pour ma pomme -- David</i></blockquote>  <li>Sara a prsent son  <a href="http://www.spatialfocus.com/contact.html">travail</a>. Elle est gographe, et elle s'occupe de collecter des donnes gographiques, de les stocker en conformit avec un standard plutt abscons, et de les restituer d'une faon agrable pour les utilisateurs. Pour ce faire, elle utilise la base de donnes  <em><a href="http://stein.cshl.org/AcePerl/">ACE-DB</a></em>  de <a href="http://stein.cshl.org/">Lincoln Stein</a>  (<a href="http://www-genome.wi.mit.edu/">Human Genome Project</a>). Pour afficher les donnes, les traitements qui s'enchanent sont&nbsp;:  <ol> <li>un script Perl, construisant un fichier HTML, <li>l'utilitaire <em>HTML_doc</em>, pour complter ce fichier HTML avec une table des matires, un haut et un bas de page, <li>un distilleur, qui convertit ce fichier HTML en fichier PDF. </ol> Le choix du format PDF se justifie par le fait que de la sorte, les utilisateurs ont exactement la mme chose lorsqu'ils lisent leurs documents  l'cran ou sur papier.  <li>Sara signale qu'un jour, elle a eu un problme avec la base de donnes. Elle avait donc envoy un e-mail   <a href="http://stein.cshl.org/">Lincoln Stein</a>. Ce dernier l'a contacte par tlphone ensuite, pour s'assurer  que la correction du problme convenait  Sara.  <li>Steve, quant  lui, ne travaille pas du tout en informatique. Il me semble qu'il utilise de temps en temps un ordinateur, simplement pour le traitement de texte. Et  la maison, il n'utilise pas Internet, l'ordinateur familial tant occup par sa femme ou son fils.  <li>Lors de la runion, Steve a d se croire comme chez lui, lorsque sa femme discute programmation avec son fils. Nous parlions assez souvent en Anglais, mais les sujets abords ne l'intressent gure...  <li>Sara et lui nous ont nanmoins parl de son voyage  Paris. Ils visitent Paris  vlo. Ils trouvent Paris assez bien adapt  la circulation cycliste. Il semble que la situtation  Atlanta est pire qu' Paris.  <li>Sara ne participe pas aux runions des  <a href="http://atlanta.pm.org/">Perl Mongueurs d'Atlanta</a>. Elle habite au sud de la ville, et les runions ont lieu au nord. Et traverser la ville  vlo...  <li>Sara et Steve ont choisi de visiter Paris, parce que  <a href="http://www.airfrance.fr/">Air France</a> accorde des promotions en ce moment, <a href="http://www.delta-air.com/">Delta Airlines</a> et Air France ont des accords pour les programmes de fidlisation  <em><a href="http://www.delta-air.com/travel/sp_offers/bonus_skymiles/">Skymiles</a></em>, ce qui fait que visiter Paris leur cote moins cher que de visiter Little Rock.  <li>Il existe peut-tre des programmes <em>Frequent Flyer</em> en Amrique, mais il n'ont pas de programme <em><a href="http://www.editions-oreilly.fr/club/index.html">Lecteur assidu</a></em> comme ce que nous propose <a href="http://www.editions-oreilly.fr/">O'Reilly France</a>.  <li>Sous Windows, il est possible d'utiliser des pipes comme sous Unix, mais les redirections ne fonctionnent pas. Du coup, les utilisateurs de Sara voient apparatre sur leur cran de nombreux messages qui ne leur sont d'aucune utilit. La solution est toute simple : crire un programme qui est l'quivalent du fichier <tt>/dev/null</tt>. Ce programme "lit" le standard input, et n'en fait absolument rien. Le programme est plus simple qu'un "hello world" : <blockquote><pre> int main (int argc, char * argv[]) {     return 0; } </pre></blockquote>  <blockquote><i>La voix de David</i><br> Ce ne serait pas plutt&nbsp;:<br> <pre> int main (int argc, char **argv) {     char buf[4096];     while( fread( buf, sizeof(buf), 1, stdin )) }         ;     }     return 0; } </pre> </blockquote> <li>Nos grands anciens (certains sont plus jeunes que moi) voquent le temps o&ugrave; Linux tait distribu sur disquettes. Notamment, Kai a une distribution SLS qui tient sur 90 disquettes&nbsp;! <blockquote> Cela dit, d'autres personnes ne doutent de rien. Allez donc voir ce <a href="http://rinkworks.com/stupid/cs_misc.shtml">lien</a>,  puis cherchez la chane de caractres "Zelos"... </blockquote>  <li>Encore un autre livre de bonne qualit et qui ne sort pas de chez O'Reilly&nbsp;: <em><a href="http://www.manning.com/Conway/">Object-Oriented Perl</a></em> de <a href="http://www.cs.monash.edu.au/~damian">Damian Conway</a>. On y trouve de bonnes ides, comme par exemple l'utilisation de <tt>overload</tt> sur des constantes.  <li>&Agrave; propos d'<tt>overload</tt>, Stphane suggre  Philippe d'utiliser cette fonction pour faire de l'arithmtique sur des mesures. Un tel module permettrait de multiplier des kilovolts par des milliampres et d'obtenir des watts en sortie.  <li>Stphane voque le problme de la compilation de Perl. Comme il n'y a pas de typage pour diffrentier les variables <tt>int</tt> des variables <tt>float</tt> ou <tt>string</tt>, l'interprteur (ou le  compilateur) doit tenir compte du fait qu'une variable peut changer de type entre deux utilisations. Il est possible, pour des packages et des modules, d'crire&nbsp;: <blockquote> <code> my Student $st1; </code> </blockquote> mais d'une part, cela n'est pas prvu pour les types lmentaires, d'autre part, mme pour les modules, le seul effet est documentaire. Pour Stphane, ce manque d'efficacit fait que Perl perd du terrain par rapport  <a href="http://www.python.org/">Python</a> et   <a href="http://dir.yahoo.com/Computers_and_Internet/Programming_Languages/Java/Compilers/">Java</a>,  pour lesquels il est possible de faire des compilations avec optimisation.  <li>Enchanant sur le problme de la compilation et de l'efficacit, Artur voque le cas d'<a href="http://www.microway.com">un <em>interprteur</em> Fortran</a>, qui tait plus performant que les compilateurs sur la mme machine. En effet, cet interprteur utilisait  son profit les fonctions "pipeline" du processeur, ce que les compilateurs ne faisaient pas. C'est  dire que le moteur de l'interprteur rside entirement en cache, ce qui fait que le pipeline ne cale jamais. Une instruction toutes les 5 nanosecones sans faille va toujours battre du code compil qui gnre des "page faults" sans arrt.  <li>Sara nous ayant apport un exemple de script, David fait quelques remarques sur le codage. Par exemple, l'utilisation de <tt>qw</tt> pour crire une liste sans aucune quote ni aucune virgule, ce qui est plus lisible. Egalement, il lui suggre de convertir une boucle <tt>foreach</tt> en <tt>map</tt>, ce qui procure un gain en efficacit.  <blockquote> Un <a href="http://kiev.wall.org/~larry/">penseur contemporain et bienfaiteur de l'humanit</a> a <a href="http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1999-11/msg00028.html">dit   ce sujet</a> (je traduis) : dire qu'il ne faut pas utiliser un  oprateur autrement que pour sa fonction d'origine me rappelle ceux qui  disent qu'il ne faut pas avoir de relations sexuelles dans un but autre que  la procration. Parfois, les effets secondaires sont plus agrables que la  fonction principale. </blockquote>  <blockquote> Une co&iuml;ncidence a fait que, le lendemain de la runion, j'tais en train d'plucher <tt><a href="http://www.cpan.org/modules/by-authors/id/MORTY/">Convert::Date</a></tt>  de <a href="http://umbc.edu/~mabzug1">Mordechai Abzug</a>.  &Agrave; un moment, il cherche  convertir un numro de jour <tt>$nbj</tt> de 1  365 (pour une anne normale) en numro de mois <tt>$num_mois</tt> et numro de jour dans le mois. Il procde de la sorte : <pre> my @tabj = (0, 31, 59, 90, 120, 151, 181, 212, 233, 263, 304, 334); my $num_mois = grep { $_ < $nbj } @tabj; </pre> ce qui convertit 1  31 en 1 (janvier), 32  59 en 2 (fvrier), etc. Il faudrait passer cela au chornomtre, mais  vue de nez, cela doit tre valable pour une table d'une vingtaine de postes. Si la table dpasse la centaine de postes, il est prfrable de revenir  une recherche squentielle, voire d'utiliser une  <a href="ftp://ftp.media.mit.edu/pub/orwant/wolf/algorithms-examples.tar.gz">recherche dichotomique</a>. </blockquote>  <li>Pour rsoudre un problme que Philippe se posait,  Stphane (je crois) lui a rappel l'utilisation du  modificateur <tt>/c</tt> dans les regexps. Par exemple, il veut trouver toutes les expressions "mot-cl = valeur", dans la chane "a=b, c, d=e". Le script ressemble  <pre> $_ = &lt;STDIN&gt;; while (1) {     /\G(\w+)=([^, ]+)/gc && print "Mot-cle $1, valeur $2\n"     or     /\G./gc     or last; } </pre> <TT>\G</TT> et <TT>/g</TT> permettent de reprendre la recherche l o&ugrave; on s'tait arrt. Sauf que, si la recherche  a foir  l'itration prcdente, on repartira au dbut de la chane. Et justement, <TT>/c</TT> permet de signaler que l'on repartira de l'endroit o&ugrave; l'on s'tait arrt, <em>mme si la recherche n'a pas  abouti</em>. Essayez le bout de code ci-dessus, sans le <tt>/c</tt>, vous  verrez, a boucle&nbsp;!  <li>&Agrave; l'oppos, il a t bien sr question d'obfuscation. Notamment, la formule de salut  la mode en France est "a+". Certains Perl Mongueurs ont dcid de la traduire en <tt>$a++</tt>, et d'obfusquer cette formule, dans la tradition des <a href="http://www.cpan.org/misc/japh">JAPH</a>, notamment un script de Samuel qui droule tous les entiers de 0  32767 puis de -32768  -1 pour trouver <tt>$a</tt> et son successeur. Dans le cas de -1 ou -2, cela prend un certain temps... Philippe et Samuel vont fouiller leurs archives respectives pour rassembler un florilge et le mettre sur notre site. Entre la runion et ce compte-rendu, ils ont rassembl <a href="http://ola.fr.eu.org/~mouns/perl/aplus.html">cela</a>. [ La version officielle est dsormais <a href="/aplusplus.html">ici</a>. ]  <li>Suite  la question d'un dbutant, Artur et Eric avaient essay de lancer un concours d'obfuscation du calcul de la longueur d'une chane de caractres, mais il n'a pas eu beaucoup de succs.  <li>Philippe continue  faire de l'arithmtique avec les expressions rgulires. Il parat qu'il a une regexp pour calculer les factorielles.  <li>Lors d'un prcdent concours, quelqu'un avait eu l'ide d'crire un programme pour l'OPC, court mais puissant.  Le programme livr ne contenait que la phase d'initialisation, qui  ouvrait un socket et tlchargeait la suite du programme. De  la sorte, la limite de 256 ou 1024 octets tait respecte.  Nos assombrisseurs en chef cherchent  utiliser  leur profit les fichiers standards que l'on trouve sur toutes les machines UNIX, comme <tt>stdlib.h</tt>. Ou bien, patcher l'interprteur <tt>perl</tt> pour y dissimuler une nouvelle fonction mise  profit pour le concours.  <li>Dans un but non pas d'obfuscation mais de performances, Samuel fait des <tt>tie</tt> sur des typeglobs. mes sensibles s'abstenir&nbsp;! Ou encore, des raccourcis tels que <tt>foreach(@_){&$_()}</tt> <blockquote> (Si tu avais eu connaissance des conseils de David, tu aurais peut-tre crit <tt>map {&$_()} @_</tt> !) </blockquote> D'autre part, Samuel a mis son  <a href="http://ola.fr.eu.org/~mouns/perl/Exception.html">gestionnaire d'exceptions</a> sur le web (mais pas encore sur CPAN).  <li>Pour en revenir  notre invite, nous avons compar les rglementations et usages pour l'architecture, l'urbanisme, etc. Ainsi, aux Etat-Unis, il est possible d'effectuer une transaction immobilire avec seulement l'acheteur et le vendeur.  C'est impensable en France, compte tenu de notre tradition centralisatrice, fiscale et gratteuse de papier&nbsp;! De mme, une grande partie des Etats-Unis n'est pas cartographie localement, car certains habitants considrent que si quelqu'un fait des relevs  proximit de leur habitation, cela constitue une intrusion dans leur vie prive, et ils sont prts  dfendre cette  vie prive les armes  la main... &Agrave; noter que cela leur permet galement de faire des conomies en matire d'impts locaux.  <li>Stphane, qui a vcu l-bas, fait remarquer que  d'un ct les Amricains sont trs chatouilleux   propos de leurs liberts individuelles, mais d'un autre  ct, les U.S.A. ont plusieurs <a href="http://www.odci.gov/ic/icagen2.htm">organisations d'espionnage</a>  intrieur, comme la <a href="http://www.nsa.gov/">NSA</a>, la DIA,  le <a href="http://www.fbi.gov/">FBI</a> <em>[et je crois que l'on a  coutume d'y ajouter l'<a href="http://www.irs.gov/">IRS</a>, qui s'occupe  des impts, ce qui en fait le service de renseignements le plus dtest]</em>. De mme, l'utilisation intensive des cartes de paiement fait que l'on peut cerner prcisment le style de vie, les gots et les activits des Amricains. Mais, prcise Sara, certains sont des adeptes du paiement cash. Ni chque, ni carte.  <li>Une particularit des Etats-Unis est la dcentralisation  outrance. Il y a les lois et les rglement fdraux, mais aussi les lois et  rglements de chacun des 50 tats, et aussi les  rglements des gouvernements locaux. &Agrave; titre d'ide, la Georgie comporte 600  <a href="http://dir.yahoo.com/Regional/U_S__States/Georgia/Counties_and_Regions/">gouvernements</a>  <a href="http://dir.yahoo.com/Regional/U_S__States/Georgia/Cities/">locaux</a>.  Sara nous explique que, par exemple, dans l'hypothse o&ugrave; elle  sentirait sa mort venir, elle aurait intrt  foncer  jusqu' la frontire avec la Floride. Cela permettrait   son fils de payer beaucoup moins de droits de succession sur l'hritage.  <li>La dcentralisation au niveau des gouvernements locaux fait que les adresses ne sont pas normalises. Ou plutt, comme je l'ai lu dans <tt>fortune</tt>, <em>ce qu'il y a de bien avec les standards, c'est qu'ils sont si nombreux que l'on peut choisir celui qui nous convient</em>. Sauf que dans le cadre de son mtier, Sara prfrerait qu'il y ait un seul standard pour les adresses de tout l'tat. Mais heureusement, Stphane lui indique  <tt><a href="http://www.cpan.org/modules/by-authors/id/DCONWAY/">Parse::RecDescent</a></tt>  et <tt><a href="http://www.cpan.org/modules/by-authors/id/F/FD/FDESAR/">Parse::Yapp</a></tt>, qui lui faciliteront vraisemblablement la tche...  </ul>  <p>Et je reste, jusqu' la prochaine fois, votre humble et dvou secrtaire <br>(c'est pas de moi, je l'ai pomp dans le  <A HREF="http://www.perl.com/pub/2000/03/p5pdigest/THISWEEK-20000305.html">P5P digest</A> de <a href="http://www.plover.com/~mjd/perl/">Mark-Jason D.</a>).</p> <!-- FOOTER --> <hr noshade> <table cellspacing="2" border="0" cellpadding="2" width="100%"> <tr valign="top"> <td align=left valign=middle> <p> Retour aux <a href="/">mongueurs</a> </p><p> <font size=-2><a href="http://validator.w3.org/check/referer">Vrification du HTML</a></font> </p> </td><td align="right"> <font size="-2">Paris, le  9 avril 2002<br> Copyright &copy; The Paris Perl Mongers, 1999-2003<br> The use of the camel image in association with the Perl language is a trademark of <a href="http://www.oreilly.com/">O'Reilly &amp; Associates</a>, Inc.<br>Used with permission.</font> </td> </tr> </table> </body> </html> 
