Griffonnages

Aller au contenu | Aller au menu | Aller à la recherche

Geek

L'indispensable rubrique Geek sur un site d'informaticien. Si vous n'y comprenez rien, rassurez-vous, c'est que vous êtes normal.

Fil des billets - Fil des commentaires

vendredi 6 juin 2008

La BA du jour

  1. Aller dans le dossier profile de firefox, puis le sous répertoire chrome
  2. Éditer le fichier UserContent-exemple.css
  3. Ajouter div.appel-lepost { display:none ! important; }
  4. Sauver le fichier sous le nom UserContent.css
  5. Redémarrer firefox et ne plus voir le cadre "Le POST, euro 2008, quels sont les joueurs les plus moches ?"

mercredi 9 avril 2008

Bibliographie scientifique en CSS : horrible hack

Le but est d'avoir une jolie bibliographie sur ma page professionnelle qui reprend les us scientifiques, ça doit ressembler à ça :

[ABCD08]  Titre de l'article
          Noms des auteurs
          Références exacte de l'article
          Liens, etc.
[CDE07]   Titre de l'article
          Noms des auteurs
          Références exacte de l'article
          Liens, etc.
[Celui07] Titre de l'article
          Noms des auteurs
          Références exacte de l'article
          Liens, etc.

J'ai voulu faire ça bien, genre je suis un gourou du web sémantique, xhtml et CSS. Seulement, ce n'est pas mon rayon, l'informatique théorique est assez éloignée des bonnes pratiques du web.

Voila à quoi ressemble[1] mon code HTML :

<ol class="publications">
    <li id="ABCD08">
          Titre<br />
          Auteurs<br />
          Références<br />
          Autre
    </li>
    <li id="CDE07">
          Titre<br />
          Celui et al.<br />
          Références<br />
          Autre
    </li>
    <li id="Celui07">
          Titre<br />
          Celui<br />
          Références<br />
          Autre
     </li>
</ol>

Puisque j'ai besoin d'utiliser des attributs id pour faire des ancres, autant utiliser les ids des papiers, après tout, ils sont fait pour ça.[2] Et puisque j'ai les id, pas la peine de les réécrire.

Donc à ce point là, je me suis dit : Chouette, il suffit d'utiliser l'attribut id comme "bullet" pour mes items de liste, et c'est gagné. En plus, c'est le navigateur qui va gérer la "tabulation" comme il le fait pour les numérotations, ça va être trop simple.

Sauf que je n'ai pas trouvé comment faire,[3] et c'est là que commence le vilain hack CSS. Bon ça marche, mais si quelqu'un sait faire mieux, je suis preneur.

L'idée est de générer l'id de l'article et le placer grace au pseudo-element :before. Seulement celui-ci fait parti intégrante de <li> et n'est donc pas facilement manipulable. C'est pourquoi j'utilise pour lui display: block ce qui a pour conséquence de lui donner une ligne rien que pour lui. On place tout ce beau monde en jouant sur les marges négatives.

Voici mon code CSS :

.publications {
   list-style-type: none;
   line-height: 2.5ex;
   padding: 0; 
   margin: 0;
}
.publications > li:before {
   display: block;
   width: 8em;
   margin-left: -8em;
   margin-bottom: -2.5ex;
   content: "[" attr(id) "]";
}
.publications > li {
   padding-left: 8em;
}

Moralité : ce serait bien de pouvoir faire quelque chose du genre

list-style-text: child.attr(id);

(ou que j'apprenne mieux le CSS)

Notes

[1] j'ai simplifié ce qu'il y a dans les <li>

[2] L'attribut id ne peut pas commencer par [

[3] Sur A List Apart il y a une astuce pour faire ça si le texte du "bullet" a une longueur fixe, ce qui n'est pas mon cas

jeudi 21 février 2008

Le vote geek

Après le vote noir, le vote hispanique, le vote gay, le vote juif, le vote religieux, le vote liberal, voici le vote geek. Barack Obama l'a compris.

Barack Obama, sorting

lundi 31 décembre 2007

Zéro signé Le Monde

Mais d'où sortent les développeurs web de « Le Monde Point fr » pour se faire avoir par des zéros signés en 2007 ? Zéro signé

vendredi 14 décembre 2007

Une idée lumineuse

Avertissement, si vous n'y connaissez rien en ordi et en réseau, passez votre chemin.

Suite à la coupure de courant qui avait mis fin de façon spectaculaire à mon rapport de gendarmerie, l'université est alimentée sur le réseau électrique de secours. Le problème a du être identifié et réparé puisque l'on nous annonce que la commutation sur le réseau normal est prévue le dimanche 23 décembre dans la matinée, et qu'elle prendra plusieurs heures.

Mon labo possède ses propres serveurs (mail, web, nfs, licences) et c'est moi qui m'en occupe. Je ne serai pas à Bruxelles pendant cette période. Si je peux les éteindre à distance, je ne peux pas les rallumer, et ça, c'est embêtant.

Quelqu'un aurait-il une idée ?

Je pourrais travailler à la NASA

Gravity Pod, fin du jeu au niveau 50

GravityPod, ce n'est pas très work safe, trop addictif. [via embruns]

dimanche 2 décembre 2007

Ubuntu Hardy Alpha 1

Un billet un peu geek, parce que ça faisait longtemps...

Je suis rapidement retourné à Gutsy parce que

  • la mise à jour d'apache2 a enlevé php5
  • la vidéo fonctionne très mal
  • je n'arrive pas à faire fonctionner compiz-fusion malgré une heure de bricolage
  • l'utilisation du driver propriétaire ATI (Radeon 9600) provoque l'apparition d'un logo AMD Testing use only not supported hardware en permanence sur mon écran. Quelqu'un peut m'expliquer ce qu'AMD vient faire ici. Heureusement le pilote libre est correct pour mon utilisation
  • texlive-full dépend de deux paquets qui ne sont pas dans les dépôts, ce qui oblige à le désinstaller. Un LaTeX qui fonctionne est une condition sine qua non.

Sinon, la bonne nouvelle c'est que le serveur X a démarré directement, sans bidouillage. J'attends la version alpha 2. Je veux bien aider à tester, mais là, c'est vraiment trop compliqué, désolé.

jeudi 22 novembre 2007

Modernité

Aujourd'hui, j'ai trouvé ceci dans un tiroir au labo:

Carte perforée

J'avoue avoir passé plusieurs minutes à me demander ce que j'avais entre les mains. Le prix de la jeunesse sans doute.

lundi 1 octobre 2007

Excel 2007, un exemple de Ballmer Peak !

[Warning: billet destroy en franglais]

On s'amuse beaucoup, ces jours-ci, dans le blogogeek world du bug d'Excel 2007. Mes amis arithméticiens des ordinateurs ne s'en sont toujours pas remis, on les entends encore rire de ce mélange de ce qu'il ne faut pas faire quelque soit le prix sous peine d'être exécuté par William Kahan (l'homme grâce à qui vos ordinateurs comptent justes) : cosmetic roundings, confusion entre la base 2 et 10, et j'en passe.

Et voilà qu'XKCD propose une explication du pourquoi du comment cela a pu arriver. I love it !

Ballmer Peak

(Pour ceux qui veulent encore rire, car on peut rire de tout, pourquoi Matlab compte faux, quand on vous dit que les cosmetic roundings font parti des mauvaises pratiques de programmation).

samedi 8 septembre 2007

Switch

J'abandonne Maple au profit de Mathematica. Il n'y a pas à réfléchir longtemps entre les dilettantes canadiens et les professionnels étasuniens.

mercredi 5 septembre 2007

Est-il possible de définir l'énergie d'un calcul ?

C'est la question que je me suis posé à midi. Je suppose que des chercheurs se la sont posée avant moi, mais personne à ma table de connaît de tels travaux.

Je me demande s'il n'existerait pas un équivalent à la théorie de la complexité, mais avec l'énergie.

Mes premières pensées furent assez naïves, et je n'arrive pas à approfondir (et puis, c'est ce qui arrive quand on s'intéresse à un domaine qui n'est pas du tout le sien). Elles sont du type : on se donne un modèle de calcul, typiquement le calcul quantique, parce que les SLP, c'est clairement sous-optimal. On associe à chaque opération dans ce système un quantum d'énergie, puis on traduit l'algorithme optimal en terme d'énergie pour le faire tourner. Mais ça ne va pas chercher bien loin :

  1. on reste dépendant d'un modèle de calcul
  2. comment choisir le quantum d'énergie ?

Ensuite, je me suis demandé si on ne pouvait pas s'en tirer avec de sombres histoires d'entropie : quelle est l'entropie de Von Neuman - et pourquoi celle-ci d'ailleurs ? - de l'entrée ? Quelle est celle de la sortie ? et comparer tout ça. D'un certain point de vue, il semble bien plus naturel d'exprimer un calcul en terme d'entropie, mais c'est pas trop ce que je veux faire.

Question subsidiare : avec l'énergie libérée lors du big bang, peut on calculer BB(5) ? BB(10) ? BB(100)?

Voilà, ce billet est lancé, puisse-t-il un jour avoir une réponse.


Ajout le 21/09/2007 : c'est une vieille question en fait, il faut tapper "reversible computation" dans google pour avoir une réponse. Je viens de lire un article de Bennett "Logical Reversibility of Computation" de 1973 - oui, c'est vieux - mais je n'ai pas tout compris.

dimanche 2 septembre 2007

Ce que l'ordinateur quantique n'est pas

Parce qu'il est facile de critiquer et de se moquer, je vous propose, en réponse, un tour d'horizon des principales erreurs liées à l'informatique quantique. Et puis, par soucis d'honnêteté intellectuelle, je fais avant tout remarquer à mes lecteurs, que vue la hauteur où les autres blogueurs ont placé la barre, je ne risque pas grand'chose. Et l'autre argument qui a fini de me décider d'écrire ce billet est la lecture de la page wikipedia Ordinateur quantique, qui ne mériterait que d'être effacée.

1. L'ordinateur quantique n'est pas un ordinateur

Un ordinateur est une machine qui prend deux entrées : un programme et des données puis exécute ce programme avec les données fournies. Bref un ordinateur peut faire tourner n'importe quel programme (décidable).

Actuellement, on parle plutôt de calculateur quantique car ce que les physiciens essayent de faire ne pourra calculer qu'une seule fonction. Ou, si vous préférez, il y a aura un calculateur pour le traitement de texte, un calculateur pour naviguer sur internet,etc... pas très commode.

Mais est-ce qu'un ordinateur quantique peut exister ? La réponse est oui, en terme savant, on dit qu'il existe une machine de Türing quantique universelle.[1] Quelle en sera son architecture ? Je n'en sais rien, et je ne sais même pas si des gens le savent, mais il est prouvé qu'un tel système peut exister.

2. Un calculateur quantique ne fait pas tous les calculs en parallèle

L'erreur principale qu'on entend à propos de l'ordinateur quantique, c'est qu'il fait tous les calculs en parallèle, très pratique donc pour résoudre un sudoku puisqu'il essaye toutes les grilles en même temps. Et bien c'est faux.

Cette erreur est due à la mauvaise compréhension d'un phénomène purement quantique : la superposition, ou plus vulgairement appelé chat de Schrödinger.

Lecteurs, permettez-moi une digression sur le chat de Schrödinger, et laissez-moi vous expliquer que je trouve cette image nulle et incompréhensible, et qu'elle se trouve, par son côté un peu sexy, le chat est vivant et mort à la fois, finalement contre-productive.

Vous connaissez tous les probabilités. Avec des probabilités, on dit que le chat est 50% mort + 50% vivant. Et là en fait, il n'y a pas grand'chose de quantique, juste un ersatz. Ce que l'on manipule en mécanique quantique, ce ne sont plus les probabilités, mais les amplitudes de probabilité. Et ça fait toute la différence. Une amplitude de probabilité, c'est un nombre positif ou négatif[2] dont son carré est une probabilité. Ainsi en mécanique quantique on écrira pour le chat :

  • 1/√(2) mort + 1/√(2) vivant
  • 1/√(2) mort - 1/√(2) vivant
  • - 1/√(2) mort + 1/√(2) vivant
  • - 1/√(2) mort - 1/√(2) vivant

Et lorsqu'on ouvrira la boîte pour savoir s'il est mort ou vivant, nous aurons une probabilité de 50% de le trouver dans un état ou un autre. Mais qu'est-ce que ça change alors ? Tout, parce que cela permet de faire des interférences, et que, précisément, ce sont ces fameuses interférences qui permettent de faire certains calculs plus rapidement.

Un calcul, c'est une série d'étapes qui renvoient des résultats intermédiaires, la dernière renvoyant le résultat final. Dans un calcul classique, on sait exactement quelle étape on va effectuer ensuite, pas dans le calcul quantique, on choisi l'ordre des étapes avec des amplitudes de probabilité en fonction du résultat de l'étape courante.

Comment fait-on alors pour savoir la probabilité de lire le bon résultat ? On fait la somme des amplitudes de probabilité de tous les chemins qui, d'étapes en étapes, arrivent sur la bonne réponse. Puis ensuite on élève cette quantité au carré. Et pareil pour les mauvaises. Si un chemin a une amplitude de probabilité positive et un autre chemin une amplitude de probabilité négative, alors il va y avoir une interférence destructive, et cette réponse n'apparaîtra pas.

Faire un algorithme quantique, c'est se débrouiller pour qu'il y ait des interférences constructives sur les chemins qui mènent à la bonne réponse, afin qu'on puisse lire la réponse attendue avec une grande probabilité, et faire des interférences destructives sur les chemins qui mènent aux mauvaises réponses.

Ainsi, pour faire court, on part de toutes les entrées possibles, et le calcul se faisant, la probabilité de la bonne réponse augmente, ce qui n'a, avouez-le, pas grand'chose à voir avec faire tous les calculs en même temps, et puis, hop, par magie, choisir à la fin le bon résultat.

3. Un calculateur quantique ne sait pas résoudre un problème NP-complet (enfin, on pense)

Commençons par une page culturelle :

De tout temps, les informaticiens se sont entêtés à classer les problèmes.[3] Il existe plusieurs centaines de classes de problèmes, mais les deux plus connues sont P et NP. P est la classe des problèmes qu'il est possible de résoudre en temps Polynomial avec un ordinateur classique, c'est à dire, qu'on sait les résoudre vite. NP est la classe des problèmes qu'il est possible de résoudre en temps Polynomial avec un ordinateur Non-déterministe.[4]. NP c'est la classe des problèmes très longs à résoudre, mais si on possède une solution, c'est facile de vérifier qu'il s'agit de la bonne.

Un problème dans P est donc aussi dans NP.

LA question de l'informatique théorique depuis des années, c'est de savoir si P=NP ou PNP. La quasi-unanimité va à l'hypothèse PNP à notre époque, il n'en allait pas de même il y a 30 ans.

Dans NP, la classe des problèmes difficiles, il y a ceux qui sont vraiment difficiles, c'est à dire qu'en résoudre un permet de résoudre ensuite très vite tous les autres problèmes dans NP, c'est problèmes sont dit NP-complets.

Tous les problèmes dans NP connus, ont été démontrés être soit dans P, soit être NP-complets. Tous, sauf 2. Peut-être sont-ils dans P, peut-être sont-ils NP-complets, peut être entre ces deux classes, on ne sait pas. Il s'agit du problème dit de l'isomorphisme de graphe et de celui de la décomposition d'un entier en facteurs premiers.

Fin de la page culturelle, revenons au quantique.

Aucun problème NP-complet n'a été résolu en temps polynomial avec un ordinateur quantique. Peut-être un jour, mais la communauté scientifique qui s'intéresse à cette question est très perplexe et n'y croit plus.

4. Il y n'y a pas que 2 algorithmes quantiques

Le calcul quantique permet de calculer exactement les mêmes fonctions qu'un ordinateur classique. Donc tous les algorithmes classiques peuvent exister en quantique. Ce qui se passe, c'est qu'il y a certains problèmes que l'on sait résoudre plus rapidement grâce au calcul quantique, et il y en a aussi pour lesquels le calcul quantique n'améliore pas même d'un ι la rapidité.

Alors quels sont ces deux algorithmes tellement connus qu'ils occultent les autres ?

  • L'algorithme de Shor (1994) qui permet de calculer efficacement (P) le logarithme discret. Un truc de mathématiques pures apparemment, sauf que savoir calculer le logarithme discret efficacement permet la décomposition d'un entier en facteurs premier, et ça, c'est casser la plus grande branche de la cryptographie moderne, celle qui est utilisée aussi bien dans le https que dans les cartes bleues.
  • L'algorithme de Grover (1995) qui permet de rechercher un élément dans une base de donnée non triée en O(√n), c'est impressionnant, un élément est trouvé 1000 fois plus rapidement avec un calculateur quantique pour une base de données d'un million d'entrée, ça pourrait presque faire envie à Google.[5]

Il y a aussi des algorithmes qui permettent de calculer des polynômes plus rapidement, mais c'est anecdotique.

En revanche, un algorithme dont on devrait beaucoup entendre parler la suite est celui de Farhi, Goldston et Gutmann, découvert en février 2007 pour résoudre en √n le problème du NAND-Tree. J'ose pas trop en parler de peur de dire n'importe quoi tellement je connais peu. Je préfère vous indiquer l'article sur le blog de Scott Aaronson qui en parle, mais c'est en anglais.

5. La cryptographie quantique n'est pas une conséquence de l'ordinateur quantique

Je sais, il est tentant de répondre à : Alors, comment va-t-on faire pour sécuriser nos échanges si RSA est cassé ? par Heureusement, grâce à la mécanique quantique, encore elle, il existe une parade

La cryptographie quantique est apparue en 1984 dans le célèbre article [BB84], alors que l'algorithme de Shor date seulement de 1994, soit dix ans entre les deux.


Dans un élan de générosité, je répondrai, dans la mesure des mes moyens, évidement, à toutes les questions qui, malgré les trésors d'ingéniosité que je viens de déployer, continuent de se bousculer dans votre tête.

Notes

[1] Un ordinateur étant une machine de Türing universelle

[2] complexe dans le cas général

[3] Oui, de tout temps, déjà dans les années 30, c'est pour dire...

[4] NP ne veut donc pas dire Non Polynomial !

[5] Parce que leur base de données sont totalement structurées, et que donc, cet algorithme n'est pas vraiment exploitable...

samedi 1 septembre 2007

Contrefaçon ?

Hier soir, dans un élan de solidarité avec cette industrie en crise perpétuelle, à laquelle on accole parfois l'oxymore de culturelle, j'ai loué un DVD, un film à la mode, et je n'ai même pas pris de temps de lire le synopsis, c'est vous dire si je m'ennuie, et que même un navet peut pallier mon manque d'autre activité.

Mais voilà, mon lecteur DVD semble en rade, alors je l'avoue, bit-torrent a fait son office, et je m'apprête, dès la fin de la séance préliminaire de publicité, qui me laisse le temps d'écrire ces quelques mots, à le visionner.

Et je ne me sens absolument pas coupable d'usage de contrefaçon, d'autant plus qu'un téléchargement sur une plate-forme payante n'aurait pas fonctionné sous Linux, saloperies de DRM.

mercredi 20 juin 2007

Fin d'un mythe

Il y avait cette rumeur qui circulait :

Lors du premier cours d'informatique donné à l'École Polytechnique, il y a de cela longtemps, le professeur écrivit au tableau une ligne somme toute relativement banale : i = i + 1. La légende raconte que de nombreux élèves quittèrent alors l'amphithéâtre, écoeurés par une telle hérésie.

Rumeur qui vient d'être démentie, en collégialité, par les chargés d'enseignement de cette institution plusieurs fois centenaire.

Je trouvais cette histoire fascinante à plusieurs points de vue, parce qu'elle illustrait une triple évolution : une morale d'abord concernant le doute scientifique et l'ouverture d'esprit conjointe, et deux scientifiques, certainement corrélées, celle du statut de science réelle qu'à pris l'informatique théorique et une meilleure connaissance de la théorie des langages et de l'arithmétique des ordinateurs.

Elle est fausse, et je le regrette. Je continuerai d'y croire cependant.

vendredi 15 juin 2007

Geekerie du jour

Dans mon bar-PMU à poivreaux du coin Chez mon marchand de journaux :

<Lui> Et toi, tu veux quoi ?
<CeLui> On n'a pas programmé les ordis ensemble !
Celui was banned by Celui ("Yapluka changer de buraliste")

- page 1 de 2