beanstalkd première approche

Publié par fredix Lun 05 mai 2008 21:27:00 GMT

beanstalkd est un serveur de file d’attente en C développé pour une application Facebook. Il existe un client Ruby mais la documentation est très succincte. Il existe bien un exemple d’usage mais ne répond pas vraiment aux questions, telles que comment obtenir un équivalent des namespaces de manière à ce que plusieurs clients puissent se connecter au serveur tout en écoutant chacun sur leur(s) file(s) et comment savoir que tel message vient de telle file. La documentation du protocole m’a permis d’y répondre.

beanstalk = Beanstalk::Pool.new(['localhost:11300'])
loop do
  job = beanstalk.reserve
  puts job.body # prints "hello" 
  job.delete
end

Le protocole de Beanstalkd parle de tube. Ces tubes correspondent à des files d’attentes. Dans cet exemple de base le client écoute par défaut sur le tube “default”. Si l’on souhaite spécifier le tube à écouter ou bien ajouter un tube il suffit de le préciser :

beanstalk.watch('montube')

Ainsi le client écoutera sur les tubes “default” et “montube”.

beanstalk.ignore('default')

Supprime l’écoute sur le tube “default”. Attention un client doit au moins écouter un tube. L’ignore doit donc être effectué après le watch.

Si l’on souhaite qu’un client puisse écouter sur plusieurs tubes, il y a de fortes chances d’avoir besoin de savoir de quel tube provient un message afin d’effectuer les bons traitements :

job.stats['tube']

Indique de quel tube provient le message reçu. Un exemple complet :

require 'rubygems'
require 'beanstalk-client'
beanstalk = Beanstalk::Pool.new(['127.0.0.1:11300'])
beanstalk.watch('foo')
beanstalk.watch('bar')
beanstalk.ignore('default')
loop do
  job = beanstalk.reserve
  job_hash = job.ybody
  case job.stats['tube']
  when "foo" 
    puts "from foo's tube : #{job_hash[:data]}" 
  when "bar" 
    puts "from bar's tube : #{job_hash[:data]}" 
  end
  job.delete 
end

Depuis un client qui souhaite empiler un message il suffit de préciser quel tube l’on vise, sinon cela sera “default” :

beanstalk.use('foo')

Exemple :

require 'rubygems'
require 'beanstalk-client'
beanstalk = Beanstalk::Pool.new(['127.0.0.1:11300'])
beanstalk.use('foo')
beanstalk.yput(:data => "good")
beanstalk.use('bar')
beanstalk.yput(:data => "bye")

Résultats :

from foo's tube : good
from bar's tube : bye

On a ainsi un usage plus intéressant que les exemples n’utilisant qu’un seul client sur un seul tube. Beanstalkd possède un grand nombre de commandes mais il est dommage qu’il ne fournisse pas pour l’instant d’option de persistance sur le disque. Pour cela sparrow peut faire l’affaire et même s’il est en Ruby, l’usage d’eventmachine peut sans doute lui faire tenir une charge raisonnable. Cependant Beanstalkd possède une communauté très active et des bibliothèques vers 4 langages (pas PHP :P mais cela ne saurait tarder).

Ruby & GTK : article dans LinuxMag

Publié par fredix Mar 18 mars 2008 13:03:00 GMT

LinuxMag vient de publier sur UnixGarden mon article sur ruby/GTK+ paru dans LinuxMag 99 : Ruby & GTK+ : le développement d’applications de bureau à votre portée.

Je le compléterai, notamment la partie sur GStreamer, quand j’aurais un peu de temps.

De la répartition de charge en Ruby on Rails

Publié par fredix Mar 22 jan 2008 15:32:00 GMT

Je viens de publier un article en 2 parties sur le blog d’AF83 :

De la répartition de charge en Ruby on Rails 1/2

De la répartition de charge en Ruby on Rails 2/2

C’est plutôt technique, et présente une solution parmis tant d’autres dans ce domaine très particulier.

focus Ferret

Publié par fredix Jeu 29 nov 2007 17:16:00 GMT

Le focus d’O’Reilly consacré à cette bibliothèque d’indexation de document vient de sortir avec un peu de retard : Focus Ferret

Voir mon précédent billet : ferret

Ruby/GTK+ dans Linux Magazine France

Publié par fredix Ven 09 nov 2007 17:10:00 GMT

Mon article sur Ruby/GTK+ est disponible dans le LinuxMag 99 sorti en kiosque depuis peu.
Il est très orienté débutant, et déjà un certain nombre de personnes m’ont fait savoir qu’elles seraient intéressées par un autre plus avancé. A voir si je trouve le temps, il y a beaucoup à dire notamment sur les Treeview et les signaux.

Pour info cet article devrait être disponible sur le site de RubyFrance.org d’ici 4 mois en licence Creative Commons.

HS Linux Mag sur Ruby 1

Publié par fredix Jeu 11 oct 2007 22:36:00 GMT

Ce n’est plus un secret puisque le Hors Série de MISC d’octobre/novembre fait la pub pour le HS Linux mag n°33 : “Découvrez RUBY LE langage de programmation interprété orienté objet”.

Je vous conseille fortement cet HS, déjà rien que par son auteur, Greg un expert reconnu ayant à son actif un grand nombre de bindings.

Il est tellement plein que mon article sur Ruby/GTK+ sera finalement dans le prochain LinuxMag qui sortira en même temps.

A la fin du mois foncez chez votre libraire ;)

D’ailleurs voici la couverture !

RubyFrance a besoin de vous ! 3

Publié par fredix Sam 22 sept 2007 14:25:00 GMT

Vous lisez ce blog car vous êtes peut être fan du langage Ruby. Actuellement l’association RubyFrance lance son AG annuelle. Cela veut dire renouvellement du bureau et du CA.

Pour tout ceux qui ont participé de prêt ou de loin à une association, ils connaissent les difficultés pour faire avancer les choses. Car il faut un peu de temps souvent pris sur ses loisirs. Cependant lorsqu’on fait parti du Conseil d’Administration le minimum demandé est de voter une fois par an à l’Assemblée Générale. Rien d’impossible :) Pour cela il suffit d’être membre de l’association.

Malgré un extraordinaire développement de Ruby on Rails parmi les entreprises sur Internet, le langage Ruby reste encore trop peu connu en France. Il y a beaucoup de choses à faire pour le promouvoir, notamment participer aux diverses manifestions du Libre et des professionnels, au niveau national et local. Contribuer aux développement de nouveaux outils et à ceux existant. C’est le but de notre association.

Cependant celle-ci manque encore trop de moyens, financier et humains.

Ruby n’est pas que le fameux framework web Ruby on Rails. C’est aussi :

Pour tout cela Ruby mérite d’être plus connu en France et en Francophonie. N’hésitez pas à adhérer, qui sait peut-être que cela poussera un jour votre entreprise à utiliser Ruby. Quant à celles qui l’utilisent déjà, nous acceptons volontiers votre adhésion.

ferret

Publié par fredix Dim 09 sept 2007 21:31:00 GMT

J’ai relu il y a plusieurs semaines pour O’Reilly la traduction du shortcuts sur ferret. Ferret est une implémentation en Ruby/C de Lucene un moteur libre d’indexation de document en Java.

Ferret est vraiment un projet très intéressant car il permet d’indexer toutes types de documents provenant d’une base de données ou de fichiers. Il existe même un plugin pour Ruby on Rails : acts_as_ferret. Enfin Ferret propose un DSL très poussé permettant d’interroger simplement l’index via une multitude de critères.

La traduction de Jérémie Bordier est un modèle du genre et dépasse même la version originale. J’espère que la version française sortira ce mois-ci et je conseille à toutes personnes souhaitant indexer un volume important de documents de se le procurer.

Migration dotclear vers typo 2

Publié par fredix Mar 17 juil 2007 21:07:00 GMT

Le G vient de mettre à jour le script de migration. N’hésitez pas à l’utiliser si vous désirez tester Typo.

update : 10 minutes après l’envoi du patch du G, un autre patch de migration basé aussi sur mon script a été également soumis. Dingue !

RMLL 2

Publié par fredix Mar 26 juin 2007 08:16:00 GMT

Je serai aux RMLL le jeudi 12 et vendredi 13 juillet à Amiens. Vous pouvez consulter les confs développeurs où la matinée du vendredi est dédiée à Ruby.

mise à jour : plus d’information sur notre site web : Rencontre Mondiale du Logiciel Libre.

Billets précédents: 1 2