BooK ramène sa copine, et Moun's la harcèle de questions mathématiques
Un historique approximatif des réunions de Paris.pm
Vous voulez venir à la prochaine réunion, et vous ne savez pas où c'est ? Voici le guide.
Table des matières
La voix du secrétaire (Jean), de retour de vacances
Présents à la réunion, à peu près par
ordre d'entrée en scène.
- Emmanuel
- moi-même
- Hari
- Samuel (s'nuoM)
- Stéphane
- David
- Artur
- Jean-Christophe
- et, en fin de soirée, Philippe avec Estelle.
Cette fois-ci, le sous-sol était désert, et calme. Nous nous
sommes donc encore une fois retrouvés pour discuter de Perl et de
choses diverses, tout en mangeant un peu, et en sirotant une
bière
ou toute autre boisson à la convenance de chacun (je dis
cela pour que, la prochaine fois, Pixel accepte de venir ; c'est vrai que
le bar est spécialisé en bières, mais on peut boire
autre chose, et cette fois-ci, deux personnes ont bu du Pepsi-Cola, et une
troisième a bu de l'eau).
- Au début, Emmanuel et Hari m'ont un peu raconté ce sur quoi
ils travaillaient. Notamment, Emmanuel utilise
LDAP pour
construire un annuaire web. Le module Perl correspondant (celui de
Mozilla, ou celui du
CPAN ?)
est orienté
objet, comme la plupart, mais la sémantique objet est plutôt
curieuse. Pour modifier les informations relatives à une personne,
il faut construire un objet personne avec les nouvelles valeurs
des attributs, fusionner cet objet avec l'objet personne contenant
les valeurs d'origine, envoyer cela à un objet traitement,
puis, si l'on veut récupérer les messages d'erreur, à
un objet message.
Pourquoi
faire simple quand on peut faire compliqué ?
- En ce moment, il écrit, ou plutôt il doit écrire un
programme contrôlant la cohérence des emplois du temps. Le
problème est que ces emplois du temps sont saisis sous Excel, et que
les options de présentation (cadre autour des cellules ou des
groupes de cellules) ont une signification importante pour les emplois du
temps. Donc impossible de passer par un format du genre CSV. David lui
suggère de fouiller dans la version
Active State, qui permet d'aller
piocher dans les documents de type OLE.
- Hari travaille sur un système de messagerie, utilisant divers
formats, y compris des messages par fax. Jusqu'à présent, il
utilisait des solutions intégrées, mais il a
été obligé de se plonger dans les sources, et c'est
comme cela qu'il est venu à Perl.
- Il y a quelque temps, Emmanuel a téléchargé les
citations de Larry.
Résultat, pendant deux heures d'affilée, il a
été plié en deux. Plus tard, je ne sais plus à
quel propos, il a cité
#define NULL 0 /* silly thing is, we don't even use this */
-- Larry Wall in perl.c from the perl source code
- Juste après la dernière réunion, Emmanuel s'est
inscrit sur la
liste des Perl Mongueurs de Paris.
Il espérait y
trouver un moyen de poser des questions techniques, et apprendre ainsi
comment utiliser Perl de façon simple, lisible et performante. Et
qu'a-t-il trouvé ? Comment
écrire
$a++ de
la façon la plus biscornue possible, comment imprimer chaque
élément d'un tableau de façon non moins curieuse, et
autres obfuscations.
- En 1997, il s'est intéressé aux
CSS (cascading style sheets). Il
s'est donc inscrit à la
mailing-list
de W3 consacrée à
ce sujet. Le lendemain, il a relevé son courrier, et lu les messages
consacrés aux CSS. Le troisième message provenait d'un
employé de Microsoft, annonçant que même si le
consortium CSS avait inventé les CSS, c'était
Microsoft qui les avait brevetées. Par conséquent,
quiconque utilise des CSS doit verser des redevances à M$. Et cela
inclut les membres de W3C ! Emmanuel a été
dégouté, et s'est retiré de la mailing-list entre
autres pour cette raison.
- David a signalé qu'il existe une différence entre le
traitement des CSS par
Netscape
et le traitement par
IE. Lorsqu'il
demande l'affichage d'un texte en 9 points typographiques, l'un des deux
navigateurs (je ne sais plus lequel) affiche correctement du 9 points [Netscape], mais
l'autre convertit d'office à la taille supérieure, soit 10
points [Microsoft]. Du coup, pour les présents compte-rendus, il a recours
à l'acrobatie suivante : il crée deux CSS, une pour chacun
des navigateurs. Dans le source HTML, il établit un lien vers la CSS
prévue pour Netscape, et il ajoute du Javascript, qui sera
exécuté par IE, et qui chargera la CSS prévue pour IE.
- Samuel en est à
quatre modules
diffusés chez Source Forge.
Comme il utilise la license LGPL, il s'en suit une discussion sur les
licenses, essentiellement la LPGL et la license artistique.
- Cette fois-ci, nous n'aurons pas droit à des démos par
Samuel de ses exploits avec des typeglobs, des exceptions, et autres
curiosités. Son portable a surchauffé, et depuis, il a des
problèmes pour récupérer les données
présentes sur le disque dur de ce portable : comment connecter un
disque de portable à une machine de bureau ? comment lire un
file-system e2fs sous Windows ? Puis en évoquant les
sauvegardes sur disquettes, il raconte qu'il fait du RAID avec ses
disquettes !
- Plus tard dans la soirée, certains ont confiés qu'ils
avaient cru comprendre que Samuel avait eu des problèmes avec son
téléphone portable. Il vaudrait mieux parler de
téléphone cellulaire, mais c'est le terme "portable" qui
s'est imposé en Français. En Anglais, la confusion est
impossible. Selon le cas, "portable" se traduit par "portable" (ou
"cellular", ou "mobile") dans le cas des téléphones, et par "laptop" dans
le cas des ordinateurs. Quant à dire que le Français est
ambigu, et que l'Anglais est clair, David pense que c'est le contraire, et
qu'il y a plus de cas où deux termes français se traduisent
pas un même terme anglais. Je donne l'exemple du dromadaire et du
chameau (je ne sais pas pourquoi cet exemple en particulier :-).
- A propos de l'utilisation poussée de Perl par Samuel,
Stéphane lui suggère d'en parler sur la
liste
P5P,
pour avoir l'avis des experts. Il y a évidemment le risque de se faire
incendier, mais comme dit Stéphane :
Mieux vaut se faire assassiner que de se retrouver dans une impasse.
- Notre autre décortiqueur, Stéphane, aperçoit le
bout du tunnel pour son "shellish Perl", une variante de Perl dans
laquelle, comme en shell, les chaînes de caractères n'ont pas
toujours besoin de quotes, dans laquelle un token commençant par un
slash est soit une regexp, soit un nom de fichier, dans laquelle une
instruction peut se terminer par un saut de ligne, pas forcément par
un point-virgule.
Ce projet lui a permis d'apprendre beaucoup de choses sur
l'interpréteur perl. Notamment, il s'est intéressé au
tokenizer toke.c. Habituellement, lorsque l'on étudie les
principes de programmation des compilateurs et des interpréteurs, on
survole rapidement l'analyse lexicale, et on passe aux choses
sérieuses : l'analyse syntaxique. En fait, dans
l'interpréteur perl, la tokenisation est beaucoup plus
compliquée que l'analyse syntaxique. Cela rappelle FORTRAN, et
l'exemple traditionnel :
DO5I=1,10
DO5I=1.10
la première ligne étant un début de boucle avec
l'indice I, la deuxième ligne étant l'alimentation
de la variable DO5I.
- A propos de l'analyse syntaxique, un de nos grands anciens (qui ? David
? [oui]) rappelle que lors de la compilation de l'interpréteur
perl en version 4, yacc ou bison produisait une
quarantaine [une centaine !] de conflits shift/reduce ou de conflits reduce/reduce. Mais la
grammaire a été nettoyée pour la version 5, et ces
conflits ont disparu.
Apparamment, j'ai mal compris ce qui a été dit, car j'ai
fait le test
avec les sources perly.y de la version 5.005_02 et de la
version 5.6.0, et j'ai obtenu 113 conflits shift/reduce en 5.005_02 et
aucun en 5.6.0.
- Nous avons évoqué d'autre voies à explorer. Par
exemple, pourquoi ne pas faire un eval sur un tableau, au lieu de
toujours le faire sur un scalaire ou sur un bloc ? Nous avons
également commencé à délirer sur les
goto.
Que donne un goto EXPR, où EXPR est
un tableau ? Comment faire pour repositionner dynamiquement une
étiquette ? Et pourquoi ne pas faire de
comefrom,
ça existe bien dans Intercal ? [Remarque avec caller
on a ça plus ou moins...]
- Lorsqu'il a appris C, Artur gardait à portée de main le
tableau des priorités des opérateurs. C'est un bon moyen
d'apprendre, car de la sorte on s'imprègne de la liste, et au bout
d'un certain temps on les connait (quoique, Samuel ne savait pas que
l'opérateur d'incrémentation i++ date de la
première version de C, il croyait que c'était une invention
de C++, "rétrofittée" dans C). Artur regrette de ne pas avoir
eu la même chose pour Perl. On lui rétorque
perlop.pod. Cela dit, il n'est pas évident de comprendre au
premier abord les subtilités sur les opérateurs à un
seul argument, les arguments à droite d'un opérateur de liste
et les arguments à gauche d'un opérateur de liste...
- David fait un sondage pour savoir combien de personnes utilisent la
version
5.6.0.
Il semblerait qu'elle n'est pas encore très
répandue, même parmi les Perl Mongueurs.
- Parmi les autres nouveautés, Stéphane signale la nouvelle
version de Xfree. Seulement voilà, il a un problème avec
cette version. Il a coutume de se connecter sur sa machine une fois avec
steph, et une fois avec root, et de lancer deux serveurs
X différents, un pour chaque session. Avec l'ancienne version,
lorsqu'il passait d'un serveur X à l'autre, il devait attendre 4
secondes. C'était pénible, mais supportable. Avec la nouvelle
version, il doit attendre 10 à 15 secondes devant un écran
noir, ce qui n'est pas supportable.
- Nous avons évoqué d'autres langages, notamment les
langages postfixés. Les plus jeunes d'entre nous
(c'est-à-dire Jean-Christophe) ont appris la notation postfixe sur
HP-48, tandis que les plus vieux (Stéphane et moi) l'avons apprise
sur HP-25...
Stéphane a en plus à son actif
FORTH et
POSTCRIPT.
En revanche, toutes les personnes qui connaissent s'accordent à dire
que Lisp, avec la notation préfixe, est pénible. Mais Samuel
assure qu'il a vu passer une variante postfixe de Lisp. Stéphane
évoque à ce sujet une
citation de
Larry,
dans laquelle il comparait les parenthèses fermantes de Lisp aux
rognures d'ongle des programmeurs.
Lisp has all the visual appeal of oatmeal with fingernail clippings
mixed in." --Larry Wall (larry@wall.org)
- Samuel évoque également d'autres langages dont
l'utilité est
soit
l'étude théorique,
soit
douteuse :
Ces deux derniers figurent dans le site de la
chanson des 99 bières.
- Les joyeusetés de Redmond (Wa). Une collègue de David
était en train de travailler sur un document Word. Compte tenu des
nombreuses illustrations, ce document atteint la taille de 38 Mo.
Apparamment la collègue de David a réussi à
sauvegarder ce document, mais depuis elle ne parvient plus à
l'ouvrir. Elle consent à découper ce document en tranches
moins grosses, mais même avec ces bonnes résolutions elle ne
peut pas ouvrir le document !
- Cela me rappelle les
Computer
Stupidities. Il était question à un moment d'une personne
qui ne pouvait pas sauvegarder un document Word, car il n'y avait plus de
place sur le disque. Lors de la discussion avec le support technique, la
personne a émis l'hypothèse que, en remplaçant les
interlignes doubles par des interlignes simples, le document serait
peut-être moins volumineux... (Avec le lien ci-dessus, cherchez la
chaîne "double spaced")
Cela dit, comme quelqu'un l'a signalé, certains formats, comme PDF,
se basent sur des bitmaps, et donc dans ce cas la suggestion n'était
pas si stupide.
- Dans le même ordre d'idée, quelqu'un a
évoqué un faux bug sous Linux. Un néophyte avait
installé Linux sur sa machine, et au moment de se connecter, il
n'arrivait pas à saisir son mot de passe. En fait, le
néophyte croyait que le mot de passe aurait dû apparaître
à l'écran avec des étoiles. Or, la procédure
standard sous Unix est de désactiver l'écho. Mais quand on
n'est pas au courant...
- Nous avons évoqué les interfaces graphiques pour Perl. Le
module le plus connu est
Perl/Tk,
mais l'activité de développement sur ce module est actuellement
des plus réduites. Il y a également
Gtk, qui procure les avantages suivants :
- développement actif,
- c'est plus rapide,
- en mode console, Gtk utilise curses,
- en mode X, les éléments (widgets) sont plus
agréables que ceux de Tk.
D'ailleurs, le logiciel d'installation de la distribution de Mandrake est constitué
d'un script Perl qui utilise Gtk.
- Il y a longtemps, Kai avait évoqué
Wiki-Wiki-Web, un
site prévoyant la mise à jour des pages affichées par
n'importe quel internaute lambda, au moyen d'un script Perl-CGI et d'une
base de données NDBM. Artur, qui n'était peut-être pas
là lors de cette réunion, a découvert ce site et nous
signale de nouveau son existence.
- D'autres sites, dont le contenu est un peu plus léger (si vous
me permettez cet euphémisme) :
et il y a quelques mois, il y avait également le site de Transmeta,
qui affichait le texte "nous n'avons rien à dire". Malgré son
intérêt limité, le site recevait de nombreux hits
chaque jour, par des personnes qui vérifiaient qu'il n'y avait rien
à voir. Et ils visualisaient même le source dans lequel
figurait un commentaire du genre "nous n'avons rien à cacher non plus".
Stéphane nous fournit le source de cette page :
<BASE HREF="http://www.transmeta.com/">
<pre><i>Headers for cached page</i> <A
HREF=http://www.transmeta.com/>www.transmeta.com/</A>:
HTTP/1.0 200 OK
Date: Mon, 08 Nov 1999 22:50:32 GMT
Server: Apache/1.1.1
Content-type: text/html
Content-length: 263
Last-modified: Wed, 20 Oct 1999 21:04:40 GMT<hr></pre><HTML>
<!-- There are no secret messages in the source code to this web page. -->
<!-- There are no tyops in this web page. -->
<TITLE>Not yet the Transmeta home page</TITLE>
<BODY>
This web page is not here yet!<BR>
..but it is Y2K compliant.
</BODY>
</HTML>
- Un autre site, signalé il y a peu dans slashdot, est la
machine
à laver connectée au web [heh, les Mongueurs ont été
au courant de ceci le mois dernier !]. La discussion enchaîne sur
les réfrigérateurs qui tiennent à jour une base de
données pour les aliments qui y sont stockés, et qui sont en
mesure de communiquer avec le cyber-marché d'à
côté, et les automobiles munies de programmes de test interne,
et capable de commander des pièces détachées au
cyber-garage du coin.
- Certains d'entre nous accèdent à Internet en
désactivant Javascript, et en inhibant le chargement automatique des
images. Certains vont même jusqu'à utiliser
lynx
(dont la dernière version, soit dit en passant, traite
convenablement les tables). Cela étonne un certain nombre
d'amateurs : "Sans les images et sans les animations, à quoi
ça sert,
Internet ?" Eh bien, il y a des tas de choses intéressantes à
lire, mais il faut avoir le courage de lire du texte...
- S'il utilise avec circonspection les possibilités graphiques du
web, David n'hésite cependant pas à utiliser les
possibilités musicales. Il s'intéresse depuis peu à
Napster, qui permet aux participants de
partager leurs fichiers MP3. Il s'ensuit une discussion comparant Napster
(répertoire centralisé, stockage réparti) avec
Gnutella (répertoire et
stockage répartis).
- Il a été question de la société
Gandi, qui permet aux Français (et
autres Européens ?) d'enregistrer leur nom de domaine. Gandi
achète le nom de domaine 6 dollars aux USA, et le revend 12 euros
de ce côté-ci de l'Atlantique. Laurent Chemla,
interrogé par Le Monde signale qu'ils ont
récupéré leur investissement en 1 mois, et que
maintenant, il font du bénef sans rien faire (quoique, 6 dollars
pour 12 euros, cela ne restera peut-être pas
bénéficiaire longtemps :-). Laurent Chemla se présente
lui-même et ses collègues comme des voleurs, qui vendent du
vent. En fait, leur activité est simplement celle d'un
commerçant : achat - stockage - vente, quoique dans leur cas, le
stockage est plus simple et moins aléatoire que dans le cas des fruits
et légumes. Cela dit, chez les Grecs antiques,
les commerçants et les voleurs avaient le même dieu :
Hermès.
Je vous laisse tirer les conclusions que vous voulez.
- Compte tenu de la présence d'Estelle, il a été
question de mathématiques. Je n'ai pas suivi cette discussion, mais
je sais qu'à un moment Stéphane parlait du
procédé
diagonal de Cantor. Je suppose également que
cela devait être intéressant, car Samuel a fait plusieurs
faux-départs à partir de 22h30, et à chaque fois il
restait pour continuer la discussion. Il est parti pour de bon à
23h15. (Je voulais vous caser cet URL
qui a un nom de domaine qui me plaisait bien, mais vous n'apprendrez rien
sur Cantor. Dommage).
- Finalement, je vous laisse méditer sur ce point. Vous connaissez
tous l'algorithme de
Hunt-Szymanski,
vous savez tous qu'une sous-séquence commune maximale n'est rien
d'autre que l'image en négatif des différences entre deux
chaînes ou deux fichiers, vous avez décortiqué
diffutils
de GNU et
Algorithm::diff de
Mark-Jason Dominus,
en résumé, vous connaissez
les entrailles de diff comme votre poche. Philippe trouve que
diff, c'est très bien pour des fichiers texte (merci, on le
savait déjà). Mais quand il s'agit de comparer des fichiers
un peu plus structurés, là cela ne va plus très bien.
Notamment, Philippe voudrait comparer des fichiers HTML, sans être
perturbé par le fait que l'un dit :
<img src='toto.jpeg' alt='mon portrait'>
et l'autre :
<img alt="mon portrait" src="toto.jpeg">
En d'autres termes, il voudrait un html-diff sémantique.
Quelqu'un pourrait-il lui bricoler cela sur un coin de table ? Si oui, bon
courage pour 2000, 2001, et...
Michel Rodriguez,
un spécialiste XML et
qui intervient de temps à autre sur la liste, a prévu de
passer en France à la mi-juin. Par conséquent, la
réunion du mois de juin n'aura vraisemblablement pas lieu le
mercredi 7.
Erratum au compte-rendu de la réunion du 8 mars
J'ai écrit que lors de cette réunion Stéphane avait
évoqué les agences de renseignement américaines, comme
le FBI, la NSA et la DIA (qui dépend de l'armée). En fait, il
évoquait les agences de renseignement et de maintien de
l'ordre, comme le FBI, la NSA et la DEA (Drug
Enforcement Agency). Laquelle DEA est plus connue, plus importante et plus
active que la DIA. Mais le bruit aidant, j'ai mal compris.
HTML 5 - CSS v3
Mongueurs de Paris, le 28 juin 2018
Copyright © The Paris Perl Mongers, 1999-2024