Traitement de fichiers PDF en python et un client satisfait

Si vous lisez ce blog, vous savez que j’aime bien Java et Flex. Mais lorsqu’on a besoin de faire des traitements typiquement automatisés et accédant au système ou ne demandant aucune interaction graphique avec l’utilisateur ces langages ne sont certainement pas les mieux adaptés. Je ne vais pas m’étendre sur cette assertion maintenant… Ca pourrait faire le sujet d’un autre billet tiens…

Mon choix personnel du moment pour ce type d’action porte sur Python.1 Le but ici n’est pas de défendre les atouts de Python. Ceux-ci sont déjà largement reconnus par les développeurs. Le nombre de projets open-source l’atteste tout comme le classement TIOBE évoqué il y a quelques temps.

Récemment j’ai eu la joie de faire un petit développement en freelancing ayant pour but un petit traitement de fichiers PDF. Python a une nouvelle fois pleinement répondu à mes attentes. Ce que j’aime principalement lorsque je développe en Python c’est sa simplicité et de ce fait la rapidité de développement associée, le nombre de librairies disponibles ou encore un code plus naturellement facile à lire.

Pour ce projet, le workflow était le suivant:

  1. Lister tous les fichiers PDF du dossier courant
  2. Parser chaque fichier et récupérer le texte le plus haut dans la première page
  3. Enregistrer le fichier avec cette valeur

Très simple en apparence. Mais c’est sans compter que les fichiers PDF ont une structure disons pas très naturelle. J’ai donc du passer un certain temps à comprendre cette structure. Pour ce faire j’ai utilisé la libraire PDFMiner codée par Yusuke Shinyama qui a fait ici un excellent boulot.

Après avoir atteint ces 3 objectifs j’ai simplement du me pencher sur les possibilités de python à compiler le tout en exécutable Mac… Et là c’est stackoverflow qui m’a aidépy2app m’a donc permis de compiler le tout et le tour est joué!

Sur ce, l’expérience python m’a une fois de plus convaincu mais qu’est qu’en a pensé mon client? Aussi clair qu’un code Python:

Test réussi! C’est parfait. Je vous remercie beaucoup de l’excellente collaboration.

Ca fait toujours plaisir :D

  1. Python is a dynamic object-oriented programming language that can be used for many kinds of software development. - www.python.org []

Critique de livre: Toute l’histoire du monde

J’ai été carrément scotché par le résumé fait au dos du livre:

Il y a un siècle, ceux qui savaient lire savaient aussi se situer dans l’espace et dans le temps. Il n’en est plus ainsi. Les Français, et d’ailleurs tous les Occidentaux, sont devenus, pour la plupart, des hommes sans passé, des ” immémorants “. Notre modernité fabrique, hélas, davantage de consommateurs-zappeurs interchangeables que de citoyens responsables, désireux de comprendre et de construire. Est-il possible de déchiffrer l’actualité sans références historiques ? Comment situer, par exemple, les guerres d’Irak sans avoir entendu parler de la Mésopotamie ? On voit tout, tout de suite, en direct, mais on ne comprend rien. D’où l’idée simple, ambitieuse et modeste à la fois, d’écrire un livre assez court qui soit un récit de l’histoire du monde, fermement chronologique, pour tous ceux qui souhaitent ” s’y retrouver ” et situer leur destin personnel dans la grande histoire collective de l’espèce humaine.

Après percution donc j’ai acheté ce livre et été rapidement séduit par le récit. On navigue au travers de l’histoire humaine du début jusqu’à maintenant. Ou comment avoir une rapide vision globale de notre monde…

J’ai assez aimé; bien qu’à force c’est tout de même triste de constater que l’une des seule choses communes à tous les hommes, c’est l’envie de dominer son prochain… Pour finir par des guerres, génocides, dictatures, etc. Triste monde! Heureusement les auteurs n’oublient tout de même pas de relever le génie de certains personnages marquants (Ératosthène, Bouddha, Platon, Archimède, Voltaire, Mozart et j’en passe); ca fait quand meme du bien de se rappeler que l’homme est capable de bonnes choses.

Bref, je recommande ce livre à tous ceux qui ont envie de faire un lien rapide entre les différentes puissances mondiales qui se sont succédées et comment d’un point de vue politique le monde à évolué pour en arriver là où nous sommes.

Besoin d’une nouvelle tapisserie?

Vos murs vieillissants auraient besoin de faire peau neuve? Voici quelques idées pour les âmes de geeks.

via ThinkGeek

Les bouquins ajoutés à ma liste Amazon cette semaine…

Un forum intéressant sur Shelfari demandait quel était le livre qui vous avait fait le plus rire… Le premier mentionné a été la série de Terry Pratchett “Les Annales du Disque-Monde” avec comme premier Tome La 8ème couleur. Je n’ai encore jamais eu l’occasion de parcourir ne serait-ce qu’un livre de Terry Pratchett qui est un auteur extrêmement connu. Je me réjouis donc de le découvrir dans cette série comportant 8 tomes… Quand j’aurai le temps…

Ahhhh le temps…. On en a jamais assez; ou alors on ne le gère pas assez bien, on ne l’optimise pas suffisamment. J’aime dans cet objectif des bouquins qui m’aident à mieux m’organiser ou à améliorer mes capacités quelles qu’elles soient… 10 days to faster reading devrait m’aider à lire plus rapidement… J’adore lire mais j’adorerais en lire plus, donc plus vite! On verra si cet ouvrage ne fait pas que miroiter un succès dans ce sens.

Pour finir j’ai ajouté 301 More Ways to have fun at work ; un livre qui j’espère permettra d’ajouter un peu plus de gaieté dans mon travail… Pas toujours la folle bonne humeur en ce moment et donc dans un essai de pro-activité je suis tombé sur ce livre qui ma foi semble redonner espoir!

Encore une fois, j’aime varier les plaisirs dans mes lectures et ceci en est un reflet… Il y aurait aussi à parler de bouquins techniques mais je vais en rester là pour ce soir.

News en vrac

#1 Le 4ème jour de la série Flex in a Week a été publié.

#2 Neal Gafter quitte Sun pour Microsoft. L’exode de figures de Sun continue.

#3 Stackoverflow accueille pour sa part un nouveau grand nom en la personne de John Resig, expert Javascript (review de stackoverflow prochainement).

3617 ma vie:

#3 Samedi j’ai une nouvelle voiture.

#4 Logica m’offre une formation Spring.

#5 Je suis une Légende…. Bof bof.

Apprentissage de Flex

Alors que j’ai bien de la peine à avancer ma progression en ce qui concerne SICP (la pile d’exercices est effrayante, j’ai stoppé la lecture du bouquin..), j’ai commencé mon apprentissage de Flex. Par chance je suis bien plus sérieux de coté-là. Allez savoir pourquoi…

Enfin bref, je ne veux pas lâcher SICP ça c’est sûr (la lecture en est très instructive) mais comme j’aime à le faire, j’ai commencé à reporter ce que j’apprends sur Flex dans un document que je mets à disposition de qui voudra (en ~anglais). Je le mets à jour à mesure de mon avancement, n’hésitez donc pas à le consulter régulièrement.

Ce sont des notes en vrac mais qui peuvent être utiles pour tout nouvel arrivant sur Flex, enfin je l’espère!

Quelques resources à ceux qui voudraient également se lancer dans cette aventure:

Et bien sûr comme toujours, je suis preneur de tout conseils ou suggestions dans cet apprentissage.

Stackoverflow en version publique

L’info cours sur la toile: l’ouverture d’une nouvelle plateforme programming Q&A complètement ouverte et gratuite.

Cette nouvelle plateforme a pour nom stackoverflow et a été initiée par (non des moindres) les auteurs des blogs Coding Horror et Joel on Software, j’ai nommé Jeff Atwood et Joel Spolsky.

Ce genre de plateforme tient son existence principalement à la communauté qui la suit. Dès lors j’espère vraiment que soutient il y aura et que le genre de “souci” que Joel décrit dans son billet disparaîtra bel et bien, autrement dit, dès qu’une question se profile… Je ne tape non plus google.com (avec ses inconvénients lors de questions précises..) mais plutôt stackoverflow.com!

L’idée est très bonne et les initiateurs sont des gars très talentueux, on peut donc se dire qu’on est entre de bonnes mains et que si espoir il devait y avoir, on est en tout cas bien parti pour que ça prenne bonne forme.

A ma première impression, je vois un design épuré, une navigation conviviale et rapide. Je vois également que les auteurs s’impliquent au niveau du contenu de la plateforme et ca c’est plutôt pas mal…

Il ne reste donc plus qu’à voir comment va réagir la communauté et si l’engouement passé, un réel groupement de développeurs va venir enrichir le contenu de ce:

synthesize aspects of Wikis, Blogs, Forums, and Digg/Reddit in a way that is somewhat original

On croise les doigts!

Netbeans et PHP

Non je n’ai toujours pas jeté un oeil au support PHP (ni python d’ailleurs) proposé par Netbeans. Et pourtant j’encourageais à le faire il y a peu….

Bref c’est pas grave, une séance de rattrapage est proposée par les éditeurs de Netbeans TV avec ce screencast:

 

En moins de 10 minutes, on y aborde l’intégration d’un projet PHP (wordpress) couplée à la gestion de sa base de données (MySQL) mais aussi du debugging et la traditionnelle completion syntaxique.

Ca vaut vraiment le coup de le visionner en plus accompagné par un accent indien toujours aussi sympa!

Merck Serono, 1er retour d’expérience

Cela fait maintenant quelques mois que je suis en mission chez Merck Serono et comme à l’accoutumée, changement d’environnement de travail, gain d’expérience!

Si je voulais faire une petite rétro perspective, je pourrais dire que j’en ai surtout appris au niveau de l’organisation de mon travail. Et sous ce rapport j’aime assez ce qu’a dit Ralph  Waldo Emerson:

L’ancêtre de chaque action est une réflexion.

C’est si facilement dit; et pourtant ce n’est que depuis mon passage chez Merck que je me rends compte combien il est important au début de chaque journée de réfléchir à ce qu’il y a à faire (surtout dans l’environnement de travail ici). La réflexion sera dans la majorité des cas triviale mais d’une importance majeure!

Ici (département de recherche informatique chez Merck Genève) il y a peu d’organisation et plusieurs petits projets (principalement en maintenance pour ma part). Bien souvent chacun mène le sien comme il l’entend et il n’y a ni de specs, ni un planning, ni rien (!). Il y a bien un chef de projet qui supervise le tout mais nous sommes en quelques sorte chacun notre propre chef de projet… On aime ou pas. Pour ma part il faut dire que je suis assez surpris que dans une entreprise de cette envergure il y ait autant de liberté. Quand on a l’habitude d’être cadré un minimum on peut facilement se sentir perdu ou rapidement démotivé. Ça a été un peu mon cas, le temps de s’adapter. Car c’est vrai cela peut paraître génial d’avoir autant de largeur mais ne pas avoir d’objectif défini ni un temps imparti peut rapidement amener à un sentiment de lassitude. Je me suis alors rendu compte de mon devoir de prendre les choses en main.

Réflexion avant d’agir

La première chose que je fais maintenant en arrivant à mon bureau est de dresser la liste des tâches à effectuer durant la journée en mentionnant également la première action concrète pour y arriver ainsi qu’un temps imparti. Cela peut parraître rien du tout mais en attendant cela me cadre bien mieux mon travail! Dans un environnement de projet normal ce genre de choses sont imposées par le chef de projet, mais lorsque cela ne se fait pas, il faut se l’imposer. Dans mon cas en tout cas c’est vraiment important.

Chaque expérience permet d’en apprendre un peu plus. Ici, en plus d’en apprendre au niveau technique, je suis content d’avoir eu la possibilité de m’améliorer dans mon organisation et de m’être adapté à mon environnement de travail.

Les atouts de Flex selon Ward

Une interview très intéressante à lire si vous vous intéressez au développement Flex mais que vous ne savez pas trop quels en sont les avantages.

James Ward répond au CEO d’EffectiveUI en mentionnant par exemple deux cas d’utilisations en entreprise. Il met également en avant les résultats d’une étude en cours d’élaboration par les gaillards d’Adobe : 30% de temps de gagné en choisissant Flex! Certainement à prendre avec des pincettes. MAIS! Oui mais.. Quelques lignes plus haut, Ward explique que le temps perdu à débugger de l’AJAX, on le récupère directement sur Flex puisque le framework gère lui-même les communications client/serveur. Or… Le temps de débuggage quantifié est égal à… 30%!

Vous en avez marre de débugger de l’AJAX? Il serait peut-être temps de jeter un oeil à Flex…

Thinking in Flex!

Toujours dans l’actualité Flex, le blog Code moi un mouton nous apprend une bonne nouvelle:

Scoop: James Ward et Bruce Eckel (l’auteur de Thinking in Java) préparent un livre de 120 pages qui s’adresse à tous les développeurs qui souhaitent apprendre Flex. Ca sent le best-seller…

Pour ceux qui ont parcouru Thinking in Java (j’ai pu faire mes débuts avec cet excellent bouquin) et qui souhaite en apprendre un peu plus sur Flex, je sens que ca va être le point de départ idéal! Je me réjouis!

Et pour finir en beauté avec le monde Flash/Flex (du moins avec ce post), voici le dernier clip de Radiohead réalisé en flash et ce sans caméra(!):

Quelques explications ici et ici.

Page suivante →