Avec ou sans bruits parasites

"Un réseau de plus en plus serré de distractions et d’occupations vaines"

Catégorie : Non classé (page 1 of 14)

Merci à l’Internet Archive

Facebooktwitterredditpinterestlinkedintumblrmail

Il y a quelques jours, j’ai voulu donner à quelqu’un un lien vers un billet que j’avais écrit il y a quelques années sur la méthode GTD. Ce billet était sur mon ancien blog, hébergé chez Free. En le cherchant, j’ai découvert que ce blog n’existe plus : il a disparu corps et biens… (mes lecteurs sceptiques pourront vérifier par eux-mêmes : http://blacherez.free.fr)

Bien sûr, il y a trois ans que j’ai changé de lieu d’hébergement, mais je restais attaché à cet ancien blog et surtout à quelques uns des billets que j’y avais écrits…

J’ai donc essayé de trouver des traces que ce site aurait pu laisser dans le cache de Google… en vain. C’est alors que j’ai pensé à l’Internet Archive qui conserve l’histoire du web. Bien sûr, je savais que mon blog n’est pas la principale ressource à conserver sur internet, mais j’ai tenté ma chance et retrouvé une bonne partie de cet ancien blog. J’ai donc entrepris de migrer une partie de ces billets sur ce blog-ci, en essayant (comme WordPress le permet) de conserver la date originale.

tags technorati: , ,
Facebooktwitterredditpinterestlinkedintumblrmail

Numérisation de documents

Facebooktwitterredditpinterestlinkedintumblrmail

Je viens de commencer à numériser mon mémoire de maîtrise. C’était une idée que j’avais depuis longtemps, que je suis en train de mettre en oeuvre ; il y a des périodes dans la vie où l’on est plus enclin aux comportements néoténiques…

J’ai d’abord longuement séparé les feuilles d’un exemplaire de mon mémoire. Je suppose qu’il est possible d’utiliser un gros massicot pour faire un tel travail, mais n’en disposant pas, je me suis résolu à employer une règle plate en guise de coupe-papier.

L’étape suivante consistait à numériser les pages ainsi séparées. A ce point, j’ai été surpris : je m’attendais à un travail difficile, fastidieux et il n’en a rien été. Je pensais que le chargeur du scanner allait mal fonctionner, provoquer des bourrages sans nombre etc. mais cela ne s’est pas produit ; seule une page, que j’avais malencontreusement froissée pendant le transport, n’a pas pu passer automatiquement. En outre, ce traitement a été très rapide : il ne m’a guère fallu plus d’une demi-heure (en plusieurs fois) pour numériser l’ensemble des 240 pages du document.

Le “pilotage” du scanner était assuré par le logiciel XnView qui possède une fonction “Acquérir dans…” qui permet de scanner un ensemble de pages, en les numérotant et en les enregistrant automatiquement.

Cette rapidité de la numérisation a perturbé le processus de travail que j’avais envisagé : je pensais ne pouvoir numériser que 10 ou 15 pages par jour (je précise que je ne travaille pas à temps plein sur ce projet… j’exerce également une activité salariée ;-) Mon plan était donc de passer 15-20 minutes entre midi et 14 h pour numériser le document et 1 h ou 1 h 30 le soir pour faire la reconnaissance de caractères) que je pourrais, dans la soirée du même jour, transformer en texte (OCR et corrections manuelles). En réalité, au bout de deux jours l’ensemble était numérisé, mais il faut plus d’1 h 30 pour corriger 10-15 pages…

J’ai fait différents tests pour trouver le logiciel d’OCR le plus adapté et je dois dire que j’ai été déçu. Ma première idée était d’utiliser une ancienne version d’Omnipage Pro que j’avais eu jadis avec un scanner, mais comme l’ordinateur que j’utilise le plus est désormais sous Linux et que ce système m’est plus familier, j’ai cherché s’il n’y avait pas moyen de faire plutôt la reconnaissance de caractères avec lui. J’ai découvert cette page et ai testé plusieurs des logiciels qui y sont mentionnés. Ceux qui m’ont donné le plus de satisfaction sont Tesseract et Ocropus (qui dans son état actuel est une sorte de surcouche de Tesseract). Toutefois, aucun des deux n’est capable de restituer les caractères accentués, ce qui peut être rapidement fastidieux pour un texte en français. Au final, j’ai pris la résolution d’utiliser Omnipage, qui est celui qui donne les meilleurs résultats et j’ai ainsi “OCRisé” une vingtaine de pages, en utilisant la vérification interactive du logiciel, puis en reprenant les documents ainsi créés, en les regroupant logiquement et en les corrigeant dans OpenOffice.

Comme on peut s’y attendre, certains passages sont mal ou pas du tout reconnus par l’OCR, c’est le cas des passages en grec, c’est aussi le cas des chiffres (numéros de pages dans les références par exemple).

Pour fluidifier le processus et ne pas m’obliger à ne travailler à ce projet que quand je suis sur l’ordinateur sur lequel Omnipage est installé, j’ai “OCRisé” l’ensemble des pages et je vérifierai plus tard.

Je suis donc au tout début du travail d’édition de ce document. J’envisage de mettre en ligne une première version “image”, mais je ne sais pas si ça peut avoir un intérêt. En tout cas, je vous tiendrai au courant de l’évolution de ce projet et des raisons qui m’ont poussé à m’y lancer.

tags technorati: , ,
Facebooktwitterredditpinterestlinkedintumblrmail

Transférer des mots de passe d’une base de données MySQL/PHP vers un annuaire LDAP

Facebooktwitterredditpinterestlinkedintumblrmail

J’ai récemment voulu récupérer des mots de passe depuis une base de donnée MySQL (alimentée par PHP) pour les mettre dans un annuaire LDAP, et comme je n’ai pas trouvé immédiatement la solution à ce problème, je consigne ici la procédure que j’ai suivie, pour qu’elle puisse être utile à un autre (cet autre pouvant être celui que je serai dans un an ou deux).

Les données du problème

  • J’ai une base de données MySQL, associée à une application en PHP, Ilias Open Source, qui contient des mots de passe. Naturellement, ces mots de passe ne sont pas stockés en clair dans la base de données, ils sont hachés en utilisant MD5.
  • J’ai un annuaire openLDAP qui contient des données utilisateurs et notamment des mots de passe. LDAP n’est pas très exigent en ce qui concerne les mots de passe : il lui suffit que la chaîne correspondant au mot de passe commence par le nom de l’algorithme de hachage utilisé pour produire la chaîne qui suit. Bien sûr, il faut que l’algorithme choisi soit connu d’openLDAP (il est possible d’ajouter des modules à la compilation pour le faire fonctionner avec tous les algorithmes couramment utilisés pour hacher les mots de passe).
  • Je veux que les mots de passe des utilisateurs présents dans l’annuaire soient ceux qu’ils ont dans la base de données relationnelle.

Le problème

A première vue, il n’y a pas de problème : je prends le mot de passe haché dans ma base de données et je le mets dans l’annuaire en le faisant précéder de {MD5}. C’est d’ailleurs ce que j’ai essayé de faire tout d’abord et cela ne fonctionne pas.

En cherchant un peu, on trouve rapidement l’explication de cela et elle est assez simple : l’algorithme MD5 produit une empreinte sous la forme d’une séquence de 128 bits, soit 16 octets. Naturellement, une telle suite de 16 octets ne peut pas être représentée en texte “normal” (ascii), il faut donc lui faire subir un traitement pour pouvoir l’imprimer ou même simplement l’afficher sur un écran.

C’est là que le problème se pose : la fonction MD5 de php crée, par défaut, une représentation de cette séquence sous la forme d’une suite de 32 chiffres hexadécimaux (en Python un tel résultat est obtenu avec la fonction hexdigest() du module md5 (ce module est déconseillé dans les versions de Python supérieures à la 2.5, mais le programme que j’ai écrit était en Python 2.3) ), openLDAP (je suppose que c’est le fonctionnement standard de toutes les implémentations du protocole LDAP), en revanche, prend directement la séquence d’octets (équivalent de la fonction Python digest() du module md5) et l’encode en base64, un algorithme destiné à représenter des données binaires en texte, utilisé, par exemple, pour encoder les pièces jointes des messages électroniques.

La solution

Après beaucoup de tâtonnements et (trop) de recherches, j’ai réussi à trouver la formule qui me donne satisfaction. La voici (en Python) :

En supposant que pw_php est le mot de passe que j’ai obtenu de la base MySQL et pw_ldap le mot de passe que je vais inscrire dans l’annuaire LDAP.

pw_ldap = "{MD5}" + base64.encodestring(pw_php.decode("hex"))

La méthode decode() de l’objet chaîne, avec le paramètre “hex” décode l’empreinte encodée en caractères hexadécimaux, pour obtenir à nouveau la séquence de 16 octets. Cette séquence est alors encodée en base64 grâce à la fonction encodestring() du module base64. Comme je l’ai indiqué plus haut, le début de la chaîne de caractères du mot de passe indique l’algorithme utilisé pour hacher le mot de passe (ici MD5), entre accolades.

Blogged with Flock

Tags: , , ,

Facebooktwitterredditpinterestlinkedintumblrmail

Le catalogue de ma bibliothèque…

Facebooktwitterredditpinterestlinkedintumblrmail

J’adore les livres, les vrais livres, ceux en papier. J’ai envie d’en lire, j’ai envie d’en posséder, j’ai envie d’en toucher et j’ai envie de passer du temps dans ma bibliothèque, en particulier en ce moment.

Cela m’amène à fréquenter beaucoup le site d’Amazon, à lire des dizaines de blogs qui parlent de livres, de bibliophilie ou de lecture, mais aussi à vouloir faire un catalogue de mes livres. J’avais, naguère, évoqué sur ce blog le site LibraryThing pour cela, sans suffisamment prêter attention au fait que le compte gratuit ne permet pas d’insérer plus de 200 livres, autant dire rien…

[Entre le moment où ce billet a été écrit sur mon moleskine et le moment où il est dactylographié (n’est-ce pas un mot exquis ?), il s’est écoulé plusieurs semaines le contenu de ce billet a changé. Dans sa première version, il continuait ainsi : “et pour le dire comme je le pense, je ne suis pas disposé, au moins pour le moment, à payer ce service (je ne conteste pas qu’il soit légitime pour le créateur de ce site d’être rémunéré, je dis simplement que s’il n’est pas possible de profiter gratuitement d’un tel service, je préfère m’en passer, dans l’état actuel des choses”.

La nouvelle version est la suivante :]

J’expliquais dans ce billet pourquoi je n’étais pas disposé à payer pour ce service et comment j’en étais venu à tester d’autres services, dont la plupart ne m’avaient pas satisfait, et à choisir d’utiliser Listal. Je détaillais ensuite la procédure que j’envisageais d’adopter pour cataloguer mes livres avec Listal, que je peux résumer ainsi :

– Lecture des codes barres des livres ;

– Recherche du livre dans la base d’Amazon ;

– Importation des informations concernant le livre dans Listal.

Le code barre des livres (pour ceux qui en ont un) correspond à leur ISBN et permet donc de les identifier de façon assez précise.

J’ai fait quelques tests avec une petite application en Flash qui permet de lire des codes barres avec une webcam, avec l’API d’Amazon (ces derniers tests m’ont permis de comprendre pourquoi Listal ne recherche des livres que sur amazon.com et amazon.co.uk : la recherche par ISBN n’est pas possible, dans la version actuelle de l’API, sur les autres sites d’Amazon et notamment sur amazon.fr, même si cette possibilité existe avec des versions plus anciennes), avec les fonctionnalités d’importation de Listal…

Au final, ces tests ont révélé que cette solution serait trop compliquée : la lecture des codes barres, outre quelques petits bugs qui se sont révélés, est difficile et longue. L’utilisation de l’API d’Amazon ne permet pas de rechercher les ISBN sur le site français et l’importation dans Listal est malaisée (il n’est possible d’importer que des fichiers XML produits par l’application Mac de gestion de bibliothèque personnelle Delicious library, format qui n’est documenté nulle part).

Je suis donc retourné voir LibraryThing (d’ailleurs en partie pour préciser le nombre maximal de livres qu’on peut ajouter avec le compte gratuit) et, sur un coup de tête, j’ai pris un abonnement payant pour ce service (25 $ pour un abonnement à vie et, je l’ignorais, 25 $ représentent beaucoup moins que 25 € par les temps qui courent). Ici, l’importation est beaucoup plus simple : je peux téléverser un fichier texte contenant des ISBN, qui sont ajoutés automatiquement à ma bibliothèque (en utilisant amazon.fr qui reste une base à peu près inépuisable pour les livres en français).

J’avais aussi envisagé d’écrire quelques lignes de PHP pour saisir rapidement les ISBN et les inscrire dans un fichier texte, mais j’ai soudain songé que l’application qui permet de saisir un ISBN, puis de presser la touche “Entrée” avant d’en saisir un autre et finalement d’enregistrer tout cela dans un fichier texte, cette application, dis-je, existe déjà et elle s’appelle un éditeur de textes…

Je vais donc occuper une partie de mes congés (qui commencent demain soir) à saisir les livres de ma bibliothèque dans Notepad++ avant de les embougler dans LibraryThing… ce qui est assez différent du scénario initial. Je ne donne pas, pour le moment, l’adresse de ma bibliothèque sur LT, j’attends qu’elle soit plus à jour, mais les petits malins réussiront bien à la trouver.

En outre, je viens de découvrir chez Virginie Clayssen un autre service du même genre qui s’appelle Babelio et qui est nativement francophone, semble-t-il (LT est traduit en français, entre autres langues). Cependant, comme ce service repose sur le même business model que LT, je n’ai pas l’intention de reprendre un autre abonnement à vie (surtout que sur Babelio, il est à 30 €, soit presque le double de ce qu’il est sur LT). Cependant, je le testerai et, toujours fidèle à ma mission d’information de mes lecteurs, je vous dirai ce que j’en pense. ;-)

tags technorati: , , , ,
Facebooktwitterredditpinterestlinkedintumblrmail

Mes autres blogs

Facebooktwitterredditpinterestlinkedintumblrmail

Non, je ne cultive pas de jardins secrets pendant que celui-ci est envahi d’herbes folles et je n’ai pas d’autres blogs ailleurs que je vous aurais cachés.

Cependant, je voudrais rappeler à tous ceux qui s’intéressent aux mêmes sujets que moi, et je suppose que les lecteurs de ce blog en font partie, qu’il y a d’autres endroits où je ‘publie’ des notes ou au moins où je consigne des liens intéressants:

Même au plus fort de mon inactivité sur ce blog, il est rare qu’il se passe une semaine sans que j’ajoute au moins une entrée dans une de ces pages et je recommande donc vivement à mes lecteurs de s’y reporter. Naturellement, chacune de ces pages peut être suivie en RSS.

Facebooktwitterredditpinterestlinkedintumblrmail

Elixirs et panacées : Function Drinks

Facebooktwitterredditpinterestlinkedintumblrmail

J’ai découvert il y a quelque jour ce site qui propose des boissons destinées à rendre meilleurs ceux qui les boivent :Function Drinks New Home.

L’une d’elle améliore la mémoire et l’acuité mentale, une autre aide l’organisme à se débarrasser des polluants liés à la vie urbaine, une troisième réduit le stress etc.

J’ai toujours de la sympathie pour ce genre de produits, même si je n’y crois pas vraiment (ou, pour tout dire, même si je n’y crois vraiment pas), tout comme j’ai de la sympathie pour les gels douche “Spécial lendemain difficile” (quand il s’agit de se lever, je n’ai le souvenir d’aucun lendemain facile), “Guarana énergisant” ou autres fariboles. Cette symathie fait de moi une proie facile pour les bonisseurs de tout acabit.

En l’occurrence, j’ai surtout été frappé par la présence d’une rubrique ‘Research’ donnant les références de publications scientifiques attestant de l’efficacité de tel ou tel ingrédient pour tel ou tel effet.

Facebooktwitterredditpinterestlinkedintumblrmail

Histoire médiévale sur le web : introductions

Facebooktwitterredditpinterestlinkedintumblrmail

J’avais commencé à consigner ces adresses au mois de mars.

N’hésitez pas à me signaler d’autres liens sur ce thème.

Liens dans l’album des sciences sociales

Portail des ressources de Menestrel

Liens du réseau des médiévistes belges de langue française

Liens de l’unité de recherche en histoire médiévale de l’Université Libre de Bruxelles

History E-Book, projet de l’American Council of Learned Societies (ATTENTION, la plupart des livres ne sont pas consultables sans un abonnement spécifique)

Sources disponibles en ligne à propos du Haut Moyen Age par Thomas Lienhard du LAboratoire de Médiévistique Occidentale de Paris

tags technorati: , ,
Facebooktwitterredditpinterestlinkedintumblrmail

Lire dans mon moleskine ?

Facebooktwitterredditpinterestlinkedintumblrmail

J’ai plusieurs fois parlé ici du petit carnet éculé qui me suit partout (et qui, accessoirement, me sert aussi de portefeuille) et dans lequel plusieurs billets de ce blog sont nés… Quand je dis qu’il me suit partout, je devrais plutôt dire que je le charroie partout, car je crois qu’il ne refuserait pas de rester tranquillement dans un tiroir si l’occasion lui était offerte…

D’abord une petite précision pour mes lecteurs qui ne sauraient pas ce qu’est un moleskine : il s’agit simplement d’un carnet de la marque Moleskine. Mais ce n’est pas rendre justice à cet objet que de dire cela : un moleskine n’est définitivement pas qu’un carnet. Une petite visite sur l’article wikipedia devrait donner une meilleure idée de ce que cela peut représenter (surtout en suivant les liens qui y sont donnés).

Encore une fois, mon titre vous a donné de faux espoirs… Ne rêvez pas, vous ne pourrez jamais lire dans mon moleskine, personne n’en a le droit et le dernier oeil qui s’est aventuré sur le seuil de ce carnet roule désormais dans quelque sentine, arraché à grands cris à son propriétaire. Le maximum que je puisse vous en donner est cette photo. ;-)

Mon carnet moleskine

Cependant, j’ai décidé de partager un moleskine virtuel, en utilisant l’application Google Notebook. Cet outil est formidable et, associé à une extension de Firefox, il permet de prendre des notes très facilement en surfant, de les organiser, de les partager et de les publier.

Je ne sais pas encore comment j’utiliserai cet outil et en particulier, je crains que la possibilité de prendre des notes privées (j’ai un moleskine virtuel privé aussi) ne me pose des problèmes : dans del.icio.us, c’est un point qui a été souvent mentionné, la publication est implicite et automatique, ce qui fait qu’il n’y a pas lieu d’y réfléchir, mais dans Notebook, le problème est très différent. En effet, j’utilise del.icio.us depuis longtemps et j’y stocke sans état d’âme tous mes signets, à la seule exception de ceux qui doivent vraiment rester privés que je garde comme des signets de Firefox normaux. Cependant, dès l’instant où il est possible de choisir le statut public ou privé d’une note, il devient nécessaire de se poser la question de l’opportunité de la publication (on me pardonnera de considérer les bookmarks privés comme impossibles dans del.icio.us, cette fonctionnalité n’a été développée que récemment et je n’ai jamais pris la peine de m’y intéresser) et je crains que le souci de ne pas importuner mes lecteurs ne m’incite trop souvent à mettre les notes dans le carnet privé et que ce comportement ne devienne vite une habitude en cas de doute.

Je me pose aussi des questions sur la structuration de ces données, structuration qui est très différente des tags de del.icio.us et je ne sais pas encore comment l’un et l’autre pourront répondre à mes besoins ou à mes envies.

Mes lecteurs restés fidèles depuis la première heure (mais me reste-t-il des lecteurs si fidèles ? et après mon long silence, me reste-t-il seulement des lecteurs ?) me diront sans doute que j’ai annoncé alors que ce blog jouerait à peu près le même rôle que mon moleskine. Il est vrai que ce n’est guère ce qu’il a fait et je choisis aujourd’hui un autre outil pour jouer ce rôle. Je ne sais pas encore s’il y parviendra.

Autant de questions auxquelles j’essaierai de répondre après avoir pratiqué un peu…

Facebooktwitterredditpinterestlinkedintumblrmail

Pour désacraliser le silence : je suis désolé…

Facebooktwitterredditpinterestlinkedintumblrmail

Il me faut avouer d’emblée que ce titre vient d’une sorte de pari : on m’a mis un jour au défi de publier ici un billet comportant cette citation et, puisque je ne recule devant aucun sacrifice pour donner satisfaction à mon lectorat, je vais jusqu’à le mettre en titre de ce billet.

Néanmoins, il est vrai que je suis désolé d’avoir laissé ce blog ainsi à l’abandon, pendant aussi longtemps. Certes, j’ai eu de quoi m’occuper avec la journée que nous avons organisée et c’est en grande partie à cause de cela que je n’ai pas été plus actif ici.

Maintenant, cette journée est passée, elle a permis à beaucoup de découvrir les usages des TICE (environ 1000 visiteurs), elle a permis beaucoup de rencontres et ouvert de nombreuses perspectives. Quelques échanges que j’ai eus alors m’ont aussi laissé penser qu’il serait bon que je me remette à écrire ici, ce pour quoi je suis encore plus désolé…

Je suis désolé également pour tous les commentaires que je n’ai pas suivi avec assez de régularité : ils sont désormais presque 20000 (la plupart sont du spam, heureusement) mais je ne sais pas encore comment je vais en venir à bout, car je ne peux plus les afficher dans wordpress (le client MySQL manque de mémoire…). Je me trouve donc dans l’obligation de les fermer pour quelque temps, pour les nouveaux billets (car il n’est pas possible de les désactiver globalement pour tous les billets passés), en attendant d’avoir une solution, et je dois présenter mes excuses à des lecteurs qui auraient posté des commentaires légitimes qui seront probablement perdus.

J’avais écrit ce billet il y a longtemps, sur mon Moleskine, et je me décide enfin à le publier. Je n’ai pas l’impression qu’il présente un grand intérêt, mais avec le temps, je me rends compte que le silence a tendance à devenir de plus en plus solennel : plus je reste sans écrire ici et plus je suis réticent à y écrire, en trouvant trop banal chacun des sujets qui me viennent à l’esprit.

Aussi je fais le choix de recourir à la quintessence de la trivialité pour briser l’envahissement du silence : comme souffler dans un tuyau pour le déboucher.

Facebooktwitterredditpinterestlinkedintumblrmail

Cheatsheet Symfony

Facebooktwitterredditpinterestlinkedintumblrmail

Créer un projet

– Créer répertoire

– Dans le répertoire, lancer :

symfony init-project nom_projet

– Dans ce répertoire, créer un fichier .htaccess :

php_value magic_quotes_gpc 0

– Donner au serveur apache la permission d’écrire dans le répertoire cache

– Il faut créer une application :

symfony init-app nom_app

– Création de la bdd

– Modifier fichier config/databases.yml en mettant les bonnes données pour la bdd :

dsn: mysql://symfony_user:symfony_password@localhost/symfony

et en enlevant les # en début de lignes.

– Modifier config/propel.ini

– Création du schéma de la base

symfony propel-build-schema

– Génération du modèle :

symfony propel-build-model

Faire en sorte que des noms signifiants apparaissent pour les objets correspondant à des clés externes

Il faut que la méthode toString() soit implémentée pour les classes concernées

Facebooktwitterredditpinterestlinkedintumblrmail
« Older posts