Christophe Jacquet — Carnet — Mot-clé : Geekeries

Automatically merge calendars with Google Apps Script

I have several Google calendars: one for lectures, one for appointments, one for vacations, etc. I need to combine them automatically into a single ICS file. Surprisingly, this feature does not seem to exist off-the-shelf.

I have devised a solution based on Google Apps Script: a Javascript script runs periodically on the Google cloud, and generates the ICS file. Surprisingly, the script has to be in a Google Docs spreadsheet. The script editor is in the Tools menu. When the script works okay, it's possible to schedule its execution periodically in the script editor, via the Triggers menu. As easy as a good old cronjob.

Lire la suite...

Twenty years of computing

I recently realized that it has been 20 years since I started computer programming. Here's how it all started.

Lire la suite...

Geek's dice

Geek's dice

Found in a regular gift shop, otherwise not geek-oriented at all.

DOSBox

Need to run old DOS software?

One way to go is to use virtualization software (e.g. QEMU, Bochs or Parallels Desktop) and install MS-DOS or FreeDOS on it. However, it's quite inconvenient because you have to find floppy images, create a virtual hard disk and install the OS. After I failed to get my hands on my old DOS floppies and Parallels Desktop refused to boot FreeDOS, I decided I needed to try something else.

And then I discovered DOSBox. DOSBox is several things at a time, in one neat package:

  • a complete x86 processor emulator,
  • a PC peripheral emulator, including many once-popular graphics and video cards,
  • a complete PC BIOS implementation,
  • a complete MS-DOS API implementation,
  • an MS-DOS compatible shell and user commands.

Lire la suite...

Display GPX tracks using Google Maps API

Surprinsingly, the Google Maps Javascript API does not provide a built-in way to create an overlay from a GPX track, contrary to OpenLayers for instance.

Forum messages asking a way to add GPX overlays to Google Maps are numerous, and various solutions are proposed. Here I propose my own method, adapted to the Google Maps Javascript API v3. It relies on jQuery, so it is very simple.

Lire la suite...

POCSAG decoder

Two years ago, I did some experiments with the POCSAG paging protocol, that resulted in writing a POCSAG decoder in Java. I have no time and no desire to evolve it into a finished, packaged product, so I'm releasing it “as is” under the GPLv3, for the enjoyment of the radio enthusiast / amateur radio community.

The project, called jPOCSAG, is hosted on code.google.com[1].

The program is functional for my own use, but it is not intended to be a stable, released product. Rather, it is a codebase to experiment/play/tinker with, with no warranty of any kind. For these reasons, there is no “executable”; only the source code is available from a Subversion repository. Also, do not expect further updates to the source. I may, or may not, improve the program in the future, depending on my own needs. But feel free to use the code and improve it.

Notes

[1] By the way, Google Project Hosting is much more easy to use than SourceForge, although a little less customizable. Additionally, it's lightning fast compared to SourceForge.

Téléphone mobile et commandes AT (et Mac)

Saviez-vous que les bonnes vieilles commandes AT fonctionnent avec les téléphones mobiles ? Et même, qu'un jeu « étendu » de commandes existe ? Et en plus, ça marche en Bluetooth pour les téléphones compatibles...

Démonstration sur Mac. Lorsque mon téléphone et mon Mac ont Bluetooth activé, j'ai dans /dev un périphérique appelé tty.Nokia... (le nom Bluetooth exact de mon téléphone apparaît ici).

On peut donc essayer de se connecter à ce périphérique grâce à un émulateur de terminal. Pour faire simple, prenons screen :

screen /dev/tty.Nokia...

Sur l'écran du mobile apparaît le message « Connexion port série avec ... ». Mais bien sûr !

Un petit essai ? Tapons AT, puis entrée. Réponse : OK. Bingo !

Quelques commandes intéressantes :

SMS :

AT+CMGF=1      Sélectionne la lecture des SMS en mode texte
AT+CMGR=n      Lit un SMS

Accès au répertoire :

AT+CPBR=1,10   Lit les 10 premières entrées du répertoire

Téléphonie :

AT+COPS=?      Affiche la liste des réseaux

Réponse-type en France :

+COPS: (2,"F BOUYGTEL",,"20820"),(3,"Orange F",,"20801"),
(1,"SFR",,"20810"),,(0,1),(2)

Mise à jour, 28 septembre 2011 : une autre liste de commandes intéressante.

Papier de physique

Au rayon Hygiène chez Cora, des fondements pour la physique (ou l'inverse) :

Papier toilette physicien

Au fait : où est l'erreur ?

GNU Screen

GNU Screen n'est pas connu de tous les utilisateurs d'Unix. Pourtant, ce programme se rend vite indispensable. Derrière sa description de multiplexeur de terminal se cache un concept simple : vous pouvez laisser tourner des applications consoles sur une machine, même lorsque vous vous en déconnectez, et vous prenez la main sur leurs « terminaux » quand vous le souhaitez, d'où vous le souhaitez.

Screen se lance simplement par la commande screen. Pour se reconnecter (rattacher) à une session existante, on tape screen -r ID_SESSION. La liste des ID de session existants s'obtient par la commande screen -ls.

En cours de fonctionnement, screen dispose de nombreuses commandes accessibles par des raccourcis clavier qui commencent par C-a. La liste des principaux raccourcis est la suivante :

CombinaisonAction
C-a ddétacher (fermer la fenêtre, mais pouvoir récupérer la session plus tard)
C-a ccréer une nouvelle fenêtre
C-a ksupprimer la fenêtre courante (kill)
C-a Fadapte la taille de la fenêtre, très utile en cas de passage d'un terminal à un autre (fit)
C-a ?aide en ligne
C-a npasser à la fenêtre suivante
C-a ppasser à la fenêtre précédente
C-a 0 à C-a 9passer à la fenêtre de numéro indiqué
C-a "menu des fenêtres
C-a :prompt pour taper directement des commandes (cf. manuel)

Pour plus de détails, on consultera le manuel officiel, ou cette bonne documentation en français.

Screen peut répondre à de nombreux besoins. Il est très utilisé en conjonction avec le client IRC irssi, mais on peut trouver des applications plus exotiques, par exemple screen comme terminal série.

À noter que j'ai eu quelques soucis sur Mac, pour me connecter à une Debian : le terminal local fonctionne bien, screen en local fonctionne bien, le terminal distant par ssh fonctionne bien, mais screen sur la Debian distante posait problème : la touche Backspace envoyait Delete (mais seulement lorsque TERM valait xterm-color, pas xterm)... Il s'agit d'une sombre histoire de terminfo dont une solution est donnée sur Mac OS X Hints : recopier le fichier terminfo xterm-color du Mac sur la debian, dans le répertoire ~/.terminfo/x.

Astuces PowerPoint

Une fois n'est pas coutume, je ne parle pas de LaTeX, mais de PowerPoint : deux astuces que je note ici pour ne pas les oublier.

Taille des fichiers

Certains fichiers PowerPoint ont une fâcheuse tendance à l'embonpoint. Microsoft donne quelques astuces, notamment en ce qui concerne le rééchantillonnage des images. Cependant, il arrive que des objets d'aspect anodin soient énormes... Mais lesquels ? L'outil SizeMe permet de générer un rapport exhaustif sur un fichier PowerPoint, dans lequel la taille de chaque objet est indiquée.

Tracé de courbes de Bézier

J'ai longtemps ignoré l'existence d'une méthode de tracé de courbes de Bézier dans Office. En réalité, l'outil disponible est très complet, et depuis longtemps (au moins Office 2003).

Lire la suite...

Clavier français sur la couche MS-DOS de Windows XP

J'ai eu envie de faire fonctionner Turbo Pascal 7 sur mon laptop (ah, nostalgie !). Borland a judicieusement laissé ses vieux compilos à disposition, libres de droit (Turbo Pascal peut par exemple se télécharger sur developpez.com).

Cette version de TP7 fonctionne très bien sur Windows XP, y compris Windows XP lancé sous Parallels sur un Mac. Le seul problème, c'est que par défaut, la couche d'émulation de MS-DOS fonctionne avec un clavier configuré en QWERTY. À l'époque de MS-DOS, nous aurions modifié le fichier AUTOEXEC.BAT pour y ajouter un KEYB FR ou KEYBFR... Mais comment faire sous XP ?

Il faut éditer le fichier C:\WINDOWS\SYSTEM32\AUTOEXEC.NT, et y ajouter la ligne :

KB16 FR

Bien entendu, cela configure un clavier de PC, donc pour les utilisateurs de Mac, il reste quelques touches mal placées. Mais l'essentiel est sauf !

Améliorer l'ergonomie d'Adobe Reader

Les astuces suivantes sont a priori valables quelle que soit la plate-forme.

Désactiver le plugin Adobe Reader du navigateur web

Je trouve extrêmement désagréable de voir les PDF s'ouvrir dans une fenêtre de navigateur. Non seulement ça fait ramer, voire planter, le navigateur, mais ça m'embête qu'ils viennent remplacer le texte des pages web.

⇒ Solution pour Firefox : Outils > Modules complémentaires > Plugins > Adobe Acrobat > Désactiver

Désactiver les plugins d'Adobe Reader qui ralentissent son démarrage

Adobe Reader utilise une foule de plugins qui sont en général inutiles, mais allongent grandement son démarrage.

⇒ Solution : Les plugins sont les fichiers .api du répertoire plug_ins du logiciel (avec éventuellement des fichiers de localisation au même nom, avec une extension du type .FRA). Il suffit de les déplacer dans optional pour s'en débarrasser. Personnellement, j'ai tout déplacé, y compris les répertoires, pour ne garder que EScript (ECMAscript) et Search (recherche dans les documents).

Éduquer l'outil Main

Dans les anciennes versions du logiciel, l'outil Main était l'outil par défaut ; il permettait très simplement de naviguer dans les documents. Dans les nouvelles versions, on a affaire à un outil hybride qui sait aussi sélectionner du texte. Pire, il apparaît parfois une « flèche vers le bas » sur le curseur. C'est alors la catastrophe : un clic et Reader zoome à fond, ou fait défiler le document de façon erratique.

⇒ Solution : Pour avoir un outil Main qui marche, juste marche :

  • pour l'avoir sous les yeux : clic droit sur la barre d'outils > Ajouter des outils > cocher l'outil Main, et éventuellement l'outil Sélection pour pouvoir continuer à sélectionner du texte après la manip suivante
  • Édition > Préférences > Générales :
    • décocher « Sélectionner du texte avec l'outil Main » (désactive le caractère hybride)
    • décocher « Lire des articles avec l'outil Main » (supprime le comportement erratique lorsque la flèche est affichée)
    • cocher éventuellement « Activer le zoom de la molette de la souris avec l'outil Main » pour pouvoir zoomer à la molette (pratique)

Des hackers à la bidouillabilité

Je viens de lire le livre Hackers, heroes of the computer revolution de Steven Levy. Ce bouquin, qui date de 1984, comporte quatre parties :

  1. True hackers : au laboratoire d'intelligence artificielle du MIT, à la fin des années 1950 et pendant les années 1960, les passionés de trains électriques et de réseau téléphonique découvrent l'informatique.
  2. Hardware Hackers : dans les années 1970, la Californie passe du mouvement hippie aux premiers ordinateurs personnels, et notamment l'Altair et l'Apple II.
  3. Game Hackers : au début des années 1980, la nouvelle génération découvre les premiers ordinateurs personnels, et se lance dans la création de jeux vidéos.
  4. The last of true hackers : en 1984, Richard Stallman est dégoûté de voir l'esprit hacker du labo d'IA du MIT se dissoudre dans les dollars et les sources fermées. Il venait à l'époque de lancer le projet GNU et de s'autoproclamer dernier des hackers.

Ce livre est passionnant, bien que passablement américanocentré : l'auteur semble n'être que vaguement conscient qu'il existe des contrées au-delà des États-Unis. Mais la lecture de hackers mène à diverses réflexions sur le monde d'aujourd'hui.

Lire la suite...

Welle:Erdball

Je viens de découvrir Welle:Erdball, un groupe allemand de musique électronique, dans la lignée de Kraftwerk. C'est assez sympa, d'autant que ce groupe est geekisant au point d'utiliser le générateur de son MOS Technology 6851 (« Sound Interface Device ») qui équipait le Commodore 64...

Quelques morceaux caractéristiques : Lass uns ein Computer sein, Ich bin nich von dieser Welt, Ich bin aus Plastik, Monoton und minimal.

Déplacer le disque dur principal d'une machine Debian, facile ?

C'est ce que je croyais...

On a dû changer de bus et/ou d'emplacement le disque root d'un serveur ? Qu'à cela ne tienne, on modifie le disque de boot dans le BIOS, on édite les options de grub au démarrage, puis une fois le système booté on va dans /boot/grub/menu.lst pour rendre les changements définitifs. Il y a alors deux lignes par noyau à changer, du type :

root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-6-486 root=/dev/hda1 ro

À chaque fois, il convient de mettre la bonne partition : ici hd0,0 ou /dev/hda1, selon la convention choisie.

Bien, bien. On reboote la machine, pour valider la chose. Elle boote comme un charme, pas de problème. On va donc la remettre à son emplacement de « production », au hasard au fond d'un placard, sans clavier ni écran bien entendu. Encore un boot, tout se passe bien, on en profite pour appliquer les dernières mises à jour, puis la machine vit sa vie.

Un jour, la machine reboote pour une raison quelconque, et là, perte de contact réseau ! Bien qu'elle soit headless, on se rend vite compte que Debian n'a pas booté. On l'extrait de son placard, on la connecte à un écran et un clavier, et là stupeur, on constate que grub cherche à booter sur l'ancien emplacement de la partition racine... À se taper la tête contre les murs.

Explication

Parmi les mises à jour effectuées, il y avait eu une mise à jour du noyau. Or lors des mises à jour du noyau, les sections par défaut de menu.lst (celles qui sont repérées par les BEGIN/END AUTOMAGIC KERNELS LIST) sont écrasées par un script qui s'appelle update-grub. Les modifications faites à la main sont donc perdues. Il ne faut donc pas faire comme expliqué ci-dessus sous Debian, mais au contraire, modifier directement les paramètres qui sont utilisés par update-grub. Ces paramètres sont donnés directement dans le fichier menu.lst, sous forme de commentaires spéciaux. Il y en a deux qui nous intéressent :

# kopt=root=/dev/hda1 ro 
# groot=(hd0,0)

Ce sont donc ces deux lignes qu'il faut modifier, puis pour appliquer les modifications aux lignes « réelles » du fichier de configuration, il suffit d'appeler update-grub.

- page 1 de 4

Valid HTML5? © Christophe Jacquet.
Propulsé par DotClear.