La voix du secrétaire (Jean), avec l'aide de Julien
Présents à la réunion, en fonction de la position autour de la table
Jérôme,
David,
Nicolas,
Éric (glb),
Romain,
Théo,
Pierre,
moi,
Alexandre,
Charles,
Julien,
Benoît,
et Sébastien.
Comme les mois précédents, nous sommes allés
au Café Indiana, juste à côté de la pharmacie qui remplace la Taverne
République. Nous avons mangé des chimichangas,
des fajitas,
des blue cheese burgers et une entrecôte. Nous avons bu de la bière
(Arfliger ou quelque chose comme ça, Heineken, Blanche) et deux daïquiris (un pour moi,
un pour Pierre).
Romain n'a pas pu participer aux
Journées Perl Francophones 2007
à Lyon.
Il nous demande comment cela s'est passé,
si la nourriture était bonne. Tout de même,
cela se passait à Lyon, capitale de la
gastronomie !
Romain me demande ensuite si j'ai refait ma
communication éclair sur les roues.
Éh bien non, je suis passé à l'étape suivante.
Après avoir montré que « réinventer la roue »
était une mauvaise métaphore pour les mauvaises idées,
j'ai présenté une bonne métaphore pour
les mauvaises idées :
« réinventer la brosse à dents ».
J'avais préparé des transparents HTML
avec des photos. Mais je n'ai pas réussi
à les afficher sur le vidéo-projecteur.
Heureusement, j'avais également prévu
de montrer des exemples de brosses à dents,
les unes avec un manche anti-dérapant, les autres
avec un capuchon pour protéger la tête portant les
soies (comme si on ne les rangeait pas à l'abri dans le
placard de la salle de bains).
Pierre travaille chez
Red Hat.
Il utilise donc des
RPM
pour installer des
logiciels. C'est pour cela qu'il n'aime pas
installer des modules Perl à partir de
CPAN,
car cela se mélangerait avec les fichiers
provenant des
RPM Perl
stockés dans
/usr/lib/perl/.
Une possibilité consiste à installer le module, puis
constituer un
RPM
pour mieux coller à l'architecture
Red Hat. Une autre possibilité consiste à
installer le module dans un répertoire
personnel, puis à ajouter ce répertoire
à la variable
@INC.
En fait, Pierre ne savait pas que les modules
installés « à la main » depuis CPAN
sont installés dans
/usr/lib/perl/site_perl/,
donc sans marcher sur les pieds des modules
standards.
Nous avons parlé d'un GUI très décrié,
Perl/Tk.
Charles apprécie ce GUI, parce qu'il
est portable. Bon, d'accord, il y a
WxWidgets,
mais c'est assez récent. Dans le temps,
le seul GUI portable était Perl/Tk.
C'est également le premier GUI qui
a utilisé un pack manager.
Moi, je trouve que Perl/Tk est
le plus programmer-friendly.
L'initialisation d'une fenêtre avec tous les
widgets qui la peuplent
est nettement plus simple en Perl/Tk qu'en
Gtk.
Charles est arrivé à créer une
pendule d'échecs
en Perl/Tk. D'une part il y a
les événements du genre clic de souris
ou appui sur une touche du clavier,
d'autre part la pendule doit également
réagir au temps qui passe, même si
aucun événement ne lui arrive de l'extérieur.
Là où Charles et moi divergeons, c'est
sur l'origine de Tk. Pour Charles,
Tk est un développement qui a pris pour
base le GUI de Tcl. Pour moi, Tk est
le GUI de Tcl. Tcl sans Tk,
c'est un pur langage de script, qui
fonctionne avec une ligne de commande
et des fichiers séquentiels en entrée
et en sortie. Pour Charles, Tcl sans
Tk sait déjà dessiner des boutons
et des fenêtres.
Apparamment, le
wiki Tcl francophone
et Wikipedia
semblent me donner raison.
La plupart des administrateurs systèmes,
lorsqu'ils doivent écrire un script,
commencent par « #!/bin/bash »
ou par « #!/usr/bin/p », suivi selon
l'individu par
« erl »
ou « ython ».
D'autres, paraît-il, commencent
par « <?php ».
Il paraît même qu'il existe un livre
PHP For Sysadmins !
Si Firefox
et Internet Explorer
sont les navigateurs web les plus utilisés,
certains ont commencé avec d'autres navigateurs,
soit parce que cela fait longtemps qu'ils utilisent
le web, soit parce qu'ils avaient une
installation désuète.
Certains racontent avoir fait leurs débuts
sur Arena.
D'autres, comme moi, ont utilisé
Mosaic.
Dans mon cas, c'est parce qu'on m'avait
collé une machine avec
OS/2
et le navigateur web sur cette installation était
Mosaic
du NCSA
(et non pas « NSCA » comme j'ai eu tendance à dire).
Je croyais que Mosaic était l'ancêtre de
Netscape Navigator,
et par là-même celui de
Mozilla
et de Firefox.
On m'apprend qu'une autre branche de l'arbre
généalogique relie Mosaic à Internet Explorer.
En effet, une boîte qui s'est chargée de développer
Mosaic a été rachetée par Microsoft et son nom
figure dans les informations de copyright
d'Internet Explorer.
Et le NCSA
est également connu pour avoir écrit un
serveur web,
ancêtre d'Apache.
car on lui répond : « ça ne marchera jamais. »
ou bien : « UTF-8, cela ne permet pas d'afficher
les accents. ».
Julien m'a communiqué ultérieurement quelques
précisions et quelques développements, que je
vous livre en annexe.
Nicolas a apporté un livre sur la conduite de
projet. Jérôme a regardé la notice biographique
de l'auteur et s'est aperçu que ledit auteur
habite à Redmond. Et alors ? Il y a des gens
bien, chez Microsoft !
Il a été question de qualité de code, mais je ne me
souviens que d'une chose, nous avons convenu qu'il
s'agissait d'une notion très subjective.
Dans un souci de lisibilité du code,
on peut être amené à utiliser des noms
de variable à rallonge. Ainsi, chacun
comprendra à quoi sert la variable
numero_page_en_cours.
Mais cela peut poser des désagréments
plus ou moins graves. Parfois, cela oblige
à passer plus souvent à la ligne, ou bien
à avoir une fenêtre d'éditeur qui dépasse
de très loin les 80 caractères traditionnels.
Ou alors, cela peut introduire des bugs
inattendus. Cela m'est arrivé dans un langage
autre que Perl, mais je l'illustre ici par un
exemple reconstitué en Perl.
Éh bien, si Perl avait partagé une particularité
regrettable du langage que j'utilisais, le programme aurait
terminé très rapidement, après zéro itération. En effet,
seuls les 12 premiers caractères d'un nom de variable
sont significatifs. Donc, le nom $racine_carree_avant
et le nom $racine_carree_apres désignent la
même variable et la valeur absolue de la différence
est toujours à zéro.
En revanche, nous détestons tous la
notation hongroise.
Pour ceux qui l'ignoreraient, c'est
la notation qui consiste à préfixer les entiers
par n, les chaînes de caractères par
sz, les pointeurs sur entier par pn,
les pointeurs sur chaîne par psz et ainsi
de suite.
Quelqu'un a fait migrer un de ses serveurs vers Linux.
Pourquoi ? Parce qu'auparavant, ce serveur
fonctionnait sous Windows-NT4 et que NT4 n'est
plus supporté par Microsoft. Donc, il vaut mieux
changer avant que ça casse.
Julien épate les personnes avec qui il travaille
en utilisant sous Windows des outils provenant
du monde Unix, notamment vim.
Par exemple, pour réindenter correctement
un fichier source, il tape : « gg=G ».
Décomposons cette commande. « gg » permet
de positionner le curseur au début du fichier,
tandis que « G » le positionne à la fin.
« = » fonctionne comme de nombreuses commandes
sous vi : en la doublant, la commande
s'applique à la ligne courante. En la doublant et en
la préfixant par un nombre n, elle s'applique
sur n lignes à partir de la ligne courante.
Ou alors, on peut la faire suivre d'une commande de
déplacement et alors elle s'applique à la portion
du fichier entre l'origine et la destination du déplacement.
L'origine étant dans le cas présent le début du fichier,
et la destination étant la fin dudit fichier, il est
réindenté en totalité.
Julien a dit avoir recommencé à se servir de
vi
(en fait
vim)
car les dernières versions apportent toutes les fonctionnalités
dont il avait besoin et qui, jusque-là, n'existaient que sous
Emacs.
Nous évoquions plus haut les désagréments supposés
du codage UTF-8. Quelqu'un signale que
xemacs
ne sait pas traiter l'UTF-8.
[ Mais comme précédemment, la faute n'incombe
pas à UTF-8, mais à l'autre protagoniste, dans ce cas
xemacs. ]
J'avoue que je préfère
GNU-Emacs,
car les rares fois où j'ai tenté d'utiliser
xemacs,
j'ai eu des problèmes avec le pavé numérique,
qui n'était pas reconnu.
Quelqu'un a signalé que xemacs était la version d'Emacs
pour environnement graphique. Je crois qu'il s'est
mépris sur la signification du « x ».
Cela ne signifie pas « version pour X11R6 »
mais « version forkée ». J'utilise GNU-Emacs
en environnement graphique
et je dispose de la souris (que j'utilise, somme toute
assez peu), de menus déroulants (que j'utilise, ma
foi, rarement), de barres de défilement (que j'utilise
encore moins souvent) et d'une barre de boutons (que je
n'utilise jamais).
Tout le monde connaît
tail -f
pour surveiller le contenu d'un fichier journal.
Mais connaissez-vous tail -F ?
Cette option « grand F » fait de même,
avec l'avantage de ne pas s'emmêler les pinceaux
si un logrotate survient.
Certains ont fait remarquer que la réunion ressemblait
assez à une réunion d'anciens alcoviques
(c'est-à-dire qui ont travaillé chez
Alcove).
En effet, il y a Benoît, Pierre, Alexandre et Julien.
Et en fait, j'ai cru à tort que
Romain et Éric en faisaient partie également, compte
tenu qu'ils étaient déjà en relation avec les
précédents avant de participer aux réunions
de Mongueurs.
Il paraît que ma mémoire étonne de nombreuses personnes.
Il y a quelqu'un d'autre qui a une mémoire importante,
le
« bisounoursgarou ».
Il garde trace de
tout ce qui a été dit dans son milieu professionnel
et il le ressort au plus mauvais moment. Par exemple,
c'est lui qui insiste pour obtenir enfin la rédaction
de la documentation promise depuis belle lurette.
Ou bien alors, il se rappelle une rebuffade qu'il
a subie, lorsqu'il a voulu déplacer une réunion
pour des raisons professionnelles. En effet, les
réunions ont toujours lieu le lundi en fin d'après-midi,
et « il n'y a pas de raison que cela change ».
C'est ainsi que notre Bisounours se présentera
le lundi 24 décembre pour participer à la réunion.
Il se doute qu'il n'y aura pas grand monde (euphémisme
pour dire « personne ») et il ressortira
la règle intangible à son interlocuteur.
Si David n'a pas encore eu le temps de lire
Science of Discworld,
il lit quand même du
Terry Pratchett
en ce moment. Il s'agit de la série
Tiffany Aching, c'est-à-dire une fillette
de 8 ans dans le premier roman, de 14 ans
dans le troisième, issue d'une famille de bergers
mais promise à un avenir de sorcière.
Cette série est destinée aux
« young adults »
(expression politiquement correcte pour
« adolescents » ou « pré-adolescents »).
C'est pourquoi David le lit avec sa fille,
qui est emballée par ces romans.
Quelqu'un a vu une vidéo montrant une femme américaine
à qui l'on posait quelques questions de géographie.
Par exemple : « Dans quel pays d'Europe
se trouve
Budapest ? »
La réponse de cette
femme a été : « Parce que l'Europe, ce n'est
pas un pays ? » Après quelques échanges,
la personne a émis l'hypothèse qu'à Budapest
« les gens doivent parler français ».
Cela me rappelle une phrase sortie, vraisemblablement,
de fortune :
War is God's way to teach geography to Americans.
Traduit en français, en tenant compte de la propension
américaine à mettre Dieu partout et de la réticence
française à faire de même :
C'est grâce aux guerres que les Américains apprennent
la géographie.
En effet, tous les Américains peuvent situer le
Viêt-nam et l'Irak sur un planisphère. Mais rares
sont ceux qui peuvent situer, par exemple, la Hongrie.
Nous avons évoqué l'histoire de l'euro. Il est difficile
de donner une date exacte de l'apparition de
l'euro.
En effet, pour le commun des mortels, l'euro est
apparu le 1er janvier 2002, avec une
période de quelques semaines où il a cohabité avec
le franc
ou les autres monnaies européennes.
Mais en fait, l'euro était déjà en vigueur depuis 1999 pour
quelques catégories réduites de personnes : les
banquiers et les courtiers en bourse.
D'autre part, si l'Angleterre n'a toujours pas
adopté l'euro, en revanche un pays récent de
l'Union européenne, la
Slovénie,
l'a déjà adopté
comme monnaie.
Il y a eu une longue discussion sur l'état de
la démocratie en France et dans le monde.
Je ne donnerai pas les opinions de chacun, car
je ne m'en souviens pas exactement et je ne souhaite
pas trahir la pensée de mes interlocuteurs.
Simplement, lors de la réunion, Charles a
utilisé le terme « royauté » en tant
que contraire de la démocratie, ce qui pour moi
est un contresens. J'ai essayé de placer les
termes « despotisme » et « dictature »
dans la conversation, mais Charles a continué
à affirmer, par exemple, que « la Libye est
une royauté. »
[ Lorsque l'on regarde la CEE puis l'UE,
depuis l'Europe des 6 jusqu'à l'Europe des 15,
on peut remarquer qu'il y a eu quasiment parité
entre les monarchies et les républiques.
J'ai utilisé le terme « monarchie » au
lieu de « royauté » à cause du Luxembourg
et de lui seulement. Cela nous montre ainsi
plusieurs exemples de royautés démocratiques,
où le premier ministre est élu par le peuple, ou
bien nommé en fonction de la majorité du parlement
élu par le peuple.
Ailleurs dans le monde, on trouve d'autres exemples
de monarchies démocratiques ainsi que plusieurs
exemples de républiques dictatoriales.
]
En fait ça illustre les méfaits de l'incantation magique suivante :
Ma base est en UTF-8 donc tout va bien car avec un charset UTF-8 mes pages
s'affichent bien.
Or le client mysql à l'insertion de données ne commençant pas par un SET
NAMES UTF8, il considère qu'il reçoit des données en iso8859-1-sv (si je
me souviens bien des valeurs par défaut de mysql sur Debian). Il les
encode de "latin1 vers charset de la base".
Ainsi « é » => un octet en latin => deux octets en utf8 Atilde + (c) AVANT
TRANSMISSION à la BASE => 4 octets au final APRÈS RÉENCODAGE.
Pourquoi ce code marche en général ?
Parce qu'à la lecture comme il ne spécifie toujours pas le charset, la
même erreur est commise.
Résultat pas de problème, c'est juste que le « é » est stocké sur 4 caractères
et que bizarrement, les fonctions sur les chaînes de la base sont pétées.
Qu'est ce que je fais de travers ?
Je me connecte en utf8 à mysql avec un shell ouvert en putty en charset
utf8 en exportant mes locales en utf8 et en faisant un SET NAMES UTF8 en
SQL et que je leur dit : c'est normal que « Nestlé » soit écrit avec Atilde
copyright ?
Ils me répondent, ben oui, on sait, mais tout le monde sait que ce que tu
vois c'est normal. Quand ça marche pas, tout va bien.
Et c'est là où je suis pété de rire, car mon client est une web agency
connue qui fait du site web international depuis moults années.
Pourquoi mon code foire ?
Par ce que je spécifie toujours explicitement au serveur le même charset,
que celui du client.
Donc par rapport aux habitudes je fais une erreur (+ x - => -). Si je
faisais deux erreurs ça passerait.
L'enfer c'est pas tant utf8 que quand les développeurs plutôt que de
comprendre cherchent à ce que « ça marche », et considèrent comme déviant
toutes techniques qui ne « marchent pas ».
À ton avis, quand 4 développeurs sur 4 disent que j'ai tort, vont-ils
changer leurs habitudes ?
Voici le contenu du pack linux developer survivor kit pour windows :