Vérifier son CLASSPATH

9 août 2009

Le CLASSPATH est un peu le péché originel de Java. Il poursuit tout développeur, du débutant qui ne comprend pas pourquoi l’interpréteur ne trouve pas les classes qu’il vient de compiler, au développeur chevronné qui doit se battre avec Maven et ses règles tortueuses de gestion des dépendances (surtout si elles sont transitives)… Au final, souvent on ne sait plus très bien ce qui se trouve dans son CLASSPATH et il peut alors survenir des erreurs très difficiles à corriger.

Une de ces sources d’erreurs est la présence de classes en versions différentes dans plusieurs fichiers JAR du CLASSPATH. Supposons par exemple que vous déclariez une dépendance aux bibliothèques Apache commons-collections et commons-beanutils (en versions 3.2.1 et 1.8.0 par exemple). Si ces deux dépendances se trouvent dans le même CLASSPATH, il y a une collision entre des classes Java des deux archives : par exemple on trouve dans ces JARs deux versions différentes de la classe org.apache.commons.collections.Buffer.

J’ai écrit un outil permettant de détecter ce type d’erreur. On lui passe les fichiers JAR à analyser sur la ligne de commande et il produit un rapport sur ce CLASSPATH en indiquant les collisions en terme de classes, de packages ou de fichiers JAR (rapport par défaut). Par exemple, pour vérifier les deux JARs cités ci-dessus, on se placera dans le répertoire des archives et on tapera :

  $ cpc *.jar
  Loading commons-beanutils-1.8.0.jar
  Loading commons-collections-3.2.1.jar
  Class overlap in jar files:
  - commons-beanutils-1.8.0.jar
  - commons-collections-3.2.1.jar
  ERROR

Le script indique les archives en collision et indique une erreur et renvoie une valeur d’erreur à l’appelant.

On peut télécharger ce script Python à cette adresse.

Enjoy!


PyCon 2008

18 mai 2008

PyCon 2008

La PyCon France 2008, rencontres autour du langage de programmation Python, se déroule en ce moment même à la Cité des Sciences et de l’Industrie à Paris. On trouvera le programme à cette adresse et la vidéo en temps réel ici. Il est aussi possible de voir les archives des vidéos sur Google Vidéo ici.


Bordeaux7 tous les matins sur votre bureau

12 mars 2008

Logo Bordeaux7

Après le scripts de téléchargement de 20 Minutes et Metro, voici une version pour récupérer automatiquement la version PDF de Bordeaux7. Ce script fonctionne sous Linux et MacOSX.

Télécharger le script Python à cette adresse. Il vous faut ensuite y configurer les constantes suivantes :

  • USER : le nom de l’utilisateur Unix sur le bureau duquel on doit déposer le journal.
  • DESKTOP : le répertoire du bureau de l’utilisateur, qui est par défaut sous MacOSX, /Users/<user>/Desktop. Sous Linux votre bureau devrait être /home/<user>/Desktop, mais ce répertoire peut dépendre de votre distribution.

Vous pouvez tester ce script en le lançant avec la commande ./download-bordeaux7 dans un terminal. Si tout se passe bien, cela devrait télécharger l’édition du jour sur votre bureau. Attention! ce script ne fait rien les samedi et dimanche puisqu’il n’y a pas d’édition ce jour là.

L’étape suivante consiste à automatiser le processus avec anacron qui est semblable à cron sauf qu’il n’est pas nécessaire que votre machine tourne en permanence. Il suffit qu’elle tourne quelques minutes un jour pour que les processus quotidiens soient exécutés pour cette journée.

  • Sous Linux, il est très probable qu’anacron soit déjà installé et tourne. Si ce n’est pas le cas, l’installer (avec sudo apt-get install anacron sous Debian ou Ubuntu). Copier ensuite le script download-metro dans le répertoire /etc/cron.daily. Le rendre exécutable et en changer le propriétaire pour root.
  • Sous MacOSX, anacron n’est pas installé par défaut. On peut le faire simplement avec Fink, que l’on trouvera à l’adresse http://www.finkproject.org/. Taper ensuite sudo fink install anacron dans un terminal. Copier ensuite le script download-metro dans le répertoire /sw/etc/cron.daily. Le rendre exécutable et en changer le propriétaire pour root.

Ce script sera exécuté chaque jour et écrira une entrée dans le fichier de log /var/log/download-bordeaux7.log pour signaler les téléchargements réussis, les erreurs et les jours sans téléchargement.

Ce script est distribué sous licence GPL.

Enjoy!


Metro sur votre bureau tous les matins

11 mars 2008

Logo Metro

Après le script de téléchargement de 20 Minutes, voici une version pour récupérer automatiquement la version PDF de Metro. Ce script fonctionne sous Linux et MacOSX.

Télécharger le script Python à cette adresse. Il vous faut ensuite y configurer les constantes suivantes :

  • EDITION : les trois lettres identifiant votre édition régionale. Les valeurs possibles sont : BOR pour Bordeaux, LIL pour Lille, LYO pour Lyon, MAR pour Marseille, NAN pour Nantes, NIC pour Nice, PAR pour Paris, STR pour Strasbourg, TOU pour Toulouse et REN pour Rennes.
  • USER : le nom de l’utilisateur Unix sur le bureau duquel on doit déposer le journal.
  • DESKTOP : le répertoire du bureau de l’utilisateur, qui est par défaut sous MacOSX, /Users/<user>/Desktop. Sous Linux votre bureau devrait être /home/<user>/Desktop, mais ce répertoire peut dépendre de votre distribution.

Vous pouvez tester ce script en le lançant avec la commande ./download-metro dans un terminal. Si tout se passe bien, cela devrait télécharger l’édition du jour sur votre bureau. Attention! ce script ne fait rien les samedi et dimanche puisqu’il n’y a pas d’édition ce jour là.

L’étape suivante consiste à automatiser le processus avec anacron qui est semblable à cron sauf qu’il n’est pas nécessaire que votre machine tourne en permanence. Il suffit qu’elle tourne quelques minutes un jour pour que les processus quotidiens soient exécutés pour cette journée.

  • Sous Linux, il est très probable qu’anacron soit déjà installé et tourne. Si ce n’est pas le cas, l’installer (avec sudo apt-get install anacron sous Debian ou Ubuntu). Copier ensuite le script download-metro dans le répertoire /etc/cron.daily. Le rendre exécutable et en changer le propriétaire pour root.
  • Sous MacOSX, anacron n’est pas installé par défaut. On peut le faire simplement avec Fink, que l’on trouvera à l’adresse http://www.finkproject.org/. Taper ensuite sudo fink install anacron dans un terminal. Copier ensuite le script download-metro dans le répertoire /sw/etc/cron.daily. Le rendre exécutable et en changer le propriétaire pour root.

Ce script sera exécuté chaque jour et fera un log dans le fichier /var/log/download-metro.log pour signaler les téléchargements réussis.

Ce script est distribué sous licence GPL.

Enjoy!


20 Minutes Reloaded

8 mars 2008

Logo 20 minutes

Voici une amélioration de mon script de téléchargement automatique du quotidien 20 Minutes en version PDF sur votre bureau. Cette nouvelle version fonctionne sous Linux et MacOSX et ne dépend plus de curl.

Télécharger le script Python à cette adresse. Il vous faut ensuite y configurer les constantes suivantes :

  • EDITION : les trois lettres identifiant votre édition régionale. Les valeurs possibles sont : BOR pour Bordeaux, LIL pour Lille, LYO pour Lyon, MAR pour Marseille, NAN pour Nantes, PAR pour Paris, STR pour Strasbourg et TOU pour Toulouse.
  • USER : le nom de l’utilisateur Unix sur le bureau duquel on doit déposer le journal.
  • DESKTOP : le répertoire du bureau de l’utilisateur, qui est par défaut sous MacOSX, /Users/<user>/Desktop. Sous Linux votre bureau devrait être /home/<user>/Desktop, mais ce répertoire peut dépendre de votre distribution.

Vous pouvez tester ce script en le lançant avec la commande ./download-20-minutes dans un terminal. Si tout se passe bien, cela devrait télécharger l’édition du jour sur votre bureau. Attention! ce script ne fait rien les samedi et dimanche puisqu’il n’y a pas d’édition ce jour là.

L’étape suivante consiste à automatiser le processus avec anacron qui est semblable à cron sauf qu’il n’est pas nécessaire que votre machine tourne en permanence. Il suffit qu’elle tourne quelques minutes un jour pour que les processus quotidiens soient exécutés pour cette journée.

  • Sous Linux, il est très probable qu’anacron soit déjà installé et tourne. Si ce n’est pas le cas, l’installer (avec sudo apt-get install anacron sous Debian ou Ubuntu). Copier ensuite le script download-20-minutes dans le répertoire /etc/cron.daily. Le rendre exécutable et en changer le propriétaire pour root.
  • Sous MacOSX, anacron n’est pas installé par défaut. On peut le faire simplement avec Fink, que l’on trouvera à l’adresse http://www.finkproject.org/. Taper ensuite sudo fink install anacron dans un terminal. Copier ensuite le script download-20-minutes dans le répertoire /sw/etc/cron.daily. Le rendre exécutable et en changer le propriétaire pour root.

Ce script sera exécuté chaque jour et fera un log dans le fichier /var/log/download-20-minutes.log pour signaler les téléchargements réussis.

Ce script est distribué sous licence GPL.

Enjoy!


Le journal, tous les matins sur le bureau

21 février 2008

Logo 20 minutes

Voici un petit hack pour automatiser le téléchargement, tous les matins, de l’édition PDF de 20 minutes.

Il nous faut tout d’abord un script pour effectuer le téléchargement. Je propose pour ce faire un script Python (qui a le mérite d’être installé avec toutes les distributions Linux, ainsi que dans MacOSX) que l’on peut télécharger à cette adresse.

Il faut personnaliser ce script en renseignant l’édition que l’on souhaite télécharger (ici BOR pour Bordeaux), l’utilisateur pour lequel on doit effectuer le téléchargement (ici casa) ainsi que le répertoire dans lequel on téléchargera (ici Desktop, soit le bureau de l’utilisateur).

Ce script utilise curl pour effectuer le téléchargement. On l’installera, puis on testera ce script personnalisé.

Reste maintenant à automatiser le téléchargement. On utilisera pour ce faire anacron, qui est à préférer à cron car il n’est pas nécessaire que la machine tourne en permanence pour que le téléchargement soit effectué. Pour signaler à anacron que l’on demande à ce que ce script soit lancé chaque jour, il faut placer le script download-20-minutes dans le répertoire /etc/cron.daily, le rendre exécutable (chmod a+x download-20-minutes) et en rendre root propriétaire (chown root: download-20-minutes). Vérifier que le service anacron fonctionne.

Voilà, toutes les nuits vers minuit, vous devriez avoir le journal du lendemain sur votre bureau (sauf les samedi et dimanche bien sûr).

Enjoy!


Exporter les données de ChaChing

21 février 2008

chaching.png

ChaChing est un excellent logiciel de gestion de comptes personnels à tel point que j’en ai fait le sujet d’un précédent article. Cependant, le danger de ce logiciel est de se trouver piégé par son format de données propres. Il ne comporte en effet aucune option pour exporter les données vers un format ouvert. J’ai cherché sur internet un moyen d’exporter les données mais n’en ai trouvé aucun.

Cependant, les données sont enregistrées dans une base SQLite 3, qui est un standard. L’idée m’est donc venue d’écrire un script Python (qui est installé avec MacOSX avec la bibliothèque SQLite3) permettant d’exporter vos données ChaChing vers le format OFX.

Ce format est extrèmement complexe (les spécifications font plus de 600 pages !), mais si l’on se limite à l’import des données dans un compte vierge, cela reste gérable. Néanmoins, ce script n’a pas la prétention d’être exhaustif, mais a le mérite d’avoir fonctionné dans mon cas pour importer les données dans GNUCash.

Mise en garde : vous comprendrez que je ne peux assumer aucune responsabilité quand à l’utilisation de ce script et ne le distribue que dans l’espoir qu’il puisse être utile. Il convient de prendre toutes les mesures appropriées afin de vérifier les données qu’il produit. Ce logiciel est distribué sous licence GPL 3, voir la licence dans le fichier LICENSE de l’archive.

Ceci dit, l’utilisation du script est fort simple : télécharger cette archive, la placer sur le bureau par exemple, la dézipper (en cliquant dessus). Cela crée un répertoire chaching-export sur le bureau. Ouvrir un terminal, se rendre dans le répertoire créé et taper ./chaching-export. Cela va lancer la génération des fichiers OFX, un pour chaque compte de ChaChing. Le nom des fichiers comporte le solde du compte concerné. Ces fichiers sont prets à être importés dans votre logiciel préféré.

Notes : Il est préférable d’importer ces fichiers dans un compte vierge, sans numéro de compte défini, car certains logiciels vérifient le numéro de compte des fichiers OFX importés. D’autre part, les tags de ChaChing sont renseignés dans le champ REFNUM des fichiers OFX, de manière à ce qu’il soit possible de les exploiter après importation.

Enjoy!


Podcasts technophiles

22 mars 2007

Je viens de découvrir this WEEK in TECH, un site hébergeant des podcasts de Leo Laporte et ses amis. Je vous recommande en particulier l’émission FLOSS Weekly avec des longues interviews de Rasmus Lerdorf (créateur de PHP), Guido van Rossum (créateur de Python), Eben Moglen (qui a plein de choses intéressantes à dire sur la GPL 3.0) et bien d’autres. On trouvera ces émissions dans le répertoire d’iTunes. C’est en anglais mais reste très compréhensible. A savourer !

Dans le même registre, on trouvera du contenu intéressant (dont une interview de Guido sur Python 3000) sur la page des Podcasts O’Reilly.


Easter Egg Python

20 mars 2007

Je viens de découvrir un easter egg dans l’interpréteur Python en ligne de commande (lancé lorsqu’on tape python dans un terminal). Taper import this. C’est probablement vieux comme Python, mais je trouve cela très drôle (et utile accessoirement).