mardi, décembre 18, 2007

Nouvelle Skin 2008

Pour finir l'année en beauté, j'ai changé la skin du site: rubyscube :)

Plus précisément je suis passé au nouveau système de template de blogger et j'ai cherché (difficilement) des skins (pour une liste de sites de template gratuit, allez voir mon del.icio.us à ce sujet).

J'ai essayé de repassé dans tous les posts (147 quand même!) pour vérifier qu'ils s'affichent à peu près correctement... mais c'est tout à fait possible que j'en ai raté.

J'en ai profité pour supprimer ma version "custom" de Syntax Highlighter avec la syntax Ruby (de toute façon je ne l'utilisais plus dans mes nouveaux posts).

Je ne fais pas trop d'illusion, la plupart des personnes que je connais utilisent des aggrégateurs (style google reader) et ne voit jamais le site... mais bon c'est pour me faire plaisir ;)

D'ailleurs à ce sujet j'ai peur de me lasser assez vite de cette nouvelle skin, seulement le changement a été suffisament long pour me disuader de recommencer de si tôt ;)

Ma deuxième inquiétude concernent les images qui pointent vers un site extérieur, si celui-ci est "down", ou pire, si les images sont supprimées, ma skin risque de ne pas être très jolie. On verra...


Technorati tags:

Nouveau projet "Natural Sort"

Suite à un article sur Coding Horror sur le fait que les tri par défaut (ASCII) ne sont pas très "human friendly" et après quelques recherches sur Google assez infructueuses sur le sujet en ruby... Je me suis amusé à créer un projet rubyforge pour implémenter ce type de tri :) Ca donne quelque chose comme ça:
['a1', 'a11', 'a12', 'a2', 'a21'].natural_sort => ['a1', 'a2', 'a11', 'a12','a21']
Si vous voulez en savoir plus: J'aimerai avoir votre avis sur le fait d'avoir fait plein de méthodes "alias" avec des noms différents pour contenter tout le monde... J'ai fait ça pour 2 raisons:
  1. plus de mots clef sous google pour trouver le projet
  2. moins à réfléchir quand on tape
A vos commentaires :)

Remarques:
  • Je me suis loupé dans la version 1.0.0 (un bug avec la méthode static), donc utilisez la version 1.0.1
  • Le gem met environ 1 jour avant d'apparaître dans la liste lorsqu'on fait "gem list naturalsort --remote"... soyez patient ;)
  • C'est loin d'être parfait mais ça fait déjà l'essentiel, si vous voyez des améliorations possible n'hésitez pas à utiliser le Tracker de rubyforge, j'ai aussi quelques tests unitaires marqués TODO ou FIXME qui ne demande qu'à être corrigés ;)

    Update: La version 1.0.1 est dispo maintenant :)
Technorati tags:

vendredi, décembre 14, 2007

Double Pipes

Sans jeux de mot scabreux hein ;)
Je me suis amusé un peu avec les || qui permet de sélectionner la première valeur en partant de la gauche qui n'est pas nil. Bien pratique pour initaliser des variables sans if/else
hash = {"b" => "bbb", "c" => "ccc"}
test1 = hash["a"] || hash["b"] 
puts "test1: #{test1}"

test2 = ENV['FAKE'] || ENV['JAVA_HOME']
puts "test2: #{test2}"

v1, v2 = "aaa", "bb"
test3 = v1.size || v2.size
puts "test3: #{test3}"

test4 = [1, 2].max
puts "test4: #{test4}"

Résultat:
test1: bbb
test2: C:\Program Files\Java\jdk1.5.0_10
test3: 3
test4: 2
Le plus intéressant d'après moi est le test n°2.
Technorati tags:

[RDoc] Paramètres de retour d'une fonction et exemple de code

Juste un petit post pour donner 2 astuces pour améliorer sa rdoc (alias ruby doc).
Comment faire une jolie rdoc comme celle de Enumerable par exemple:
Le code:
 # call-seq:
 #     class.new_method(string)                    => array
 #
 # Description.
 #     MyClass.new.new_method("hello")         #=> [1, 2, 3]
 def new_method(str)
   ...
 end
Deux points à remarquer:
  • Le call-seq (+ 1 ligne vide) pour désigner le type d'objet retourné et les paramètres
  • les 5 espaces (whitespace) devant l'exemple d'utilisation pour le faire apparaitre sous forme de code. (rem: <tt>code</tt> marche aussi)
Technorati tags: