David Madore's WebLog: 2012-04

This WebLog is bilingual, some entries are in English and others are in French. A few of them have a version in either language. Other than that, the French entries are not translations of the English ones or vice versa. Of course, if you understand only English, the English entries ought to be quite understandable without reading the French ones.

Ce WebLog est bilingue, certaines entrées sont en anglais et d'autres sont en français. Quelques-unes ont une version dans chaque langue. À part ça, les entrées en français ne sont pas des traductions de celles en anglais ou vice versa. Bien sûr, si vous ne comprenez que le français, les entrées en français devraient être assez compréhensibles sans lire celles en anglais.

Note that the first entry comes last! / Notez que la première entrée vient en dernier !

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

Entries published in April 2012 / Entrées publiées en avril 2012:

(samedi)

Le piège de Hadwiger-Nelson

Un collègue m'a poussé à réfléchir à des questions tournant autour du problème de Hadwiger-Nelson (ou problème du coloriage du plan, ou problème du nombre chromatique des unit distance graphs). Fatale erreur ! Ma maman m'avait pourtant toujours dit quand j'étais petit : Ne réfléchis jamais au problème de Hadwiger-Nelson. Ce problème est comme le Zahir de Borges : on commence à y penser, on se laisse tenter par son apparence si facile et si séduisante, sa faculté à relier des domaines mathématiques aussi divers que la théorie des graphes, la géométrie algébrique et la logique, et bientôt on ne peut plus songer qu'à lui, on le voit dans des rêves et on dessine partout des petits graphes avec des points à distance 1 les uns des autres.

Le problème de Hadwiger-Nelson (que j'avais d'ailleurs déjà évoqué, mais je n'en connaissais pas le nom à l'époque) est sans doute le problème mathématique ouvert le plus incroyablement simple à formuler (même si cette simplicité est peut-être un peu trompeuse). Et qui insulte l'honneur de l'esprit humain de ne pas être capable de répondre à une question aussi bête :

(On fixe une fois pour toutes une unité de distance.) Quel est le nombre minimal χ de couleurs qu'il faut pour colorier le plan de manière que deux points distants d'une unité ne soient jamais de la même couleur ?

Tout ce qu'on sait montrer est que 4≤χ≤7. Et c'est d'autant plus frustrant que la démonstration de ces deux faits est à la portée d'un collégien, et que toutes les maths sophistiquées qu'on a pu essayer de balancer contre ce problème n'ont pas amélioré d'un chouïa l'encadrement en question. La minoration par 4 est démontrée par exemple par la figure suivante, appelée Moser's spindle (le fuseau de Moser ?) :

Chaque arête a distance 1 dans le plan, ce qui détermine rigidement la figure. Il est facile de se convaincre qu'il n'est pas possible de colorier les sommets de ce graphe avec seulement 3 couleurs de manière que deux sommets reliés par une arête ne soient pas de la même couleur (en effet, si on n'a que trois couleurs, quelle que soit la couleur c du sommet en bas à gauche, les deux autres sommets de chacun des triangles équilatéraux dont il est un sommet doivent avoir les deux autres couleurs, du coup le sommet tout en haut et celui tout à droite ont la même couleur c, or ils sont reliés par une arête, une contradiction). La majoration par 7 est démontrée par la figure suivante :

L'unité de longueur (figurée par le trait noir en haut à gauche, et qui est à la même échelle que sur la figure précédente) est juste un tout petit peu trop courte pour relier les sommets les plus proches de deux hexagones de la même couleur, mais juste un tout petit peu trop longue pour tenir à l'intérieur d'un même hexagone : donc quelle que soit la manière dont on place cette règle sur le plan, les deux extrémités auront une couleur différente.

On ne sait rien dire de mieux, donc. Oh, on sait dire des choses sur des problèmes adjacents : par exemple, sur le nombre chromatique fractionnaire du plan pour la relation être-distant-d'une-unité (on sait qu'il est compris entre 3.55 et 4.36), ou sur les coloriages dans lesquels on impose de plus aux parties coloriées d'être mesurables (on sait qu'il faut alors au moins 5 couleurs), ou sur le coloriage des points à coordonnées rationnelles (seulement 2 couleurs suffisent alors) ; en fait, on sait dire assez de choses pour qu'Alexandr Soifer écrive un livre de 600 pages consacré à peu près entièrement à ce problème. Mais l'inégalité 4≤χ≤7 continue de nous narguer et de rappeler les mathématiciens à l'humilité. Personnellement je trouve ça beaucoup plus rageant que le problème de Collatz/Syracuse/3n+1 ou que le théorème de Fermat n'a jamais pu l'être.

Et ce que ce problème a de rageant, aussi, c'est qu'on ne sait pas trop quoi conjecturer. Un théorème d'Erdős et de Bruijn (qui est une conséquence immédiate du théorème de compacité du calcul propositionnel, ou — un petit peu moins immédiate — de la compacité des produits de compacts) assure que pour minorer le nombre de couleurs χ nécessaire pour colorier le plan, il « suffit » [OK, en fait ça veut dire « il faut », comme on me le signale en commentaire] d'exhiber un graphe fini réalisable avec distance 1 et qui n'est coloriable qu'avec ce nombre de couleurs. On pourrait donc se dire que puisque ces « unit distance graphs » ont été tant étudiés, s'il y en avait un qui ait nombre chromatique 5 ou plus, ça aurait fini par se voir : mais il est aussi parfaitement plausible qu'il ait un nombre de sommets faramineux, alors que la borne supérieure de 7 par le pavage hexagonal, elle, a l'air tellement naturelle, tellement appropriée a la situation, qu'on a envie de croire qu'elle est optimale. De fait, jusqu'à récemment, j'étais convaincu en mon for intérieur que la bonne valeur de χ est 7. Mais il est parfaitement possible que ce ne soit la bonne valeur que pour des parties coloriées possédant des propriétés de régularité sympathique (ceci dit, même avec l'hypothèse de mesurabilité on ne sait pas fermer le gap), et qu'un coloriage avec 4 couleurs existe mais nécessite l'axiome du choix (qui est caché derrière le théorème d'Erdős-de-Bruijn). Croire que χ=4 se défend aussi : elle consiste à croire que les configurations de points à distance 1 dans le plan ne peuvent pas trop nous jouer de tour ou de coïncidences inattendues, qu'ils ne sont pas trop éloignés des graphes de Laman (lesquels sont toujours 4-coloriables pour des raisons idiotes de degré). Entre les deux, il est aussi permis de croire que la bonne valeur est 5 ou 6, même si ça semble moins plausible qu'aucun des deux arguments élégants pour 4 ou 7 ne donne la bonne valeur, mais bon, c'est comme en politique, il faut bien qu'il y ait aussi des centristes qui croient qu'in medio stat virtus.

Mise à jour : Quelques années plus tard, j'ai écrit un article sur le problème de Hadwiger-Nelson où on se concentre sur les points à valeurs dans certains corps de nombres comme ℚ(√2) ou ℚ(√3).

Bon, à part ça, je continue à vouloir écrire un textes sur les octonions pour mettre dans ce blog, mais je retarde ça tant que je n'ai pas trouvé le temps de lire l'article attentivement fondamental Lie Groups in the Foundations of Geometry de Hans Freudenthal (qui expose généralement la raison pour laquelle les octonions sont naturels). Comme cet article est dense, ça risque de prendre du temps.

Et je maintiens aussi sur le feu mes éphérémides astronomiques (dans lesquels je mets des quaternions, comme beaucoup de gens l'ont deviné, mais pas d'octonions), mais comme dès que je m'y mets pour trop longtemps je m'énerve contre l'astronomie, il ne faut pas non plus y compter pour sitôt.

(jeudi)

Cartographie électorale

En bon lecteur régulier du blog Strange Maps, j'aime bien ces petites cartes synthétiques sur le résultat du 1er tour de la présidentielle française. À part qu'elles sont trop petites et que je ne trouve pas la version d'origine. Mais plutôt que réaliser un nombre important de petites cartes de ce genre, je pense que ce serait plus sympa de faire une carte interactive qui permet d'obtenir n'importe quoi. Voici donc une requête :

Je voudrais une page (écrite en JavaScript+Canvas) dans laquelle on peut entrer une fonction JavaScript (ou en choisir une parmi tout un tas prédéfinies) qui prend en paramètre les résultats électoraux d'un canton, voire d'une commune, en 2012 (et éventuellement, pour comparaison, en 2007, et éventuellement des données de base en plus comme la population, la surface, le PIB s'il est connu avec une telle résolution) et lui associe une couleur, et qui trace la carte de France correspondante. Comme ça, si je veux tracer une carte du taux d'abstention, de tel ou tel candidat, ou de choses plus funky comme la valeur (Hollande−Sarkozy)/Bayrou, ou de n'importe quoi d'autre qui me passera par la tête, je pourrais le faire sans attendre que quelqu'un le fasse pour moi.

Voilà qui serait l'occasion de montrer ce qu'on peut faire avec de l'Open Data : il faut au moins (0) les données géographiques des limites des communes ou cantons, et (1) les résultats électoraux commune par commune téléchargeables en bloc. Concernant (0), les données semblent disponibles sur www.data.gouv.fr sous forme d'un fichier SHP (pas super agréable comme format, mais je ne vois pas ce que je pourrais souhaiter de mieux). Concernant (1), elles sont ici.

Quelqu'un se sent motiver pour coder ça ? Ou est-ce que c'est encore bibi qui va devoir faire le travail ? (Il faut se dépêcher, dans dix jours le premier tour n'intéressera plus personne.)

(jeudi)

Les astronomes font chier avec leurs unités

Parmi les unités utilisées en astronomie, on trouve, pour les angles : le radian, le tour (2π radians), le degré (1/360 tours), la minute d'arc (1/60 degré), la seconde d'arc (1/3600 degré), et même la milliseconde ou la microseconde d'arc ; en ascension droite, on trouve aussi l'heure (15 degrés = 1/24 tours), la minute (15 minutes d'arc, merci au Club contexte) et la seconde (15 secondes d'arc). Pour les temps : la seconde SI, la minute (60 secondes), l'heure (60 minutes), le jour SI (24 heures), le siècle julien (36525 jours) et même le millénaire julien (365250 jours) ; mais il y a aussi des choses comme l'année besselienne de 365.242198781 jours, le jour sidéral de 1/1.00273781191135448 jours SI ; et comme une grandeur comme, justement, le temps sidéral, peut être vu comme un angle ou comme un temps (sachant que si c'est un temps, un jour (sidéral) représente 360° d'angle, et peut se diviser en heures et minutes), disons qu'il est facile de se tromper.

(Et je ne parle pas du facteur 1 + 1.55051979176×10−8 entre la seconde TDB et la seconde SI, ou entre les mètres idem. Par exemple, la valeur donnée usuellement pour l'unité astronomique, 149597870700m, doit plutôt être considérée comme donnée en unités TDB qu'en unités SI.)

À part ça, il semble vraiment que personne ne sache prévoir, même grossièrement (i.e. mieux que compter environ 86400.002s par jour) le temps universel. Voir cette page pour des explications très intéressantes sur ce qu'on sait dire à ce sujet.

(mardi)

Suspend, ventilateurs, et petites crottes de ragondin

Un des buts de toutes mes mésaventures (finalement heureusement résolues) avec mon DreamPlug (entrées précédentes ici, , et ) était de pouvoir éteindre mon PC la nuit ou, plus exactement, le mettre en hibernation, pour qu'il ne fasse plus de bruit.

Hibernation, ce qui peut désigner deux choses, le suspend-to-RAM où la machine n'est pas vraiment éteinte mais seulement arrêtée et maintient sa mémoire vivante, ou le suspend-to-disk où la machine est techniquement éteinte et a recopié sa mémoire sur disque de manière à pouvoir redémarrer dans le même état. Ces deux modes d'hibernation sont censés être supportés par Linux mais, comme d'habitude, le support peut être aléatoire selon le type de matériel, d'autant plus qu'on parle ici d'un PC fixe et que l'hibernation est surtout testée sur des portables. Mon poussinet, par exemple, n'arrive pas à faire marcher le suspend-to-RAM sur sa machine, probablement à cause d'un problème dans la gestion de la carte graphique (le suspend-to-disk, en revanche, marche bien).

Initialement, j'ai trouvé que j'avais de la chance : le suspend-to-RAM semblait marcher parfaitement (le plus gros problème observé étant que l'horloge système se décale d'environ une seconde lors de l'opération, ce qui fait négligé mais est facile à corriger en reprenant l'heure correcte sur le réseau) ; le suspend-to-disk, lui, perd le contrôle du disque externe, ce qui est pénible mais pas catastrophique (il suffit de couper ce disque avant hibernation et le remettre après : comme ce disque ne me sert qu'à stocker des choses comme des musiques ou des films, pas à faire tourner des programmes, ce n'est pas trop gravement gênant), et il y a aussi un petit couac mineur avec le clavier (il faut refaire le mapping, c'est un bug bizarre, mais ça ne fait qu'une commande à taper).

Indépendamment de ça, je trouvais que le ventilateur de mon PC était devenu plus bruyant que d'habitude au redémarrage de l'hibernation : soit que ce soit le contraste avec le silence précédent qui cause cette illusion, soit que le ventilateur vieillisse et que le fait de l'allumer et de l'éteindre le rende plus bruyant. C'est là que j'ai commencé à regarder de plus près les réglages du BIOS parce que, après tout, mon ventilateur est censé être un modèle super silencieux et on ne pouvait pas dire qu'il le fût. Or il existe, dans ces réglages, deux modes de contrôle des ventilateurs : un mode PWM, c'est-à-dire Pulse Width Modulation, où le ventilateur est contrôlé par un signal spécial, et un mode DC où le ventilateur est bêtement contrôlé par la tension appliquée ; apparemment mon ventilateur ne supporte pas le contrôle PWM, et changer vers le mode DC a eu un effet énorme : au lieu de tourner constamment à 2400tr/min, il s'est mis à descendre à 1800tr/min lorsque la machine ne fait rien, ce qui peut ne pas sembler une différence énorme, mais ce qui représente pourtant une diminution considérable du bruit. Presque au point que l'hibernation n'ait plus d'intérêt.

Presque. Mais c'est là que le bât blesse : lorsque je configure les ventilateurs en mode silencieux (et avec le bon type de contrôle), c'est effectivement très confortable pour les oreilles, mais si jamais je mets l'ordinateur en suspend-to-RAM, au redémarrage, les ventilateurs reprennent leur profil de base (bruyant). Autrement dit, je ne peux pas avoir à la fois le réglage relativement silencieux des ventilateurs et le silence total du suspend-to-RAM de temps en temps. Bon, je peux encore faire un suspend-to-disk si je veux le silence complet sans perdre le silence relatif au réveil, mais outre les problèmes mineurs avec le disque externe et avec le clavier que j'ai signalés ci-dessus, le suspend-to-disk est lent (parce que j'ai 8Go de RAM) : quand je fais de l'insomnie et que je veux regarder un truc ou deux sur Internet avant de me recoucher, je n'ai pas envie d'attendre plusieurs minutes que la machine daigne se réveiller.

Je ne sais même pas si je dois attribuer ça à un bug (de l'ACPI) de ma carte mère (une Asus P5W64 WS Pro) ou de Linux. La carte mère et le BIOS doivent bien avoir des bugs puisqu'un suspend-to-RAM non seulement met les ventilateurs en mode bruyant, mais meme ce mode persiste après un reboot, il faut une extinction complète pour revenir en mode silencieux. Sinon, ce qui est sûr, c'est que Linux devrait être capable de régler lui-même la vitesse des ventilos, mais qu'il n'y arrive pas : il devrait même y avoir deux approches possibles, l'une passant par l'ACPI (module noyau asus-atk0110) et l'autre en parlant directement au matériel (module noyau w83627ehf), et qu'aucune des deux ne marche, dans les deux cas c'est apparemment la faute d'Asus : d'un côté je crois comprendre qu'il manque des interfaces dans l'ACPI, de l'autre je crois comprendre qu'ils n'ont pas publié les specs d'une puce utilisée sur cette carte mère. (J'avoue que l'idée de garder secrètes les spécifications détaillées de quelque chose d'aussi high-tech qu'une puce qui contrôle des putains de ventilos, ça m'échappe un peu : pensez à me rappeler de ranter contre les compagnies qui ont la culture du secret, comme ça, pour des trucs totalement débiles. Mais peut-être que j'ai mal compris.) Ou peut-être que Linux ne sait gérer que les ventilateurs utilisant le contrôle PWM, mais je ne vois pas pourquoi le BIOS arriverait à faire mieux, alors.

On est censé pouvoir désassembler le code de l'ACPI avec des outils comme acpidump, acpixtract et iasl, mais c'est assez chinois et je ne sais pas si je veux passer des heures à essayer d'y comprendre quelque chose, d'autant plus que le problème n'est peut-être même pas là.

J'ai parfois un peu tendance à penser que c'est encore plus frustrant quand l'informatique marche à 99% que quand elle marche à 0%, parce qu'à 99% on a l'impression qu'on pourrait y être, on a la vision du monde parfait qui nous nargue et qui reste cependant inaccessible, alors qu'à 0% au moins les choses sont claires. Le chemin de l'enfer est pavé de petites crottes de ragondin.

(dimanche)

J'essaie de comprendre comment la Terre tourne

Je me suis laissé convaincre par un ami d'écrire une application pour Android d'éphémérides astronomiques (il en existe certainement déjà plein, mais guère qui soient libres / open source) : c'est-à-dire un truc qui calcule au moins des choses comme la position et les heures de lever et coucher du Soleil, de la Lune et des planètes, les dates et heures des saisons et des phases de la Lune, et sans doute d'autres choses du même acabit. Normalement, ça ne devrait pas être difficile, il y a plein de code pour ça, presque déjà écrit, en fait, qu'il suffit de convertir en Java.

Mais le truc, c'est que je suis un chouïa maniaque (←ceci est un euphémisme) sur certaines choses, et j'ai une idée assez arrêtée sur la façon dont les choses devraient être faites. Notamment, un calcul astronomique ne se mène pas vraiment de la même façon si on vise une précision d'une fraction de minute d'arc ou de quelques microsecondes d'arc. Et je n'ai pas envie de faire silencieusement des approximations qui empêcheraient de passer à une précision nettement plus grande : i.e., je ne tiens pas spécialement à ce que mon application permette une précision énorme, mais je tiens à ce que le cadre logiciel le permette. Ça devient un peu un défi (stupide) en soi.

Or il se trouve que réaliser des calculs astronomiques permettant, même en principe, une très haute précision, c'est compliqué. (Ne serait-ce que parce qu'on ne va plus pouvoir négliger les effets relativistes, et qu'on commence à avoir mal à la tête juste pour définir ce que c'est que le temps.) J'ai une assez bonne vision des phénomènes les plus simples, mais si je m'impose le carcan de bien prendre conscience de toutes les approximations, je m'y perds assez.

Prenons l'exemple de la rotation de la Terre.

La zéroïème approximation, celle qu'on apprend à l'école primaire, c'est que la Terre tourne autour du Soleil, effectuant une révolution en une année dans un plan appelé écliptique, et qu'elle tourne aussi autour d'elle-même selon un axe de direction fixe appelé l'axe des pôles et dont le plan perpendiculaire s'appelle le plan équatorial ; l'angle entre les plans écliptique et équatorial, ou bien entre l'axe des pôles et l'axe perpendiculaire au plan écliptique, s'appelle l'obliquité ou inclinaison de l'axe terrestre, notée ε, et vaut 23°26′15.66″. L'angle entre l'axe de rotation et la droite Terre-Soleil est responsable des saisons, lesquelles sont limitées par les deux équinoxes lorsque l'axe est en quadrature avec cette droite, ou, si on préfère, que le Soleil se trouve dans le plan équatorial de la Terre, et par deux solstices lorsque le Soleil atteint ses latitudes minimale et maximale par rapport au plan équatorial terrestre, qu'on appelle tropiques du Capricorne (→été austral) et du Cancer (→été boréal). Ça c'est ce que tout le monde devrait savoir, sauf à être un sombre inculte.

(lundi)

Quelques réflexions sur l'inertie

Quand j'écris inertie dans le titre de cette entrée, je ne parle pas du phénomène psychologique mais scientifique : scientifique, c'est-à-dire notamment physique mais pas seulement. Dans ce sens, l'inertie, de façon volontairement très vague, c'est le mécanisme qui fait qu'un phénomène qui se produit a tendance à continuer à se produire (plutôt que, par exemple, cesser immédiatement que sa cause cesse).

En physique, il s'agit de la loi d'inertie, ou première loi de Newton, selon laquelle en l'absence de forces extérieures un objet continue à se déplacer en ligne droite et à vitesse constante : ce n'est pas une évidence, et historiquement il semble qu'on ait pu croire — dans la mesure où la physique aristotélicienne énonçait ces choses clairement, ce dont je ne suis pas sûr du tout — qu'une force était toujours nécessaire pour mouvoir un objet, i.e., le que fait qu'un objet en mouvement finisse par s'arrêter dans les situations concrètes n'était pas l'action des forces de frottement mais le phénomène normal, et que du coup l'inertie était ce qu'il fallait expliquer, ce qu'on a pu faire, semble-t-il, par des mécanismes du genre la poussée de l'air exercée par l'endroit que l'objet venait de quitter (je ne suis pas compétent en histoire des sciences, donc j'affabule peut-être en disant ça, ce sont des souvenirs de manuels de physique lus il y a longtemps, mais Wikipédia suggère des choses compatibles). Le principe général d'inertie, ce que j'ai appelé première loi de Newton, a été formulé clairement par Galilée, même s'il est sans doute exagéré de dire que c'est lui qui l'a dégagé.

Toujours est-il qu'on aurait tort de prendre ça pour une évidence. Il y a une célèbre anecdote racontée par Richard Feynman (qui vaut la peine d'être écoutée rien que pour son délicieux accent new-yorkais) sur la manière dont son père (Melville Feynman) lui a expliqué ce qu'est l'inertie : personne ne sait à quoi c'est dû. Un mathématicien va voir l'inertie comme le fait que la physique est décrite par des équations différentielles du second ordre (la force contrôle non pas la vitesse mais l'accélération, c'est-à-dire la variation de la vitesse), mais ce n'est que reformuler le problème ; ou encore, que si on ramène ces équations au premier ordre, cela se fait en introduisant de nouvelles variables en plus de la position, à savoir la quantité de mouvement des objets : l'état d'un système mécanique classique se traduit par la donnée non seulement des positions des objets mais aussi de leurs quantités de mouvement (ou de façon plus approximative, vitesses[#]). On peut reformuler ces choses de façon plus ou moins sophistiquée, parler d'espace des phases, de principes variationnels, de formulations lagrangienne ou hamiltonienne de la mécanique, on peut généraliser à la mécanique quantique ou à la relativité générale, mais il reste toujours ce même mystère qu'on pousse ou cache sous ces diverses formulations[#2].

Mais il y a d'autres domaines où la notion d'inertie peut être considérée, et c'est alors d'autant plus frappant qu'il ne faut pas la prendre pour une évidence.

Prenons l'économie. Voici une question qui me semble assez profonde : si vous avez une grandeur économique ou financière, peut-être le cours d'une action ou d'une monnaie, dont vous ne savez rien sauf sa valeur à l'instant présent, manifestement la meilleure chose que vous puissiez faire pour prévoir sa valeur demain, c'est de prévoir la même valeur (ce n'est évidemment pas une bonne prévision, mais si vous ne savez rigoureusement rien de plus, c'est certainement le mieux qu'on puisse faire) ; maintenant, je vous donne la valeur d'aujourd'hui et aussi la valeur d'hier : est-ce que la connaissance de cette valeur d'hier peut aider à faire une prévision meilleure ? Si on croit à une forme d'inertie en économie, on va se dire que si la grandeur a augmenté entre hier et aujourd'hui, elle risque d'augmenter de nouveau entre aujourd'hui et demain, et peut-être dans les mêmes proportions, donc on va peut-être prévoir pour demain la valeur symétrique de celle d'hier par rapport à celle d'aujourd'hui (de fait, en physique, si vous voulez prévoir le mouvement d'un objet, c'est exactement ça que vous prévoit la loi d'inertie en l'absence de forces, et donc ce sera une approximation sensée si vous ne savez rien du tout). Mais en fait, s'agissant du cours d'une action, cette idée n'est pas du tout bonne : au contraire, on a tendance à modéliser ces choses-là — en toute première approximation — par des objets mathématiques appelés des martingales, ce qui signifie essentiellement que connaître des choses sur le passé ne vous avancera absolument pas à prévoir l'avenir (par rapport à juste connaître le présent) ; ou, de façon plus concise mais moins précise, il n'y a aucune sorte d'inertie. C'est raisonnable si on pense au cours d'une action comme déterminé par des agents rationnels : ils ont connaissance du passé et ils en tiennent compte, donc si une prévision simpliste basée dessus peut donner une meilleure approximation pour l'avenir qu'une prévision simpliste seulement basée sur le présent, ils en tiendront compte déjà au présent, donc anticipent sur cette prévision !, qui du coup devrait être réalisée déjà maintenant et pas dans l'avenir.

Mais l'absence totale d'inertie signifie que l'idée que le cours d'une action est en train de monter est dénué de sens, ou, en tout cas, de sens prédictif : le fait que ce cours ait augmenté ces N derniers jours ne donnerait aucune information sur le fait qu'il risque d'augmenter encore demain, pas plus que le fait de savoir qu'une pièce non truquée est tombée 20 fois sur pile ne vous donne d'information sur le fait qu'elle tombera sur pile la fois suivante. Or on a quand même tendance à s'imaginer qu'il y a de l'inertie : c'est contraire à cette idée que les marchés anticipent sur toute prévision qu'ils peuvent faire quant à l'avenir. Même si le cours d'une action dépend de phénomènes (physiques, par exemple) qui, eux, peuvent avoir de l'inertie, si ces phénomènes sont connus, ils devraient être anticipés. Je ne sais pas si on peut exhiber des cas où il y a quand même incontestablement une forme inertie dans des cours économiques, mais j'ai toujours été perturbé par cette dissonance entre le fait qu'on soit censé croire à l'absence d'inertie si les agents sont rationnels et le fait qu'on dise, par exemple, que le cours du pétrole va certainement continuer à monter au cours des prochaines années (si cette prévision est si évidente, tout le monde va vouloir prendre des options dessus, ce qui va faire augmenter le cours du pétrole maintenant).

Mais ce qui a motivé cette réflexion à ¤0.02 sur l'inertie, c'est encore un autre domaine, celui de la sociologie : j'entends les commentateurs politiques (dont je ne pense pas forcément grand bien) expliquer que la progression ou régression de tel ou tel homme politique dans les sondages électoraux constitue une dynamique. Le fait de parler de dynamique suppose qu'il y a inertie. Mais est-ce le cas ? Je n'ai cette fois pas d'argument comme pour l'économie qui expliquerait qu'il ne dût pas y en avoir, mais je n'ai pas non plus d'explication vraiment convaincante au fait qu'il y en ait (à part que les électeurs seraient naturellement portés à apprécier en soi les hommes politiques qui enregistrent déjà une progression dans les sondages récents, ce qui est possible mais pas évident). En tout état de cause, je trouve qu'on ne devrait prendre ni l'existence de l'inertie, ni son absence, pour une évidence : c'est une question essentielle qu'on doit se poser sur tout phénomène auquel on est confronté.

[#] Quand on parle d'un seul objet sans interaction extérieure, la masse n'intervient pas du tout, et l'inertie au sens physique peut porter aussi bien sur la vitesse (c'est la manière dont Newton la formule) que sur la quantité de mouvement. Quand il y a plusieurs objets qui interagissent, la masse (inertielle) d'un objet devient, très grossièrement, la proportion avec laquelle l'inertie de cet objet est importante relativement à celle des autres, donc la difficulté des forces à agir sur cet objet.

[#2] La relativité générale est peut-être ce qui arrive le plus proche d'une réponse au mystère, aux yeux du matheux que je suis, parce que l'équation des géodésiques et les équations d'Einstein sont des équations du second ordre mathématiquement très naturelles alors qu'il n'y a rien de la sorte au premier ordre ; mais on peut difficilement prétendre avoir tout résolu en disant ça.

(lundi)

Séances de hacking réseau

Il ne faut jamais désespérer : malgré les différentes difficultés que j'ai eues avec mon DreamPlug (entrées précédentes ici, et ), qui se sont toutes plus ou moins résolues, j'ai maintenant réussi à en faire quelque chose d'utile, c'est-à-dire un routeur en amont du PC qui est chez moi (entre ce dernier et mon modem ADSL) avec point d'accès Wifi. Je n'ai pas encore pris toutes les dispositions pour pouvoir éteindre mon PC la nuit, mais au moins, s'il y a de nouvelles difficultés qui surviennent sur ce front-là, elles ne seront plus la faute du DreamPlug.

J'ai donc passé, essentiellement ce week-end, de longues séances de hacking réseau pour reconfigurer tout ce fatras, ostensiblement pout traquer les hypothèses que j'avais pu faire (que mon PC est aussi routeur) et qui seraient devenues erronées, et en réalité pour m'amuser à peaufiner les détails et à faire joujou avec la couche réseau de Linux, qui, il faut bien le dire, est assez ludique.

J'ai fait quelque chose d'un peu inhabituel (s'agissant de la configuration IPv4 ; la configuration IPv6 ne posait aucune difficulté particulière vu que les adresses sont en nombre essentiellement illimité), que je peux peut-être expliquer, histoire de signaler que c'est parfaitement possible et que ça ne pose pas de problème (vu que beaucoup de gens à qui j'ai posé la question en amont se sont montrés sceptiques), c'est de donner à mon PC, et pas au DreamPlug routeur que j'ai intercalé en amont, l'adresse IP publiquement visible de la connexion ADSL.

Je détaille. Il est bien connu que les adresses IPv4, contrairement aux v6, sont en nombre sévèrement limité. Un fournisseur d'accès Internet par ADSL vous donne une adresse IP(v4) publique, si tant est qu'il vous en donne une fixe (il y a quelques gros nuls qui n'ont même pas cette option), quel que soit le nombre de PC que vous mettiez derrière. Si on a plus qu'un PC sur la connexion, donc, ces PC (tous sauf au plus un) utiliseront des adresses « privées », c'est-à-dire qu'elles ne doivent pas circuler en-dehors du réseau local : typiquement ce sont des adresses en 192.168.y.z ou 10.x.y.z (je ne sais pas comment ces nombres ont été choisis historiquement, d'ailleurs, et je ne sais pas pourquoi les 192.168.y.z sont plus populaires alors qu'elles sont plus chiantes à taper). Lorsqu'un PC utilisant une de ces adresses privées envoie un paquet IP vers le monde extérieur, un routeur quelque part, typiquement le dernier routeur avant le modem ADSL (ces deux équipements étant réunis en un seul sous la forme des « *box » que la plupart des usagers possèdent, et qui sont en fait presque toujours des systèmes Linux), doit transformer l'adresse IP privée de l'émetteur en l'unique adresse IP publique de la connexion, qui seule peut circuler sur le réseau, et ce routeur doit également retenir cette opération (on parle de connection tracking) de façon à pouvoir convertir en sens inverse le paquet de retour, i.e., savoir à quelle IP privée il est destiné alors que formellement il est adressé à l'unique IP publique de la connexion. Ce mécanisme s'appelle le masquerading IP, ou plus formellement NAT (pour Network Address Translation) ; dans le monde Windows/Mac non technique, on parle de partage de connexion (ce qui décrit bien le but de l'opération, mais pas le mécanisme). Il s'accompagne de toutes sortes de problèmes, mais on n'a pas d'autre choix tant qu'on continue à utiliser IPv4.

Sous Linux, on met en place ce mécanisme au moyen d'iptables, en envoyant les paquets vers la cible SNAT (ou MASQUERADE ou éventuellement SAME, la différence étant assez peu importante) dans la chaîne POSTROUTING de la table nat. On peut aussi faire du NAT entrant, c'est-à-dire indiquer que certains types de paquets entrants sur l'adresse publique doivent être réécrits (typiquement en fonction de leur numéro de port de destination) pour aller vers telle ou telle IP privée interne : dans ce cas la cible est DNAT.

Comme je l'ai écrit, tous les PC derrière la connexion sauf au plus un doivent utiliser des IP privées. Il se peut que tous utilisent des IP privées, mais on peut donner à une machine l'IP publique de la connexion. Tous les guides de configuration vous préconiseront la même chose : que ce soit le routeur-masqueradeur (celui qui réécrit les adresses des paquets, donc) qui reçoive l'IP publique, et tous ceux qui sont derrière, des IP privées. En vérité, ce n'est absolument pas une obligation : le routeur peut très bien avoir une IP privée et faire de l'auto-masquerading, c'est-à-dire réécrire les paquets qu'il émet lui-même, alors qu'un autre PC aurait l'IP publique. La configuration est tout à fait la même, et cela ne pose pas de difficulté particulière[#] et n'introduit pas spécialement de complication (sauf peut-être dans la tête de celui qui essaie de comprendre ce qui se passe et qui est habitué au schéma le plus usuel). A priori, le PC ayant l'IP publique va recevoir tous les paquets entrants qui ne font pas partie d'une connexion déjà établie (certains outils de configuration appellent ça — à mon avis à tort — la machine DMZ) ; mais on peut évidemment choisir de les répartir différemment (avec la cible DNAT sous Linux).

Quel est l'intérêt ? Tout simplement de changer les choses le moins possible : jusqu'à présent, c'était mon PC qui avait l'adresse publique de ma connexion ADSL, 213.41.184.174, enregistrée dans le DNS sous le nom de vega.gro-tsen.net, je voulais toujours pouvoir utiliser ce nom-là, à la fois depuis l'intérieur et depuis l'extérieur de mon réseau local, pour accéder à ce PC, et si possible ne pas avoir à changer de configuration sur ce PC où j'aurais pu supposer implicitement que son IP était 213.41.184.174. La solution traditionnelle pour ça consiste à rediriger les paquets voulus sur cette machine, et à faire du DNS différencié (split-horizon), où les machines extérieures voient l'adresse 213.41.184.174 associée au nom DNS vega.gro-tsen.net, tandis que les machines intérieures voient l'IP privée qui lui aurait été affectée : je trouve ça beaucoup plus alambiqué que ce que j'ai choisi, qui est de tout simplement garder l'IP que j'avais avant, et de donner une IP privée au routeur.

(Soit dit en passant, comme je n'ai jamais vraiment eu l'occasion de regarder des *box commerciales, je ne sais pas bien ce qu'elles font dans ce domaine, et notamment ce qu'elles proposent pour l'attribution des IP du réseau interne.)

Mais bon, tout ça ça a pris très peu de temps à mettre en place. Le reste du temps a été occupé à lire les manuels et à m'émerveiller (oooooh, je peux faire ça avec les paquets ? mais c'est rigolo, il faut absolument que je trouve un prétexte pour m'en servir). Je vais sans doute faire encore un peu joujou avec le Wifi, d'ailleurs.

Quand les choses seront bien rôdées, j'installerai sans doute une configuration du même style chez mes parents (où, actuellement, c'est un vieux PC de récup[#2] qui sert de routeur : je pense que ce sera plus pratique — et plus efficace énergétiquement — de mettre un GuruPlug ou DreamPlug à la place).

[#] Bon, j'exagère, il y a une chose qui pose une petite difficulté : c'est que le démon pppd, qui gère la connexion ADSL, n'a pas d'option prévue pour lui dire lors de la négociation de la connexion, il faut que tu fasses semblant d'accepter l'adresse IP que t'attribuera le pair, mais en fait tu en prendras une autre (puisque le pair nous attribuera l'IP publique mais qu'en fait on veut en prendre une privée). Pour ma part, j'ai fait ça en ajoutant un petit script que j'ai appelé /etc/ppp/ip-up.d/0fixpppaddr et dont le contenu est essentiellement ceci :

#! /bin/sh
# Change the local endpoint address on the ppp link to 192.168.0.1
# despite what ppp itself negociated.
/bin/ip addr del "$4" peer "$5" dev "$1"
/bin/ip addr add "192.168.0.1" peer "$5" dev "$1"
# Reinstate default route which was deleted in the process:
/bin/ip route add default dev "$1"

[#2] Un bi-Pentium II 450. Et quand je dis bi, il a vraiment deux processeurs physiquement distincts. Ça c'est quelque chose qui ne se trouve plus trop, de nos jours, sauf à aller taper dans du matos vraiment cher. Du coup j'ai une certaine réticence à jeter cette machine, quand même.

(dimanche)

Ouais, OK, il est tout pourri, mon poisson d'avril

Chaque année, en mars, je me dis qu'il faudrait faire un truc vraiment bien pour le 1er avril, mais je laisse le temps passer, et quand le jour arrive, je n'ai rien de prêt (en tout cas, rien du niveau des canulars raffinés de Google ; il n'y a qu'en 2008 que j'avais un truc bien), et même si j'ai quelque chose, il n'est pas loin de minuit. Ceci dit, ce qui est bien avec le monde global dans lequel nous vivons, c'est qu'entre les Samoa occidentales et les Samoa américaines, il se passe bien 48h pendant lesquelles c'est le 1er avril quelque part dans le monde.

Bon, si vous voulez quand même voir mon truc et que vous avez raté le 1er avril dans votre fuseau horaire, cliquez ici (et comme tout ce qui est écrit en JavaScript, je suppose que ça casse sous plein de navigateurs).

Rien à voir (si ce n'est que ce n'est pas un canular), le commissariat situé à côté de chez moi a brûlé la nuit dernière.

Continue to older entries. / Continuer à lire les entrées plus anciennes.


Entries by month / Entrées par mois:

2017 Jan 2017 Feb 2017 Mar 2017 Apr 2017 May 2017 Jun 2017 Jul 2017 Aug 2017 Sep 2017 Oct 2017 Nov 2017
2016 Jan 2016 Feb 2016 Mar 2016 Apr 2016 May 2016 Jun 2016 Jul 2016 Aug 2016 Sep 2016 Oct 2016 Nov 2016 Dec 2016
2015 Jan 2015 Feb 2015 Mar 2015 Apr 2015 May 2015 Jun 2015 Jul 2015 Aug 2015 Sep 2015 Oct 2015 Nov 2015 Dec 2015
2014 Jan 2014 Feb 2014 Mar 2014 Apr 2014 May 2014 Jun 2014 Jul 2014 Aug 2014 Sep 2014 Oct 2014 Nov 2014 Dec 2014
2013 Jan 2013 Feb 2013 Mar 2013 Apr 2013 May 2013 Jun 2013 Jul 2013 Aug 2013 Sep 2013 Oct 2013 Nov 2013 Dec 2013
2012 Jan 2012 Feb 2012 Mar 2012 Apr 2012 May 2012 Jun 2012 Jul 2012 Aug 2012 Sep 2012 Oct 2012 Nov 2012 Dec 2012
2011 Jan 2011 Feb 2011 Mar 2011 Apr 2011 May 2011 Jun 2011 Jul 2011 Aug 2011 Sep 2011 Oct 2011 Nov 2011 Dec 2011
2010 Jan 2010 Feb 2010 Mar 2010 Apr 2010 May 2010 Jun 2010 Jul 2010 Aug 2010 Sep 2010 Oct 2010 Nov 2010 Dec 2010
2009 Jan 2009 Feb 2009 Mar 2009 Apr 2009 May 2009 Jun 2009 Jul 2009 Aug 2009 Sep 2009 Oct 2009 Nov 2009 Dec 2009
2008 Jan 2008 Feb 2008 Mar 2008 Apr 2008 May 2008 Jun 2008 Jul 2008 Aug 2008 Sep 2008 Oct 2008 Nov 2008 Dec 2008
2007 Jan 2007 Feb 2007 Mar 2007 Apr 2007 May 2007 Jun 2007 Jul 2007 Aug 2007 Sep 2007 Oct 2007 Nov 2007 Dec 2007
2006 Jan 2006 Feb 2006 Mar 2006 Apr 2006 May 2006 Jun 2006 Jul 2006 Aug 2006 Sep 2006 Oct 2006 Nov 2006 Dec 2006
2005 Jan 2005 Feb 2005 Mar 2005 Apr 2005 May 2005 Jun 2005 Jul 2005 Aug 2005 Sep 2005 Oct 2005 Nov 2005 Dec 2005
2004 Jan 2004 Feb 2004 Mar 2004 Apr 2004 May 2004 Jun 2004 Jul 2004 Aug 2004 Sep 2004 Oct 2004 Nov 2004 Dec 2004
2003 May 2003 Jun 2003 Jul 2003 Aug 2003 Sep 2003 Oct 2003 Nov 2003 Dec 2003