Code barre

Publié par fredix Mon, 19 Jun 2006 13:24:00 GMT

Ruby possède une sympathique lib pour générer des codes barre via la lib rmagick : barcode.

Cependant la doc est plutôt inexistante, la seule trouvée sur le net ne fonctionne pas via une installation en gem : http://jrhicks.net/123

Voici donc le bout de code qui va bien :
sudo gem install barcode 
sudo apt-get install librmagick-ruby

require 'rubygems'
require_gem 'barcode'
require 'barcode/code39'

myBarcode = Code39::new("Hello World")
myBarcode.to_img("helloWorld.gif",200,50)

Introduction à Rails

Publié par fredix Thu, 08 Jun 2006 09:39:00 GMT

Vu via la liste de Railsfrance et le blog de Laurent une excellente introduction à Ruby on Rails.

Simple curieux ou désireux de débuter en RoR, à lire absolument :)

Ruby on Usenet

Publié par fredix Thu, 01 Jun 2006 17:22:00 GMT

Un courageux a lancé un Appel A Débattre sur usenet, pour proposer la création d’un forum dédié à Ruby dans la hiérarchie fr.*

L’Appel A Voter avait échoué au précédent vote en 2001. Il faut espérer qu’il en sera enfin autrement cette fois-ci … Il faut toujours au moins 80 votes positifs et 3 fois plus que le non.
A se demander comment on peut voter contre la création d’un forum dédié à un langage libre de programmation, mais ne sous-estimez pas la connerie humaine surtout sur Usenet.

Une annonce sur le forum Ruby de Linuxfr : http://linuxfr.org/forums/28/17013.html

L’annonce sur fr.usenet.forums.annonces, Message-ID:
<m2mzcyblkm.fsf@gimli.dustnet.teaser.fr>
Les débats sur fr.usenet.forums.evolution, Message-ID:
<m2mzcyblkm.fsf@gimli.dustnet.teaser.fr>

IHM asynchrone

Publié par fredix Tue, 11 Apr 2006 21:37:00 GMT

J’avais parlé d’interface asynchrone dans ce billet.

Cela consiste tout simplement à ce qu’une interface puisse continuer à prendre les évènements de l’utilisateur pendant qu’elle se met à jour.

L’exemple typique est celui d’un treeview mettant un certain temps à se remplir. Dans un programme classique, l’interface sera figée le temps que le treeview soit remplit.

Une interface asynchrone permet d’être mise à jour à mesure, et de répondre aux évènements de l’utilisateur. Pour faire cela le programmeur lambda (moi le premier :) pensera à un thread pour résoudre ce problème.
Le thread contenant la partie du code insérant les données dans le treeview. Il va s’en dire qu’un thread pour cette tâche est plutôt “overkill”. De plus on ajoute un élément rendant le programme difficile à débuguer.

La Glib propose la méthode g_idle_add. Cette fonction permet d’effecter un traitement lorsque la boucle d’évènement de GTK+ idle, c’est à dire lorsqu’il n’y a plus d’évènement hautement prioritaire à gérer.
Cette fonction est bien sûr bindé en RG2 :
GLib::Idle.add {
  traitement
}

Voir l’exemple dans le paquet libglib2-ruby : /usr/share/doc/libglib2-ruby/examples/idle.rb

Ensuite, si vous avez un traitement répétitif à effectuer, il existe la fonction g_timeout_add. Cette fonction exécute votre traitement dans un intervale régulier et selon une priorité définissable. Voir l’exemple dans /usr/share/doc/libglib2-ruby/examples/timeout.rb

Ces deux fonctions permettent d’éviter les threads et rendent votre IHM un peu plus asynchrone. Voir les explications détaillées en C sur ce billet : Lazy Loading Using The Main Loop et un exemple plus simple en python : Re: Lazy loading

Malgré ceci, il se peut que vous deviez forcer GTK+ à se mettre à jour :
while (Gtk.events_pending?)
              Gtk.main_iteration
end
En gros, tant que GTK+ a des évènement en attente, on lui laisse la main. Ceci me sert à forcer le rafraichissement du treeview des pages jaunes. Pour diverses raisons (callback SAX2) je ne peux pas mettre la boucle alimentant le model du treeview dans un g_idle_add. Cette boucle me permet donc d’arriver à un résultat similaire même si le g_idle_add est à privilégier.


Merci aux conseils de Dodji, teuf et HappyPeng.

Du cake dans mon Rails

Publié par fredix Tue, 28 Feb 2006 21:30:00 GMT

Vous ne jurez que par Rails et donc l’utilisation d’un framework objet MVC ?

Votre boite s’est investie depuis longtemps sur PHP, et il y a peu de chance pour qu’elle accepte une nouvelle techno ?

Il existe une alternative au code PHP gruik. En effet le projet cakePHP est une adaptation en PHP du fameux framework Rails.

Certes il n’est pas entièrement comparable, et dans une vue vous devrez encore utiliser des tableaux :
$data[‘Publisher’][‘name’]

Alors qu’en Rails vous faites :
@publisher.name
, vous avez un vrai objet.

Mais c’est malgré tout une grande avancé dans le développement structuré en PHP. Attention vous ne pourrez plus programmer comme avant :)
Voir un tutoriel.

ps : Rails retourne tellement le web que même Apple a senti le besoin de fournir un tutoriel.

Geekast : release 0.1

Publié par fredix Mon, 27 Feb 2006 19:18:00 GMT

J’ai cédé à l’appel du Grand Geek il y a 2 semaines en migrant ma Breezy vers Dapper.

En passant, XGL ça rox, mais bon ça saoule assez vite aussi pour l’instant. Vivement des applets GNOME qui exploitent OpenGL.

Geekast fonctionne pas si mal en dapper. Il profite des améliorations de Gstreamer 0.8.12, la lecture vidéo et audio n’est plus saccadée. Le lecteur interne me parait exploitable dans une certaine mesure. En effet ca plante toujours si vous rafraichissez les pages jaunes pendant une écoute …
Enfin apparement la trayicon plante sur le clic droit dans un environnement PPC. Si des possesseurs de Mac/PPC veulent bien me confirmer la chose je ferai un bug report aux développeurs.

A part ces bricoles je vais sortir la 0.1 dans la semaine, puisque je n’ai pas eu de retour :/

Ensuite je vais intégrer la libgtk-mozembed-ruby qui permettra de consulter, via une page web directement intégrée dans Geekast, les statistiques d’un flux et son chat. Ces possibilités n’étant pas intégrées dans Peercast mais seulement proposées par le site des pages jaunes il n’y a pas d’autre moyen propre (pas question de parser un html). J’aurais bien utilisé la librsvg et cairo, si Giles (le développeur de Peercast) avait intégré les stats dans le flux XML
A ce propos la version 0.1215 vient de sortir, elle corrige des buffer overflow, pas de nouvelles feature donc :/

Enfin j’envisage de réécrire Geekast en GTKmm (C++), d’une part pour apprendre et d’autre part pour lui ajouter des possibilités qu’il sera difficile d’implémenter en Ruby efficacement. Avoir voir si je ne ferais pas un autre projet parallèle en fait.
Mais ceci est une autre histoire assez lointaine dans l’année.

Interview de Laurent Julliard

Publié par fredix Mon, 20 Feb 2006 22:00:00 GMT

Laurent Julliard, le traducteur du livre sur Ruby on Rails répond à une interview fort intéressante chez Eyrolles. On comprend mieux les avantages de Ruby face à Python et surtout PHP :) . N’hésitez pas à consulter l’exemple associé pour être totalement convaincu.

Ruby on Rails

Publié par fredix Thu, 02 Feb 2006 17:55:00 GMT

A cause d’une angine qui m’a bloqué chez moi quelques jours, je viens seulement de voir que j’ai reçu mon joli cadeau de la part de Eyrolles :

En effet suite à la publication sur RubyFR d’une actualité présentant la sortie de ce livre, Eyrolles a contacté l’association pour nous proproser gracieusement 2 exemplaires.

Un grand merci à eux, et n’hésitez pas à consultez les PDF pour être convaincu par ce livre et Rails.

Geekast::pub

Publié par fredix Thu, 02 Feb 2006 14:30:00 GMT

J’ai fini par publier la description de mon projet sur Freshmeat. Je suis content de voir mon projet rejoindre cet annuaire mythique des LL. Les modérateurs ont même corrigé mon franglais que je me suis hâté de corriger sur la page officielle.
Je ne dirais qu’une chose : laule.

Un gentil contributeur a également ajouté mon projet sur swik, un Freshmeat wiki AJAXisé.
Par la même occasion j’ai fini par comprendre le fonctionnement du TreeModelFilter, la pauvreté de la doc n’aidant pas beaucoup… Les colonnes sont même maintenant triables, si c’est pas mignon.

Enfin j’ai découvert le blog de Kib orienté RG2. Je me sens moins seul du coup :)
De même 2 billets consacrés à RG2 sur le blog de Edd Dumbill :

RG2 n’a pas fini de faire parler de lui.

Petite news en passant, QtRuby a été porté sur Windows. D’ailleurs, on attend toujours la sortie du cvs du portage GTK+ sur Mac, de la part de Imendio, pour pouvoir enfin faire du RG2 triplaforme natif …

Geekast::i18n

Publié par fredix Wed, 01 Feb 2006 18:06:00 GMT

Je viens de publier une page faite rapidement avec NVU pour présenter le projet : Geekast

Je viens de stabiliser les filtres même s’il n’est pas encore possible de les associer, ils ne plantent plus l’appli :)

La dernière étape avant une première version 0.1 est l’internationalisation. En attendant vous pouvez tester la version en développement. Attention de cocher sidebar et toolbar dans le menu Affichage ; suite à l’installation un bug fait qu’ils ne s’affichent pas la première fois…

Billets précédents: 1 2 3