Archives de l’auteur : Fab

MyKanji 0.3

J’ai écrit une petite extension pour Firefox permettant de voir dans une page les kanjis que je n’ai pas encore appris. On peut l’installer depuis cette page (pas encore vérifié par Mozilla), et les sources se trouvent sur GitHub.

Comment cela fonctionne-t-il?

  • Phase 1: installation et configuration
    • installez le module
    • mettez dans le presse-papier un texte contenant les kanjis que vous connaissez. Par exemple en faisant un export texte d’un paquet Anki, et en copiant le contenu de ce fichier texte.
    • cliquez sur le bouton «文» dans la barre d’outils.
    • dans la zone de texte, coller le texte que vous avez préparé
  • Phase 2: utilisation
    • dans une page web, sélectionnez du texte ou toute la page (control-a)
    • ouvrez le menu contextuel (clic droit) et sélectionnez «Mes Kanjis»
    • vous obtiendrez la liste des kanjis inconnus, avec leur niveau

Quelques mots « français » traduits en japonais

Quelques mots français traduits en japonais (surprise!):

  • kimono (pas celui de judo, l’habit traditionnel) ⇒ wafuku (和服, «vêtement japonais»)
  • saké ⇒ nihonshu (日本酒); en japonais sake est un terme générique pour les boissons alcoolisées
  • hara-kiriseppuku (切腹)
  • sumo (le lutteur, pas le sport) ⇒ rikishi (力士)
  • ju-jitsujūjutsu (柔術)

 

Cassé et réparé mon clavier Typematrix

En attrapant mal mon clavier, deux touches de celui-ci ont jouées les filles de l’air, et l’articulation (entre la touche et le boîtier) d’une d’entre elle s’est malencontreusement cassée… Heureusement, j’avais conservé mon ancien clavier (tombé en panne et gracieusement remplacé par Typematrix). La procédure pour démonter et remonter les touches s’est avérée assez simple. Il a juste fallu être délicat pour que les pièces se déclipsent (et qu’elles ne se brisent pas en deux). Une pince à épiler m’a été utile.

Microbenchmark: Expat outperforms Java and libxml2 in SAX parsing

I needed an XML parser for my tests with Rust (parsing a gigantic 2Go Wikivoyage XML dump) and there is no native one. So I would need a wrapper around a C implementation. At first, I used libxml2, because it has a very appealing name it has a very convenient XmlTextReader API where you are controlling the parsing loop (no callback like in SAX).

I wondered how it compared to the StAX API of Java, and made a simplistic test printing (to /dev/null) the names of all the nodes. And surprise, StAX was way faster:

  • the StAX (openjdk-7, Ubuntu 14.04, amd64)
    • 35 seconds
    • Memory usage: 30 Mo
  • XmlTextReader API of libxml2 (2.9.1), g++ 4.8.2
    • 50 seconds
    • 3.5 Mo

Then I made tests with SAX, comparing the default Java implementation with libxml2 and finally also libexpat 2.1:

  • Java: 30s (39Mo)
  • libxml2: 34s (2Mo)
  • libexpat: 21s (180ko)

Conclusions:

  • the Java implementation seems quite good (at least in this particular scenario)
  • libexpat is quite fast, but it’s SAX and not pull-parsing (which is very convenient)
  • if you are processing huge XML files, forget about libxml2

cgroups script for the current session

In Linux, cgroups (a kernel feature) allows to limit the resources (cpu, memory…) accessible to a group of processes. I have written a little bash script that will either:

  • create some groups for the current user session and assign some restrictions. No need to be root or to modify a global configuration file. Call it when your desktop session starts (for example by putting an entry in «~/.kde/Autostart»). Edit the script to create your own groups.
  • start a process in one of theses groups

The main reason was that I encountered a bug with Firefox and Google+, with triggered infinite memory allocation, which freezes my machine for a few minutes (because of the trashing). I hope that it will allow me to kill the process/close the tabs if it happens again.
Continuer la lecture