Relis-toi avant de réserver, bordel de chiottes !

Je viens de me rendre compte que je me suis trompé de jour dans une réservation pour un vol intérieur liant Sapporo à Sendai. Du coup, je dois revoir mon plan parfait de la boucle du nord qui m’a pris trois jours à calculer…

Je me soule, c’est chaud. Jusqu’à présent, je faisais hyper gaffe sur tout. Et comme par hasard, j’étais pressé parce que je devais sortir, et je n’ai pas bien regardé la date. Et bien sûr, ce n’est pas déplaçable ni remboursable.

Bon. Ne cédons pas à la panique. Ne prenons pas de nouveau billet, juste pour conserver le circuit parfait. Envisageons des opportunités.

Déjà, sacrifions un jour de visite de Sapporo. Il me restera donc deux demi-journées pour en profiter (réparties sur deux jours). Je pouvais aussi sacrifier Hakodate, mais cette ville a l’air trop mignonne pour que je l’ignore. Ça complique un peu la gestion de la valise, mais bon, on va essayer de se trouver un coin locker pour la laisser à la gare Shin-Hakodate, et ça devrait aller.

La question que je me pose maintenant est : comment vais-je occuper cette journée supplémentaire à Sendai ? Regardons…

Il y a apparemment le mausolée de Date Masamune, un personnage historique d’importance, fondateur de Sendai. J’ai déjà entendu de nom, cela peut valoir le coup d’y jeter un œil.

Il y a aussi une boucle touristique sous la forme d’un bus à l’allure trop cool, le Loople Sendai. Il fait le tour des sites touristiques de Sendai, ce qui est très cool !

Regardez-les comme elles sont heureuses de voir ce bus old school. Je les comprends ! – Photo prise depuis loople-sendai.jp (© Copyright loople-sendai.jp)

Ça peut être pas mal de l’utiliser pour joindre les points importants à visiter. En plus, il y a un super plan fourni par la compagnie !

La vache ! Il est génial ce plan ! Cette compagnie de transports déchire ! – Infographie prise depuis loople-sendai.jp (© Copyright loople-sendai.jp)

Il ne me reste plus qu’à potasser cette carte, et j’aurai de quoi occuper un jour… OMG. Je viens de tomber sur cette page :

https://loople-sendai.jp/en/modelcourse

Je ne sais pas si vous avez interprété ça de la même façon que moi. Mais ce site est tourist-mega-friendly ! Des suggestions de parcours en fonction du profil de visiteur, avec un temps de parcours estimé ! Rien qu’à cause de ça, je leur décerne la palme de ville la plus sympa à visiter !

Et puis s’il me reste du temps, j’irai faire un tour dans les centres commerciaux et le Yodobashi Camera, à la recherche de bouffe, de jeux, et de whatever.

Bon. Avec tout ça, je pense que cette partie du voyage est sauvée. Faut juste que je ne me trompe pas dans la réservation d’hôtel. N’EST-CE PAS ?!

Équipement imperméable pour le Japon

Mon article précédent mentionnait les bonnes pluies que je m’étais prises durant la saison printanière 2023 au Japon.

Depuis quelques jours, je me suis donc intéressé aux vêtements que je pourrais porter pour éviter d’être mouillé. Je me souviens que le premier jour, j’avais déjà mes baskets Asics imbibées d’eau. C’était horrible ! Mais j’avais eu cette lucidité inhabituelle qui m’avait fait prendre une paire de chaussures supplémentaire dans mes valises, des Skechers, qui m’ont fait le reste du voyage. C’était d’ailleurs la première fois que je les portais autant, et j’ai été conquis par leur performance waterproof et leur robustesse (ville et rando en terrain un peu escarpé).

Deux paires de chaussures de sport sur un sol en bois, l'une noire avec des détails blancs, l'autre entièrement noire.
Mes Asics qui avaient pris la grosse douche les deux premiers jours, et les Skechers qui ont terminé le voyage. Photo de 2026. Je les porte encore !

J’avais également dû acheter un parapluie sur place, car celui que j’avais emporté, un C&A acheté pas cher un ou deux ans plus tôt (Je me souviens l’avoir acheté pour aller voir mon pote Guillaume qui habite à 400 km de chez moi ; ce même Guillaume avec qui j’allais voyager plus tard au Japon ! La coïncidence est incroyable quand j’y pense.) commençait à rouiller du fait de l’humidité persistante. J’étais loin d’imaginer que c’était possible. Par conséquent, je m’en suis procuré un dans un konbini. Malheureusement pas le modèle transparent, parce que je craignais que ça ne rentre pas dans la valise !

Gros plan sur le mécanisme d'un parapluie tenu par une main, montrant les baleines et le support central.
La rouille s’est installée au niveau des articulations du parapluie.

Bref, avec toute cette expérience, me voici devant un défi : m’équiper pour mieux affronter la pluie.

Aux pieds, j’avais le souvenir de la pluie qui rentrait par l’ouverture des chaussures et qui me mouillait le bas du pantalon. Ce serait donc pertinent d’opter pour des guêtres. C’est le genre d’accessoire qu’on se réserve habituellement pour éviter la neige dans les bottines. Mais ça fonctionne aussi pour la pluie, évidemment.

Cependant, mes Skechers ne sont pas compatibles avec ces guêtres. Ces dernières nécessitent un passage sous la semelle pour faire passer l’attache, et mes Skechers sont totalement plats en-dessous. Je dois donc opter pour d’autres chaussures qui permettent ce passage, imperméables, et avec une adhérence au sol pour m’autoriser à quelques sorties en terrain glissant. Ce dernier critère a son importance car je vais cette fois m’aventurer à Hokkaido, où il n’est pas exclu qu’il neige encore en Avril ! Mais attention, je ne veux pas de bottes. C’est beaucoup trop contraignant niveau place dans la valise, et possiblement trop chaud quand je serai dans le sud. J’ai donc trouvé le bon compromis dans le modèle Colorado Sneakers Low de CAT.


Le bas des jambes est protégé. Que faire pour ce qui se trouve plus haut ?

En bon voyageur, j’avais opté précédemment pour une stratégie en oignon, avec un gilet et un manteau, pour parer à différentes situations, accompagnés d’un parapluie. Cela s’était révélé plutôt efficace, pourvu que le parapluie tienne. J’ai envisagé d’emporter mon beau ciré jaune à la place du manteau (souvenir acheté après un voyage en Bretagne), mais il est un peu plus lourd, encombrant, et généralement moins confortable à cause de sa robustesse. Non, vraiment, la stratégie en oignon était vraiment optimale.

Il restait néanmoins la zone des cuisses qui pouvait mouiller quand ça souffle, car mon manteau ne descend pas aussi bas.

Donc cette fois, je vais emporter un poncho de pluie. Il s’agit d’une toile synthétique imperméabilisée qu’on porte au-dessus de tout. C’est léger, ça ne prend pas trop de place une fois plié correctement. Je concède que ce n’est pas très élégant ni très pratique à enfiler et retirer rapidement. Je vais donc réserver cela à mes quelques excursions prolongées en extérieur (protège également un éventuel sac à dos).

Pour complément d’info, il ne faut pas prendre de poncho spécial vélo, qui ont une coupe qui donne moins d’aisance dans le mouvement des bras. J’avais acheté un Vaude. Tissu 100% polyamide, au toucher plus qualitatif que celui que je vais emporter au Japon, un Andake (polyester) (qui fera le boulot, mais qui pue au déballage ; j’ai dû le laver avec une lessive spéciale imperméables et le désodoriser). Mais il protège moins bien les bras hors session de vélo, et il est un peu moins pratique en cas de vent, car on est censés attacher ce poncho au guidon. Il aurait fallu par exemple une ceinture pour fixer le poncho au niveau de la taille pour que ce soit viable un minimum.

Voici donc ce que ça donne, une fois le tout porté.

Chaussures + guêtres + bas du poncho de pluie = aucun vêtement exposé !

J’ai testé la performance du tout sous la douche. J’étais quasi-totalement au sec ! Il n’y avait qu’une légère infiltration d’eau au niveau du bas des lacets des chaussures, mais je pense que ça ira sous des conditions normales de pluie.

Bref. Tout ceci m’a amusé à préparer.

Tout ce que j’ai acheté, ce sont des choses que je pourrai évidemment utiliser longtemps après le voyage, comme en témoignent mes chaussures toujours là 4 ans après leur achat.

À propos d’entretien, et en aparté de cet article, je me suis également procuré des produits d’entretien, notamment pour nettoyer les chaussures et rénover l’imperméabilité des imperméables. J’espère bien faire durer le tout le maximum de temps…

La voiture au Japon au printemps ?

Alors que j’étais en train d’étudier le sujet de la location de voiture pour mon voyage au Japon, une question m’est apparue : est-ce que je dois louer une voiture équipée de pneus hiver ?

Mon voyage de 2023, qui s’est également déroulé en mars et avril, m’a toujours gardé dans des zones de température agréables, malgré les grosses pluies que je me suis mangées. Mais pour ce nouveau voyage, j’ai envie de m’aventurer dans d’autres contrées, notamment les alpes japonaises et Hokkaido.

Mes recherches montrent que ces endroits seront probablement enneigés, même en avril ! Voilà qui est embêtant. Le fait de rouler en pneus hiver ou dans des conditions dégradées ne m’effraie pas. Par contre, la possibilité d’avoir des routes fermées ou impraticables au point de nécessiter des chaines, ça, c’est rédhibitoire quand on veut optimiser son temps !

Je dois me résoudre à limiter l’usage de la voiture, en évitant les zones à risque. Cela me donne donc une orientation sur comment je vais me déplacer. Je pensais pouvoir tout faire en voiture, mais voilà que le train et les transports en commun font leur grand retour dans mon plan ! Et je dois avouer que j’aime bien le train, et si ça pouvait me faire traverser des paysages enneigés de montagne, ça me plairait beaucoup…

Japon 2026

J’ai pris un billet d’avion de la compagnie Japan Airlines en fin d’année 2025, pour mars-avril 2026. Un direct vers Haneda. C’était un choix que je justifiais par l’envie d’entrer plus rapidement dans le voyage que lors de ma précédente excursion nipponne en 2023 (dont je parlerai surement un jour sur ce blog !) où j’avais fait une correspondance à Taipei, avec pour aéroport Narita. Le prix de ce nouveau billet, environ 1200 euros, était à peine plus élevé que mon billet de l’époque, un aller-retour via EVA Air (une bonne compagnie, soit dit en passant), donc je n’ai pas trop réfléchi.

Alors que j’achetai ce billet, je n’avais aucune idée spécifique d’endroits à visiter. Rien que l’envie d’aller me confronter à l’inconnu m’a insufflé la motivation initiale de revenir dans ce beau pays, avec de nouveaux objectifs, et de nouvelles conditions : j’y serai seul cette fois. (J’étais accompagné la dernière fois de Guillaume, un bon ami.)

Nous sommes le 2 février 2026. Il ne s’est pas passé grand chose entre le moment où j’ai pris ce billet et aujourd’hui. À mon grand regret d’ailleurs. Mais les fêtes de fin d’année, les aléas de santé, les visites chez les amis et la famille, les cours de japonais, ont fait disparaitre le temps libre qui m’aurait été nécessaire pour bien planifier les choses.

Je me retrouve donc dans une configuration où je vais devoir faire les bons choix, et vite.

Il y a déjà plusieurs objectifs que je me suis fixé :

  • Conduire au Japon.
  • Aller du sud (Kyushu) vers le nord (Hokkaido).
  • Faire des expériences uniques, genre fabriquer des choses, aller dans des endroits moins connus.
  • Voir mon pote Josselin.
  • Relater mon voyage sur ce blog. C’est ce que je suis en train de faire. Haha !

Pour le moment, j’ai une carte OpenStreetMap avec quelques points par-ci par-là. Mais c’est bien trop loin de ce que je qualifierai d’un plan de voyage, et ce sera ma tâche principale dans les prochains jours.

Au sujet de la voiture

En attendant, j’ai déjà commencé à potasser pour savoir ce qu’il faut pour conduire une voiture au Japon. Ce qu’il faut savoir, c’est que le permis français ne fonctionne pas là-bas par défaut. Il faut le faire traduire. Pas par n’importe qui, mais par la fédération japonaise de l’automobile, ou JAF.

La procédure en l’an 2026 est à la fois plutôt simple, mais semée d’embûches. Il suffirait de remplir un formulaire sur internet, payer, d’attendre la traduction, et faire imprimer. Mais voici les dites embûches :

  • Le formulaire ne peut se remplir que DEPUIS le Japon. Un VPN ne fonctionne pas non plus ! J’ai tenté avec Proton, mais impossible quand même.
  • La traduction prend un certain temps, et de ce que j’ai compris, il faut faire imprimer cette traduction sous une semaine, dans un konbini. Le timing risque d’être très serré.

Il est également possible de demander à un ami sur place de s’occuper des démarches. Encore faut-il en avoir sur Tokyo…

À cause de cela, je vais devoir trouver des agences qui permettent d’expédier directement en France en avance. C’est un moindre mal… Si je le fais sur place, cela m’obligerait à attendre que la traduction soit faite pour pouvoir louer ; c’est un risque que je ne suis pas prêt à prendre.

À part ces histoires de permis, j’ai aussi commencé à me renseigner sur divers points réglementaires et culturels de l’usage de la route. Comment fonctionne un parking payant, les panneaux, les us et coutumes… Je me suis notamment procuré (ne me demandez pas comment) la version numérique et en anglais du livre proposé par la JAF à destination des conducteurs étrangers. Elle est normalement dispo sur amazon.co.jp, mais ils ont suspendu la commercialisation, et il ne reste que la version papier à 7xx yens… et plus d’une vingtaine d’euros d’expédition ! C’était peut-être même plus, mais le prix m’a tellement choqué que je n’ai pas réfléchi plus longtemps pour me débarrasser de cette idée d’importer le livre physique.

Allez, ce sera tout pour ce soir.

Corriger les dates de création, modification, et autres métadonnées EXIF avec exiftool

Il s’agit d’un petit article pour montrer les commandes nécessaires à la correction de métadonnées de date avec exiftool.

C’est particulièrement intéressant si vous avez téléchargé des fichiers depuis Google Photos, car ce dernier ne définit pas les bonnes métadonnées sur les fichiers. En effet, on se retrouve avec la date de l’export pour la date de création et de modification, ce qui n’aide pas certains gestionnaires pas toujours bien faits à ordonner par date comme on pourrait s’y attendre ; c’est le cas de la vue galerie d’images de pCloud, qui s’appuie sur la date de modification.

Dans mon cas, j’ai des photos et vidéos prises depuis divers appareils, notamment des smartphones que j’ai utilisés sur une période d’une douzaine d’années. Il était donc nécessaire de trouver un moyen de corriger ces métadonnées de façon globale.

Pour cela, il faut installer un outil qui s’appelle exiftool. C’est un outil en ligne de commande compatible linux, Windows et Mac OS. À noter qu’il existe des interfaces basées dessus et des portages (j’ai vu par exemple un portage Android), mais je n’ai pas testé.

Ensuite, il y a deux commandes, une pour les photos, une pour les vidéos. Vous pouvez les lancer depuis le même dossier (c’est-à-dire, un dossier qui a des photos et des vidéos mélangés).

exiftool -overwrite_original "-CreateDate<DateTimeOriginal" "-ModifyDate<DateTimeOriginal" "-FileModifyDate<DateTimeOriginal" "-FileCreateDate<DateTimeOriginal" -if "defined $DateTimeOriginal" -ext jpg -ext jpeg .
exiftool -overwrite_original "-CreateDate<MediaCreateDate" "-ModifyDate<MediaCreateDate" "-FileModifyDate<MediaCreateDate" "-FileCreateDate<MediaCreateDate" -if "defined $MediaCreateDate" -ext mp4 -ext mov -ext ts -ext ls .

Ces commandes lancent dans le répertoire courant des opérations en fonction des extensions de fichier. Pour les photos (ou plus globalement, des images), la commande prend le champ DateTimeOriginal (appelé « Prise de vue » dans Windows) des informations EXIF pour l’assigner à d’autres champs : CreateDate (EXIF), ModifyDate (EXIF), FileCreateDate (OS), FileModifyDate (OS). Pour les vidéos, cela prend en donnée source le champ MediaCreateDate (appelé « Date d’acquisition » dans Windows).

À noter que pour pCloud, c’est FileModifyDate qui importe le plus pour le tri. Mais je pense que c’est plus propre que toutes les dates soient harmonisées.

Aussi, si la donnée source n’existe pas, la commande saute le fichier.

Avec cela, les métadonnées devraient être corrigées.

Encore une dernière info, si vous utilisez pCloud, et possiblement d’autres services de stockage en ligne par synchronisation : vous pourriez avoir à effectuer la modification directement sur le système de fichiers virtuel, et pas sur une éventuelle copie hors-ligne. En effet, il se peut que l’outil de synchronisation fourni par le service de stockage ne prenne pas bien en compte les dates, et les réécrit au moment où c’est envoyé sur le serveur. C’est le cas de pCloud.

En dernier recours, selon le service de stockage, il peut être utile de télécharger, appliquer la modification en local, supprimer du stockage en ligne, puis réuploader, pour que les dates de modification soient bien définies.

Bonus : définir la date en se basant sur le nom du fichier

Parfois, le nom du fichier contient la date qu’on veut assigner. On peut faire une extraction de la date et l’injecter dans exiftool.

La commande qui suit est compatible avec Bash (testé sur Git Bash windows). (PowerShell n’est pas content avec les variables dollar ; c’est pourquoi je recommande Bash.) Veuillez noter que ce n’est pas la seule façon d’obtenir le même résultat ; exiftool est vraiment un outil versatile !

for f in *.jpg *.png; do
  datetime="${f:0:19}"   # IMG_YYYYMMDD_HHMMSS

  exiftool -overwrite_original \
    -DateTimeOriginal="$datetime" \
    -CreateDate="$datetime" \
    -ModifyDate="$datetime" \
    -FileModifyDate="$datetime" \
    -FileCreateDate="$datetime" \
    -d "IMG_%Y%m%d_%H%M%S" \
    "$f"
done

[Drupal] Variable de hauteur de barre d’outils d’administration

Variable CSS pour la hauteur de la barre d’outils d’administration : --drupal-displace-offset-top

Cette variable se met à jour automatiquement grâce au script JS displace.js intégré nativement dans Drupal.

On pourra par exemple utiliser cette valeur pour décaler des éléments pour les éléments ancrés qu’on accède grâce au fragment d’URL (le dièse en fin d’URL). Par exemple :

À noter qu’il existe également d’autres variables sur d’autres dimensions :

Vous pouvez vous référer au fichier displace.js pour plus d’informations.

Drupal : 10+

[Drupal] Perfect views block configuration for multilingual node support

Objectives

  • We want to add on a node page layout a block which uses a field from the currently rendered content (node).
  • We want this block to be translated the same as the currently rendered entity.
  • As a anonymous user, we want it to respect the published settings of the currently rendered entity.
  • As an admin, we want to be able to see this block if the content is unpublished.
  • We want to support cases when a content is not translated. The default Drupal behaviour is to use the default translation.

Configuration

Screenshot
Configuration screenshot.

  • Do not use Published (= Yes) setting.

    Views will remove itself results on which you don’t have permission—unless you have disabled access checks in the Query settings parameter of the view. Also, as an admin, you will still be able to see the block if the content is unpublished.

  • Set Default translation (= True).

    Views will retrieve the default translation, which is the default result when you attempt to go on a node page which has no translation.

  • Set Rendering Language to Interface text language selected for page.

    Views will attempt to translate the content. If no content translation is found, default translation will be used.

  • Contextual filter set to Content: ID with Content ID from URL as default value.
  • Hide block if the view output is empty.

    No need to keep this block if there is no output (or keep it if you need it anyway).

Additional information

  • Tested on Drupal 8.5.5 on simplytest.me.

[Drupal] Custom scrollbars with Overlay Scrollbars library

The road to custom scrollbars

Reminiscing.

I am currently working on a website for a video game reviews project I have had with an old friend of mine (FuuDoh). Obviously, I have switched to Drupal to get a result quicker than what I would get with the PHP only solution I have been working on a few years ago (it was fun though).

One of the main problems I have came across while theming was to give a consistent look across various web browsers (and now devices—mobile and tablets were not as much a concern as nowadays). Bootstrap was not as popular as it is now and it saved a lot of my time for my current project. But it did not fix one of the other problems I am still experiencing today: scrollbars.

I hate how they cannot be themed natively. In an overflow: auto setting, they push all the content by their width when they appear, potentially changing the height of the content; which is not very elegant in my opinion. You cannot change their size, nor their color.

With the big grow in the recent years in the JS scene, we have now good enough JS libraries which gives developers means to achieve better, cross-browser, cross-platform scrollbars.

I have checked a Drupal 8 module, scrollbar, which unfortunately does not work well (or was misconfigured). The bars were not refreshing when the browser window is resized. Maybe I’ll post an issue on the Drupal module tracker, but it does not seem to be the fault of the module. But there was one big drawback with the library used by this module (jScrollPane): the scroll behaviour is not the native browser’s scroll behaviour. You will not get any ease in the scroll animation (or maybe you could have it by configuring the library).

Then I have searched a little and found two candidates:

Both are JS libraries which use native browser’s capabilities to scroll the content; you will not feel anything different between normal scrollbars and those custom ones, which is perfect! The first library is currently (May 2018) used on Twitch.tv. I have not tested it, but it claims to be cross browser. But it also claims that there may be some performance impact when used on the body element. That is why I chose OverlayScrollbars, which is recommended by simplebar in its documentation by the way.

Relieved.

After having spent some time trying to figure out why it did not work, I have finally got it working nicely with the bootstrap+sass theme! The implementation is in fact trivial for a Drupal themer but here are the steps to achieve it.

Steps

  1. Download the OverlayScrollbars library (link to releases) and extract the files to the themes/custom/THEMENAME/libraries/OverlayScrollbars directory (create necessary directories). This OverlayScrollbars folder must contain the css and js directories which came from the zip (remove any wrapping directory).
  2. Create a file named trigger.js at this location: themes/custom/THEMENAME/js/overlayscrollbars/trigger.js
  3. Add this to the file:
  4. The THEMENAME.libraries.yml of your subtheme may look like this (the overlayscrollbars is what we care about):
  5. Add an import directive in the _overrides.scss, right after the other imports (remember, I am using sass; if you use less, you have to adapt it):
  6. Compile the scss.
  7. Add this hook in your THEMENAME.theme:
  8. Rebuild the Drupal cache: drush cr.

Additional information

  • Tested on Drupal 8.5.3.
  • Tested on official standard Bootstrap theme, sass flavor.
  • The original install guide is here: https://kingsora.github.io/OverlayScrollbars/#!overview. You will also get a list of options on the original guide.
  • You can also put the content of the trigger.js file directly into the twig (not tested though); html.html.twig would be a good candidate.

[Drupal] Change CKEditor behaviour for line breaks (br or p)

Here is a little code snippet to be added in a .module file.

Additional Information

  • Instructions made on Drupal 8.5.x.
  • Will break text align buttons in the CKEditor toolbar: Issue on Drupal.org
  • The default behaviour of CKEditor is the following:
    • Enter: inserts a paragraph directly in the WYSIWYG,
    • Shift + Enter: inserts a line break.
  • The new behaviour of CKEditor with the hook will be:
    • Enter: inserts a single line break (br),
    • 2 × Enter: inserts two line breaks which will be converted into a paragraph when rendered.

[Drupal] Make the Search API Page search block appear in Bootstrap markup

When using Search API Page, I needed to theme the search form in the bootstrap structure. The cleanest answer I have found is to add some variables to trigger the bootstrap overrides on the search form.

Additional Information

  • Instructions made on Drupal 8.3.x (probably, haha).