Builds dernier Emacs 23.1 pour MacOSX

9 août 2009

La toute dernière version d’Emacs, la 23.1, vient de sortir. Voici des builds pour MacOSX : c’est ici pour le build Intel et là pour le build PPC.

Enjoy!


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!


Bee Release 0.5.1

20 janvier 2009

Cette dernière livraison est une release de déboggage. La page du projet se trouve à cette adresse.


Bee Release 0.5.0

31 décembre 2008

bee-logo

Bee est un outil de build utilisant des fichiers de build YAML. Ces fichiers ont une sytaxe propre comme Ant et tournent aussi vite que Make. Ils sont constitués de commandes shell, de code Ruby ou de tâches Bee pour des builds indépendants de la plateforme.

L’exemple Hello World ressemble à ça:

- target: hello
  script:
  - print: "Hello World!"

C’est aussi simple que cela !

Pour commencer à utiliser Bee en 15 minutes, tapez gem install bee et lisez la section Quick Start section à l’adresse http://bee.rubyforge.org/quickstart.html.

Enjoy!


Utiliser le module Ruby DBI

25 juin 2008

J’ai continué la traduction de la série de Paul Dubois sur MySQL avec l’article sur le module Ruby DBI. On peut trouver la version HTML de l’article à cette adresse et une version PDF ici. Pour rappel, un premier article sur le module Ruby MySQL est disponible ici en HTML et là en version PDF. On trouvera la version originale, d’autres articles sur MySQL ainsi que les sources des exemples de l’article sur le site de l’auteur.


CVS Status Recursif

30 mai 2008

Dans un précédent post, je proposais un script affichant un statut CVS lisible. Ce script permettait de se faire un idée claire de l’état d’un projet CVS. Mon problème était que j’avais nombre de projets CVS dans mon home et que je souhaitais connaître l’état de tous ces projets sans avoir à me rendre dans chacun de ces répertoires.

J’ai donc amélioré ce script pour le rendre récursif : il recherche les projets CVS dans l’arborescence des fichiers et affiche leur statut. On peut donc maintenant lancer le script à la racine de son home par exemple (avec cd; cs) et lire un statut de tous les projets CVS.

Ce script a été développé et testé avec Ruby 1.8.6 sous Linux (Ubuntu 7.10 Gusty) et MacOSX (10.5.3 Leopard) , on peut le télécharger ici.

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.


Ruby oneliners

28 décembre 2007

Voici une page listant des scripts ruby à lancer directement de la ligne de commande : http://fepus.net/ruby1line.txt.


Merry Christmas and Happy new Ruby

26 décembre 2007

Logo Ruby

Comme promis, la version 1.9 de Ruby est sortie pour Noël ! C’est une excellente nouvelle pour les performances (voir ce précédent post), mais aussi pour tout un tas de nouvelles fonctionnalités dont on peut trouver les détails sur cette page.

Ces changements sont très nombreux et la plupart du code existant ne tourne plus. Le portage est trivial mais nécessaire. Donc, à tous les auteurs Ruby : retroussons nos manches, il y a du boulot !


Nouveau benchmark des VMs Ruby

5 décembre 2007

Logo Ruby

Dans un précédent article, j’évoquais un benchmark des principales VMs Ruby. Ce benchmark a été mis à jour à cette adresse et les résultats sont surprenants :

  • JRuby a très fortement progressé en stabilité (il fait tourner tous les programmes de test) et en vitesse (il tourne plus vite que la VM 1.8.6 !).
  • YARV est très stable et rapide.

C’est une très bonne nouvelle : la prochaine version de Ruby (la 1.9, basée sur YARV et prévue pour Noel) devrait donc être près de 3 fois plus rapide que la 1.8.6. Il est certain que l’on est encore loin des performances du natif (probablement dans un rapport de l’ordre de 1 pour 10), mais on se situe au niveau des performances des langages interprètés classiques comme Python ou Perl. Ruby devient un langage de script défendable et même recommandable !

Les performances de JRuby sont pour moi une vraie source d’étonnement : cette VM est plus rapide et plus stable que la 1.8.6 ! A tel point qu’elle fait tourner Rails… On peut maintenant envisager de l’utiliser comme cheval de Troie pour miner Java de l’intérieur…

Pour finir, voici un lien qui permet de comparer les performances de langages de programmation entre eux (par exemple Python vs Ruby 1.9).

Je sens que je vais passer un bon noël…