willoblog

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

mercredi 31 août 2011

Cahier de Prépa

L'été n'a pas été très beau, mais bien fructueux. Je suis heureux d'avoir terminé mon dernier projet : un gestionnaire de site web pour améliorer la communication entre les professeurs et les élèves, spécifiquement suivant les besoins des classes prépas.

J'ai fait un site pour le présenter et le rendre disponible au téléchargement : http://cahier-de-prepa.fr

vendredi 26 août 2011

Gedit, spell check and PHP syntax

I've been using for a few years Gedit as editor of all my scripts, including bash scripts and PHP scripts. So I use it a lot...

For a while, it seems that spell check is broken. I noticed that when I upgraded to Ubuntu Natty. Here is the issue : When you are editing a PHP script (and PHP syntax highlight is chosen), the only words that are underlined if mispelled are in single-quoted or double-quoted strings. All other words, especially those which are outside php code, aren't checked (nor in heredoc text).

A few bugs are open : on Ubuntu Launchpad, Redhat Bugzilla and Debian bugreport, but I found no ready-to-use solution after googling a moment.

The syntax files of Gedit are in /usr/share/gtksourceview-2.0/language-specs/ (at least for me). Each one defines what is every portion of code (type like string, attribute, keyword, number...) and its properties. "no-spell-check" is one of the properties.

The problem in php.lang is at the last lines : all is defined as "no-spell-check" class (line 321, id "php"), that is all the script, including what is outside php code. The solution is pretty simple : define as "no-spell-check" only what is actually php code, line 291, id "php-block" and erase the "no-spell-check" class on line 321.

As I prefer to check heredoc texts, I had to proceed :

sudo sed -i -e '/id="here-doc-string"/s/>/ class-disabled="no-spell-check">/' -e '/id="php-block"/s/>/ class="no-spell-check">/' -e '/id="php"/s/ class="no-spell-check"//' /usr/share/gtksourceview-2.0/language-specs/php.lang

Bonus : in HTML highlighting, values of attributes are checked. I don't think it's relevant, so I changed that :

sudo sed -i '/attrib-value/s/ class-disabled="no-spell-check"//' /usr/share/gtksourceview-2.0/language-specs/html.lang

This is not perfect yet, as we would like to see the HTML outside php code like in HTML syntax highlight.

mardi 16 août 2011

Fermeture du blog

À un moment, il faut arrêter de trop en faire. Je n'ai pas le temps de remplir ce blog, qui devient petit à petit un nid à spam. Donc il vaut mieux que je le ferme complètement.

Comme certains articles sont liés ailleurs, il ne sera pas totalement fermé, ces articles-là en tout cas seront conservés. Mais je vais nettoyer plus ou moins le reste.

Peut-être aurais-je des choses à rajouter ceci dit. De l'informatique surtout, parce que des fois après avoir cherché qqch pendant quelques dizaines de minutes, je me dis que ça pourrait servir à d'autres si la solution existait de façon plus claire.

Mais n'attendez plus rien ici, it's closed.

vendredi 16 juillet 2010

La France participe à l'IYPT

Le tournoi IYPT (international young physicists tournament) est un tournoi de physique destiné aux élèves de première et terminale principalement. Le principe : les concurrents débattent (en anglais) sur des expériences connues avant d'être notés par un jury. Cette année se tenait la 23e édition, à Vienne (Autriche).

La France a participé pour la deuxième fois cette année. Et je suis extrêmement heureux de vous annoncer que nous avons obtenu une place bien meilleure que ce que nous espérions :
la France est 13ème sur 23 participants
C'est 10 places de mieux que l'année dernière (23e sur 27).

Je suis extrêmement heureux d'être le coach et sélectionneur de cette équipe, composée d'élèves impressionnants de compétence en physique et en anglais, et d'assurance. Je suis surtout ravi de les avoir vus évoluer cette année, acquérir cette assurance.

Ce résultat fantastique a été obtenu grâce au travail de Nicolas Chevalier, doctorant au CEA et moteur de l'IYPT-France depuis le début, Gilman Toombes, chercheur australien au grand cœur à l'Institut Curie, et Patrice Bottineau, notre Mac Gyver préparateur de manips géniales. Et bien sûr au travail colossal de Romain, Arthur, Derya, Victor et Théo.

Nous allons essayer de développer la préparation française, qui est pour l'instant beaucoup trop petite pour pouvoir imaginer rivaliser avec le top 10. Si vous êtes élève de terminale/première et voulez participer, si vous êtes professeur de physique et que vous voulez nous aider dans cette aventure ou nous proposer des élèves, si vous êtes doctorant et que vous voulez apprendre de la physique et avoir une expérience très intéressante, n'hésitez pas à laisser un commentaire à ce message.

jeudi 20 mai 2010

Notons

Tiens, je pourrais faire comme ça… [Lien vers l’original]
PhD Comics, #1319

Le renouveau du web

Depuis trop longtemps le web n’avait que peu évolué. Non, pardon, pas le web, la vague 2.0 est passée par là : le langage html n’a pas évolué. Je code en HTML4 depuis bientôt dix ans, et déjà à l’époque 4.01 était la dernière évolution du langage. Visiblement, il avait été prévu d’avoir un grand nombre de révisions. Mais finalement, plus de 10 ans après les spécifications de HTML4.01, on les utilise encore tous les jours malgré les avancées prodigieuses en termes de contenus et d’interface.

Parce que bien sûr, le web a énormément évolué. Notre façon de naviguer a énormément évolué. Et depuis l’avènement Gmail (s’il ne fallait en citer qu’un), les sites web se sont enfin rapprochés des interfaces des logiciels natifs. Mais ce n’est pas grâce à HTML… Uniquement grâce à JavaScript, dont l’utilisation a enfin été plus importante que simplement ouvrir des pop-ups et redimensionner des fenêtres. On se retrouve avec des sites souvent complexes, qui se chargent de façon asynchrone, et dont le code devient du coup complètement illisible. Parce que HTML n’a pas évolué en 10 ans, une éternité à ce niveau.

L’avènement HTML5

2010 sera l’année du renouveau (ou peut-être 2011). Parce qu’enfin HTML5 arrive. HTML5 va apporter beaucoup de nouveautés essentielles, même si ça ne se verra pas de l’autre côté du navigateur :

  • des balises qui ont du sens, comme <article>, <aside>, <header>, <footer>, <figure>, <details>, et plein d’autres… Fini les <div class="article"> ! Fini tout simplement les multiples <div> imbriquées et illisibles.
  • des attributs supplémentaires qui ont du sens : on va enfin avoir des attributs de contrôle côté navigateur, comme min et max pour un champ input de formulaire, contenteditable pour pouvoir rendre éditable n’importe quoi ou draggable pour faire des glisser-déposer…
  • la suppression d’un grand nombre de balises dont on voulait vraiment se débarrasser : toutes ces balises qui font du formatage disparaissent, parce que HTML ne doit que donner une structure de documents et laisser à CSS faire le formatage. Les balises qui soulignent, qui biffent ou qui mettent en gras, dehors. Ouf.
  • la suppression, enfin, des frames. Quand j’ai commencé il y a presque 10 ans, j’entendais déjà dire que les frames étaient anti-accessibles, et que cacher l’adresse d’une page par ce procédé était ridicule et contre-productif. Mais beaucoup de monde utilisait cela. Aujourd’hui, plus personne (j’espère) n’utilise encore ça, mais c’est quand même mieux de la supprimer.

Mais ce n’est pas tout. Il y a LA nouvelle balise, <video> (et <audio> aussi), qui remplace enfin les <object> et autres codes à rallonge à base de flash. Les navigateurs vont enfin lire directement les vidéos, avec une interface qui sera propre au navigateur et donc identique dans tous les sites. Balise très prometteuse, elle était cependant depuis quelques mois sujet de controverse : quel(s) codec(s) supporter ? Deux camps s’affrontaient, ceux défendant un codec libre Theora (Mozilla et Opera particulièrement), et ceux défendant un codec propriétaire H264 (Microsoft et Apple surtout). L’intérêt du premier est d’être gratuit. Oui, vous ne payez rien quand vous regardez des vidéos sur Youtube… Mais youtube et le fabricant de votre navigateur peuvent être obligés de payer, selon la vidéo. Ils doivent payer des royalties à la société gérant les droits du codec utilisé, et pour H264, ce n’est pas toujours gratuit (et ça risquerait de le devenir de moins en moins). Les défenseurs du deuxième disent eux qu’il a de meilleures performances (et que ça ne les gênent pas de payer, puisque la société en question est un consortium auquel ils appartiennent, donc ils récupèrent des sous…). Ce n’est malheureusement pas faux.

Le changement : un nouveau format vidéo

Cela serait peut-être fini (soyons optimistes), grâce à Google entre autres, fortement incité par la Free Software Foundation et la fondation Mozilla. Hier, a été annoncé en grandes pompes avec un très grand nombre d’acteurs du web (dont Mozilla et Opéra, mais aussi Adobe qui a annoncé le support de VP8 dans Flash, et des producteurs de puces comme AMD et NVidia), le lancement d’un nouveau format. Il utilise une évolution de Theora, "VP8", réalisé par une société rachetée par Google cette année. Google en a libéré le code hier, et la licence d’utilisation sera gratuite. Le tout est empaqueté dans un conteneur libre, Matroska et l’audio est géré par le codec libre aussi Vorbis. Bref, c’est super. Et comme c’est l’habitude chez Google, une nouvelle techno se doit d’être plus performante que l’ancienne : VP8 serait plus performant que h264 ! (ce point-là est cependant à vérifier, on est trop dans le marketing). Je précise, que si je trouve puissant ce que lance Google jour après jour, et particulièrement Maps ou Gmail, je me refuse à croire en eux sur le chemin de la vie privée : je n’ai pas d’adresse gmail, et ne compte pas en utiliser prochainement. Je suis en tout cas de ceux qui pensent que WebM, ce nouveau format, va peut-être changer l’avenir de la vidéo sur le web.

Le cas Microsoft

On a donc un ensemble d’acteurs importants qui se sont tous entendus pour promouvoir un format (presque) libre. Mais que peut devenir un format vidéo sans le support chez Microsoft ?
Je trouve le mouvement des derniers mois chez Microsoft très intéressant, et encourageant pour la suite. On a toujours raillé Microsoft pour la qualité médiocre de son navigateur. Du moins, depuis environ 10 ans, depuis que Internet Explorer a tué Netscape Navigator parce qu’il était préinstallé mais aussi parce qu’il était meilleur, depuis Internet Explorer 5.5 quasiment, Microsoft a arrêté le développement. Internet Explorer 6, sorti en 2001, n’était pas trop mal pour l’époque. Mais le développement chez Mozilla, du navigateur qui en 2004 deviendra Firefox, ne s’est lui pas arrêté. En 2004 (et même avant je pense), on avait déjà les onglets. Sans parler du support lamentable des standards HTML et CSS (surtout CSS). Et du JavaScript propriétaire. Bref, Microsoft est tenu pour beaucoup comme responsable du retard de l’adoption de CSS2 et de la séparation structure-forme.

Mais les choses bougent. Internet Explorer 7, sorti 5 ans après la version précédente (!), a amélioré la sécurité du navigateur et le support de CSS, et introduit enfin les onglets. C’était mieux, c’était énorme pour un navigateur Microsoft, mais encore mauvais comparé aux concurrents. L’équipe de développement, dissoute entre 2001 et 2005, s’était remise au travail. En 2009, Internet Explorer 8 améliore encore tout cela, même si la sécurité fait encore rigoler et que la campagne de pub diffusées en ce moment est à pleurer, tout comme sa campagne de désinformation sur son site. Le fait est que le support des standards est meilleur, et surtout que IE6 disparaît enfin, ne serait plus utilisé que par un internaute sur 6. Ouf.

ET IE9 est annoncé pour dans pas très longtemps. Il y aura du bon et du moins bon dans ce navigateur, entre autres le support d’HTML5 et un bon support de CSS3. Mais Microsoft a fait un grande annonce hier : il supportera le VP8 dans les balises <video>, si on installe le codec VP8. À n’en pas douter, je pense que Microsoft a enfin compris que l’avenir est sur Internet (il était temps) et que cela passe par des navigateurs performants.

Le cas Apple

Par contre, Apple fait l’autruche. Apple n’aime visiblement pas le libre, même si l’on a toujours dit que MacOS était basé sur du logiciel libre et en récupérait un certain nombre d’avantages techniques. Depuis la révolution Ipod et le fait qu’Apple ait la baraka en ce moment, il se croit certainement suffisamment fort pour dicter ses volontés au monde… Apple veut un monde fermé et propriétaire, ou tout est contrôlé par lui, où on ne peut pas installer un autre système sur ses machines, ou même les applications que l’on peut utiliser doivent être validées. Le temps où Apple était le libérateur du peuple dans une fiction ressemblant à 1984 est révolu. Apple est le nouveau dictateur, ou voudrait le devenir.

Apple pour l’instant n’a rien dit sur VP8. Safari n’est prévu de supporter toujours que h264. Le problème, c’est que le parc mondial de téléphones allant sur le net est très fortement composé d’IPhones… Est-ce que les éditeurs de contenus vont bien vouloir passer à VP8 et passer outre le consentement d’Apple ? Cela nous ferait le plus grand bien.

dimanche 10 janvier 2010

Salut l'artiste

Si tu m’avais demandé,
moi j’t’aurais dit que dans la vie,
ce qui compte c’est pas l’issue mais c’est le combat…
qu’il faut rendre ce que tu reçois,
les mauvais coups comme les plus bas,
et que rien que la beauté du geste
te donne raison sur ce que tu détestes.

Mano Solo, Le monde entier in La marmaille nue, 1993

Merci Mano de t’être battu pour rester avec nous jusqu’aujourd’hui.

vendredi 20 novembre 2009

Main d'Henry, honte pour la France ?

On est en train d’assister à un mouvement étonnant.

On a déjà vu des injustices et des tricheries dans le sport, particulièrement en foot. Plein. L’arbitrage vidéo, qui permettrait de résoudre 95% de ces injustices, est toujours, de façon assez incompréhensible, refusé par la FIFA. L’aspect universel et populaire de ce sport amène les meilleurs et pires comportements humains : les sifflets d’hymne, le non-respect de l’arbitre, c’est relativement particulier au foot. L’aspect économique très fort entraîne une sorte d’autocensure sur le fair-play, voire une censure tout court. Bref, ces deux aspects poussent le football a être un sport de tricheurs, de plongeurs, de fausses fautes et d’abus de l’arbitre. Autant que le rugby est un sport de types qui se mettent des coups dans la mélée parce que ça ne se voit pas. Mais avec plus de fair-play pour le résultat, de respect des autres et de l’arbitre.

Domenech et d’autres disent qu’Henry n’avait pas à se dénoncer à l’arbitre, parce que personne ne fait jamais ça. C’est justement le problème. Le problème, c’est que d’habitude ce sont les autres qui font cela. D’habitude on se moque des italiens, de ces tricheurs qui rôdent dans les surfaces pour mieux y tomber. De Maradona aussi, mais ce n’est de toute façon pas le pire de ce qu’on peut dire sur lui. Mais c’était y a 20 ans. Et la question devient : est-ce qu’on peut encore aujourd’hui tricher effrontément comme il y a 20 ans ?

L’autre question, elle est posée par notre formidable gouvernement : qu’est que l’identité nationale ? Ils veulent qu’on en parlent, alors parlons-en ! Est-ce que, comme le dit notre Président au sortir du match, être Français c’est accepter que « Quelles que soient les péripéties, l’important c’est d’être qualifié » ? Et bien visiblement non. Les Français ne sont pas d’accord avec cela, et commencent à la faire savoir. Les JT tournent en boucle là-dessus, les sondages sont unanimes : les Français voudraient que le match soit rejoué.

Être français, c’est peut-être refuser cet état de fait. C’est se dire qu’on ne veut pas être l’étendard d’un mauvais système. On veut uniquement être la patrie de Droits de l’Homme, du refus de la guerre et de Coubertin. On ne veut pas que le monde nous dise pendant les 20 années qui viennent que l’on ne mérite plus aucune qualification en coupe du Monde ou championnat d’Europe. Personnellement, je m’en tape si jamais personne a dit après un match "on mérite pas", si personne n’a osé demander à rejouer un match pour cela, si on est les premiers à le faire. Au monde. Au contraire, ce n’est que mieux. Nous, les Français, pourrions être les premiers à dire "La tricherie on n’en veut pas, surtout quand elle nous favorise". On pourrait devenir un exemple pour toutes les nations, en football et dans d’autres domaines. Ce serait formidable (et on pourrait rêver qu’après s’être reposés un peu l’équipe fasse un vrai match à son niveau, avec des passes dans les pieds et des contrôles pas complètement ratés).

La FIFA ce matin a dit qu’elle n’accorderait pas à la fédération irlandaise de rejouer le match. Mais si la FFF se joint à la demande, quoi qu’il arrive ça changera tout. Bien sûr, le règlement dit qu’il n’est pas possible de rejouer le match pour une erreur non technique de l’arbitre, blablabla. Si les deux équipes se mettent d’accord pour dire "Il y a eu un gros problème, on veut tous rejouer le match", je vois pas comment la FIFA peut dire non. Mais pour cela, il faut que la FFF prenne le risque de remettre sa qualification en jeu. Pour le fair-play uniquement. Et quand on sait l’histoire de gros sous qui se cache derrière, et combien les membres de la FFF ne pensent qu’à l’argent qu’ils récupèrent, ils ne demanderont sûrement rien…

Vraiment, je ne veux pas être de cette France là. Si la FFF ne bouge pas, je ne regarderai plus désormais les matches de l’équipe de France. Ce sera définitif. Et j’espère que je ne serai pas le seul.

jeudi 12 novembre 2009

Ubuntu Karmic et Packard Bell EasyNote BG46-P-018

J’ai acheté un Packard Bell EasyNote BG46-P-018 à Noël 2007, et présenté ici.

Après un an d’utilisation, on peut le dire : cet ordinateur avait le seul intérêt à l’époque d’être vraiment pas cher pour un 12 pouces. C’est un Packard Bell, et comme tous les Packard Bell il est assez mal conçu. En particulier, il chauffe beaucoup et son ventilateur, bruyant, est en marche en permanence.

Un certain nombre de problèmes se posaient, et il fallait un peu lutter avec Ubuntu Gutsy (7.10).

Deux ans plus tard, de grands progrès ont été faits :

  • l’affichage en 16/10 fonctionne de suite
  • l’affichage sur un écran externe (j’ai un HP 19 pouces en format 5/4) fonctionne de suite, après un passage dans Préférences/Affichage pour l’activer
  • le son fonctionne de suite
  • la webcam fonctionne de suite et apparaît dans le bon sens (elle apparaissait à l’envers avant)
  • compiz ne pose plus de problème, et le processeur ne tourne pas pour rien même avec l’écran supplémentaire.

Seule ombre au tableau, les boutons « wifi » et « éco » qui des fois s’éteignent. Mais la connexion wifi est pourtant toujours active. Il me semble même qu’elle est plus stable qu’avant.

À noter, pour la webcam, que cela est dû à une modification des drivers. Nombreuses sont les webcams « montées à l’envers » sur les ordinateurs portables. Les fabricants le savent et fabriquent des drivers pour windows qui retournent automatiquement l’image. Sous Linux, il faut que quelqu’un tombe sur le modèle posant problème, le dise aux personnes compétentes pour modifier la liste des webcams concernées dans la librairie correspondante (v4l).
Si un logiciel comme cheese affiche l’image de la webcam à l’endroit, alors c’est gagné. Mais si en essayant avec VLC (souvent avec la commande vlc v4l2:///dev/video0) ou skype l’image est encore à l’envers, vous devez simplement faire précéder systématiquement la commande de LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so, sur la même ligne. Pour skype par exemple, c’est facile à automatiser. Il suffit de créer un fichier /usr/local/bin/skype contenant

#!/bin/bash
 
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so /usr/bin/skype

(tapez gksudo gedit /usr/local/bin/skype dans un terminal, collez-y ce qui précède, enregistrez, et rendez le fichier exécutable en tapant sudo chmod +x /usr/local/bin/skype dans le terminal)
Il sera utilisé à chaque fois que la commande skype sera lancée.

dimanche 8 novembre 2009

How to disable the face browser at login in Ubuntu Karmic

One annoying thing on a fresh Karmic install is the new GDM screen. GDM has been completely rewritten. It is now owned and launched by a gdm user, and it does not provide anymore a real interface to change the settings.
Some are bored by the black background. My point is the user list which displays all names of all registered users. I simply don’t like it.
There are ways to launch the old login settings interface. You can also tweak the gnome configuration with command line if you know what you are doing. To disable the user list at login, you simply have to enter :

sudo -u gdm gconftool-2 --set --type boolean /apps/gdm/simple-greeter/disable_user_list true

jeudi 29 octobre 2009

SNI, TLS : multiples virtual hosts avec Ubuntu Karmic

Ah, enfin. Ça y est, hourra, depuis le temps que l’on attendait cela, c’est enfin possible : il est enfin possible avec Apache et OpenSSL d’héberger sur un même serveur plusieurs sites sécurisés avec chacun son certificat propre.

J’héberge sur mon serveur plusieurs sites. Deux en particulier ont besoin d’être sécurisés, non pas pour garantir qu’il s’agit de moi (je ne suis pas une banque, personne n’essaiera jamais de se faire passer pour moi), mais parce que ce qui y est écrit est personnel et que je suis un grand parano qui ne veux pas laisser d’accès à des personnes que je ne connais pas.
Comme je veux cependant garantir l’accès de mes sites au plus grand nombre, je cherche à éviter les affichages d’erreurs moches et incompréhensibles des problèmes de sécurité, qui deviennent particulièrement pénibles avec Firefox 3.5. Du coup, deux choses à faire :

  • acheter des vrais certificats, du moins ne pas utiliser des certificats auto-signés. C’est tout à fait contre ma pratique et mes habitudes en informatique, mais il faut se rendre à l’évidence : tous les navigateurs font croire que l’on tombe chez des pirates quand le certificat est auto-signé. C’est très triste d’en arriver là. Néanmoins, ayant trouvé des certificats à pas cher, je me fournis maintenant chez RapidSSL pour des certificats que ne m’ont causé aucun problème.
  • pouvoir séparer les noms de domaine sur mon serveur web.

Le deuxième point paraît simple. Il s’agit pourtant d’une grande impossibilité du chiffrement SSL tel qu’il été conçu à l’origine : le chiffrement est effectué sur l’adresse dès l’envoi de la requête par le navigateur, et le déchiffrement n’a lieu sur le serveur qu’après sélection du certificat pour déchiffrer… La sélection du certificat ne peut donc pas dépendre de l’adresse demandée.
Sous Ubuntu, une solution existait jusqu’à maintenant. Utiliser GnuTLS, qui comme son nom l’indique permet l’utilisation du protocole TLS, dernière évolution de SSL. Pourquoi ? Parce qu’avec TLS, il est possible de balancer en clair l’adresse grâce à l’extension appelée SNI. Problème de GnuTLS, c’est un peu instable et il arrive notamment en cas de requêtes multiples de se voir servi par un mauvais certificat : on retombe sur les messages d’erreur, encore plus dérangeant parce qu’incompréhensibles vu que ça fonctionnait une seconde avant…
Apache, le logiciel serveur, supportait le TLS, mais pas le SNI avec OpenSSL. C’était un bug connu, qui a été réparé début août, mais pour Ubuntu Karmic uniquement. Cette version est installée depuis quelques jours (tout juste avant sa sortie finale, soyons fous…) sur mon serveur, et cela marche comme un charme. Il suffit de mettre dans la configuration générale, par exemple /etc/apache2/ports.conf :

Listen 443
NameVirtualHost *:443

puis dans la configuration de chaque site :

<VirtualHost _default_:443>
  ServerName votredomaine.fr
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/votrecertificat.crt
  SSLCertificateKeyFile /etc/apache2/ssl/laclécorrespondante.key
  ...
</VirtualHost>

À noter aussi l’existence d’un autre logiciel serveur, Lighttpd. Il a notamment l’avantage d’être plus léger qu’Apache. Je ne l’utilise pas sur mon serveur plus par inertie, parce qu’Apache est parfaitement configuré, mais je l’utilise sur mon portable pour avoir un serveur web de test avec moi, et je le trouve très bien et très réactif. Je pensais qu’il supportait SNI depuis quelques temps, mais visiblement ce n’est le cas que depuis 5 jours. Bref, le choix est ouvert, comme toujours dans le monde libre.

dimanche 25 octobre 2009

Ubuntu karmic freeze on Asus M2n

Ubuntu Karmic is to be released on thursday, and the release candidate is available since a few days. So I tried to install it on a laptop that I don’t really use daily. I installed from scratch, with the live CD, desktop version.

This is a laptop I bought in May 2004, an Asus M2400n. It almost worked…
First, you have to specify on the live CD boot : acpi=off and nolapic by hiting F6. Then, you have no sound but it will work at the end. Installation works fine, as usual. To first boot after installation, you have to hit shift and escape when Loading GRUB is displayed (it’s very quick), then «e» to edit the first menu item and add the same boot options on the kernel line.

There are three things to do to make the release candidate work (hope this will be fix this week). One on Grub to boot properly, and two big issues with the display.

Modify Grub boot options

New in Karmic : Grub2 is finally used, and the famous /etc/boot/grub/menu.lst doesn’t exist anymore. Some explanations are available within the Internet. All you need to know is that you have to modify /etc/default/grub, and particularly the GRUB_CMDLINE_LINUX_DEFAULT variable to add nolapic. Do not add acpi=off, or you will never ear any sound.
After any modification of /etc/default/grub, you have to do sudo update-grub in order to modifiy the Grub intern files.

Kernel issue

The new kernel display handling (Kernel mode-setting, KMS) may be a little buggy… Anyway, with this method and with Intel graphic chipset like the i855GM in this laptop, it makes Xvideo not available (which results in a very buggy display, CPU high load, and unespected reboot with some softwares or websites). To deactivate KMS, you have to add nomodeset] to the boot options in /etc/default/grub.

This two issues can be simply solved by

sudo sed -i '/GRUB_CMDLINE_LINUX_DEFAULT/s/^\(.*\)"$/\1 nolapic nomodeset"/' /etc/default/grub
sudo update-grub

Intel driver issue

The current Intel driver has also some bugs. With this driver, the display freezes sometimes, very quickly after login, even before. It’s only a display freeze, not a system crash at all (computer is still pingable and ssh-ing still works).
I hope most of these bugs will be quickly solved, but till then we can use the vesa generic driver. It’s not as simple as before, because Xorg has also changed, and the famous /etc/X11/xorg.conf no longer exists… But you can write a new minimalist one, only containing what you want to modify. You can this way write in /etc/X11/xorg.conf:

Section "Device"
  Identifier      "Configured Video Device"
  Driver 	  "vesa"
EndSection

Section "Monitor"
  Identifier      "Configured Monitor"
EndSection

Section "Screen"
  Identifier      "Default Screen"
  Monitor         "Configured Monitor"
  Device          "Configured Video Device"
EndSection

Nothing else to do, the configuration file is automatically read as soon as the system reboots or Xorg restarts.

This way, presently my Asus M2400n works fine. Hope this helps.

jeudi 8 octobre 2009

Supprimer les publicités sur seloger.com

Depuis quelques semaines, seloger.com a fortement modifié son site web. Ont été introduites des réelles nouveautés, comme la carte googlemaps sur chaque annonce ou un formulaire de sélection des annonces qui marche plutôt bien.

Mais beaucoup de problèmes sont présents dans ce site. L’utilisation de javascript est obligatoire, ce qui est gênant pour ceux qui préfèrent le désactiver. La mise en page est fixée à 940 pixels de large : si votre écran est dans la résolution la plus répandue actuellement (1024 pixels de large), l’affichage est excellent. Mais quand ce n’est pas le cas… En 1200 pixels de large, vous avez deux bandes blanches pas gênantes. En 1600 pixels de large, vous n’avez que la moitié de l’écran qui est utile ! Et encore, tout cela est vrai si vous regardez le site en plein écran, mais dès que la fenêtre de votre navigateur est moins large que ces 940 pixels, il faudra continuellement scroller horizontalement… Au secours !

Le pire n’est pas dans ces légers inconvénients. La refonte a profité surtout à l’arrivée de nouvelles publicités, qui bizarrement ne sont pas filtrées par l’excellente extension AdBlock Plus. Ces publicités utilisent en plus massivement javascript, ce qui fait ramer abominablement (et le mot est faible) les pages au chargement et lorsqu’il faut les déplacer de haut en bas.

Heureusement, avec Firefox tout est possible, et il est relativement simple de les désactiver. Il suffit d’utiliser le fichier userContent.css. Ce fichier permet de modifier personnellement l’affichage des sites web, en choisissant à quelles pages (selon une URL, un nom de domaine, ou pour tout site web) cela s’applique.

Si ces pubs vous embêtent aussi, il vous suffit donc de créer le fichier userContent.css au sein du répertoire chrome dans votre répertoire profil Firefox et d’y écrire :

/* Supprimer la publicité sur Seloger.com */
@-moz-document domain(seloger.com)
{
  #pub_contener_right { display: none !important; }
  #pub_contener_left, #pub_contener_left_core, #det_box_situation { width: 940px !important; }
  #search_cnt { left: -300px; }
  .boxpubca, .recherche_vgn { display: none !important; }
}

mardi 15 septembre 2009

sur le web libre

J'ai lu récemment un très bon article sur le web libre. Cet article est long et dit beaucoup de choses intéressantes, je vous engage à le lire.

De quoi parle-t-il ? Du « web libre ». Ou de pourquoi doit-on avoir le choix sur internet.

La génération ayant connu l'avènement des services à distance par le minitel ne comprend pas toujours cette idée. À l'époque du minitel, ce n'était qu'un terminal bête qui recrachait des applications sur lesquels nous n'avions aucun contrôle. Puis sont arrivés les PC, sur lesquels les utilisateurs ont eu un peu plus de contrôle. Par rapport à l'article, je rajouterais même qu'il est aussi important d'avoir le contrôle de son ordi. Se faire imposer un logiciel n'est pas quelque chose de normal. Réfléchissez : avez-vous choisi d'avoir Internet Explorer installé sur votre ordinateur ? Itunes si vous avez un ipod ? Windows media player ? Tel ou tel service de Windows ? Ce n'est pas normal, parce que vous devenez tributaire des choix d'un tiers sur quelque chose qui vous appartient. Utiliser des logiciels libres, et plus particulièrement abandonner Windows, c'est gagner du contrôle sur votre ordinateur. C'est choisir vos logiciels, c'est choisir votre façon d'utiliser l'informatique.

Mais revenons au web. Sur le web aussi, il est important d'avoir le choix, de pouvoir choisir son navigateur et sa façon de l'utiliser. Et avec tous les nouveaux terminaux que l'on nous vend de plus en plus, on est en train de revenir petit à petit vers le minitel. Ce n'est pas seulement un problème de régression technique, c'est un problème de liberté : la liberté de choix que l'on avait gagné grâce aux PC (et un peu aux logiciels libres) est en train d'être mise à mal par ces téléphones sur lesquels nous n'avons aucun contrôle. Mais l'auteur de l'article le dit mieux que moi :

Les terminaux mobiles actuels ont engagé une énorme régression. Apple et son Apple Store en sont l'exemple le plus marquant, mais le modèle fait hélas tâche d'huile. L'iPhone et la plupart des smartphones sont les plate-forme les plus verrouillées qu'on ait vues depuis longtemps. Vous ne pouvez installer sur votre téléphone que des applications téléchargées depuis le site d'Apple. Et Apple a le contrôle total sur les programmes disponibles. Les exemples d'applications refusées sont légions, que ce soit pour des raisons morales (cachez ce sein qui risquerait de choquer) ou commerciale (tout programme risquant de concurrencer ses intérêts financiers). Pire, le vendeur peut intervenir à sa guise sur votre terminal (on l'a vu récemment avec Amazon qui a supprimé à distance des livres du lecteur électronique de ses clients, mais Apple et Google ont également admis avoir la possibilité de le faire sur les iPhone et les téléphones Android). Est-ce que vous imagineriez ne pouvoir installer sur votre ordinateur que des applications autorisées par son fabriquant ? Est-ce que vous imagineriez que Microsoft interdise l'installation de toute application qu'elle n'a pas explicitement autorisé ? Si c'était le cas, je doute que vous ayez jamais pu installer le merveilleux Firefox avec lequel vous être en train de lire ces lignes, ou votre mule, le lecteur VLC, etc. C'est particulièrement préoccupant car il est possible que l'accès à Internet passe de plus en plus par ce type de terminaux, au détriment des PC classiques. Alors, est-ce que d'ici quelques années nous aurons complètement perdu le contrôle de nos terminaux, simplement parce que l'iPhone est trop hype et agréable à utiliser ? C'est toujours la même question : ce que l'on gagne en simplicité d'utilisation vaut-il le prix qu'on le paie en perte de liberté ?

Il est aussi très important de contrôler ses données. De les posséder : vous demandez-vous où se trouvent les données que vous avez écrites sur tel ou tel réseau social ? Un des problèmes est que vous ne les possédez pas : si vous souhaitez les supprimer, vous ne pourrez jamais être sûr que cela est effectivement fait. Rien ne vous dit qu'il n'y a pas un bug dans l'application web, qu'il n'y a pas une sauvegarde sur un autre serveur où vos données sont conservées un an. Un autre problème est que rien ne vous garantit l'accès à ces données, qui pourtant devraient vous appartenir. Êtes-vous sûr de pouvoir sans modification toujours récupérer les photos que vous avez envoyé sur un site de galeries de photos ? L'informatique de type nuage (cloud computing), très en vogue maintenant, a des avantages indéniables comme la possibilité de collaborer sur des projets communs. Mais que se passe-t-il si du jour au lendemain le site ferme ? S'il décide de changer les conditions d'utilisation, de devenir payant, ou plus cher s'il l'est déjà ? Tout est là : ce n'est pas vous qui décidez, mais quelqu'un d'autre. Vous pourrez me dire que dans plein d'autres domaines, c'est bien comme cela que ça se passe. Justement : derrière un ordi, ce n'est pas comme dans la vraie vie, vous pouvez avoir le choix. Profitez-en tant que c'est encore le cas.

lundi 10 août 2009

Utiliser Firefox 3.5 sous Ubuntu

Firefox 3.5 est sorti il y a maintenant plus d'un mois. Il ne sera pas intégré dans Jaunty, la version actuelle d'Ubuntu, ni dans les précédentes. C'est normal, c'est une question de stabilité : aucun logiciel ne peut être intégré dans sa nouvelle version après le gel de la version de la distribution. Même Firefox, aussi important soit-il.

Mais il est pourtant possible d'obtenir Firefox 3.5. Rien de très compliqué, mais on pourra faire les choses de façon expéditive ou méticuleuse... Je vous propose la deuxième.

Avant de commencer, installons

On commence par installer Firefox, qui est disponible en dépôt pour Ubuntu Jaunty, si, si :

sudo aptitude install firefox-3.5 firefox-3.5-gnome-support

Firefox 3.5 est disponible par la commande firefox-3.5, alors que la commande firefox est liée à Firefox 3.0.

ls -l /usr/bin/firefox*
lrwxrwxrwx 1 root root 11 2009-08-04 09:07 /usr/bin/firefox -> firefox-3.0
lrwxrwxrwx 1 root root 32 2009-08-04 09:07 /usr/bin/firefox-3.0 -> ../lib/firefox-3.0.12/firefox.sh
lrwxrwxrwx 1 root root 31 2009-07-21 15:08 /usr/bin/firefox-3.5 -> ../lib/firefox-3.5.1/firefox.sh

Pour les plus vieilles versions d'Ubuntu, Firefox 3.5 n'est pas disponible en dépôt et il faut aller le chercher sur le site officiel, puis le décompresser par exemple dans /usr/local/src :

sudo mv firefox*tar.bz2 /usr/local/src
tar -xjvf /usr/local/src/firefox*tar.bz2

et l'utilitaire se trouve alors à /usr/local/src/firefox-3.5

La mauvaise méthode

Je vous vois venir : c'est facile, il suffit de lier la commande firefox au bon endroit

sudo rm /usr/bin/firefox && sudo ln -s firefox-3.5 /usr/bin/firefox

C'est la mauvaise méthode. Pourquoi ? Au moins deux raisons :

  • Rien ne vous assure que le lien ne sera pas remis à la prochaine mise à jour de Firefox. Il a bien été mis là ce lien, il vient pas de nulle part.
  • Vous allez peut-être regretter d'avoir bousillé votre profil Firefox (voir aussi les explications sur Geckozone). C'est ce qui arrive quand on ne fait pas attention.

Une bonne méthode

Il faut savoir que quand une commande est ordonnée (par vous très souvent), l'interpréteur (souvent bash) va chercher dans certains répertoires les uns après les autres. Ceci est réglé par la variable $PATH, que l'on peut voir dans une console :

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

D'abord on cherche dans /usr/local/sbin, puis dans /usr/local/bin, puis... Donc si un firefox se trouve dans /usr/local/bin, celui de /usr/bin ne sera jamais lancé ! Et /usr/local/bin a comme grand avantage de ne pas être écrit par le système (d'où le « local », pour l'écriture locale de l'administrateur). Il suffit donc de faire :

sudo ln -s /usr/bin/firefox-3.5 /usr/local/bin/firefox

Et on pourra avoir Firefox 3.5 avec firefox ou Firefox 3.0 avec /usr/bin/firefox.

Mais la deuxième objection reste toujours valable...

La gestion des profils

Le mieux est de créer deux profils, parce que Firefox 3.5 peut ne pas fonctionner exactement comme la version précédente, et parce que les extensions elles aussi connaissent des versions différentes, compatibles ou non avec les différentes version de Firefox. Pour chaque utilisateur, vous pouvez avoir accès au Gestionnaire de profils par firefox -P. Alors vous pouvez créer ou supprimer un répertoire. Je suppose que celui utilisé jusqu'à maintenant (par Firefox 3.0) est default. Créez-en un nouveau, en le nommant par exemple F3-5 (le point serait gênant). Puis fermez.

Les profils Firefox peuvent être choisis au démarrage du logiciel de deux façons. Avec firefox -P, le Gestionnaire de profils permet ce choix en mode graphique. Avec firefox -P default ou firefox -P F3-5 dans notre cas, on peut choisir directement sans fenêtre supplémentaire le profil voulu.

Nous pouvons donc créer deux lanceurs, que l'on mettra par exemple dans /usr/local/bin/firefox-3.0 :

#!/bin/sh
 
/usr/bin/firefox3.0 -P default $* &

et dans /usr/local/bin/firefox-3.5 :

#!/bin/sh
 
/usr/bin/firefox-3.5 -P F3-5 $* &

Après un

sudo chmod +x /usr/local/bin/firefox*

les commandes firefox-3.0 et firefox-3.5 sont maintenant transformées : ainsi, elles ne peuvent plus lancer le mauvais profil... Il ne reste plus qu'à lier firefox à celle que l'on souhaite :

sudo ln -s firefox-3.5 /usr/local/bin/firefox

(supprimez /usr/local/bin/firefox si vous l'aviez créé précédemment).

On y est presque : derniers détails

Vous venez d'ouvrir Firefox 3.5, et vous vous rendez compte d'une chose abominable : l'interface est en anglais !
No problemo. Après avoir regardé le numéro exact de votre version dans le menu « Aide -> À propos de Mozilla Firefox » (du genre 3.5.x), il suffit d'installer par simple téléchargement l'extension qui va bien, que vous pourrez trouver sur le site de mozilla.org en choisissant là votre 3.5.x puis linux-i686 -> xpi -> fr.xpi. Elle ne s'installe que dans votre profil actuel, le F3-5 (on retrouve l'intérêt de ne pas avoir le même profil pour les deux versions).

Mais où sont passés tous vos mots de passe, vos historiques, vos entrées de formulaires, vos habitudes ?
Facile : fermez le Firefox ouvert, et copiez d'un profil à l'autre les fichiers qui vont bien :

cd ./mozilla/firefox/*.default
cp -a bookmarks.html cert8.db content-prefs.sqlite cookies.sqlite downloads.sqlite formhistory.sqlite key3.db signons3.txt urlclassifier3.sqlite urlclassifierkey3.txt ../*.F3-5

À noter que signons3.txt, contenant vos mots de passe, sera transformé en signons.sqlite désormais. Il restera les extensions à réinstaller, ce que vous pouvez éventuellement vous éviter en recopiant le répertoire extensions. Peut-être qu'il est intéressant de temps en temps de se demander de quelles extensions on a vraiment besoin (je vous conseille fortement Adblock Plus, Flashblock ; Firebug pour les développeurs et TabMixPlus pour ceux qui aiment bien avoir pas mal d'onglets ouverts).

jeudi 6 août 2009

Ma discothèque

Le résumé

http://musique.cyril-ravat.fr

La préhistoire

Depuis plus d'un an cela me trottait dans la tête. Alors je me suis pris par la main, j'ai un peu réfléchi, et je l'ai fait. C'est pas encore tout à fait comme je l'imagine au final, mais on s'en approche.

Depuis plus de 13 ans maintenant, depuis le printemps ou l'été 1996, j'achète de albums en cd. Avant, j'avais quelques cassette audio, mais rien de bien important, un pirate de Smash d'Offspring, premier album que j'ai pu écouter en entier, des enregistrements de Skyrock qui ne passait pas la même chose que désormais, des broutilles. Depuis ces temps reculés donc, des albums, beaucoup, maintenant près de 240. Presque tous choisis volontairement.

Depuis 13 ans donc, je note. Enfin au début pas tout à fait, mais en 1998 j'ai commencé à noter avec davantage d'assiduité dans mon agenda titres, artistes, dates d'achat, lieux d'achat et prix. Et je n'ai plus jamais arrêté, à de rares exceptions près. Et maintenant, avec mes capacités à organiser une base de données de façon pérenne, je me disais qu'il fallait vraiment que je stocke ça quelque part, dans des endroits plus sûrs qu'un simple carnet vieilli.

Depuis 3 semaines environ, je m'y suis mis. Entre 8 et 10 heures de code par jour, souvent la nuit, parce que malgré moi c'est comme cela que je préfère bosser. Mais j'ai procédé d'une façon complètement différente à d'habitude. Contrairement à d'habitude, j'ai l'impression de ne pas avoir perdu trop mon temps en pinaillages et fioritures.

L'histoire

Contrairement à d'habitude, j'ai commencé par fabriquer une interface d'administration solide et pratique, à base de contrôles en JavaScript et en Ajax, de validation à la volée, de pseudo-web2.0, de messages d'alertes ou de confirmation qui s'affichent sans recharger la page, dont je suis assez content. Plus je code en utilisant la formidable bibliothèque JQuery, plus je trouve qu'elle est géniale et facilite énormément les chose. Quand je pense que j'avais implémenté dans la GaleriePhotos, en octobre 2006, une connexion de type Ajax (en fait, une simple utilisation de la vieille fonction XMLHttpRequest)... C'est quand même autrement plus élégant de coder cela maintenant en trois ligne parce qu'une API complète se charge de tout.

Et puis, contrairement à d'habitude, j'ai entré quelques albums fictifs en bidouillant partout pour être sûr que la machinerie était robuste. Pas mal de bugs sont apparus, et rapidement, à peu près une semaine après avoir démarré, j'ai commencé à entrer mes albums. Contrairement à d'habitude, je n'ai pas attendu d'avoir tout entré pour avancer, et arrivé à un tiers environ, j'ai codé l'interface publique. Rapidement. J'ai ensuite repris la saisie des données, laborieuse et ennuyeuse. Avec en parallèle quelques moments de réflexions pour implémenter telle ou telle fonction pour l'affichage.

L'épilogue

De fil en aiguille, tout est maintenant enfin prêt. Depuis 2 jours, le site hébergeant la liste de mes albums acquis au fil des ans, de tout mon univers musical, existe. Depuis 4 jours en fait mais les deux derniers jours ont permis d'ajouter des fonctions de recherche et de classement que j'apprécie pas mal, surtout pour les techniques que j'ai employées (ce n'est rien d'autre que du narcissisme, rassurez-vous).

Le site en question, histoire de faire simple, s'appelle

http://musique.cyril-ravat.fr

Je vous invite à y venir faire un tour.

J'allais oublier de parler de ce qu'il manque. Le site contient des données, mais pas encore assez. J'ai prévu d'ajouter :

  • les pistes des albums, éventuellement, si je trouve un moyen simple et pratique de le faire. J'avoue ne pas avoir encore beaucoup cherché.
  • des liens entre artistes et entre albums, du genre « si vous aimez cela, alors vous aimerez... ». C'est assez complexe, en particulier en terme d'interface d'administration. J'ai déjà quelque chose de fonctionnel mais très lent à l'affichage, et mal pratique au final. Il faudrait surement effectuer une présélection grâce aux tags...
  • une description un peu plus complète des artistes, une photo, un lien wikipedia, des trucs.
  • un système de commentaires et la possibilité pour les visiteurs de mettre aussi des notes. En fait, c'est quasiment déjà en place, mais je pense que ce n'est pas le plus pressé et donc je ne le ferai pas très vite.

Et bien sûr, j'ai prévu, quand je serai assez sûr de moi, de publier sous licence libre le logiciel dans son ensemble, au cas où ça pourrait servir à certains. Mais il va falloir attendre une petite année environ avant cela...

GnuTLS + POST + Firefox + large amount of data = save file dialog with blank file

J'ai mis tous les mots-clés que j'ai pu taper dans google pour résoudre un problème que j'ai depuis plusieurs mois.

J'ai trouvé hier, enfin, qu'il pourrait y avoir un lien avec https. Cela ne m'arrivait jusqu'à maintenant qu'en écrivant de long messages sur ce blog (et j'avais donc cru à tort à un bug du pourtant excellentissime Dotclear), ça m'est arrivé hier en corrigeant un long truc dans PhpMyAdmin. Trop c'est trop, il fallait que ça fonctionne à nouveau.

La solution trouvée

Après de longues recherches (quand je vous dit que ça fait plusieurs mois), je lisais des rapports n'ayant pas grand chose à voir avec mon problème, mais de personnes qui, scientifiquement, avaient désactivé tout ce qui pouvait poser problème. Autre navigateur, profil neuf dans Firefox, changement entre http et https. Et là je me suis dit « un autre navigateur pas envie, un autre profil de Firefox là maintenant c'est pas jouable mais je pourrai demain si besoin... Essayons de passer en http. »
Bon, les choses ne sont jamais simples, je n'étais pas chez moi. Et pas envie d'ouvrir mon Dotclear ou mon PhpMyAdmin à tout va. Faisons un proxy SOCKS ! (il a fallu que je me remémore de vieux souvenir d'une époque où je faisais ça) Dans mon souvenir, c'est super simple. Je me souviens « Il suffit de lire le man de ssh, c'est une option obscure ». 10 minutes plus tard :

ssh -D 1111 cyril@maison

Et on règle Firefox, dans Édition -> Préférences -> Avancé -> Paramètres de Connexion -> Configuration manuelle du proxy -> Hôte SOCKS -> "localhost", et port 1111. Puisque je vous dis que c'est simple.

Il fallu alors changer la configuration d'Apache pour laisser à l'interface d'administration de Dotclear l'accès depuis le réseau local:

<VirtualHost _default_:80>
  ServerName blog.cyril-ravat.fr
[...]
  # Réécriture pour les chemins spéciaux [était déjà là]
  RewriteEngine On
[...]
  # Interface d'administration uniquement en https
#  Redirect permanent /admin https://blog.cyril-ravat.fr/admin
  # Interface d'administration autorisée en local
  # Redirection vers la page d'accueil sinon
  RewriteCond %{REQUEST_URI} ^/(admin)
  RewriteCond %{REMOTE_ADDR} !^192.168.0
  RewriteRule ^(.*)$ http://blog.cyril-ravat.fr/ [R=permanent,L]

C'est un pis-aller, mais au moins maintenant je peux à nouveau éditer des billets de 4 kilomètres sans m'embêter pour les valider (quoi, ça se voit ?).

Tiens, je suis pas tout seul

C'est vrai que ce « depuis quelques mois » correspond en fait à ma migration de openssl vers gnutls (bon en fait j'en ai jamais vraiment parlé ici, mais c'est un billet qui devrait arriver dans pas longtemps). Je viens de réaliser cela aujourd'hui. Et du coup, la recherche google devient plus facile, et on voit qu'on n'est pas tout seul...

SyntaxHighlighter, php et scripts Bash

SyntaxHighlighter : présentation

J'ai découvert il y a quelques semaines un (gros) bout de code génial. Comme le dit le site dédié, il s'agit d'un code de surlignage syntaxique, ou comment rendre des bouts de codes déjà lisibles encore plus lisibles.

L'utiliser n'est pas très compliqué, puisqu'il suffit de télécharger le dernier .zip, de le dézipper et de regarder ce qu'on trouve. Un répertoire scripts contenant en particulier shCore.js qui est le cœur de la machinerie, ainsi que plein de shBrush*.js, qui contiennent les définitions des syntaxes pour différents langages. Personnellement, je n'ai pas besoin de tout, donc je n'ai choisi de garder que ce qui m'intéresse : Bash, Php, Plain que j'utiliserai souvent, Css, JScript et Sql un peu moins, et puis aussi au cas où Diff, Perl, Python, Xml. Un dossier styles contient lui les fichiers de mise en page css, parmis lesquels shCore.css est obligatoire et ensuite shThemeDefault.css correspond au seul thème écrit en noir sur blanc (les autres font du blanc sur noir, je déteste ça). Sans oublier les trois icônes qui seront affichées dans la toolbar et l'icône de retour à la ligne.

Donc on prend tous ces fichiers, on met tout ça dans un répertoire, appelé par exemple syntaxhighlighter, à la racine du site. Il ne reste plus qu'à modifier les pages web en ayant besoin. Il faut rajouter dans l'entête html :

[html]
  <script type="text/javascript" src="/syntaxhighlighter/shCore.js"></script>
  <link type="text/css" rel="stylesheet" href="/syntaxhighlighter/shCore.css"/>
  <link type="text/css" rel="stylesheet" href="/syntaxhighlighter/shThemeDefault.css"/>
  <script type="text/javascript" src="/syntaxhighlighter/shBrushPlain.js"></script>
  <script type="text/javascript" src="/syntaxhighlighter/shBrushBash.js"></script>
  <script type="text/javascript">
    SyntaxHighlighter.all();
  </script>

Ensuite, tous les paragraphes de type <pre> seront analysés, pour peu qu'on dise à quel langage ils correspondent, en ajustant la classe :

[html]
<pre class="brush: bash">

par exemple. J'ajoute aussi, pour éviter la numérotation des lignes quand il s'agit d'une simple ligne de commande :

[html]
<pre class="brush: plain; gutter: false">

Mais il y a encore deux trois détails à gérer. Petits trucs et astuces pour pouvoir afficher des scripts bash comme cela est réalisé sur mon site.

Pour le transcript, deux problèmes

Balises malgré elles

SyntaxHighlighter transforme tous les chevrons « < » et « > » en entités html correspondantes, respectivement « &lt; » (less than) et « &gt; » (greater than). Ce ne serait pas grave s'il ne le faisait pas seulement pour presque tous les chevrons... Or il cherche à détecter automatiquement les balises (ce qui n'est pas très malin dans du code bash d'ailleurs, ce qui fait que mon adresse mail par exemple était comprise comme une balise, dégradant quelque peu la suite de l'affichage. Total : il faut le faire pour lui.
Au départ, j'avais choisi d'utiliser readline en php, à savoir

[php]
<pre class="brush: bash">
<?PHP  @readline('compil'); ?>
</pre>

Mais transformer les chevrons à l'avance n'est pas beaucoup plus compliqué :

[php]
<pre class="brush: bash">
<?PHP  echo str_replace('<','&lt;',str_replace('>','&gt;',file_get_contents('compil'))); ?>
</pre>

Vous aurez remarqué que du coup, dès que le fichier est modifié, c'est le code de la dernière version qui s'affiche. Zéro maintenance (le fichier compil est un lien symbolique vers /usr/local/bin/compil sur mon serveur).

Décidément, ces chevrons...

Et c'est à ce moment que l'on relit un peu ce qui s'affiche à l'écran, et qu'on se rend compte que plein de chevrons (mais pas tous) sont restés à l'état d'entités html. Alors qu'en enlevant l'influence de SyntaxHighlighter, on obtient bien le résultat attendu. Il m'aura fallu quelques minutes pour me souvenir que lt et gt, sont des mots-clés en bash, justement pour des tests numériques plus grand/plus petit (ouais, tout est lié). Un grand dilemme se pose alors. Soit on laisse comme ça, et le code affiché est faux. Soit on s'arrange pour ne jamais avoir de chevrons (ce qui est impossible quand on a besoin de redirections). Soit on commente les mots-clés gt et lt dans le fichier de définition shBrushBash.js, et tant pis pour leurs rares apparences en tant que tests, où ils ne seront pas colorés comme il faut. J'ai choisi cette dernière solution.

Pour l'aide

Ah, là ça se corse. Au départ j'avais recopié telle quelle la réponse de compil -h. Je me suis dit alors « mais si t'as une coquille dans l'aide ou que tu la modifies, il faudra revenir ici... au secours ». Alors j'ai trouvé un moyen. Après plusieurs tâtonnements et hésitations sur la meilleure fonction php entre exec, system et passthru, j'ai opté pour

[php]
<pre class="aide">
$ compil -h

<?PHP 
exec('[ ! -e compil.help -o compil -nt compil.help ] && compil -h | tr -d "\033" | sed -e "s/\[1m/<b>/g" -e "s/\[0m/<\/b>/g" > compil.help');
@readfile('compil.help'); ?>
</pre>

Explication : la dernière commande lit et affiche un fichier compil.help. On va donc y mettre l'aide. Problème, j'utilise un formatage à base de caractères bizarres qui permettent de mettre en gras du texte en console. On prend donc le résultat de compil -h, on en vire donc le caractère bizarre (grâce à la commande tr -d), puis on identifie le début et la fin des mises en gras, que l'on remplace de façon moche mais fonctionnelle par des balises de formatage html.
Le début est un test, qui permet d'exécuter la commande seulement si compil.help n'existe pas ou est plus ancien que compil. Cela semble fonctionner à peu près correctement.

jeudi 5 mars 2009

as-tu fais tes devoirs ?

On veut nous faire croire que le nouveau site sorti aujourd'hui, dont je ne ferai pas de publicité, va changer la face de l'enseignement. Moi, ça me fait doucement rigoler. Disons que trois choses me viennent à l'esprit.

Ce site ne servira jamais à grand chose. Bien sûr, des élèves y feront appel. Exactement de la même façon que chacun d'entre nous à leur place a pu faire appel à l'aide d'un proche pour faire lâchement le travail ou à des bouquins (qui n'a jamais repompé en partie un Profil d'une œuvre ?). Certes, ici c'est payant, tout se monnaie (j'y reviens). C'est génial, ça veut dire que les devoirs en temps limités et surveillés ont encore de beaux jours devant eux. Qu'un élève ne fasse pas réellement ses devoirs ? Très bien, il se rendra compte assez vite qu'en plus de perdre de l'argent, il est en train de rater sa scolarité.

Le battage médiatique fait autour de ce truc est déprimant. Il montre combien notre presse est lamentablement manipulable et combien elle ne comprend pas le monde dans lequel elle vit. Je vois un titre dans un article du Point : « Mieux que l'antisèche, le site qui fait les devoirs ». Bravo. C'est juste une accroche pour faire venir le chaland. Aucun intérêt, poubelle. Manipulable, parce que ce qui est fait n'est au final que de la publicité. On remarque que le site en question n'aura pas eu besoin de payer d'espace pour être tellement visible que tout le monde en connaît l'adresse. Merci la presse indépendante.

Le genre de personne capable de mettre en place ce type de site est vraiment détestable (je cherche un mot plus fort, mais j'ai peur de devenir vulgaire...). Ils sont tout ce que l'on peut haïr le plus dans ce monde de dents longues, de coups de coude et de consumérisme :

  • la recherche du profit : comme dans les systèmes de cours particuliers, les étudiants participant sont exploités. Heureusement, ils ne s'en rendent pas compte.
  • le mépris du service public : ces profs idiots ne se rendront jamais compte qu'on essaie de leur faire prendre des vessies pour des lanternes. De toutes façons, l'Éducation Nationale est en cours de démantèlement par notre cher président (bougez pas, il s'occupe de l'enseignement supérieur pour l'instant).
  • le sans-gène : ça leur paraît normal. Et le pire, c'est qu'ils sont sincères. Ils vivent déjà dans un monde où la réussite scolaire, on l'achète plutôt qu'on ne la gagne (non, je dis certainement cela parce que je n'aime pas l'Essec). Ils sont décomplexés. Je suis sûr qu'ils pensent que c'est d'ailleurs aussi bien, un monde où leurs enfants, qui seront au moins aussi mauvais qu'eux mais très friqués (parce que papa a travaillé dur pour arnaquer des gens) pourront faire des grandes études entre enfants d'anciens de l'Essec.
  • l'exploitation des plus faibles : ici, les enfants, qui sont les plus fragiles et les moins à même de comprendre pourquoi ce service est une arnaque. C'est pas grave, le site accepte les paiements en SMS surtaxés.

Vraiment, ces types ne valent rien qu'à créer de l'entropie et se prendre des claques.

dimanche 1 mars 2009

latex et césures

Suite de mes découvertes latex du weekend : je me suis rendu compte que beaucoup de césures effectuées automatiquement par Latex étaient incorrectes. Après recherche, mon fichier de log contenait désespérément :
Package babel Warning: No hyphenation patterns were loaded for
(babel) the language `French'
(babel) I will use the patterns loaded for \language=0 instead.

Et cela, malgré toutes les options possibles et imaginables à babel, le package latex de traduction. L'erreur était en fait un peu plus haut dans le fichier de log :
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, nohyphenation, loaded.
Il n'y a pas « french » ! La faute à un paquet Ubuntu qui n'est bizarrement pas installé automatiquement, texlive-lang-french.

Il suffisait donc de faire : sudo aptitude install texlive-lang-french. Et après, c'est gagné :
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, nohyphenation, basque, french, loaded.

- page 1 de 3