riduidel’s posterous

 
Filed under

ruby

 

Groovy, baby !

Depuis quelques temps, mes yeux sont attirés comme par un aimant par le calendrier Aubade 2010 heu, non, qu'est-ce que je raconte, moi.
Non, mes yeux se tournent du côté de Groovy pour une raison assez curieusement marrante.
Voyez-vous, dans ma boîte, on développe une énorme application professionnelle avec un langage propriétaire (au sens de c'est nous qu'on l'a fait, je dis ça pour ma mère qui passe de temps en temps par ici). Jusqu'à présent, pour ce langage, on n'avait aucun outil de qualité logicielle, à commencer par des tests unitaires. Donc, avec un collègue, la semaine dernière, on s'est pris par la main, et on a écrit notre petit framework, qui en fait à peu près autant que JUnit 3 avec une syntaxe plutôt proche de JUnit 4. On a fini assez récement, et ça marche plutôt bien. Seulement voilà, comment faire pour avoir un suivi des tests, une exécution systématique, bref de l'intégration continue ?
Les plus geeks d'entre vous me parleront d'Hudson, et ils auront raison. il faut, à partir des résultats de test, produire un fichier compatible avec le XML de Junit, dont la syntaxe ne se trouve pas facilement sur le web. Il faut aussi injecter cette syntaxe dans Hudson pour bénéficier des jolis graphiques d'évolution des résultats de test. Et c'est là que je vais vous parler de Groovy.
Groovy est un langage dynamique pour la plateforme java. ca veut dire que le seul interpréteur Groovy existant est un logiciel en java. on bénéficie donc des avantages de la plateforme Java (une portabilité rarement égalée) et de ses inconvénients (l'intégration fine à l'OS est parfois complexe). Cependant, Groovy n'est pas Java, et il permet d'utiliser des constructions de code franchement élaborées (closures, builders divers et variés, DSL, ...). Bref, il marie les avantages de Ruby avec la plateforme Java. Même en terme de déploiement, il offre quelques subtilités intéressantes avec grape. Enfin, et c'est ce qui m'a poussé dans cette direction, il est à la fois trivial d'écrire un mojo maven avec groovy, et d'écrire un client web-service se branchant sur un WSDL avec groovyws.
Et je dois dire que j'ai pas été déçu du voyage. En fait, ce qui m'a paru le plus difficile, ça a été de travailler sur un projet maven+groovy dans Eclipse, qui perdait les pédales dès que j'essayais de faire marcher les différents builders en même temps. Mais à part ça, groovy est presque immédiatement devenu pour moi le nouveau langage à mettre dans mon escarcelle : il est puissant, son environnement d'exécution est robuste (la JVM, je ne connais pas grand chose de plus solide), on peut écrire d'une façon aussi expressive qu'en Ruby, et la plupart de mes vieilles feintes de javaiste continueront à fonctionner.
Bref, si vous avez un peu de temps devant vous, allez lire quelques pages de la doc Groovy, faites-vous un toy project avec Gaelyk ou Griffon, et vous verrez comme c'est bien. Ou même, tiens, passez votre projet à gradle, ce sera amusant.

Loading mentions Retweet
Filed under  //   groovy   java   langage   ruby  

Comments [0]

Le retour de l'aggrégateur auto-hébergé ?

Il y a peu, j'ai installé dropbox.
Et je dois dire que c'est un logiciel absolument épatant si on veut garder quelques fichiers à portée de main sans même s'embêter à trimballer une clé USB. D'ailleurs, j'ai quelques fichiers critiques qui sont hébergés dans mon dossier dropbox pour être disponibles partout où je vais.
Donc, j'en ai était content.
J'en étais encore plus content quand j'ai commencé à bosser sur une idée que j'avais en tête. Parce que dropbox, avec ses fonctionnalités de partage de fichier, permet le développement quelquesoit la machine sur laquelle on se trouve.
Et puis, ce matin, mon Google Reader m'a sorti, depuis Ruby Inside, un lien vers un framework de génération de site statique : Jekyll. Ce qui m'a aussitôt fait penser à webgen et à mes précédentes tentatives d'aggrégation locale de mes messages sur la toile. Du coup, quand j'aurais le temps, je crois que je jouerais à nouveau un peu avec Ruby (ou peut-être Groovy, tiens) pour récupérer toutes les pages web que j'ai écrites en dehors de mon site. Ca sera marrant (ou pas), et ça me permettra peut-être de mettre à jour ma opage chez free d'une façon enfin propre.

Loading mentions Retweet
Filed under  //   github   idée   ruby   webgen  

Comments [0]

iPhoto corrector

Bon, ben voilà, en une matinée de travail, j'ai enfin ce que je voulais : un script qui, en partant des données exportées par iPhoto, écrit les métadonnées XMP/IPTC qui m'intéressent. Bon, pour l'instant, il n'y a que les mots-clés, mais maintenant que je maîtrise le truc, je vais sans doute en rajouter d'autres ... Enfin, si j'arrive à résoudre les dramatiques problèmes de lenteur du truc (qui sont peut-être dûes à ruby, peut-être à mon NAS - ben oui, les photos sont stockées dessus).
Bref, ça marche, et c'est l'essentiel.
Ce qui est rigolo, en revanche, c'est que je n'utilise rien de ce que j'avais prévu :

  • je voulais utiliser hpricot, mais finallement, j'utilise plist (parce que bon, la vision Apple du XML est franchement folklorique)
  • je voulais utiliser ruby-xmp, mais finallement j'utilise MiniExiftool (qui a le bon goût d'être gratuite)
  • Et en bonus, j'utilise optiflag qui est vraiment pratique pour la ligne de commande
Et maintenant, la question cruciale : qu'est-ce que je fais de ce micro-script ?
A priori, ça n'intéresse que moi. Mais si toi, dans le fond, tu es intéressé par ce fix pour iPhoto, je veux bien le rendre public et peut-être même l'améliorer ...

Loading mentions Retweet
Filed under  //   iphoto   iptc   macosx   ruby   xmp  

Comments [0]

Why’s “Try Ruby” (Web Version of irb) Back Online

Screen shot 2009-09-02 at 19.19.38.png

Try Ruby was a Web site by Why The Lucky Stiff that provided a Web-based version of irb (the interactive ruby prompt) and a 15 minute tutorial for people to learn and play with Ruby. With Why's disappearance, however, the site went down and an invaluable Ruby community resource was lost.

Luckily, Andrew McElroy has made a great effort in getting Try Ruby back online. It's not precisely the same, but it's as close as you're going to get for now (one key difference is that the irb process is not persistent - instead the history is re-run on each new line). There's even the 15 minute introductory Ruby tutorial! An extra bonus is that Andrew has released all of the code he has for Try Ruby in a Github repository. Why's code was never open sourced but Andrew has done a good job in starting to rebuild the backend.

Note that this is not a Why-approved project (yet). To the best of my knowledge there is still no further information on Why's disappearance.

This entry was posted on Wednesday, September 2nd, 2009 at 6:28 pm and is filed under News, Tools. You can leave a response, or trackback from your own site.

C'est marrant, mais je parlais des incroyables inventions de _Why il n'y a pas longtemps, et voici que l'une d'entre elles, et sans doute la plus ... comment dire ... pédagogique, renaît de ses cendres.. Alors, juste pour honorer la mémoire de l'une des personnas les plus éminentes du monde Ruby, allez donc essayer ce super outil d'apprentissage Ruby.

Loading mentions Retweet
Filed under  //   ruby  

Comments [0]

_why, oh why did you disappeared ?

J'en ai parlé beaucoup trop brièvement dans mon message précédent, donc je vais en parler un peu plus.

Il y a quatre ou cinq ans, j'ai découvert le Ruby et Ruby on Rails. C'était pas mal, mais certaines choses me semblaient un peu bizarres, surtout dans Ruby on Rails.
Et comme à l'époque, j'en étais à la troisième ou quatrième itération de mon site, je voulais récupérer des infos bibliographiques sur mes bouquins depuis le site noosfere.
Après un peu de recherche, je suis tombé sur hpricot. Et de fil en aiguille, j'ai découvert l'oeuvre de Why the lucky stiff : son incroyable blog, tous ses projets délirants (shoes, son guide du ruby, tryruby, pour essayer ruby dans son navigateur). Et je trouvais tout ça fascinant.
Parce que bon, nous autres, dans le monde du Java, on est globalement des gens sérieux, voire même sérieusement chiants (genre quand on me parle de certains trucs méta-méta-programming). Et là, je tombais sur un mec qui écrivait du code Ruby à la main (évidement, je n'ai pas de lien sous la main). Je n'hésiterais pas à dire que _Why fut mon premier héros informatique.
Malheureusement, depuis le mois d'août, _Why a disparu d'internet. Et ça, c'est Ruby Inside qui le dit, avec un paquet de lien nous montrant une partie de ce que _Why a réalisé.
Mais son meilleur hommage posthume nous vient de John Resig (qui n'est pas n'importe qui, quand même, puisque c'est lui qui nous a donné jQuery).
La seule chose que je pourrais dire, personnellement, c'est que _Why a changé ma vision du développement, pour la rendre plus élégante, plus simple et plus spontanée. Merci pour tout, _Why.

Loading mentions Retweet
Filed under  //   mavie   ruby  

Comments [0]

IPTC, XMP ? Ruby à la rescousse !

http://github.com/whymirror/hpricot/tree/masterBon, comme je le disais, de retour de vacances, iPhoto m'énerve toujours autant avec sa non-gestion des tags IPTC/XMP.

Alors cette fois-ci, ça suffit !
Je sais, depuis bien longtemps, que dans une bibliothèque iPhoto, il y a toujours un fichier AlbumData.xml qui contient toute la base de données de photos. Je vais donc l'utiliser comme source pour lire les infos que je vais ajouter dans les tags IPTC/XMP des photos. Comme ça, je serais tranquille.
Et franchement, l'algorithme est hyper-pipeau :

Lire le fichier XML
    Pour chaque tag, mémoriser son id
    Pour chaque photo, récupérer les tags par leur id
    Ecrire chaque tag en IPTC ET en XMP dans la photo

Et ce sera tout.
Pour ça, j'aurais besoin d'Hpricot (RPI _Why, RIP) et d'une API pour écrire l'IPTC et l'XMP (et vu nos usages, je me demande si l'XMP n'est pas plus important que l'IPTC ...)
Et avec ça, "normalement", si tout se passe bien, j'aurais mes tags en IPTC et en XML, ce qui sera bien pratique pour exploiter correctement ces photos.

Loading mentions Retweet
Filed under  //   iphoto   iptc   mac   ruby  

Comments [0]

Renouvellement

Comme je le disais dans mon précédent message, j'ai perdu un des ordinateurs que j'utilisais à la maison.
Il s'agissait d'un portable Sony, pour être précis, un VGN-FE31Z qui m'avait été gracieusement fourni par mon employeur, lequel a choisi de m'en interdire l'usage.
Du coup, je suis retourné sur mon iBook. Cet iBook, j'ai essayé de le moderniser avec un passage à Leopard. Las, les 512 Mo de RAM de ce vieil engin ne suffisent plus à faire tourner l'OS. Donc, je crois que je vais le revendre, et l'échanger contre un portable encore plus petit (mais nettement moins cher) : Un Acer Aspire One 751.
Alors vous vous demandez sans doute pourquoi je vais prendre une telle brouette.
La réponse tient en un mot : Wii.
En effet, comme tout utilisateur de loisirs numériques, ma quête de puissance informatique était liée uniquement à des besoins vidéo-ludiques.
Maintenant que j'ai une console parfaite pour cet usage, le portable ne me servira plus qu'à lancer Opera et faire du développement avec Eclipse. Et pour ça, je sais d'expérience qu'il faut beaucoup moins de puissance que ce qu'on croit ... Puisque j'ai longtemps utilisé Eclipse sur un PIII 933 !

Loading mentions Retweet
Filed under  //   bureau   mac   portable   ruby  

Comments [0]

Saleté d'obsolescence programmée !

Suite à des circonstances que je vais sans doute prochainement détailler, j'ai perdu l'un des ordinateurs que j'utilisais à la maison.

J'ai dû tenter de faire passer certains services de cet ordinateur vers mon portable "historique" : un vieux iBook G4 (bon, vieux, pour de l'informatique).
Je dis vieux même si Tiger, à l'époque, m'avait paru le comble de la branchitude. Hélas, ce que je n'avais pas prévu, c'est ce que Jeff Artwood appelle le côté dongle d'un mac. Enfin, avec une certaine nuance. En effet, s'il parle du matériel, le problème tient pour moi au logiciel, et surtout au système : le jour où le monde Mac est passé à Leopard, beaucoup de choses se sont mises, discrètement d'abord, et de plus en plus vite ensuite, à marcher moins bien.
Il y a d'abord eu Qicksilver, puis les logiciels iLife (ce qui n'était pas vraiment gênant). Maintenant, c'est Ruby et Eclipse qui ne supportent plus ma brouette. Et là, c'est rédhibitoire. Sans ça, je ne peux plus faire grand chose : mon lifestream s'appuie sur webgen, qui est passé à Ruby 1.8.5 là où mon iBook n'a que le 1.8.2, et Eclipse réclame à corps et à cris Leopard.
Il ne me reste donc plus beaucoup de solutions (deux, en fait) :
  1. Me passer de tout ça et trouver des alternatives
  2. Trouver un CD de Leopard et faire la mise à jour
D'accord, la seconde méthode est moins honnête, et va faire du mal à ma brouette, mais je vais quand même la tenter. Si ça ne marche pas, tant pis, je passerais à un dual boot avec un quelconque Linux me permettant d'utiliser mes jouets favoris !
Mais avant, opération d'urgence : je dois exporter ma bibliothèque photo pour éviter qu'elle ne soit mangée lors du déménagement (ce qui me permettra par ailleurs de la remettre au carré question IPTC/WMP/...

Loading mentions Retweet
Filed under  //   java   mac   ruby  

Comments [0]

Les rubyistes sont innovants (ou pas

Ce matin, par des chemins détournés, je suis tombés sur ce message d'un gusse qui refait un système de blog utilisant un gestionnaire de sources distribué comme outil de gestion d'historique.
J'allais me mettre à penser que c'était une bonne idée, quand je me suis rappelé que Rui Carno, avec Yaki, fait la même chose en Python, et depuis bien plus longtemps. En même temps, je ne suis pas certain que la fonctionnalité soit aussi intégrée dans Yaki.
N'empêche, ça m'a donné des idées pour une réécriture future de mon bazar webgen.
Parce que je ne suis pas du tout satisfait du site web généré chez moi, et que j'aimerais vraiment obtenir quelque chose de fiable, et surtout qui résiste à la fin du monde !
Dans le même ordre di'dée, ce serait peut-être malin que je mette un cron sur mon Mac pour qu'il regénère mon site automatiquement ...

Loading mentions Retweet
Filed under  //   blog   python   ruby  

Comments [0]

le principe d'incertitude de maven

Depuis 3 jours, je me bats contre maven et certaines de ses pires horreurs.
En particulier avec le fait que, contre toute attente, alors que c'est la base du bordel, le système de résolution de dépendances est buggé (oui, mon fan, ça fait mal, mais à un moment il faut le reconnaître, c'est buggé).
Bon, évidement, en bonus (mais je l'ai déja dit) la doc est totallement, complètement et définitivement lamentable, les plugins sont terrifiants de nullité (essayez donc de savoir comment maven fait pour résoudre une dépendance, tiens. C'est magique, opaque, et foireux).
Bref, maven, ça chie.
Le pire, c'est que je ne crois pas être le seul à y penser.
En deux secondes de recherches, je suis par exemple tombé sur cette page : Introducing Buildr, or how we cured our Maven blues
Le but, ça n'est évidement pas de dire que buildr c'est bien, et que maven ça pue. Juste de montrer que les défauts de maven sont connus et agaçent réellement.
Surtout que cet après-midi, j'ai dû faire dix minutes d'ant, et c'était nettement, mais alors très netteemnt plus facile.
Reste plus qu'à mettre la main sur un outil de gestion de dépendances/build qui tienne réellement la route (parce que maven, hein).
Et si buildr est un concurrent valable, j'ai dans l'idée que même la wikipedia est riche d'idées.

Loading mentions Retweet
Filed under  //   build   java   maven   ruby  

Comments [1]