山中YamanakaYamanaka

Trip to Yamanaka, group photo

のweb-siteで山中のバスツアーの写真が有ります。

There are photos of the bus tour in Yamanaka in the website.

Il y a des photos du tour en bus à Yamanaka sur le site d’Association d’Amitié Internationale de Tatsunokuchi.

この旅行10月でしました。川の側で短い散歩して温泉に入りました。写真は川の橋前に撮られました。マティアスはどこか?高解像度写真はギャラリーで有ります。

This small trip took place in October, we had a short walk on the side of the river and then went to the baths. The photograph was taken in front of a bridge over the river. Where is Matthias? High-resolution photographs are available in the gallery.

Ce petit voyage avait eu lieu en Octobre, nous avons faite une très courte balade le long de la rivière, pour ensuite nous rendre aux bains. La photo ci-contre, a été prise sur un pont sur la rivière en question. Où se trouve Matthias? Des photos haute-résolution sont accessibles dans la gallerie.

Flattr this!

About XML, bundles and hard-links

Increasingly, file-formats are not defined on single files, but on set of files usually bound together using an XML digest. One typical example of such file format is the OpenDocument format supported by OpenOffice. While Open-Office uses a Zip archive to bundle together the different files, many programs on Mac OS X use the notion of Bundle. A bundle is technically a directory with a special bit set that tells the file explorer to treat the directory as a single file.

While such files are less compact that a zip archive, the have the advantage of having all the logical entities (files) living directly on the file-system. This means in particular that you can use file-system tools like hard-links. One typical use of this trick I use to fill in forms. Many forms are distributed as PDF files, but without using PDF’s form functionality. They are just a page description of the form. To fill them in clearly, I typically import the PDF as a background image into Omnigraffle, and then add the text for the different fields. I like to keep a copy of the filled-in form, but also the clean form. What I do is I keep the Omnigraffle document and create a hard-link to the PDF file embedded inside the bundle outside it. This way I have two files, a pdf document (the form), and an omnigraffle document (the filled-in form), but the disk space is only used once.

The resulting files look something like this. Notice that the PDF file has a link count of two. In this particular the saving is negligible, but some PDF are quite large.

Perm. Lks Owner Group Flags Size Modification Name
dr-x—— 5 wiesmann wiesmann uchg 170B Nov 16 16:36 Departure Form.graffle
-r——– 2 wiesmann wiesmann uchg 9K Nov 21 13:37 Departure Form.pdf

The content of the bundle is the following:

Perm. Lks Owner Group Flags Size Modification Name
-r——– 1 wiesmann wiesmann 0B Nov 16 16:36 Icon
-r——– 1 wiesmann wiesmann 49K Nov 16 16:36 data.plist
-r——– 2 wiesmann wiesmann 23K Nov 16 16:36 image1.pdf

This trick can be used for all file-formats that rely on bundles, in particular Keynote files.

Flattr this!

À propos des podcasts…

Même si je suis immergé dans la culture informatique, je ne suis pas du genre à me jeter sur la dernière nouveauté. De fait, je suis plutôt sceptique des nouvelles tendances. J’ai un blog, mais je m’y suis mis plutôt tard. Je joue à des jeux vidéos, mais ce ne sont de loin pas des nouveautés (ce qui fait qu’utiliser principalement un Mac n’est pas réellement un problème). Tout ça pour vous parler aujourd’hui des podcasts.

Les podcasts ne sont techniquement que des fichiers audio, généralement au format MP3, accessible sur le web et décrit par un fichier, typiquement du XML. Quand la plupart des gens parlent de podcasts, ils ne pensent pas tellement à ça, mais plutôt l’équivalent audio des blogs. L’avantage du format audio, c’est que le contenu du podcast peut-être transféré sur un baladeur numérique, par exemple un iPod, et écouté en déplacement. Beaucoup de choses ont été dites au sujet des podcast, allant du fait que c’est une simple lubie sans succès jusqu’à une révolution complète qui allait remplacer la radio. Je ne peux naturellement pas juger, mais je peux tout au moins parler de la manière dont j’utilise les podcasts.

Si je suis abonné à plusieurs podcasts, force m’est de constater qu’aucun n’est réellement l’équivalent audio d’un blog. Les blogs bien écrits, réguliers et intéressants sont rares. Un podcast devrait ajouter à ces qualités un bon enregistrement et une voix agréable. Je n’ai jamais trouvé quoi que ce soit de tel. J’ai bien essayé quelques podcasts techniques, mais ils ont tendance à essayer de faire plus humain, ce qui fait qu’au lieu de parler de sujet pointus, on se retrouve avec des dicussion sur la vie des programmeurs. Je ne trouve pas ça très intéressant. De fait, les podcasts que j’écoute entre dans deux catégories: les émissions de radio transformées au format podcast et les podcasts musicaux.

La première catégorie est évidente, certaines stations radio mettent à disposition certaines émissions sous forme de podcast. C’est le cas par exemple de la radio suisse qui met a disposition une partie de ses programmes, j’aime bien le son du jour et j’écoute irrégulièrement le micro-sillon. Une autre émission que j’écoute en podcast (la première, en fait), est la revue de cinéma de , qui présente de manière irrévérencieuse, mais souvent judicieuse les films de la semaine.

La seconde catégorie comporte typiquement des programmes musicaux qui présentent des artistes nouveaux ou des soirées. Dans cette catégorie, je recommande ainsi que Chai Shop, pour de bon programmes de musique electronique et de goa/trance respectivement.

De fait, mon principal regret, c’est que le format n’est pas encore très répandu. Par exemple, ce serait très agréable si les fichiers des ou du était accessibles en podcast. Cela m’éviterais de devoir visiter ces sites régulièrement pour voir s’il y a un nouvel épisode (à propos, il y a un nouvel épisode).

Flattr this!

Le feuilleton des ours…

Lors de mon voyage au Japon, de nombreuses choses ont été différentes de ce que j’attendais. Une de ces choses était la structure de la campagne. En Suisse, il y a toute une gradation entre la zone cultivée et la forêt profonde pour peu qu’une telle chose existe réellement. Ici la transition est brutale, il y a les rizières, qui sont des structures complètement artificielles et qui modifient fondamentalement le paysage, et la forête, avec des animaux sauvages comme des ou des singes.

Les ours sont ici un gros problème. En automne, affamés, ils viennent près des habitations chercher à manger. S’ils ne s’attaque pas aux humains, ils ont la réputation d’être facilement surpris et effarouchés et dès lors agressifs. Surtout dans la cas d’une mère avec ses petits. Durant tout l’été, nous avons dons reçu des mails régulier que les ours étaient vu par-ci par-là, y compris sur le parking de l’université ou derrière le petit restaurant à proximité. Régulièrement la police débarque et plus rarement réussit à faire quelque chose. Les instructions officielles dans ce cas là sont de se claquemurer et d’appeller la police si on voit quelque chose de suspect.

Sans tenter le diable, je n’en ai pas moins renoncé à mes promenades, surtout par beau temps. De fait la plupart des randonneurs ici se déplacent avec des clochettes afin d’alerter les ours. J’ai toujours pensé que le risque était modéré, vu que ou que j’aille, je croisait régulièrement des petites vieilles japonaises en train de chercher quelques herbes de montagne. Hier, aux nouvelles, j’ai appris que l’une d’elle s’est fait blesser par un ours qui semble-t-il mangeait des khakis. Je n’ai pas compris comment ça s’est passé exactement, mais cela a naturellement relancé les mails d’avertissements des autorités.

En attendant, je vais demain avec un étudiant aller manger de la viande d’ours, je me réjouis…

Flattr this!

Les instructions de sécurité en tant que danse…

Les instructions de sécurité dans les avions sont quelque chose auquel les gens qui volent souvent ont pris l’habitude. J’ai toujours trouvé ces explications largement abstraites – autant que je sache, aucun avion n’a fait un atterissage d’urgence sur l’eau qui ait impliqué gilets et radeaux de secours dans les dix dernières années. L’évolution logique de ces explications est devenir un rituel abstrait, dont le sens échappe au commun des mortels, un peu comme le . Visiblement, je ne suis pas le seul à avoir eu cette idée, ce blog contient une série de dessins magnifiques illustrant les instructions de sécurité comme une danse.

Flattr this!

Les odeurs de l’hiver…

Maison Japonaise en Bois à Kanazawa

Je suis venu la première fois au Japon durant le mois de Novembre, de ce fait, les odeurs que j’associe le plus à ce pays sont celles de cette saison. Dans les endroits ou l’on trouve encore de vieilles maison, c’est un mélange de vieux bois légèrement humide, d’encens et du kérosène utilisé pour les réchauds. À Tsurugi, ce mélange à cela l’odeur du bois de Sugi des scieries. Cela me rappelle toujours l’odeur de l’appartement de ma grand-mère, qui était située au dessus d’un atelier de menuiserie. Nous passions souvent les vacances chez elle, mon frère et moi, lorsque nous étions gamins…

Flattr this!

お祝いCelebrationCélébration

少林寺拳法の試験できたので先生たちとお祝いしました。 辰口の一八で飲みに行きました。拳法のクラブのブログで写真が有ります

After suceeding the shōlinji kempō exam, we celebrated with the teachers. We went to have a drink to Tatsunokuchi’s ipacchi. There are photos on the blog of the kempō club.

Après avoir passé l’examen de shōlinji kempō, nous avons célébré l’évènement avec les enseignants. Nous somme aller boire un verre chez Ipachi, à Tatsunokuchi. Le blog du club de kempō contient des photos.

Flattr this!

long ratoi(const char* string) { if (NULL!=string) { const char c = *string ; const char *tail = ++string ; if ('-' == c) { return -1 * ratoi(tail) ; } else if (('+' == c) || isspace(c)) { return ratoi(tail); } else if (isdigit(c)) { long value = c - '0' ; if (isdigit(*(tail))) { // rest of string is number const long recurse = ratoi(tail) ; const int digits = (int) log10((double) recurse) ; // we shift to match the tail's result for(int i=0;i

Recursive atoi

One site I visit often is the , a web site discussing really bad programming (as seen in real everyday life). Today’s thread is about a bad implementation of the string to interger function atoi. A friend of mine dared me to do a recursive implementation of atoi. Doing this would be very stupid and innefficient, so it is really an exercice in futility. Of course I could not resist. So here it is, this is not nice code, simply something I whipped out to show it is possible.

long ratoi(const char* string) {
    if (NULL!=string) {
	const char c = *string ; 
	const char *tail = ++string ; 
	if ('-' == c) {
	    return -1 * ratoi(tail) ; 
	} else if (('+' == c) || isspace(c)) {
	    return ratoi(tail); 
	} else if (isdigit(c)) {
	    long value = c - '0' ; 
	    if (isdigit(*(tail))) { // rest of string is number 
		const long recurse = ratoi(tail) ; 
		const int digits = (int) log10((double) recurse) ; 
		// we shift to match the tail's result
		for(int i=0;i<digits+1;i++) {  
		    value*=10 ; 
		} // for 
		return value + recurse ; 
	    } else { 
		return value ; 
	    } 
	} // isdigit
    } // not null 
    return 0 ; 
} // ratoi

Flattr this!

Le chemin du retour…

Certains d’entre vous le savent déjà, mon séjour au Japon tire à sa fin, je vais partir d’ici courant décembre pour revenir en Suisse ou je devrais m’établir à Zürich ou je travaillerais pour une compagnie informatique spécialisée dans la recherche sur internet. Je suis à présent très occupé, entre les préparatifs et les démarches pour mon départ, et toutes les choses que je dois finir pour mon projet ici. En plus, de nombreuses personnes, japonaises ou non, veulent encore me voir avant mon départ, ce qui demande aussi du temps (pas que je m’en plaigne). Bref, je ne peux pas poster aussi souvent sur ce blog et je m’en excuse.

Flattr this!

Tadeusz faisant un kick

Photo de l’examen de Kempō

Tadeusz faisant un kick

Le site web de mon club de Kempō contenait une photo (en basse résolution) de mon passage de ceinture.

Sur la photo, je suis en train de donner un coup de pied à mon collègue Tadeusz, nous portons des protections pour le thorax, selon les exercices, il y a aussi des protections pour la tête.

D’autres photos sont accessibles sur le blog d’un collègue du club de kempō

Flattr this!