Présents à la réunion, en fonction de l'ordre d'arrivée
moi,
Théo,
David (L),
et Olivier.
Nous avons mangé entre autres du curry de poulet, des nouilles
sautées aux crevettes, du canard pipa,
des nougats chinois, des beignets de pomme,
des beignets de banane et un parfait.
David a bu de la bière Singha, puis a fait
comme les trois autres qui avons bu de l'eau.
Un moment, j'ai cru que la
malédiction de l'entre-deux tours
était revenue et que nous serions deux à la réunion.
En fait, il y a quand même eu quatre participants
à la réunion. David nous explique l'une des raisons de ce
faible nombre. Il semble que le serveur de listes des Mongueurs
ait quelques petits problèmes. Comme j'ai pu le constater par moi-même
le lendemain,
certains messages ne passent pas, ou bien arrivent dans la boîte
aux lettres des abonnés avec plusieurs jours, voire plusieurs
semaines de retard. Donc, David a envoyé à la fin de la semaine
dernière un message pour recommander de nous rencontrer
au Da-Lat,
comme au mois de janvier.
Il n'a eu aucune réponse, tant positive que négative.
Il a donc envoyé un autre message pour dire en substance,
« puisque personne ne s'y oppose, nous irons
au Da-Lat. » et il a mis à jour la page d'accueil
de Paris.pm
pour y faire apparaître l'adresse du Da-Lat.
J'ai vu passer le message de commit, donc j'étais au
courant du lieu. Accessoirement, j'ai remarqué que
David n'avait pas mis la date à jour, donc je l'ai fait.
Mais comme aucun message n'est passé sur la liste, rares
sont ceux qui se sont souvenu que le jour était arrivé.
Théo a essayé de résoudre un problème consistant
à nier une expression régulière. En d'autres
termes, pour une expression régulière E1,
trouver une expression régulière E2 telle
que les deux lignes soient équivalentes :
$_ !~ /E1/;$_ =~ /E2/;
avec le cas, assez simple, d'une expression
régulière contenant en tout et pour tout la chaîne
"foo". Je prends le cas encore plus
simple d'une chaîne constante d'un seul caractère.
Ainsi, les deux lignes équivalentes seraient :
$_ !~ /a/;$_ =~ /^[^a]*$/;
Pour ceux que les maths ne rebutent pas, cela se traduit
par le fait que la négation de
Il existe un caractère, tel que ce caractère est égal à "a".
est :
Pour tout caractère de la chaîne, ce caractère est différent de "a".
Nous ne sommes pas allés jusqu'au bout de la réflexion sur la négation
de /foo/. La solution, que je n'ai pas testée, ressemblerait
à :
$_ =~ /^(?:.(?!foo))*$/;
mais je ne suis pas sûr que le test soit positif sur une chaîne
vide ou une chaîne commençant par "foo".
J'ai installé Perl 5.10 chez moi. Je n'ai pas encore essayé
toutes les nouveautés de cette version. Si j'ai installé la 5.10,
c'est parce que j'ai reçu l'avis d'un
CPAN tester
m'avisant que mon
module de calendrier républicain
plantait en Perl 5.10. Je n'ai pas lu en détail le
rapport de plantage,
je me souviens juste que les problèmes se trouvent dans le test qui
recherche le dernier jour du mois. Comme tous les mois
font 30 jours, la fonction devrait être assez simple. En fait non,
car j'ai considéré que les jours complémentaires de la fin de
l'année constituaient un « treizième mois » de longueur
5 jours pendant les années normales et 6 jours les années bissextiles.
Je rappelle à Théo que la première règle pour les années bissextiles du
calendrier républicain
consistait à fixer le jour de l'an à
l'équinoxe d'automne.
Il se trouve que la République a été
proclamée lors de l'équinoxe d'automne de 1792. Puis, on s'est
avisé que l'équinoxe d'automne était un très bon symbole pour
la partie « égalité » de la devise « Liberté, égalité, fraternité ».
Dans un deuxième temps, on s'est aperçu que les calculs
pour déterminer l'équinoxe d'automne étaient plutôt pénibles,
donc une réforme a été planifiée pour adopter une règle dans
le même genre que le calendrier grégorien :
« toutes les années divisibles par 4, sauf celles
divisibles par 100, mais quand même celles divisibles... »
Mais Napoléon a abrogé le calendrier le 10 Nivôse XIV, c'est-à-dire
le 31 décembre 1805, avant que cette réforme soit
mise en application.
Olivier est allé au FOSDEM, il y a quelques semaines, avec Laurent un autre
mongueur parisien (qui a publié un compte-rendu dans GNU Linux Magazine
d'avril). Il y avait
à cette occasion un exposé de Patrick Michaud sur
Perl 6.
Olivier et Laurent ont raté cet exposé. L'exposé présentait
de nombreuses constructions et de nombreux exemples
de code en expliquant : « Ça, vous ne pouvez
pas le faire en Perl 5 mais vous pourrez le faire en
Perl 6. » Hélas, dans la moitié des cas, les
fragments de code étaient valides en 5.10 ou très facilement
adaptables.
Nous avons parlé des prochaines conférences. Les
Journées Perl Francophones
auront lieu à Albi, à la fin du mois de mai.
Le problème pour cette conférence, c'est les moyens de
transport. Il y a le TGV ou l'avion jusqu'à Toulouse,
mais ensuite, il faut attendre la correspondance pour
aller jusqu'à Albi en TER. Ou bien, comme cela a été
suggéré lors de l'AG de l'Association,
une fois à Toulouse, il serait peut-être possible
de louer une voiture genre Espace à plusieurs,
puis faire une heure de route pour rejoindre Albi.
Quant à
YAPC::Europe,
cela aura lieu à Copenhague.
David trouve que les dates sont mal choisies :
du 13 au 15 août.
David s'est remis depuis le début de l'année à écrire
les
P5P Digests.
L'activité est très fluctuante. La semaine passée,
il y a eu 3 patchs et un seul fil de discussion.
Du coup, la rédaction du P5P digest a pris juste
une heure. Les autres semaines, cela prend beaucoup
plus de temps.
L'une des dernières activités Perl de Théo,
c'est de tenter d'extraire une balise d'un
fichier PDF. Mais le module qu'il utilise,
PDF::Simple,
sort de nombreux avertissements lorsqu'il s'exécute
avec use warnings.
À propos de PDF, je signale à Théo une
anecdote
que j'ai lue il y a longtemps sur le
Forum sur les Risques Technologiques.
Quelqu'un a diffusé un fichier PDF contenant des
phrases confidentielles, du genre patronyme d'une personne
mise en cause. Pour garantir la confidentialité, le créateur
du fichier PDF a recouvert les mots en cause d'un rectangle
noir pour les occulter. Un lecteur du fichier PDF ne s'est
pas contenté de lire le fichier. Il a copié-collé le texte
et c'est ainsi qu'il a retrouvé les mots confidentiels,
l'opération de copie n'étant pas affectée par le masque noir.
Théo connaissait cette anecdote, ainsi qu'une autre
similaire. Il existe une
interface speak,
qui lit le document par synthèse vocale. Et cette lecture
passe sans gêne sur les mots masqués, les lisant à haute
voix sans aucun problème.
David se fournit habituellement chez les magasins en ligne,
tels que
Telemarket
ou OOShop.
Du coup, il conserve les factures sous forme de
fichiers PDF et il peut comparer les prix sur
une durée de plusieurs années. Qui se souvient
par exemple
du prix de la bouteille d'huile il y a cinq ans ?
David n'a qu'à consulter son fichier PDF d'il y a cinq ans
et il peut constater que les prix de divers articles
ont nettement augmenté dans l'intervalle.
David nous évoque son travail sur Oracle, pour l'optimisation
des requêtes utilisées dans les applications de sa société.
En utilisant une option dans Oracle, il est possible
d'avoir à la fin de la journée des statistiques
sur les requêtes du jour, ainsi que des suggestions
proposées par Oracle. Ainsi, Oracle peut suggérer
de réécrire telle ou telle requête en remplaçant
la valeur « en dur » par une variable,
ce qui permettrait d'assimiler cette requête à une autre
requête similaire, donc d'économiser sur la préparation
de ces requêtes.
Une nouveauté dans le langage de requête d'Oracle, c'est
le test overlap entre deux
plages de dates. Cela permet d'exprimer en une
seule expression ce qui prendrait quatre expressions
dans les autres langages.
[
Je ne suis pas sûr qu'il faille quatre requêtes dans
le cas général. Si l'on veut tester le recouvrement
entre la plage DD1-DF1 (date de début et date de fin)
et la plage DD2-DF2, il suffit de tester
DF1 > DD2 & DF2 > DD1
Ces deux comparaisons ne premettent pas de savoir si une
plage est entièrement comprise dans l'autre, ou de savoir
laquelle des deux commence la première, mais elle assure
qu'il existe au moins un instant t qui figure
dans les deux plages.
]
Les jointures externes se font très facilement en Oracle.
Il suffit d'écrire
SELECT *
FROM weather, cities
WHERE weather.city =(+) cities.name;
L'élément (+) permet de montrer de quel côté
la correspondance tolère une absence. Tandis qu'avec
PostgreSQL,
la jointure externe
nécessite la syntaxe verbeuse suivante :
SELECT *
FROM weather LEFT OUTER JOIN cities ON (weather.city = cities.name);
Il est question d'un troisième SGBD et de sa documentation.
Notamment, pour exprimer une date en SQL dans cette base
de données, il existe plusieurs formats. La documentation
liste ces formats. Par exemple, vous pouvez, si tel est
votre désir, exprimer une date dans le format suédois.
Sauf que la documentation n'explique pas à quoi ressemble
le format suédois.
Les Perl-5 Porters sont en train de migrer
le développement de Perl du gestionnaire de sources
Perforce
vers Git,
car Perforce offre un nombre limité de
licenses.
Cela me rappelle un projet en 1993, qui utilisait
PVCS.
Il y avait une quinzaine de programmeurs pour trois
licences PVCS. L'admin du projet a écrit en shell
quelques utilitaires pour utiliser PVCS, qui étaient ni plus ni moins
que des encapsulations de
su.
Si PVCS était la crème de la crème parmi les gestionnaires
de sources du début des années 1990, à l'époque où il
avait pour concurrents essentiellement rcs
et sccs, ce n'est plus le cas maintenant.
Et pourtant, là où Olivier travaille, quelqu'un a voulu
imposer PVCS. Heureusement, cela ne s'est pas concrétisé.
Outre PVCS, David a eu l'occasion d'utiliser toute une suite
d'outils logiciels, dont le nom commençait à chaque fois
par « p ». Je n'ai pas retenu la liste.
Il a été question du 29 février et de son influence
sur l'informatique. En effet, certains programmes n'appliquent
pas la formule correcte pour savoir si une année est bissextile.
Dans le forum sur les risques technologiques,
que je n'ai pas lu depuis quelques mois, il y a
régulièrement
quelques articles
sur le
29 février,
tout comme il y en a régulièrement sur
l'heure
d'été.
Au moment où nous sommes allés régler l'addition, nous avons vu
l'ordinateur qui tient lieu de caisse enregistreuse et le programme
qui tourne dessus. C'est un programme au graphisme particulièrement
simple, voire simpliste. Cela ressemble à ce qui se faisait avec
Windows 3.1. David a même dit (mais l'a-t-il dit sérieusement ?)
que cela devait être une application sur AS/400.
J'ai répondu que non, cela ne ressemble pas à de l'AS/400,
car les gros systèmes IBM, tels que MVS et AS/400,
affichent habituellement le texte en vert sur fond noir.
Il a été longuement question du métro parisien. J'ai rappelé un
échange qui s'est produit le 9 février, lorsque nous
sommes allés prendre un verre à l'issue de
l'AG.
Une personne décrivait le métro avec des termes épouvantables,
notamment à cause de la compression que subissent les
passagers, lors des heures d'affluence. Une autre personne
a répondu que soit c'était un mensonge, soit la première
personne prenait la ligne 13. Éh bien, oui, la première personne
prenait la ligne 13.
Pour passer le temps dans le métro, Théo a choisi de lire
un livre qui traite justement du métro et de sa sociologie.
Par exemple, l'auteur se demande pourquoi certaines
stations sont nommées avec seulement le patronyme d'un
personnage célèbre
(Jaurès,
Gambetta),
soit avec le prénom et le nom
(Alexandre Dumas,
Edgar Quinet).
Également, pourquoi certaines stations ont
un trait-d'union
(Richard-Lenoir,
Censier-Daubenton)
et d'autres, non.
Finalement, l'auteur essaie de retrouver l'influence
de l'Histoire, par exemple comment la Libération de Paris
a été représentée dans le métro.
À propos de l'influence de l'Histoire, je souligne
que la Guerre Froide n'a pas eu d'influence
sur le métro. En effet, un ancien collègue m'a
fait remarquer que, grâce au métro parisien,
la Maison Blanche était voisine du Kremlin.
J'ai vu récemment un
site web
donnant un anagramme pour chaque station du métro parisien.
Lors de la réunion, j'ai dit que je n'avais aucune idée
de l'endroit où j'avais vu ce site. David et Théo n'ont
eu aucune peine à me donner des conseils. L'un m'a dit
de faire une
recherche avec « métro+anagrammes »,
l'autre a supposé que
l'Oulipo
devait être dans le coup.
Et rappelons qu'il existe un module Perl qui s'intéresse
au métro de Paris et de quelques autres villes :
Acme::MetaSyntactic::metro.
David explique que ce qui l'intéresserait, ce sont les tronçons
et les stations inaccessibles au public. À certains points du
parcours, si l'on regarde dans la bonne direction au bon
moment, on peut apercevoir une station inconnue, ou bien une
voie qui bifurque de la ligne sur laquelle on se trouve.
[ Rappel : BooK a
déjà eu l'occasion
de visiter quelques tronçons inaccessibles au public.
]
David évoque les récentes extensions du métro. Il n'y en
a pas eu beaucoup. J'ai sorti mon plan de Paris, que
j'ai acheté le 2 juin 1999,
le jour où il y a eu une grève générale de la RATP
et l'une des premières réunions des Mongueurs.
La ligne 14 existait déjà depuis quelques mois, et même qu'elle
était en grève ce jour-là. Depuis, les extensions du
métro ont été seulement la prolongation de cette ligne
d'un côté jusqu'à Saint-Lazare, de l'autre côté
vers les Olympiades. Sinon, les extensions précédentes
doivent dater des années 1980 : la ligne 1 jusqu'à
la Défense, la ligne 13 jusqu'à Asnières-Gennevilliers
et la ligne 7 jusqu'à la Courneuve.
En fait, c'est plutôt la SNCF qui oeuvre pour les transports
souterrains. J'ai lu dans un
blog
que les travaux Castor
pouvaient être comparés, au moins pour leur
durée, à la construction de la
Pyramide de Kheops.
Le mois dernier,
David constatait avec stupeur que le site
Vélib'
ne fournissait plus le détail des itinéraires
de l'abonné. Olivier apporte aujourd'hui une
rectification : si le trajet est dans le
cadre de l'abonnement, donc gratuit,
alors le site ne donne pas les détails de l'itinéraire.
En revanche, si le trajet est payant pour diverses raisons,
dépassement du temps par exemple, alors le site Vélib'
donne le détail de l'itinéraire. David se demande
s'il peut accéder quand même aux informations
personnelles qui le concernent, conformément
aux directives de la
CNIL.
Olivier nous raconte qu'il arrive, avec
l'habitude, à faire certains trajets
quasiment sans mettre le pied à terre. Il sait anticiper
sur le passage des feux au vert ou au rouge et adapter son allure
en conséquence. Il essaie même d'engager son vélo dans
la borne de stockage avant de descendre du vélo. Il
faut savoir viser juste !
À l'origine, il était prévu d'avoir de nombreuses
petites stations Vélib', dans les 20 places
chacune, disséminées dans la capitale. Olivier
a l'impression que l'on s'oriente plutôt vers
l'extension des stations existantes, pour arriver
parfois à une soixantaine de places. Cela lui a
occasionné d'ailleurs une mésaventure ce soir-là.
Olivier faisait un long parcours à travers Paris. Alors qu'il arrive à la
limite fatidique des 30 minutes gratuites, il cherche à déposer son Vélib'
et, grâce à son
son plan des stations sur Nokia
se rend à la station la plus proche. La borne lui indique une dizaine
de places disponibles. Or, ce n'est pas le cas : la station vient
d'être étendue et toutes les nouvelles places soit-disant disponibles
sont en fait bloquées avec des caches. Cela a entraîné un dépassement
du temps alloué, donc facturation. Lorsqu'une station est pleine, il
est normalement possible d'obtenir 10 minutes supplémentaires
gratuites le temps de se rendre à une autre station. Or là,
l'incohérence entre la réalité et la vue du système d'information
Vélib' ne permettait pas d'être dans ce cas. Il a donc dû se rendre à
une autre station, mais en dépassant les 30 minutes, et donc en devant
payer la demi-heure supplémentaire avant sa location suivante. Il a
fait appel en expliquant que ce n'était pas sa faute si les places
étaient signalées comme vides, mais qu'elles étaient indisponibles.
Sa demande de remboursement n'a pas encore été satisfaite.
Est-il encore souhaitable d'avoir son vélo à Paris ?
Avec le Vélib', vous n'avez pas besoin d'entretenir votre
vélo, les employés (Mairie de Paris ou J-C Decaux ?) le font à votre place.
Pas besoin non plus de le ranger chez soi en le montant dans l'escalier
ou en le descendant à la cave. Quoique le problème du rangement
existe, il se manifeste autrement, voir ci-dessus.
David a évoqué un problème qu'il a observé dans la
nouvelle génération, celle de ses enfants. Les jeunes n'ont plus
l'envie de démonter les appareils pour voir
comment ça fonctionne à l'intérieur. [ Peut-être
parce que la plupart des appareils qui nous entourent
sont des appareils électroniques et que regarder
un circuit imprimé ou une carte-mère ne permet
pas de comprendre le fonctionnement de l'appareil. ]
Pour continuer la discussion du
mois précédent
sur la cuisine thaïlandaise et les épices,
David signale qu'il existe un restaurant
thaïlandais qui prévoit une boîte de mouchoirs
en papier sur chaque table, car les
clients seront à coup sûr obligés d'essuyer
les larmes provoquées par les plats épicés.