David Madore's WebLog

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

(vendredi)

Un petit exercice d'Analyse (moyenner une fonction)

Un petit exercice d'Analyse pas très difficile (j'en ai traité un bout avec mes élèves à Télécom Paris), mais que je trouve amusant :

Soit f:ℝ/ℤ→ℝ (c'est-à-dire : une fonction réelle de la variable réelle qui soit 1-périodique) ; on note N(f) la fonction définie comme la moyenne arithmétique des N translatées de f par des multiples de 1/N, c'est-à-dire : (N(f))(x) = (1/N) · ∑k∈{0,…,N−1} f(x+k/N) ; et, si f est intégrable (c'est-à-dire, intégrable sur une période), soit (f) la fonction constante égale à l'intégrale ∫ℝ/ℤ f de f (sur une période). On se demande dans quelle mesure N(f) tend vers (f) quand N tend vers +∞ :

(Indication : montrer la convergence uniforme — qui entraîne donc la convergence Lp pour un p quelconque — pour une fonction en escalier ; il suffit pour ça de la montrer pour la fonction indicatrice d'un intervalle [0;c[ de ℝ/ℤ.)

Dans le cas p=2, il y a une jolie démonstration en regardant les séries de Fourier (l'effet de N est de décimer la série de Fourier).

On pourra aussi montrer que N ne tend pas vers en tant qu'opérateur (i.e., pour la norme).

Bref, je sais faire ça, mais j'ai quand même l'impression de manquer de recul sur la question : qu'il doit y avoir une façon plus élégante et plus générale d'inscrire ces résultats dans un contexte plus éclairant. D'ailleurs, la deuxième partie me surprend beaucoup, j'étais tellement persuadé que le résultat aurait dû être l'affirmation plus faible si f est Riemann-intégrable, alors N(f) tend vers (f) ponctuellement, et si f est réglée, alors la convergence est uniforme que j'ai cherché en vain à trouver une erreur dans mon raisonnement (j'ai fini par me convaincre qu'il était bien correct, mais j'ai toujours la sensation déplaisante d'avoir mal compris quelque chose d'important).

Pour mémoire, une fonction f est dite réglée (ou parfois Dieudonné-intégrable) lorsque pour tout ε>0 il existe une fonction en escalier h telle qu'on ait partout |fh|≤ε (i.e., f est uniformément approchable par les fonctions en escalier) ; cela équivaut à dire qu'elle admet en tout point une limite à gauche et une limite à droite (finies). • Une fonction f est dite Riemann-intégrable lorsque pour tout ε>0 il existe des fonctions en escalier h et ψ telles qu'on ait partout |fh|≤ψ, avec ∫ψε (i.e., f est approchable par les fonctions en escalier avec une erreur uniformément contrôlée par une fonction en escalier elle-même de norme 1 arbitrairement petite) ; cela équivaut à dire que f est bornée et que son ensemble de points de discontinuités est Lebesgue-négligeable. • Pour comparaison, si fonction f est Lebesgue-intégrable, pour tout ε>0 il existe une fonction en escalier h telle que ∫|fh|≤ε (i.e., f est approchable au sens L¹ par les fonctions en escalier). • J'aime bien présenter ces trois propriétés côte à côte, cela aide à situer la notion d'intégrabilité au sens de Riemann entre celle de fonction réglée et celle d'intégrabilité au sens de Lebesgue. Cela devrait peut-être expliquer pourquoi j'avais l'intuition qu'on aurait besoin de f réglée pour pouvoir conclure à la convergence uniforme de N(f) vers (f).

(jeudi)

Changement de serveur

Comme je le fais de temps en temps, j'ai changé le serveur Web qui héberge ce site et ce blog (c'est maintenant une Dedibox XC, auquel j'ai donné le nom de betelgeuse.gro-tsen.net). Normalement, le changement devrait être totalement transparent (je n'ai cassé le système de commentaires de ce blog que pendant quelques minutes), mais il se peut que quelque chose m'ait échappé, parce que le nombre de choses qui tournent sur ce serveur et qu'il faut migrer dans le bon ordre en pensant à tout est relativement élevé (entre le serveur Tomcat qui sert maintenant à fournir des pages dynamiques, le système de commentaires de ce blog, le serveur Git qui réside sur le même serveur, les autres scripts CGI en tout genre, le tracker BitTorrent pour les quelques fichiers que je distribue par ce protocole, et quelques bizarreries comme un microscopique site accessible uniquement en IPv6, cela fait un nombre assez pénible de fichiers de config à régler correctement).

(À vrai dire, je me suis levé aujourd'hui avec un mal de tête épouvantable, je me suis dit que j'étais trop fatigué pour réfléchir, et j'ai préféré faire de l'informatique que faire des maths : je ne suis pas persuadé que ça ait amélioré mon mal de tête.)

À cette occasion, j'ai jeté un coup d'œil dans les logs de mon serveur Web, et je suis impressionné par le nombre de requêtes bizarres qui s'y trouvent. Par exemple, Bing me demande régulièrement des choses comme /%7Edavid///lit/fourshort.html (le fichier qui existe vraiment est /~david/lit/fourshort.html) : le %7E est une autre façon d'écrire ~ — en principe ça ne devrait pas faire de différence, sauf qu'en fait on ne sait jamais bien qui est censé faire la substitution —, mais ce qui est mystérieux dans l'histoire c'est comment il a inventé les 3 / consécutifs. Bon, c'est assez facile de demander à Apache de le rediriger sur une adresse plus normale (encore qu'il y a des interactions subtiles entre le mécanisme de redirection/réécriture d'Apache et son mécanisme de négociation de contenu[#]), mais ce genre de choses fait penser soit que j'ai laissé traîner un lien mal écrit quelque part, soit que Bing est cassé dans sa façon de faire des résolutions de liens relatifs. Comment savoir ?

Dans le même genre, je me souviens qu'à l'époque lointaine où ce site était hébergé à l'ENS, j'utilisais des fichiers SHTML, et notamment ma page principale s'appelait /home/madore/index.shtml — et voilà que quelqu'un avait inventé un lien /home/madore/index.shtml/ (avec un / à la fin), pour lequel Apache servait le même contenu, et du coup tous les liens relatifs étaient cassés : du genre, math/ pointait vers /home/madore/index.shtml/math/ au lieu de juste /home/madore/math/ et cela renvoyait toujours vers la même page à cause du index.shtml, qui du coup contenait de nouveau un lien math/ qui faisait que le moteur de recherche allait chercher /home/madore/index.shtml/math/math/ et ainsi de suite indéfiniment. Bref, dès qu'une URL est servie sous un nom non-canonique, ça peut être une source de tracas.

[#] À titre d'exemple, j'avais dans mon .htaccess une ligne du type : RedirectMatch seeother /(.*david)/pages_new.html /$1/weblog/ mais j'ai découvert qu'elle ne fonctionnait pas à cause de la présence d'un fichier pages_new.html.en~ (un backup Emacs) qui traînait : si quelqu'un peut m'expliquer la logique de la chose…

(lundi)

Le SQL c'est rigolo

Bon, en fait, non, je ne pense pas vraiment ce que je dis dans le titre de cette entrée : le SQL est, au niveau syntaxique, un langage invraisemblablement pourri. En revanche, ce qui est vrai, c'est qu'au chapitre des technologies qui donnent envie de s'en servir, quand on a une base de données SQL, on a envie de faire des requêtes dessus pour tout et n'importe quoi. Or il se trouve que les entrées de ce blog sont stockées dans une base PostgreSQL (alimentée depuis les fichiers XML que je tape moi-même à la main). Donc je peux avoir la réponse à plein de questions inutiles, du genre :

J'aurais aussi aimé extraire quelque chose comme « les balises HTML que j'aime le plus », mais apparemment le XPath de PostgreSQL 9.1 est buggué limité : si j'essaie SELECT unnest(xpath('.//name()', '<foo><bar /></foo>'::xml)) ;, il me prétend que .//name() est une expression XPath invalide, ce qui est clairement faux parce qu'elle nécessite XPath 2.0 (il est probablement gêné par le fait que ça renvoie des chaînes au lieu de renvoyer du XML — mais je ne vois pas comment faire autrement).

Bon, bien sûr, j'ai écrit tout ça juste pour pouvoir me souvenir plus tard de comment on fait ce type de requêtes. Quand j'aurai unifié la base des commentaires à la base des entrées, je pourrai poser d'autres questions rigolotes. Mais en tout état de cause, il y a quelque chose de vraiment amusant à pouvoir interroger des ensembles de données de cette façon (fût-ce avec une syntaxe complètement pourrie). À un certain moment, un forum de discussion que je fréquentais à l'ENS avait une base de données des messages dans le même genre, et c'était très distrayant de pouvoir lui poser toutes sortes de questions menant à des statistiques gratuites et vaguement absurdes (du style : classer les intervenants par le nombre moyen de réponses que leurs messages provoquent).

Remarquer que les navigateurs permettent aussi des choses amusantes. Par exemple, j'ai récemment voulu couper les entrées les plus longues de ce blog (« couper » signifiant que l'entrée complète n'apparaît que sur sa page individuelle, les pages du mois ou des catégories la contenant étant abrégées par un lien lire la suite qui y renvoie). La recherche des entrées par nombre de caractères du source peut ne pas être la plus pertinente, alors j'ai recherché les entrées, dans une page comme celle rassemblant mes entrées mathématiques (et qui est beaucoup trop longue) en triant par nombre de pixels du rendu effectué par le navigateur : il suffit pour cela d'ouvrir la page en question, d'ouvrir une console JavaScript (control-shift-K sous Firefox) et de taper quelque chose comme ceci :

entries = Array.prototype.slice.call(document.querySelectorAll("article.weblog-entry"))
entries.sort(function(a,b){var ah=a.clientHeight; var bh=b.clientHeight; return (ah<bh ? 1 : ah>bh ? -1 : 0);})
list = entries.slice(0, 10).map(e=>({"id": e.id, "height": e.clientHeight, "title": e.querySelector(".entry-title").textContent}))
console.table(list)

Et hop ! J'ai un joli tableau des dix entrées les plus hautes (en pixels) dans la page que je suis en train de regarder. La fonction console.table est un goodie de Firefox (disponible à partir de la version 34) qui est bien pratique dans ce genre de situation. La ligne précédente utilise les lambda-expressions d'ECMAscript 6, qui sont aussi bien pratiques. Bref, JavaScript — et la console JavaScript des navigateurs — est aussi quelque chose de bien pratique et puissant (je prends l'exemple de mon blog, mais ça peut servir dans plein de contextes d'interroger ou de manipuler la page HTML qu'on est en train de regarder), malheureusement, comme SQL, encombré par une syntaxe souvent très peu heureuse.

(dimanche)

Les entrées de blog que je n'arrive jamais à écrire

Il y a une éternité j'ai promis d'écrire une entrée de ce blog sur les octonions. Je n'ai jamais réussi à la publier. Ce n'est pas que je n'aie rien à écrire, au contraire, ni même que je n'aie rien écrit : j'ai commencé (au hasard des moments où j'ai du temps pour le faire) à écrire des choses sur le sujet, et de plus en plus, et je me suis rendu compte que ça débordait dans tous les sens, et qu'à la fin non seulement ça devenait trop long et indigeste, mais en plus que ça manquait de structure et de cohérence thématique. Alors j'ai décidé de diviser cette entrée en trois parties : des généralités sur les octonions d'abord, puis une petite partie sur les octonions entiers et les réseaux dans les octonions, et enfin une troisième (indépendante de la seconde) sur la géométrie octonionique et le carré magique de Freudenthal-Tits — qui est à mon avis la principale raison pour laquelle les octonions sont intéressants. Puis j'ai commencé à développer la première partie séparément, et je me suis rendu compte que je devais parler d'automorphismes des octonions, et à me poser plein de questions qui débordaient dans tous les sens, et finalement cette partie-là, même prise seule, devient aussi trop longue, et il faudrait la couper à son tour. Pareil pour la troisième partie : là j'ai pensé, je vais changer de point de vue et écrire une petite entrée sur les espaces deux-points-homogènes (dits aussi : homogènes et isotropes), c'est-à-dire, pour parler grossièrement, les espaces (au sens : variétés riemanniennes) qui sont identiques en tous les points et dans toutes les directions. C'est une question très naturelle et intéressante que de classifier ces espaces homogènees et isotropes, la réponse a été apportée par Tits et Wang (très rapidement : outre l'espace euclidien et les sphères, ce sont les espaces projectifs et hyperboliques sur les réels, complexes, quaternions, et octonions, sachant que sur les octonions il n'y a que la droite et le plan projectif, et la droite et le plan hyperbolique, pas de dimension plus élevée) ; ce sont des espaces très beaux par leur pure symétrie, et élégants dans leur description, et ils amènent naturellement à parler des octonions et des groupes de Lie exceptionnels (et cela apporte une réponse possible à la question qui m'avait tracassé, qu'est-ce qu'une géométrie). Et bien sûr, en essayant de parler de ça, j'ai de nouveau eu trop de choses à dire et de nouveau ça débordait dans tous les sens.

Il n'y a pas que les octonions qui m'aient causé ce souci. C'est un peu quelque chose qui m'arrive à chaque fois que je parle de n'importe quoi : je ne sais pas sélectionner ce dont je veux parler, ma logorrhée s'étale sans structure dans toutes les directions, et à la fin tout est trop long et indigeste. Mais bien sûr, c'est pire quand je parle de maths. J'ai par exemple aussi voulu écrire une entrée sur les notations ordinales, essentiellement, pour faire suite à cette entrée déjà très longue, et expliquer comment on peut « fabriquer » (décrire, expliciter, travailler avec, calculer sur) des ordinaux récursifs très grands — essentiellement, vulgariser la notion de fonction d'écrasement pour fabriquer de grands ordinaux à partir de cardinaux de plus en plus sophistiqués (inaccessibles, Mahlo), cette question étant du coup naturellement liée à celle des grands nombres que j'ai abordée à plusieurs reprises. Bref, j'ai travaillé là-dessus au hasard de ma motivation et de mon temps disponible. Et puis je suis rentré dans les explications sur les fonctions d'écrasement forcément d'autant plus compliquées qu'on fabrique des ordinaux plus grands, c'est devenu long, très long, très très très long, et il me reste sur les bras une montagne d'explications que je ne sais pas bien comment structurer ou diviser pour la rendre un peu digeste. (Cela n'arrange pas les choses que j'ai cru comprendre quelque chose, que je me suis trompé, que j'ai compris autrement, que je me suis retrompé, que j'ai compris que j'avais bien compris initialement, et qu'au bout du compte je me suis beaucoup embrouillé sur les différentes variantes qu'on peut construire autour des fonctions d'écrasement — par exemple, il y en a qui sont croissantes, d'autres qui ne le sont pas, et il y a toutes sortes de conventions possibles sur comment organiser et définir les valeurs.) J'ai encore d'autres entrées dans le même genre, commencées parce que je pensais que je n'aurais pas tant de choses que ça à dire, et finalement dans des limbes où les choses sont à moitié écrites et peut-être ne seront jamais achevées.

C'est un peu l'histoire de ma vie, de commencer plein de choses, et de n'en finir que très peu.

Alors qu'est-ce que je devrais faire ? Publier des choses inachevées ? En publier le début, quitte à nuire à la cohérence de la suite ? Laisser tomber ? Attendre un temps potentiellement infini que j'arrive à terminer ce que j'ai commencé ? Je ne sais vraiment pas.

Il faut dire aussi que je ne sais pas bien qui lit mon blog, et notamment qui lit les entrées mathématiques (et quel est son niveau en maths et quels sont ses centres d'intérêt). En vérité, le principal lecteur pour lequel j'écris, c'est mon moi futur : j'écris parce que j'ai compris quelque chose, que j'ai envie de pouvoir le recomprendre à l'avenir quand j'aurai un peu oublié, alors je me l'explique à moi-même pour savoir que je pourrai relire telle ou telle entrée et resavoir ce que j'aurai su. À titre d'exemple, en réfléchissant à des questions de bases de données SQL, je suis récemment retombé sur cette entrée, et il y a un peu plus longtemps, en me posant des questions de physique, sur celle-ci : dans les deux cas, j'avais totalement oublié les subtilités de ce que j'y raconte, et je n'étais pas fâché que la personne qui sait le mieux m'expliquer les choses — c'est-à-dire, moi — me prenne par la main pour me redire comment tout ça fonctionne. Idem concernant les séries de Fourier (que je m'oblige à réapprendre à chaque fois que je dois enseigner le sujet, sachant très bien que j'oublierai dans le mois qui suit). En termes informatiques, on pourrait dire que mon blog est mon espace de swap : c'est là que je consigne les choses quand ma mémoire déborde (ou que je veux changer de contexte). Mais le temps de swap est lui-même long !

(samedi)

Le Quatramaran est revenu

Une fois n'est pas coutume, j'utilise mon blog pour faire passer un message — parce que je pense qu'il doit y avoir un certain nombre d'anciens normaliens concernés qui me lisent. Ce qui suit ne s'adresse qu'à ceux qui comprennent de quoi je parle.

La machine Quatramaran est revenue, ou plutôt s'est réincarnée, sous le nom quatramaran.salle-s.org. Ceux qui avaient un compte actif dessus l'ont encore (avec le même mot de passe ; la clé SSH est aussi la même). Ceux dont le compte a été désactivé parce que trop vieux (inactif) et qui veulent néanmoins le rouvrir, ou au contraire ceux qui veulent faire fermer leur compte, ou pour toute autre demande, peuvent s'adresser à root[arobase]quatramaran[point]salle-s[point]org ; par ailleurs, les contributions financières sont bienvenues quoique non obligatoires (tarif indicatif : 15€/an).

(Cette machine joue un rôle semblable à phare.normalesup.org mais elle en est tout à fait indépendante, et gérée de façon plus informelle.)

(vendredi)

Des caractères Unicode qui manquent

Je commence une page pour rassembler quelques caractères Unicode qui me semblent manquer dans le Saint Standard et dont j'aimerais proposer l'addition. (J'avais déjà il y a longtemps essayé de suggérer l'addition d'un caractère N-ARY RESTRICTED PRODUCT, mais visiblement la personne à laquelle j'avais transmis l'idée — et les preuves de son utilisation dans la littérature mathématique — n'en a rien fait. Il faudra que je voie si je peux trouver des contacts plus fiables.)

Après, ça risque d'être comme ce dont je parlais dans l'entrée précédente : pour faire bouger les choses, il faut se battre contre les Gardiens de la Loi, et ma motivation pour le faire n'est pas démesurée, surtout si je suis tout seul à mener le combat.

(jeudi)

De la difficulté de soumettre du code à Linux

Il y a des problèmes informatiques qui ne seront jamais résolus parce qu'ils sont intrinsèquement difficiles (par exemple, pour une raison algorithmique) : on est bien obligé de le comprendre. Il y en a d'autres qui posent des difficultés non pas pour des raisons intrinsèques mais pour des raisons historiques : on peut aussi comprendre que ce soit difficile de se battre avec des bizarreries historiques qui se sont profondément enracineés (le changement du protocole Internet d'IPv4 à la version IPv6 représent un bon exemple de cette nature). Mais il y en a aussi, et là c'est vraiment désolant, qui ne seront jamais résolus parce que les gens qui pourraient les résoudre ont des opinions dogmatiques sur la façon dont les choses devraient être faites, et que ces opinions empêchent toute résolution possible du problème. Je voudrais donner un exemple très concret.

Je situe d'abord un peu les choses pour ceux qui ne connaissent pas le monde Unix. Le principal protocole qui permet à Internet de fonctionner est appelé TCP/IP : plus exactement, IP est le protocole qui donne un (ou plusieurs) numéro(s) à chaque ordinateur, et leur permet d'échanger des « paquets » d'information, et TCP vient là-dessus fournir une notion de connexion fiable. Dans le monde Unix, les deux bouts de cette connexion s'appellent des sockets (traduire ça comme des prises et pas comme des chaussettes ; mais en pratique, même quand on parle en français, on dit une socket) : une socket TCP/IP (ou, dans le jargon plus unixien, une socket de domaine AF_INET et de type SOCK_STREAM) est l'abstraction par laquelle un processus (=programme) sur une machine peut parler à un autre, a priori situé sur une machine distante, via le réseau. Maintenant, il arrive aussi qu'un processus veuille communiquer avec un processus sur la même machine : Unix offre un véritable labyrinthe de façons différentes de faire ça ; d'aucunes sont très différentes, mais certaines utilisent la même abstraction de socket. Notamment, deux processus Unix peuvent communiquer entre eux par une socket de domaine Unix (AF_UNIX), qui apparaît alors comme un fichier spécial sur la machine (représentant le point de communication), ou encore par une socket de domaine INET (AF_INET), c'est-à-dire en faisant exactement comme une connexion réseau Internet mais qui se trouve simplement relier la machine à elle-même. Il peut y avoir plein de raisons, liées aux idiosyncrasies d'Unix, de préférer, ou de devoir choisir, une socket Unix ou au contraire une socket INET.

Maintenant, quand deux processus Unix communiquent par une socket de domaine Unix, chacun des deux a la capacité d'identifier l'autre, c'est-à-dire de demander au système qui est en train de me parler par cette socket ? (la réponse donne le numéro du processus et l'identitié de l'utilisateur qui en est propriétaire ; cette réponse est fiable, parce qu'apportée par le noyau Unix lui-même ; techniquement, sous Linux, cette information s'obtient avec getsockopt(socket, SOL_SOCKET, SO_PEERCRED,,)). Quand on a affaire à une socket de domaine INET, en général, vu que la communication peut venir de n'importe où sur Internet, on ne peut pas identifier complètement le processus en face, on peut simplement demander l'identité de la machine en face (son numéro IP ; techniquement, ceci s'obtient avec getpeername(socket,,)). Mais si la socket INET est reliée à la machine elle-même, c'est-à-dire, si deux processus sur la même machine, sont en train de parler entre eux par une connexion TCP/IP, le système pourrait très bien fournir la même information (quel est le processus en face ?) qu'il accepte de le faire pour les sockets de domaine Unix : seulement, il ne le fait pas. Ou plus exactement, ni Linux ni Unix BSD ne le font (Solaris, en revanche, accepte de le faire par l'appel système getpeerucred()).

Or ceci est un manque grave, que je voudrais bien voir corrigé. Pourquoi ? Le problème est que pour toutes sortes de raisons, on peut ne pas avoir le choix du protocole qu'on parle : si on est obligé d'utiliser une socket de domaine INET, le fait de ne pas pouvoir obtenir plus d'information que l'autre bout est sur la même machine empêche de mettre des contrôles d'accès offrant une sécurité minimale dans certaines situations. Je donne un exemple.

(samedi)

Des changements techniques sur ce blog

Si vous arrivez à lire cette entrée, c'est que je n'ai pas totalement tout cassé. ☺

Après avoir longtemps tergiversé (j'en parlais déjà il y a trois ans), j'ai enfin décidé de faire faire un petit pas au système technique d'hébergement de ce blog.

Jusqu'à présent, les entrées de ce blog étaient présentées sous essentiellement trois formes : une page principale avec les 20 entrées les plus récentes, une page par mois pour les archives, et aussi une page par catégorie pour les entrées que j'ai tagguées ; seules certaines entrées particulièrement longues (comme celle-ci) avaient droit à une page individuelle. De façon liée à ce choix, toutes les pages du blog lui-même (i.e., à l'exception du système de commentaires, qui est géré par un petit script CGI assez trivial écrit en Perl) étaient purement statiques, c'est-à-dire, générées à l'avance et servies comme de bêtes fichiers ; je regénère ces fichiers quand j'écris une nouvelle entrée ou quand j'en modifie une (le moteur lui-même qui parse le sur-ensemble de HTML dans lequel je tape et qui produit les différentes pages HTML, est écrit en Java ; là-dessus, j'ai un petit script Perl qui essaie de détecter les pages qui sont vraiment modifiées pour ne regénérer que celles-là).

Cet agencement était logique quand j'ai commencé ce blog, avec un moteur trivial (j'ai longtemps simplement tout tapé dans un unique gros fichier de toutes les entrées, qui était traité par une feuille de style XSLT simpliste), puis un à peine moins trivial (écrit en C). Par ailleurs, il convenait assez bien aux entrées plutôt courtes que j'écrivais il y a une dizaine d'années (l'entrée moyenne sur les années 2004 à 2006 fait moins de 3000 caractères de long, celle de 2011 à 2013 en fait plus de 9000 !) : séparer un blog aux entrées très courtes en pages individuelles n'a pas beaucoup de sens, cela en a beaucoup plus quand il s'agit de textes assez longs expliquant, par exemple, un concept mathématique.

Il y avait plusieurs inconvénients qui me préoccupaient. Notamment, si je donnais un lien vers une de mes entrées à quelqu'un qui n'a pas l'habitude de mon blog, le lien risquait d'être au milieu de la page et il risquait de voir se charger toute une page sans rapport avec le sujet avant que le navigateur le positionne sur l'entrée voulue : pas forcément attrayant. Mais par ailleurs, les moteurs de recherche, manifestement, ne savent décidément pas indexer séparément les différents éléments à l'intérieur d'une page Web, même quand on leur donne toutes les indications sémantiques (de la balise <code> au microformat hAtom) pour leur mâcher le travail.

Quoi qu'il en soit, j'ai fini par donner à chaque entrée sa propre page (accessible notamment depuis la page d'index de toutes les entrées ou via le permalien qui est caché sous la date dans le coin en haut à gauche de l'entrée). Comme je ne voulais pas générer statiquement deux mille fichiers HTML (pas vraiment que ça pose un problème aux ordinateurs modernes, mais cela choquait un peu mon sens de l'esthétique et de l'organisation), et comme cette génération est de toute façon très efficace, ces pages seront produites dynamiquement à la demande : j'utilise pour ça un serveur Tomcat (qui parle à mon serveur Apache), ce qui est logique vu que mon moteur de blog est déjà écrit en Java. (Il faudra que je raconte un jour ce que je pense de Java.)

Ce qui ne veut pas dire que ç'ait été complètement évident non plus. Mon code n'était pas prévu pour tourner de façon parallèle (je faisais usage de quelques variables globales, i.e., de champs statiques de classes Java), ni pour persister : j'ai donc dû revoir un certain nombre de choses. Si tout casse, au moins, les pages statiques devraient rester lisibles (la page principale avec les entrées récentes, et aussi la page de toutes les entrées d'un mois, maintenant accessible en passant par l'index de toutes les entrées). J'ai aussi fait un effort considérable pour ne casser aucun lien, mais il est toujours possible que j'aie échoué en cela. Je dois dire, aussi, qu'il était assez fastidieux de m'arranger pour que PostgreSQL, Tomcat et Apache parlent correctement les uns aux autres (le nombre de fichiers de configuration à régler est franchement assez pénible). Mais bon, c'est fait.

On verra d'ici un jour ou deux si les recherches Google renvoient désormais des pages des entrées individuelles de ce blog. (J'ai en tout cas été impressionné par la vitesse à laquelle le Googlebot a repéré le changement et tout téléchargé : il n'a pas dû s'écouler deux heures que c'était fait.)

Par ailleurs, je n'ai toujours pas eu le courage de m'attaquer à la refonte du système de commentaires (rien n'a changé à son sujet, et je sais qu'il est nul : pas la peine de me le rappeler, donc !), dont la modification d'aujourd'hui devrait cependant être la prémisse.

(lundi)

Ma mémoire de la chronologie qui fonctionne mal

Je ne peux pas spécialement dire que j'aie une mauvaise mémoire. À part pour les visages (mais en fait c'est plus que je suis mauvais physionomiste : c'est une question de reconnaissance plus que de mémoire) et pour les nombres, j'ai plutôt tendance à bien retenir les choses, et notamment les événements du passé.

En revanche, il y a une chose pour laquelle je suis épouvantablement mauvais, c'est pour réconstituer la chronologie, c'est-à-dire l'ordre de déroulement, et les dates approximatives, d'événements passés. Je peux garder un souvenir extrêmement précis et clair de quelque chose qui s'est déroulé, et être incapable de dire si c'était il y a un mois, il y a un an ou il y a cinq ans. De même, je peux avoir deux événements précis en tête et être incapable de savoir dans quel ordre ils se sont produits : à moins qu'il y ait un lien causal clair entre eux, ou un autre indice permettant, à la réflexion (et à condition que je fasse cette réflexion !), de retrouver lequel est antérieur, la seule information que livrera ma mémoire est ceci s'est produit, et ceci aussi.

C'est une des raisons pour lesquelles je tiens un journal assez précis de ma vie depuis le début du millénaire : il me permet de retrouver l'ordre (chrono)logique des choses qui me sont arrivées ; parce que par exemple, si on me rappelait les différentes choses qui se sont produites le 21 janvier dans ma vie, toutes ces choses m'évoquent des souvenirs relativement clairs, mais je serais incapable de les remettre dans l'ordre ou de retrouver l'année de chacune.

De même, je suis souvent assez surpris, en relisant des entrées de mon propre blog, de voir ah, j'ai écrit ça il y a dix ans déjà ? ou au contraire ah, cette entrée est si récente ?, ou de voir que telle entrée est beaucoup plus vieille que telle autre alors que j'aurais pensé le contraire.

Ce problème d'orientation dans le temps vaut aussi pour l'Histoire avec une ‘H’ majuscule, mais ça, j'en ai déjà parlé (mais j'aurais été incapable de dire quand).

(dimanche)

Des Livres dont Vous Êtes le Héros ressurgissent du passé

J'aimais beaucoup, quand j'étais au collège et lycée, cette série de livres qu'on appelait les livres dont vous êtes le héros (LDVELH), c'est-à-dire des aventures à choix multiples, généralement situées dans des univers de type heroic fantasy ou plus rarement science-fiction, dont le lecteur construisait l'histoire en lisant tour à tour les paragraphes numérotés qu'on lui demandait de suivre (cela ressemblait donc à ceci).

À vrai dire, je n'y jouais pas vraiment, parce que je n'avais pas la patience nécessaire pour ne pas tricher, encore moins pour prendre des dés et mener des combats dans les règles, et trop de curiosité pour ne pas vouloir connaître toutes les issues possibles de tous les choix possibles ; il serait aussi un peu exagéré de dire que je les lisais linéairement du paragraphe 1 au dernier ; mais je faisais quelque chose un peu entre les deux, je prenais un petit bout du livre et j'explorais tous les choix possibles, puis un autre, et ainsi de suite jusqu'à avoir tout lu. (J'avais d'ailleurs moi-même entrepris l'écriture d'une telle aventure dans un monde dont deux de mes amis devaient écrire deux autres parties.)

Parmi les nombreuses séries de ces LDVELH, certaines représentaient une simple collection thématique d'histoires sans rapport réel (ou seulement reliées par un vague univers commun), d'autres étaient les différents chapitres d'une saga (et on devait en principe les lire dans l'ordre ; ou du moins, on pouvait gagner quelque chose à le faire, parce que certains livres vous permettait d'acquérir des objets spéciaux qui pourraient resservir dans un autre).

Les séries qui ont le plus attiré mon attention étaient Sorcellerie (voir aussi ici) de Steve Jackson (les quatre parties d'une quête menant le héros à récupérer un objet magique, la Couronne des Rois volé à son peuple d'Analand par le cruel archimage Ming de Mongo de la forteresse de Mampang) ; et surtout Quête du Graal de J. H. Brennan, une série d'aventures incongrues au monde du roi Arthur qui avait surtout pour elle qu'elle ne se prenait pas trop (voire, pas du tout) au sérieux, entre un Merlin complètement farfelu qui habitait une maison différente et improbable à chaque roman et des personnages hauts en couleur comme le poète vampire (Nosférax dans la traduction française) et l'épée Excalibur Junior. Du même auteur, et en un peu moins loufoque, il y avait aussi la série Loup* Ardent (il faut lire l'astérisque comme un grognement de barbare), considérée par certains comme la plus remarquable, et peut-être la plus difficile, de tout le genre, et qui m'avait fait rêver. (Je passe sur la psychanalyse évidente de l'ado geek homo encore mal assumé qui rêve de pouvoir s'incarner en barbare musclé armé d'une grosse épée.)

Si je raconte ça aujourd'hui, c'est que je suis tombé sur un dépôt sur archive.org rassemblant toutes sortes de ces livres. Je ne sais pas par quelle bizarrerie du copyright (ou si c'est juste le principe plus personne n'en a rien à foutre) quelque chose de vaguement officiel comme The Internet Archive peut les rendre disponibles, mais toujours est-il que je suis ravi de retrouver quelques fantômes du passé (et qui plus est, dans leur version originale, que je n'avais jamais encore vue), notamment :

(Note : comme quantité de livres distribués sur archive.org de cette façon, il faut parfois essayer plusieurs des différents formats proposés avant d'en trouver un qui ne soit pas gigantesque en taille et qui soit d'une qualité correcte.)

(dimanche)

Quelques nouvelles (et first world problems) en vrac

Comme je le craignais, le rétablissement de ma ligne téléphonique m'a confronté à la pile de mails et de choses à traiter que j'avais laissée de côté en me disant je verrai quand j'aurai de nouveau l'ADSL, ce qui (combiné à un emploi du temps assez merdique) fait que je suis loin d'avoir rattrapé mon sommeil en retard. Je suis toutefois un petit moins fatigué maintenant qu'il y a trois semaines.

Je suis passé récemment dans le Marais, un quartier que j'ai arrêté de fréquenter depuis la fermeture du Daily monop' de la rue des Archives qui était devenu un de mes lieux de prédilection, pour voir si, dix mois plus tard, un nouveau commerce avait fini par prendre sa place (ainsi que celle du Starbucks adjacent, qui a fermé à peu près en même temps) : toujours pas. Je me demande un peu pourquoi le BHV (qui en était propriétaire) a tenu à le fermer de façon aussi précipitée si c'est pour ne rien faire des lieux pendant aussi longtemps.

En revanche, j'ai constaté que la fort sympathique librarie Agora, un peu plus haut sur la rue des Archives, avait fermé à son tour, ce qui m'a un peu attristé. (Il devait y avoir quelque chose comme trois ou quatre librairies de cette toute petite chaîne dans toute la France, et par coïncidence je crois que je les ai toutes fréquentées : à part celle du Marais, il y en a une au centre commercial Ulis 2 pas loin de là où mes parents habitent, et qui est encore ouverte, et une à Lyon où je suis passé une fois complètement par hasard, et peut-être encore une à Bordeaux, je ne sais plus bien.)

Mais au chapitre des fermetures de commerces, ce qui m'a le plus peiné récemment est d'apprendre celle de mon café Espressamente préféré, à Bercy-Village, où ils servaient un choix fabuleux de déclinaisons du café Illy, ainsi qu'une excellente sélection de desserts (notamment trois sortes de tiramisù : au chocolat, au café, et au thé vert — toutes les trois délicieuses). Voilà donc un très grave first world problem : où vais-je trouver un aussi excellent café macchiato pour conclure le brunch que j'aime bien prendre à Chai 33 ?

J'ai commencé à réfléchir un peu sérieusement ce week-end à la possibilité (qui est sur ma liste de choses à faire depuis une éternité) d'améliorer mon moteur de blog pour ne plus avoir uniquement des pages statiques — une par mois et une par catégorie — mais aussi des pages dynamiques pouvant refléter les entrées individuelles de ce blog. (Ceci répond à la fois à une attente de certains de mes lecteurs, mais aussi de Google et des autres moteurs de recherche qui ne sont pas foutus d'indexer correctement des éléments individuels d'une page Web malgré la quantité faramineuse d'indications sémantiques que je peux lui donner pour l'aider dans ce sens, de la balise <article> du HTML5 à tout le markup hAtom que j'ai employé autant que je pouvais. Après ça, je pourrai envisager de refondre le système de commentaires qui est actuellement ridiculement limité.)

Bref, j'envisage d'utiliser des servlets Java, ce qui est logique vu que le moteur de blog est déjà écrit en Java. (Là, il faut que je sorte la blague préférée d'un ami : au début on a pensé que Java était bon pour faire des applets, puis on a commencé à s'en servir pour faire des servlets, et finalement il semble que Java soit simplement bon pour les toilettes.) J'ai réussi à écrire un servlet (sur un serveur privé) qui produit une page pour une entrée unique de ce blog — maintenant il reste à trouver tous les endroits où j'ai pu écrire du code avec accès concurrents qui doive être synchronisé. Globalement, ça n'a pas l'air trop affreux, il faut juste prononcer un nombre hallucinant d'incantations rituelles comme partout en Java (le langage où avant de pouvoir parser du XML il faut demander une factory d'implémentation DOM à laquelle on demande une implémentation DOM à laquelle on demande de créer un mode de parsing auquel on demande de parser le document, chacune de ces demandes nécessitant une incantation à la con).

(vendredi)

J'ai de nouveau le téléphone !

Ma ligne téléphonique est revenue cet après-midi à 14:39, après seulement 11 jours d'interruption (en fait, 262.5 heures), alléluia !

Maintenant il ne me reste plus qu'à remettre toute mon installation informatique en ordre (par exemple, la reconnexion a eu lieu juste après que j'ai fait basculer le serveur DNS maître de mes domaines comme madore.org vers une autre machine).

(vendredi)

Capteur de proximité cassé

Puisque je suis dans une série où je raconte mes problèmes de téléphone (saga de la ligne fixe cassée depuis 12 jours — et qui continue à ne pas marcher : 1, 2 et 3), j'en profite pour signaler celui-ci, qui n'est certes pas catastrophique mais est quand même gênant : le capteur de proximité de mon téléphone mobile (Nexus 4) est cassé.

Le capteur de proximité, présent sur la plupart des smartphone, c'est le gadget qui détecte que le téléphone est collé contre votre oreille, et qui, dans ces circonstances, désactive l'écran pendant un appel : ceci évite qu'on fasse involontairement des commandes en touchant l'écran avec la joue, par exemple celle de raccrocher. C'est une excellente idée, sauf quand le capteur en question ne marche pas. Enfin, il y a deux façons de ne pas marcher, et mon capteur a évidemment choisi la pire : il pourrait ne pas détecter ma tête quand elle est là, mais il fait le contraire, il la détecte en permanence.

Autrement dit, dès que je commence à passer un appel, l'écran se désactive, et je n'ai donc pas de moyen de raccrocher (sauf en éteignant complètement le téléphone), ni d'accéder aux touches numériques qui servent pour communiquer avec les serveurs vocaux. C'est particulièrement problématique pour la consultation de mon répondeur : pas de moyen de passer au message suivant, de réécouter un message, de revenir en arrière, etc. — puisque toutes ce fonctions sont accessibles en appuyant sur des touches. Je ne peux donc véritablement consulter mon répondeur que depuis un téléphone fixe, ce qui (a) me coûte de l'argent, et (b) ne m'est pas possible en ce moment (comme on le sait, ma ligne fixe est HS, et mon téléphone de bureau ne me permet pas de consulter le répondeur de mon mobile). J'arrive quand même à raccrocher : le capteur de proximité a des instants de lucidité, au pire je peux éteindre le téléphone de force en gardant le bouton on/off appuyé pendant dix secondes, ou encore activer l'option d'accessibilité raccrocher sur appui du bouton on/off ; mais en tout cas la situation est assez absurde.

Contrairement à d'autres appareils, le Nexus 4 ne permet pas de recalibrer un capteur de proximité trop sensible (ce capteur ne sait renvoyer que deux valeurs : tête éloignée ou tête présente). Il y a bien des applications qui traînent prétendant résoudre le problème en forçant un réveil permanent de l'écran pendant les appels, mais je ne fais aucune confiance à des applications confidentielles dont je ne sais rien du développeur et dont le code source n'est pas publié.

C'est d'autant plus absurde que le téléphone a des boutons physiques : il serait évident et raisonnable de faire en sorte que si l'utilisateur appuie sur un de ces boutons (disons, le bouton d'alimentation), le capteur de proximité soit ignoré pendant dix secondes ou quelque chose de la sorte. Ou simplement de prévoir de désactiver la fonction éteindre l'écran si le capteur de proximité détecte la présence de la tête. Je viens de soumettre un bug-report Android dans ce sens, mais soumettre un bug-report sur Android a le même effet qu'écrire à Orange : c'est purement défoulatoire, il ne faut pas espérer une seule seconde que ce qu'on écrit sera pris en compte.

Le meilleur contournement que j'aie trouvé pour l'instant (je n'y ai pensé qu'aujourd'hui, en fait), c'est de brancher les écouteurs externes : miraculeusement, quelqu'un a eu la bonne idée de désactiver le capteur de proximité dans ces circonstances.

Sinon, la bonne solution serait pour moi de recompiler l'application com.android.phone (i.e., le téléphone) pour en retirer tout le code qui tient compte du capteur de proximité (ou ajouter la fonction qui permet au bouton on/off d'activer l'écran pour dix secondes, ou quelque chose comme ça). Malheureusement, même si le code source est fourni donc c'est possible en théorie, en pratique, recompiler une application système Android est très difficile : je sais que je m'étais arraché les cheveux à trouver comment recompiler l'application clavier, je me sens assez découragé à l'idée de recommencer pour l'application de téléphonie. (Surtout que chacune de ces petites réparations que je peux faire sur mon Android va signifier un long moment à passer à chaque nouvelle mise à jour du système pour refaire toutes les réparations qui auront été écrasées par la mise à jour.)

(mercredi)

Mes douleurs mystérieuses à la tête

Dans la série Les passionnantes aventures de Ruxor hypocondriaque, je vous avais parlé de mon cœur, maintenant je vais vous parler de ma tête.

J'ai toujours eu (depuis que je suis petit) des maux de têtes en tous genres, jamais très douloureux (sauf les deux fois où j'ai fait une migraine ophtalmique), ni même terriblement fréquents, mais en revanche assez impressionnants par leur diversité : j'ai eu des maux de tête pulsatiles, des maux de tête sourds et constants, des maux de tête localisés, des maux de tête généralisés, j'ai l'impression d'avoir essayé tout un menu de maux de têtes différents. Globalement j'en ai plutôt moins que quand j'étais ado.

Mais il y a une sorte qui est apparue plutôt récemment et que je trouve assez mystérieuse, ce sont les maux de tête extérieurs au crâne, c'est-à-dire, au niveau du cuir chevelu.

Cela commence par une douleur assez soudaine et qui semble intérieure au crâne, mais très localisée dans celui-ci, et au bout de quelques heures ou peut-être d'une journée l'origine de la douleur apparaît clairement comme extérieure au crâne. Cela peut être à n'importe quel endroit sous les cheveux ou parfois au niveau du front. Parfois, mais pas toujours, il y a une petite bosse sensible au toucher qui apparaît sous la peau, de quelques millimètres de diamètre (et je suis sûr que je ne me suis pas cogné). Il n'y a pas de changement de couleur de la peau. La douleur est normalement, en intensité et en qualité, intermédiaire entre celle provoquée par un hématome et un bouton infecté : parfois elle est plus forte, et en tout cas elle a tendance à venir par à-coups qui durent quelques secondes et sont séparés de plusieurs dizaines de secondes ou minutes. Cela provoque chez moi l'envie très forte d'appuyer sur l'endroit douloureux ou de le masser — mais je ne sais pas si c'est une bonne idée. Parfois j'ai deux ou trois points douloureux de la sorte, proches les uns des autres, qui apparaissent en même temps.

Normalement cela passe en un jour ou deux, mais j'ai une douleur de ce genre qui dure depuis ce week-end et qui a plutôt empiré depuis hier et qui m'a réveillé plusieurs fois cette nuit. C'est loin d'être insupportable, mais ça me gêne vraiment pour me concentrer, un peu comme si quelqu'un me pinçait de façon répétée.

(Peut-être que c'est mon stress des derniers jours qui joue ?)

Ceci me fait penser, d'ailleurs, que mon généraliste / médecin traitant a cessé d'exercer (plus exactement, il s'est vendu au côté obscur de la médecine en devenant expert pour une compagnie d'assurance). Il faut donc que j'en trouve un autre dans le coin. Ce qui n'est pas évident, un hypocondriaque ayant besoin d'un médecin qui le comprenne, c'est-à-dire qui sache être rassurant sans être méprisant, qui écoute ses doléances sans y croire automatiquement mais sans non plus les ignorer. Mon généraliste a une remplaçante officielle, mais la seule fois que je l'ai vue (elle le remplaçait temporairement, pour l'été), elle a clairement montré qu'elle n'avait pas ces qualités.

(mercredi)

Toujours rien

Neuf jour après le début de l'incident, ma ligne téléphonique n'a toujours pas été rétablie, pas plus que mon accès ADSL. La situation a même empiré : nous n'avons toujours pas la tonalité, mais au moins, jusqu'à hier, quand on nous appelait, notre ligne sonnait occupée (i.e., en dérangement), maintenant elle sonne normalement — nos correspondants ne sont donc même pas prévenus que notre ligne est en dérangement, ni nous qu'on cherche à nous joindre ; et pour l'ADSL, jusqu'à hier le modem captait un embryon de sychronisation qui lui permettait occasionnellement d'avoir une connexion (cf. le graphique sur l'entrée précédente, que j'ai tenu à jour depuis), maintenant nous n'avons plus rien : tout se passe exactement comme si nos prises téléphoniques étaient totalement débranchées. Pas non plus la moindre communication de la part d'Orange (pas de courrier, le service des dérangements continue à nous envoyer sur un message préenregistré qui ne dit rien, et leur site Web continue de prévoir un rétablissement complet au plus tard le 17/09/2014 fin de matinée insensible au fait que ce message est de plus en plus ridiculement faux).

Je dois avouer que si on m'avait dit qu'un quartier entier d'une grande métropole comme Paris pouvait, en 2014, se trouver complètement privé de téléphone et d'accès Internet, pendant neuf jours and counting sans que ça n'émeuve qui que ce soit d'autre que moi, sans qu'il y ait la moindre communication sur l'incident ou sur sa durée prévisible, je n'y aurais pas cru une seconde.

Je suis aussi impressionné par l'absence totale de recours qui s'offre à moi. J'ai contacté l'ARCEP, qui m'a répondu assez à côté de la plaque, mais en tout cas en disant clairement que ça ne les concerne en aucun cas, mon seul interlocuteur possible est mon opérateur — celui-là même qui fait tout pour ne pas être contactable. Il existe un Médiateur des Télécoms, mais son rôle est manifestement pensé pour les cas de désaccords de facturation, pas pour les incidents ou la communication sur incident : entre autres, on ne peut le saisir que deux mois après avoir contacté l'opérateur (vous savez, celui que je ne peux pas contacter parce qu'il est incontactable) et un mois après l'avoir recontacté par écrit (bon, là au moins j'ai trouvé une adresse à laquelle j'ai envoyé une LRAR, mais je n'en attends pas grand-chose). Au civil je peux peut-être vaguement espérer obtenir le remboursement du prorata de mon abonnement téléphonique, autrement dit trois clopinettes dont je n'ai rien à foutre et qui ne couvrent pas le centième des emmerdes qui me sont causés par l'incident ; cela ne vaut certainement pas la peine que j'engage les frais exorbitants représentés par le service d'un avocat pour récupérer ces trois clopinettes. Comme il n'y a pas de class actions en France, le fait que des centaines ou des milliers de personnes soient touchées ne change rien à l'affaire.

Concernant ma connexion ADSL (qui m'est beaucoup plus importante que ma ligne analogique traditionnelle), la situation est encore plus merdique, parce que je n'ai même pas le droit de m'adresser à Orange à son sujet : je suis client d'un opérateur (Nerim) qui sous-traite à SFR la gestion de ses connexions ADSL, qui (comme tout le monde, obligatoirement) sous-traite à Orange la gestion de la boucle locale. Du coup, tout ce que je peux faire c'est communiquer avec Nerim pour leur demander de demander à SFR de poser à Orange la question de combien de temps l'incident durera : je me sens comme le héros de la nouvelle Devant la Loi de Kafka, confronté à trois Gardiens entre moi et ma ligne ADSL, et n'ayant le droit de communiquer qu'avec le premier. En tout cas, je n'ai pas réussi à faire passer le message il y a un problème avec ma ligne, je suis sûr que ça ne vient pas de mon côté, pouvez-vous transmettre à vos sous-traitants la question de combien de temps le dérangement va durer ? — et je me suis surtout retrouvé coincé dans un dialogue de sourds.

Le plus ironique, c'est que si la petite plaisanterie continue, je ne vais pas avoir d'autre solution que de prendre un abonnement fibre comme connexion de secours quand l'ADSL tombe en panne (oui, c'est bizarre de le faire dans ce sens-là, mais ce n'est pas le débit qui m'intéresse dans la connexion Internet), et pour ce qui est de la fibre, vue la façon dont les opérateurs se sont partagés le gâteau, il semble que je n'aie pas d'autre choix que de faire appel à… Orange. Chouette.

Mise à jour : Mon poussinet a réussi a parler à un humain au service des dérangements (l'astuce était d'appuyer sur la touche ‘#’ face au serveur vocal — je ne sais pas comment il a trouvé ça). Maintenant on nous parle d'un rétablissement de notre ligne pour le… 30 septembre.

(samedi)

Pourquoi ma ligne téléphonique est HS (et sur la communication d'Orange)

Ma ligne téléphonique fixe est hors service depuis 5 jours maintenant (ainsi que celles de toute une partie du quartier, même si je ne sais pas exactement quel est le périmètre recouvert ; mais quand je vois que le marchand de vins du bout de la rue a mis une petite affichette expliquant qu'il ne peut plus prendre les cartes bancaires pour des raisons techniques, je me doute bien que c'est à cause de ça).

J'ai réussi à savoir la cause du problème : c'est un vieux câble d'alimentation en plomb de 1800A qui a cassé au niveau du 45 rue Bobillot, et qui est maintenant en train d'être changé (par un câble qui ne soit pas en plomb !). J'avoue que je n'avais pas idée qu'on avait besoin de courants aussi importants pour alimenter les lignes téléphoniques (1800A, ça suffit à fournir du 60mA à 30000 lignes en parallèle, soit la totalité des lignes de mon central répartiteur), même s'il s'agit de tensions assez faibles, quelque chose comme 48V. Et je ne savais pas non plus qu'on avait encore des câbles en plomb qui fonctionnaient.

Mais bon, ce dont je veux me plaindre, ce n'est pas que cet incident ait eu lieu, ni de sa durée, c'est de l'absence totale de communication officielle de la part d'Orange sur la nature et les causes du problème (les informations que je viens de donner au paragraphe précédent) ou sur la durée d'interruption à prévoir. Comme je l'ai écrit dans l'entrée précédente, le service des dérangements (le 1013) ne donne aucune information, le site web orange.fr n'en a pas plus — pire, il promet un retour à la normale pour une date dans le passé, c'est-à-dire que personne chez Orange n'a trouvé les deux minutes pour mettre à jour le message quand on s'est aperçu que le problème était plus grave que prévu.

Quand tout un quartier est touché par une interruption de la boucle locale de téléphone, on peut peut-être au minimum trouver le moyen de mettre à jour un site Web et un répondeur téléphonique avec quelques explications, voire d'envoyer un agent coller des petites affiches dans ce quartier ! J'ai essayé d'assurer moi-même le minimum en postant des feuilles explicatives sur des tableaux d'affichage et à la porte de quelques immeubles au hasard dans le coin, mais comme je ne sais pas au juste qui est touché et que je n'avais par ailleurs que peu de temps, c'est une goutte d'eau — quoi qu'il en soit, il est hallucinant que ce soit moi qui me charge, au final, de la communication de la société Orange (ou, en fait, de tous les opérateurs sur ligne de cuivre, puisque c'est la totalité de la boucle locale qui est touchée : voir plus bas pour l'ADSL).

Je vais envoyer un mail à l'ARCEP pour attirer leur attention là-dessus, mais bon, j'imagine que l'ARCEP est trop débordée pour s'occuper des remarques de péquenots comme moi.

Comment ai-je réussi à avoir l'information que je cherchais ? J'ai envoyé un fax directement au service d'Orange qui s'occupe de l'entretien de la boucle locale à Paris (leur numéro n'est, bien sûr, pas communiqué au public, mais avec un peu de Google-fu, on peut arriver à le dénicher). Peut-être le fait que le fax était à l'en-tête de Télécom ParisTech a joué, mais en tout cas on m'a répondu très gentiment (sur mon mobile), et je suis infiniment reconnaissant à la personne qui a pris le soin de le faire. Bien sûr, j'aurais aussi pu me rendre compte que les techniciens d'Orange qui sont apparus à deux pas de chez moi et ont commencé à s'affairer sous le trottoir n'étaient peut-être pas là par hasard, mais comme leur camionnette porte une pub pour la fibre par Orange, on n'imagine pas forcément qu'ils sont là pour entretenir le cuivre.

[Graphe de l'état de ma connexion ADSL sur 8 jours]J'avoue que je ne comprends pas bien pourquoi l'absence de l'alimentation qui est censée ne concerner que la ligne analogique traditionnelle affecte la connexion ADSL (je pensais que les lignes ADSL nues, en cas de dégroupage total, n'étaient pas alimentées). Je comprends encore moins pourquoi ça fonctionne très légèrement, et selon un motif pas du tout clair : j'ai tracé ci-contre l'historique de ma connexion ADSL sur 192 heures (depuis lundi 15 à 16h jusqu'à [mise à jour] mardi 23 à 16h) d'après les données fournies par mon opérateur : en vert, je suis connecté (certes à une vitesse épouvantablement basse, quelque chose comme 160kbit/s en upload), en rouge je ne le suis pas (en fait, parce que le modem n'arrivait pas à établir la synchro). Comme mon routeur (allumé 24 heures sur 24) essaie en permanence d'établir la connexion (et que le modem derrière essaie en permanence de garder la synchro), à part entre le 17 septembre vers 22h et le 18 septembre vers 7h où j'ai coupé les tentatives parce que je pensais que ça ne servait à rien, on peut dire que c'est un graphique du fait que des tentatives désespérées de maintenir une connexion ADSL réussissent ou non. Pourquoi diable a-t-il cette allure de code barre alors que la ligne était désalimentée tout le temps ?

Je pense que la réponse est quelque chose comme ceci : l'ADSL n'a pas besoin de l'alimentation pour fonctionner, mais soit il est calibré pour tenir compte de sa présence (parce que la ligne est censée être alimentée) soit un filtre contre le bruit nécessite une alimentation qui a aussi été coupée, et en tout cas on se retrouve avec une qualité de ligne très mauvaise, mais pas absolument nulle. Ensuite, c'est un peu un hasard du fait que le modem réussisse à négocier une vitesse assez faible (et peut-être hors spécifications ADSL ?) pour obtenir quand même une connexion. Peut-être, par ailleurs, que le fait que d'autres usagers fassent aussi usage de leur ligne ADSL sur des fils voisins joue-t-il dans le bruit observé. Mais bon, cette explication partielle ne rend pas vraiment compte du fait que la connexion a pu fonctionner pendant des heures d'affilée, et ensuite ne plus fonctionner également pendant des heures.

(mercredi)

Ma ligne téléphonique a été coupée

Avant-hier (lundi 15), assez brutalement à 16h03, notre connexion ADSL a commencé a avoir des vapeurs : déconnexions toutes les quelques minutes, avec au final environ 2/3 du temps connecté et un débit pourri. Je me suis dit que c'était notre fournisseur d'accès qui avait des problèmes techniques (ça lui arrive occasionnellement). Hier matin, les problèmes semblaient un peu atténués, mais ils sont revenus dans l'après-midi : j'ai commencé à soupçonner que le modem ADSL était mourant ce qui m'a déjà causé des problèmes semblables. Mon poussinet a appelé le support technique du fournisseur d'accès, qui a convenu que le bruit était anormalement élevé sur la ligne et a dit qu'il faudrait essayer de faire un test sans filtre (on ne pouvait pas immédiatement puisque personne n'était à la maison), et en attendant il a dit qu'il allait rebooter la « carte » (je ne sais pas ce que c'est) pour voir si ça améliorait les choses. Ça ne les a pas améliorées et, en fait, nous avons totalement perdu la connexion à ce moment.

Je suis rentré à la maison (hier mardi 16 après-midi, donc) et j'ai constaté que non seulement nous n'avions plus du tout l'ADSL (pas de synchro), mais, en fait, nous n'avions même plus la tonalité téléphonique. Notre ligne est complètment morte.

J'ai appelé le service des dérangements au 1013, je suis tombé sur un répondeur vocal qui m'a appris que le service était connu et affectait plusieurs clients, que des techniciens travaillaient dessus, et que je pourrais en savoir plus sur leur site Web, rubrique infos incidents. Celui-ci me dit :

Vos services sont interrompus suite à un incident sur le réseau Orange. Nous prévoyons un rétablissement complet au plus tard le 17/09/2014 fin de matinée. Nous vous prions de nous excuser pour la gêne occasionnée.

Bon, pourquoi pas. Ce matin (mercredi 17), au réveil (vers 7h), la synchro ADSL était revenue, certes avec un débit complètement pourri (environ 1/6 de ce que nous avions normalement, dans les deux sens), mais c'est déjà mieux que rien et c'est possible qu'un équipement ait décidé de baisser la qualité de la ligne par sécurité — d'ailleurs, rien que rebooter le modem a amélioré les choses d'un facteur 2 (ce qui restait à environ 1/3 de ce que nous avions normalement).

Là où ça devient moins drôle, c'est que la ligne a été de nouveau coupée dans l'après-midi (mercredi 17). De nouveau plus de synchro ADSL et plus de tonalité. Et surtout, là où je trouve que France Télécom Orange se fout de moi, c'est que le message sur leur site est toujours exactement le même et promet un rétablissement pour au plus tard un instant dans le passé. Et pas un mot sur la cause technique du problème : des travaux auraient-ils coupé les fils de cuivre ? un incendie dans le central aurait-il endommagé des équipements ? autre chose ? j'aimerais bien le savoir, moi, au lieu qu'on me laisse comme un con avec la phrase qui ne veut rien dire un incident sur le réseau Orange. Même si ça doit prendre un peu de temps des techniciens chargés de s'occuper du problème, et donc en retarder de quelques minutes la résolution, ça vaut la peine d'expliquer ce qui se passe (par exemple, si on nous dit qu'il s'agit des travaux en cours rue Chéreau qui auraient endommagé les lignes, une meute d'usagers en colère peut aller engueuler les gens qui ont fait ça, au moins ça nous défoulera). En l'état actuel, je sais juste que je n'ai plus le téléphone ni accès à Internet (de chez moi — et comme mon mobile n'y capte rien, je ne peux même pas m'en servir comme secours), et je ne sais ni pourquoi ni pour combien de temps ni qui est responsable.

Et je me rends surtout compte de combien je ne peux rien faire sans cet accès Internet. Dès que je veux noter quelque chose sur mon agenda, par exemple, je me rends compte que mon agenda est sur mon ordinateur à la maison, auquel je n'ai plus accès depuis mon bureau : bien sûr, ce n'est pas très difficile d'aller le chercher (surtout que je travaille à 10 min à pied de chez moi), mais dès que je reviens, je me rends compte que j'ai besoin d'un autre fichier (un article de maths au format électronique), puis d'un autre (un livre idem), puis d'un autre (mon fichier de numéros de téléphone), et c'est un peu technique de prendre mes quatre disques durs pour aller au bureau. J'ai donc passé trois jours complètement improductifs à essayer de guetter les quelques minutes où la connexion fonctionnait miraculeusement pour en faire usage.

Inutile de dire que ma fatigue colossale a augmenté d'un bon cran dans l'histoire.

Suite : (70 heures après le début des problèmes) : toujours pas de résolution en vue, ni la moindre explication du problème ; le site orange.fr continue d'afficher mensongèrement qu'ils prévoient un rétablissement complet pour hier matin. • J'ai envoyé un fax à l'Unité d'Intervention de Paris d'Orange (en googlant un peu, on trouve leurs coordonnées…), on va voir si quelqu'un a la décence d'y répondre. • Finalement, oui, j'ai eu une réponse : voir l'entrée suivante.

(lundi)

La fonction de Fabius

[Graphe de la fonction de Fabius sur [0;24]]

J'ai déjà raconté trente-douze fois sur ce blog, et je continuerai à radoter à ce sujet, qu'une de mes motivations à être mathématicien, c'est de pouvoir visiter le petit musée des objets mathématiques remarquables, admirables, ou simplement curieux. L'objet dont je veux parler ici est plus amusant que fascinant, ce qui ne l'empêche pas d'être élégant. Il s'agit d'une fonction réelle définie par un certain J. Fabius (j'ignore le prénom ou s'il y a un lien de parenté avec l'actuel ministre français des affaires étrangères) dans une publication de 1966.

[Graphe de la fonction de Fabius sur [0;1]]Voici une première définition possible : on appelle Un (pour n≥1 entier) une suite de variables aléatoires indépendantes et uniformément réparties dans [0;1], et on pose Z = ∑n Un/2n (remarquer que Z est aussi une variable aléatoire à valeurs dans [0;1]). Alors la fonction de Fabius f sur [0;1] est la distribution de probabilité de la variable Z (c'est-à-dire que f(t), pour t∈[0;1], est la probabilité que Zt). (Le graphe en est tracé ci-contre à gauche.) Pour souligner que cette loi de probabilité n'est pas complètement bizarre ou surgie de l'espace, on peut remarquer que si au lieu d'une variable Un uniformément répartie dans [0;1] on utilisait des variables Vn (toujours indépendantes et) uniformément réparties dans {0;1} (c'est-à-dire valant 0 avec probabilité ½ et 1 avec probabilité ½), alors ∑n Vn/2n serait uniforément répartie dans [0;1] puisque la construction revient à tirer chaque bit de cette variable à pile ou face indépendamment.

Pour compléter f aux réels positifs, on décrète alors que f(t+1) = 1−f(t) pour t∈[0;1], et que f(t+2k) = −f(t) pour t∈[0;2k] (lorsque k≥1 est entier). Le caractère naturel de ce prolongement va apparaître dans ce qui suit. (Le graphe de la fonction ainsi prolongée est tracé en haut de cette entrée.)

La fonction possède un lien très fort avec la suite de Morse-Thue, qui peut être définie comme la suite dont le n-ième terme vaut 0 ou 1 selon que le nombre de 1 dans l'écriture binaire de n (=le poids de Hamming H(n) de n) est pair ou impair ; si on préfère, la suite de Morse-Thue est celle qui s'obtient en partant d'un 0 et en effectuant un nombre infini de fois le remplacement simultané de 0 par 01 et de 1 par 10 (cf. l'article Wikipédia). Comme on peut le voir sur le graphe ci-dessus (et ce n'est pas difficile avec la définition que j'ai donnée), le signe de f sur l'intervalle [2n;2n+1] vaut + ou − selon que la valeur du n-ième terme de la suite de Morse-Thue est 0 ou 1.

[Construction de la fonction de Fabius]Voici une autre définition possible de la fonction de Fabius, dans cet esprit : on appelle d'abord f0 la fonction qui sur l'intervalle [2n;2(n+1)[ vaut +½ ou −½ selon que la valeur du n-ième terme de la suite de Morse-Thue est 0 ou 1 ; puis par récurrence sur k, on appelle fk+1(x) l'intégrale de fk(t) pour t allant de 0 à 2x. La suite de fonctions en question converge alors uniformément vers f. (Ci-contre, j'ai tracé f0 en vert, f1 en un vert subtilement différent, f2 en caca d'oie et f en bleu.)

[Graphe de la fonction de Fabius sur [0;24] et de sa dérivée]Qu'on utilise l'une ou l'autre construction, il n'est pas très difficile de voir que la fonction de Fabius vérifie l'équation fonctionnelle surprenante suivante : f′(t) = 2f(2t) pour tout t≥0. (Pour l'illustrer, j'ai tracé la fonction de Fabius accompagnée de sa dérivée f′.) Notons qu'il ne s'agit pas d'une équation différentielle, puisque la valeur de la dérivée est reliée à la valeur de la fonction en un autre point ; d'ailleurs, il n'y a pas unicité de la solution de cette équation : la fonction nulle la vérifie aussi (avec, d'ailleurs, la même « condition initiale » f(0)=0) ; néanmoins, l'équation en question et la connaissance de la fonction f sur [0;1] définit de façon unique sa valeur sur tous les réels positifs.

Puisque f(0)=0, l'équation fonctionnelle f′(t) = 2f(2t) implique de façon assez évidente que toutes les dérivées de f en 0 valent 0 : la fonction de Fabius est infiniment plate en 0. En fait, il aussi facile de voir qu'en n'importe quel rationnel dyadique, toutes ses dérivées s'annulent à partir d'un certain rang : par conséquent, f n'est pas égale à la somme de sa série de Taylor développée en un dyadique, et comme les dyadiques sont denses dans les réels, f est une fonction C mais nulle part analytique (c'était la motivation de son introduction). On peut aussi se persuader que, en une valeur comme 1/3, la série de Taylor de f a un rayon de convergence nul (parce que la dérivée r-ième de f est donnée par f(r)(t) = 2r(r+1)/2·f(2r·t)).

Mais il y a quantité de choses que j'ignore. Par exemple, expérimentalement, il semble que f(1/4) = 5/72, et je ne sais pas le prouver (pas que j'aie essayé, du reste). Il serait tentant de penser, pour l'expliquer, qu'il y ait une relation entre f(t) et f(t+½) comme il y en a entre f(t+2s) pour tout s≥0 entier, mais une telle relation ne peut pas, il me semble, être algébrique, donc je ne sais pas ce qu'on est en droit d'espérer. Je ne sais pas non plus si on peut dire quelque chose d'intelligent de la valeur f(1/3) ≈ 0.180165114801 (cette valeur n'évoque rien à Google, mais Google n'est pas très bon pour faire du calcul symbolique inverse ; elle n'évoque rien non plus à ce site ni à Wolfram Alpha). Pourtant, l'écriture binaire du nombre 1/3 est suffisamment remarquable pour qu'on soit en droit de penser que la fonction f devrait en faire quelque chose d'intéressant.

Enfin, je dois signaler que je ne sais pas vraiment calculer les valeurs de f de façon efficace. Le mieux que je connaisse est une expression de fk que j'écris en MathML pour ceux dont le navigateur le supporte :

f k ( x ) = 2 k(k+1)/2 k! 0j2k1x cj ( x j2k1 ) k c0 = 12 et cj = 12 ( (1) H(j) (1) H(j1) ) si j>0

(j'ai noté H(j) pour le poids de Hamming de j). Mais cette équation n'est pas vraiment satisfaisante parce qu'elle ne relie pas fk+1 à fk, par exemple par une sorte de dichotomie. Bref, la fonction de Fabius reste assez mystérieuse à mes yeux.

Ajout : dans un même esprit, voir aussi la fonction ‘?’ [point d'interrogation] de Minkowski dont j'avais déjà parlé autrefois.

Ajout : voir aussi la réponse de François Guéritaud en commentaire (2014-09-23T15:32:52+02:00) où il explique comment calculer la valeur et les dérivées successives de f aux dyadiques en comparant des intégrales de la fonction et de ses polynômes osculateurs, ce qui répond en partie à mes interrogations (notamment sur le fait que f(1/4)=5/72).

(dimanche)

Comment m'éviter de dormir sur le dos ?

Je suis infiniment fatigué en ce moment. Nerveusement avant tout, parce que l'été n'a rien eu de reposant, j'ai l'impression de n'avoir fait que rattraper des affaires en regard et gérer des ennuis qui me tombaient dessus ; et les quelques jours où j'ai voyagé m'ont encore plus fatigué (je trouve les déplacements terriblement stressants, j'aurais besoin de temps pour décomprimer un peu après, mais je ne l'ai pas eu). Et surtout, j'attaque une rentrée compliquée — mon emploi du temps est désastreux, je dois faire avec des horaires irréguliers et malcommodes et pas la moindre possibilité de souffler un peu avant Noël (où je devrai de nouveau affronter un voyage fatigant). Un nombre terrifiant de gens comptent sur moi pour faire des choses diverses et variées, dont je n'aurai évidemment pas le temps de mener à bien le quart, (parfois j'ai presque l'impression d'être harcelé), et dès que c'est moi qui essaie de demander quelque chose à d'autres, soit je n'arrive pas à me décharger comme je le voudrais, soit je passe encore plus de temps à demander (ou à trouver à qui demander) que je n'en passerais à faire les choses moi-même. Bref, je suis débordé et épuisé, et bien seul avec mes tracas.

Mais je suis aussi fatigué physiquement, ce qui n'aide pas. Mon poussinet se contente de me dire si tu es fatigué, il faut te coucher à chaque fois que je me plains d'être à bout, ce en quoi il n'a peut-être pas tord, mais je dors déjà beaucoup (ce qui n'aide pas à faire des choses dans la journée et à être moins débordé, bien sûr).

Un aspect du problème est certainement que je respire mal pendant la nuit (j'ai probablement une forme mineure d'apnée du sommeil), dès que je me mets sur le dos. Mon poussinet — du moins s'il se trouve être réveillé — me pousse régulièrement pendant la nuit pour me mettre sur le côté, mais parfois je suis très entêté à dormir sur le dos et à ronfler voire m'étouffer. Il a aussi souvent essayé de me bloquer avec une peluche, mais je la repousse sans ménagement.

Je pourrais essayer, par exemple, de dormir avec un sac à dos (en essayant de mettre quelque chose dans le sac à dos pour que ce soit juste assez inconfortable pour que je ne sois pas tenté de dormir sur le dos, mais pas assez pour me faire mal), mais j'ai peur que ça m'empêche purement et simplement de dormir. L'ennui c'est que, si je dors bien sur le côté, j'éprouve régulièrement le besoin de changer de côté au cours de la nuit (selon la manière dont mes narines se bouchent), c'est probablement au cours de ces changements de côté pas bien achevés que je me retrouve sur le dos : il faut que j'invente une façon de m'empêcher de me mettre sur le dos qui ne m'empêche pas pour autant de passer du côté gauche au côté droit ou inversement, et là je manque d'idée. (Certes, on peut changer de côté en basculant sur le ventre plutôt que sur le dos, mais c'est beaucoup moins naturel vu que quand je suis allongé sur le côté gauche je suis aussi décalé vers la droite de l'oreiller et vice versa.)

(mercredi)

Je découvre encore un bug improbable

Ayant installé de nouveaux disques durs dans le PC chez mes parents, je fais ce que je fais régulièrement, à savoir compiler un Firefox. La compilation échoue sur quelque chose que je ne comprends pas du tout :

pleiades david /usr/local/src/mozilla/obj-i686-pc-linux-gnu/intl/icu/target/data $ LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH ../bin/genrb -k -R -i ./out/build/icudt52l -s /hugetmp/mozilla/intl/icu/source/data/coll -d ./out/build/icudt52l/coll root.txt
/hugetmp/mozilla/intl/icu/source/data/coll/root.txt:15: Collation could not be built- U_FILE_ACCESS_ERROR. Make sure ICU's data has been built and is loading properly.
/hugetmp/mozilla/intl/icu/source/data/coll/root.txt:15: parse error. Stopped parsing resource with U_FILE_ACCESS_ERROR
couldn't parse the file root.txt. Error:U_FILE_ACCESS_ERROR

Comme tout bon Unixien confronté à un comportement bizarre d'un programme qu'il ne connaît même pas, j'ai le réflexe strace. Et là, les choses deviennent encore plus mystérieuses :

pleiades david /usr/local/src/mozilla/obj-i686-pc-linux-gnu/intl/icu/target/data $ strace -f -o /tmp/dump -E LD_LIBRARY_PATH=../lib:../stubdata:../tools/ctestfw:$LD_LIBRARY_PATH ../bin/genrb -k -R -i ./out/build/icudt52l -s /hugetmp/mozilla/intl/icu/source/data/coll -d ./out/build/icudt52l/coll root.txt
strace: ../bin/genrb: command not found

Comment ça, command not found ? Je n'ai aucune idée de ce que le programme ../bin/genrb est censé faire, mais je suis sûr qu'il existe et qu'il s'exécute correctement. Pourquoi strace prétend-il ne pas pouvoir le trouver ?

Et pourquoi le fait d'avoir changé les disques durs de ma machine ferait-il échouer la compilation de Firefox ?

Je vous épargne la manière dont j'ai résolu le mystère (j'ai commencé par strace strace lui-même, qui ne m'a montré aucune erreur, ce qui rendait les choses encore plus incompréhensible, et j'ai fini par patcher le truc pour afficher la valeur de errno). Le secret était que la partition /hugetmp sur laquelle je compilais faisait plus de 2To, et que j'y avais mis un système de fichier XFS. Or pour les gros systèmes de fichiers, XFS utilise des numéros d'inodes de plus que 32-bits. Mon noyau est 64-bits, donc lui n'a pas de problème avec ça, mais sur cette machine j'ai un userland de 32-bits : dans ces conditions, tout dépend de si le programme a été compilé avec -D_FILE_OFFSET_BITS=64 ou non : si ce n'est pas le cas (ce qui, apparemment, vaut pour le strace de ma Debian comme pour le programme qui échouait en premier lieu), lorsque stat() est appelé sur un fichier et qu'un des champs de la structure de retour (typiquement, la taille, ou le numéro d'inode) dépasse le type 32-bits que la structure prévoit, alors la libc produit l'erreur EOVERFLOW (qui n'apparaît pas dans le strace du strace parce que ce n'est pas le noyau qui la renvoie, c'est la libc) ; et si on se contente de regarder si stat() a réussi ou pas, on a l'impression que le fichier n'existe pas ou qu'il y a une erreur d'accès.

Moralité :

Noter que contrairement à ce que prétend la doc (if no inode size is given on the command line, mkfs.xfs will attempt to choose a size such that inode numbers will be < 32 bits. If an inode size is specified, or if a filesystem is sufficently large, mkfs.xfs will warn if this will create inode numbers > 32 significant bits), mkfs.xfs n'a, lorsque j'ai créé le système de fichiers, ni choisi une taille d'inode suffisante pour rester avec des numéros d'inode de 32-bits, ni affiché d'avertissement.

Only the 20 most recent entries were included above. Continue to older entries.

Seules les 20 plus récentes entrées ont été incluses ici. Continuer à lire les entrées plus anciennes.


Entries by month / Entrées par mois:

2014 Jan 2014 Feb 2014 Mar 2014 Apr 2014 May 2014 Jun 2014 Jul 2014 Aug 2014 Sep 2014 Oct 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