Et Médoc utilise maintenant Tesseract 3.
Il faudra peut-être penser à paralléliser tout ça, parce que pour l'instant, le moins que l'on puisse dire est que l'analyse n'est pas particulièrement fulgurante. Mais les résultats sont là.
vendredi 24 février 2012
C'était trivial...
Labels: médoc
Tesseract 3.02 dans les bacs!
Yay, enfin, Tesseract 3 est disponible dans Wheezy!
Comme prévu, c'est le jour et la nuit en comparaison avec l'interface précédente. En plus des points exposés dans le précédent post sur le sujet, il est bon de rappeler également que Tesseract 3 renvoie un résultat en UTF8. J'ai bien l'intention de faire quelques tests avec le mode Mandarin et le mode équations, que je me ferai un plaisir de partager ici.
jeudi 16 février 2012
Danse et algorithmique
Un quick-sort par des danseurs hongrois. C'est bien plus clair comme cela, non?
Labels: humeur
mardi 14 février 2012
Tesseract 3.02 se rapproche de Wheezy
Voilà un paquet que j'attends avec impatience. Tesseract 3.0 a atterri dans Sid il y a 8 jours, et si tout va bien, devrait débarquer dans Wheezy très bientôt.
Au menu:
- Une API plus propre, et thread safe, ce qui permettra l'analyse des pages en parallèle (à 30 secondes par page, c'est plutôt utile!)
- Et surtout, une meilleure gestion des erreurs, qui permettra de renvoyer un joli message plutôt que de crasher et laisser le développeur découvrir où il s'est trompé. De plus, certains crashs "incompréhensibles" devraient être résolus.
J'ai hâte d'intégrer tout cela à Médoc.
dimanche 12 février 2012
Debug
Je viens de passer une semaine à débugger. Dans une codebase de 1.5 millions de lignes, un serveur qui corrompt les données, au bout d'un moment, lorsque deux clients y sont connectés et font suffisamment de requêtes.
Ce cas de figure est le pire qui se présente: mes tests unitaires passent, mes tests simples passent, mais mes tests pour stresser le système foirent en beauté, mais de manière suffisamment aléatoire pour que je ne puisse pas arrêter le débuggeur au moment où le problème surgit. Je ne peux qu'ajouter de plus en plus de lignes de logs au moment où le problème survient, en espérant enfin comprendre pourquoi.
De jour en jour, j'ai réussi à cerner le problème: en détectant la corruption de plus en plus près de sa cause, j'ai réussi à m'approcher suffisamment pour voir exactement le cheminement de l'exécution, et trouver le coupable.
Comme beaucoup de bugs de ce genre, c'était tout bête, planqué dans une vieille partie de code.
En voici le pseudocode:
template<typename T>
size_t hash(T input)
{
static int buffer[4];
calculate_hash((char *)&input, sizeof(input), buffer);
return *((size_t *)buffer);
}
L'on créé un buffer de travail, l'on appelle la fonction calculate_hash en lui passant l'entrée et le buffer de travail, et l'on retourne le début du buffer.
Dans le principe, cela marche très bien. Sauf que regardez d'un peu plus près le mot-clé "static". Le développeur était un peu endormi ce jour là, et l'a mis par erreur. Dans un programme non concurrent, comme par exemple un test unitaire, ça n'a pas beaucoup de conséquences. Peut-être rend-il le code un peu moins efficace, puisque sinon l'on travaillerait sur la pile, laquelle a de fortes chances d'être dans les caches du processeur. Par contre, dans un programme concurrent, c'est la catastrophe: si deux threads appellent la fonction au même moment, le buffer sera partagé, et les résultats imprédictibles. En l’occurrence, mes tables de hachage se retrouvaient à me renvoyer, une fois de temps en temps, une valeur incorrecte, quand le programme était très occupé.
Mot-clé retiré. Tout fonctionne.
Labels: c++, humeur, programmation
dimanche 5 février 2012
Emacs - Changer la fonte
À chaque semaine et à chaque mise à jour Debian, son lot d'aventures. Aujourd'hui, c'est Emacs qui change sa fonte sans prévenir. C'est l'opportunité d'en reprendre une lisible et belle. Après quelques tentatives à coups de "Options" => "Set Default Font", mon choix se porte sur DejaVu Sans Mono, très lisible, monospace (impératif pour écrire du code), et avec un zéro bien différentié du o majuscule.
Un petit
(set-default-font "DejaVu Sans Mono 10")dans mon .emacs plus tard, et tout est réparé.
Skyrim toujours pas en promo
J'ai raté les promos du début de l'année sur Steam, et j'en suis fort marri. Je suis dans les starting blocks dès que les prix diminuent.
Labels: humeur