Olivier Mengué – Code & rando

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

mercredi 6 août 2008

Just released: curlIE

I just published on Google Code a small software project I wrote about one year ago but that I just rediscovered on my hard drive a few weeks ago: curlIE. This is an implementation of a subset of cURL, the command line tool for transferring files with URL syntax, in JScript in the Windows Script Host environment using the XMLHttpRequest object. This is the first piece of code since I write JavaScript/WSH code (more than 10 years now) that I found good enough to be worth publishing. There is probably more to dig in my hard disk...

As you can see in the source, the code that deals with HTTP is very small as everything is delegated to the XMLHttpRequest object. In fact, half of the lines are a generic command line parser that implements the classic UNIX-style argument parsing with short and long options to match cURL. Just the few major options are currently implemented. I will add others if I get incoming feature requests...

mercredi 23 janvier 2008

Sous le capot d'une station Vélib’

Ce soir, j'ai assisté par hasard au reboot d'une station Vélib’.

Lire la suite...

dimanche 2 septembre 2007

Le clavier français sous le DOS de Vista

Mise à jour 2008-08-30 : Cette astuce a été sélectionnée par le magazine L'Ordinateur Individuel et publiée dans le numéro 208 (septembre 2008) page 136 comme astuce du mois.

Nostalgie, nostalgie... le DOS c'est toute ma jeunesse. Le manuel du MS-DOS 5.0 est d'ailleurs le premier livre d'informatique que j'ai lu. Même sous Windows, j'ai toujours systématiquement une fenêtre d'« invite de commandes » toujours ouverte. Et la première chose que je fais sur un nouveau PC Windows, c'est d'assigner le raccourci Ctrl+Alt+C à l'invite de commandes MS-DOS. La deuxième, c'est Ctrl+Alt+N pour le Bloc-Notes (N comme NotePad). Et la troisième, c'est d'installer mon fichier .INF qui ajoute une entrée Ouvrir un shell dans le menu contextuel de l'Explorateur Windows.

Alors de temps en temps je vais voir comment évoluent les articles de Wikipédia dédiés au MS-DOS pour vérifier qu'ils ne racontent pas trop de bêtises, les corriger à l'occasion, et éventuellement encore apprendre quelque chose. C'est donc dans la section Windows NT que j'ai vu quelques commandes que j'ai vu quelques commandes que j'ai voulu vérifier par l'expérience sur Windows Vista.

Microsoft Windows [version 6.0.6000]
Copyright (c) 2006 Microsoft Corporation. Tous droits réservés.

C:\Users\Dolmen>ver

Microsoft Windows [version 6.0.6000]

C:\Users\Dolmen>command /k ver

MS-DOS Version 5.00.500


C:\USERS\DOLMEN>

Rien de spécial jusque là.

C:\USERS\DOLMEN>cd 

Mais là, oh stupeur ! Pas moyen de taper un '\'. La combinaison de touches AltGr+8 ne fonctionne pas ! En fait, le clavier est en QWERTY dans COMMAND.COM !

En investiguant un peu plus, j'ai pu vérifier que ce sont tous les programmes pur MS-DOS qui ne tiennent plus compte de la configuration du clavier français mais utilisent au lieu de cela une configuration américaine du clavier. Par exemple debug.exe ou edit.com. Vous pouvez tester avec tous les .COM (ceux-là, contrairement aux .EXE, vous êtes sûrs que ce sont des programmes DOS) :

C:\Users\Dolmen>dir %windir%\System32\*.com
 Le volume dans le lecteur C s'appelle XXX
 Le numéro de série du volume est YYYY-ZZZZ

 Répertoire de C:\Windows\System32

02/11/2006  10:31            11 776 chcp.com
02/11/2006  09:09            50 648 COMMAND.COM
02/11/2006  10:32            13 824 diskcomp.com
02/11/2006  10:32            11 264 diskcopy.com
18/09/2006  23:43            69 886 edit.com
02/11/2006  10:32            35 328 format.com
02/11/2006  10:35            56 320 graftabl.com
02/11/2006  09:09            19 694 GRAPHICS.COM
02/11/2006  09:09            14 710 KB16.COM
02/11/2006  09:09             1 131 LOADFIX.COM
02/11/2006  10:32            25 088 mode.com
02/11/2006  10:32            20 992 more.com
02/11/2006  10:32            16 384 tree.com
02/11/2006  10:35             6 656 win.com
              14 fichier(s)          353 701 octets
               0 Rép(s)  VV VVV VVV VVV octets libres

Vous aurez peut-être noté la présence de KB16.COM qui semble une piste à explorer :

C:\USERS\DOLMEN>kb16 /?
Configures a keyboard for a specific language.

KEYB [xx[,[yyy][,[drive:][path]filename]]] [/E] [/ID:nnn]

  xx                      Specifies a two-letter keyboard code.
  yyy                     Specifies the code page for the character set.
  [drive:][path]filename  Specifies the keyboard definition file.
  /E                      Specifies that an enhanced keyboard is installed.
  /ID:nnn                 Specifies the keyboard in use.

C:\USERS\DOLMEN>chcp
Page de codes active : 850

C:\USERS\DOLMEN>kb16 fr,850 /E

C:\USERS\DOLMEN>

Voilà, c'est réparé... pour cette session ! Mais au prix de la perte de 6 Ko de mémoire conventionnelle (comparer avant et après avec mem /C). Et vous aurez noté que KB16.COM n'est pas traduit : Microsoft ne semble plus attacher autant d'importance à la traduction de ses produits.

Mise à jour 2008-10-20 : La solution ci-dessous est obsolète. J'ai trouvé la vraie solution au problème, bien plus simple. Sautez au commentaire 26.

Pour charger automatiquement KB16.COM dans les prochaines sessions, il faut ajouter l'appel dans %windir%\System32\autoexec.nt. Mais comme avec Vista, rien n'est simple en raison de la protection paranoïaque des commandes d'administration, voici la marche à suivre :

  1. Dans le menu Démarrer, Tous les programmes, Accessoires, cliquez avec le bouton droit sur Invite de commandes puis Exécuter en tant qu'administrateur.
  2. Chargez le clavier français et lancez edit.com :
    Microsoft Windows [version 6.0.6000]
    Copyright (c) 2006 Microsoft Corporation. Tous droits réservés.
    
    C:\Windows\system32>KB16 fr,850 /E
    
    C:\WINDOWS\SYSTEM32>edit autoexec.nt
    
    Pourquoi edit.com ? On aurait pu aussi utiliser le Bloc-Notes (notepad.exe). Sauf que l'on souhaite ici entrer des accents qui seront affichés dans la page de code du terminal, c'est à dire 850. Or le Bloc-Notes ne connaît que les encodages ANSI (cp1252), Unicode (ucs-2le), Unicode Big Endian (ucs2-be) et UTF-8.
  3. Tapez Ctrl+Fin et collez les lignes suivantes (pas avec Copy du menu Edit d'edit.com, mais avec Modifier, Coller dans le menu système de la fenêtre) :
    lh %SystemRoot%\system32\KB16 fr,850 /E
    if not errorlevel 1 echo Clavier français activé.
    
  4. Quittez en enregistrant : Alt+F, x, Entrée.

mardi 28 août 2007

TiddlyWiki and favicon

TiddlyWiki is a standalone wiki that is fully interactive and fully contained in a single HTML file. Here is a tip to add a favicon to your wiki.

To enable saving you have to give to the browser some special permissions allowing the JavaScript code to write to your disk. When using it with Microsoft Internet Explorer, the easy way to enable saving is to just rename your wiki as .hta to transform it into an "HTML Application", as Microsoft calls it.

But you can do better with HTML Applications than just decreasing the security level. I was particularly interested in a better integration with Windows. I wanted in particular to change the icon of the window that appears in the taskbar (I commonly have about 30-40 windows opened on my desktop). This is quite easy: you just have to add an <HTA:APPLICATION ICON="myfile.ico"> tag the <head> section of the HTML file.

Here is how to do it the TiddlyWiki way:

  1. Get an icon and save it as tiddlywiki.ico in the same directory as your wiki.hta file. For example: http://www.tiddlywiki.org/favicon.ico. You can also create you own icon here or here.
  2. Edit the built-in tiddler MarkupPreHead
  3. Insert the following text just after <!--{{{-->:
    <!--[if IE]>
    <HTA:APPLICATION ID="oHTA" APPLICATIONNAME="My wiki" ICON='tiddlywiki.ico'/>
    <![endif]-->
    <link rel='shortcut icon' href='tiddlywiki.ico' type='image/vnd.microsoft.icon '/>
    
  4. Reload your wiki.hta. That's it!

I now have to explore how to convert this to a plugin...

samedi 4 août 2007

Le « full utf-8 » est un mythe !

Suite à un message sur la liste des Mongueurs de Perl à propos d'encodage de caractères, j'ai fait un petit historique des jeux de caractères que j'ai utilisés depuis 1989 :

J'étais en full cp437 sous MS-DOS.

Je suis passé au cp437/cp1252 avec Windows. J'ai résisté au passage à cp850 pour garder le jeu complet de caractères semi-graphiques de cp437.

Avec Unix/Linux j'ai ajouté iso-8859-1 vers 1993.

Avec Windows NT, j'ai abandonné finalement cp437 au profit de cp850, toujours utilisé dans les fenêtres DOS.

L'euro est apparu et je suis passé à iso-8859-15 sous Linux.

Depuis Windows 2000, RegEdit 5 enregistre ses fichiers en « Unicode » (comme dit Microsoft), c'est à dire ucs-2le. C'est donc un encodage de plus que j'utilise régulièrement.

Coté Linux, j'ai abandonné iso-8859-{1,15} pour utf-8 (merci à RedHat d'avoir initié ce changement sur l'ensemble d'une distrib). Mon Nokia N800 est aussi en UTF-8. Malheureusement je bosse encore aussi sous Solaris et AIX qui ne connaissent pas UTF-8 pour les locales de base.

Les encodages de caractères que j'utilise actuellement régulièrement sont donc ASCII, utf-8, cp1252, cp850, ucs-2le et iso-8859-1.

Bref, le « full utf-8 », c'est à dire un environnement où toutes les données texte sont uniquement encodées en UTF-8, est pour moi un mythe. La compatibilité avec les anciennes applications, les anciens formats de fichiers ou les systèmes d'exploitation où UTF-8 n'est pas l'encodage primaire nécessite la manipulation de multiples encodages.

Ma solution : avoir la boîte à outils qui me permette d'éditer les fichiers de la façon la plus transparente possible (détection au chargement d'un fichier texte) et de faire facilement les transformations nécessaires. Et si on travaille sur plusieurs plate-formes, il faut que la boîte à outils soit également portable.

Ma boîte à outil, c'est Vim, avec ces paramètres :

" List of encodings for autodetect
if has('win32') || has('win64')
  set fileencodings=ucs-bom,utf-8,cp1252
else
  set fileencodings=ucs-bom,utf-8,iso88591
endif

mercredi 7 mars 2007

Installer Python, SQLObject et Cheetah sous Windows

Voici un micro tutoriel pour installer le langage Python et quelques modules de base qui seront bien utiles au RIF.

Lire la suite...