Pour d’obscures raisons que je n’expliquerai pas ici, je suis passé de Free à Orange et cela sans que mon salaire n’est été augmenté
J’ai fait mon abonnement chez orange le 28 août dernier, et grâce à la réactivité de France Télécom, je peux maintenant naviguer sur internet depuis le 22 septembre !!! Un mois (payé) pour activer le service, ils n’ont pas fini de m’entendre hurler ! Surtout que le “service technique” me soutenait mordicus que si cela ne fonctionnait pas, c’était à cause d’un problème chez moi et que “nous allons vous envoyer un technicien pour vérifier votre installation — cela fera 145 €, Monsieur, bonne journée de la part d’Orange et France Télécom !”
Le technicien finit enfin par arriver, tout cela pour me dire que “ha ben non, visiblement le problème vient de chez nous…” et il me rappelle 15 minutes après sont départ, depuis “le central” : “Désolé monsieur, nous avions inversé, en fait c’est le fil blanc sur le bouton blanc , et le fil rouge sur le bouton rouge… Cela doit fonctionner maintenant. Bonne journée de la part d’Orange et France Télécom !”. Et en effet, Ô miracle, je retrouve enfin internet !
Le temps de reprendre un mois d’arriéré de mail et autres news, je me dis ce matin “mais au fait, chez Orange, ils m’ont créé une adresse mail. Et si j’allais voir ce que cela donne ?”. Avant de poursuivre sachez que je n’ai jamais donné cette adresse à personne, que je ne l’ai jamais consulté, bref que je n’y ai jamais touché. Et bien, croyez-moi, c’est formidable internet avec Orange parce qu’après une semaine d’activation sans aucune utilisation de mon adresse mail @orange.fr, j’ai déjà 31 propositions pour acheter du viagra, des cartes de visite ou pour participer au débrouillage du compte bancaire d’un vieil Équatorien décédé dans un accident d’avion et dont la veuve ignore l’existence du compte garni de plusieurs milliards de tonnes de sucre (et oui, il était vraiment très vieux).
N’essayez pas de m’écrire @orange.fr, c’est une poubelle !
Posted in planet on September 28th, 2008 | Comments Off
(french version below)
I’m sad to announce you Guy Decoux’s death in the beginning of the month of July 20008. He was 53 years old. He died accidentally, intoxicated by
the smokes of the fire that took place during the night in his flat in Louveciennes (near Paris).
Guy Decoux was network and system admin at the Plant Genomics Research Unit
of INRA (Agricultural Research labs, where he worked
since 1982) in Moulon’s Farm (Moulon’s plateau, in the south west
of Paris).
He was an Internet pioneer. For example, he worked on Oraplex,
one of the first Oracle to web gateways. He deployed the first
website that gave access to an ACeDB system by the end of 1993.
He had worked on bioinformatic free software, like ProticDB , a
plant proteomic database.
He was part of the generation of developers who switched from Perl
to Ruby in the 90s. While his mastering of Perl was already great,
his knowledge about Ruby was so deep and impressive that a lot of Rubyists
would have been very happy to have the same one. Guy contributed to
Dave Thomas’ book, “Programming Ruby”. Of course he polled for the
comp.lang.ruby and fr.comp.lang.ruby newsgroups creation.
He was maintaining some libraries like PL/Ruby
a procedural language
for PostgreSQL, bdb / bdb1 bindings for Berkeley DB, bz2
bindings the libbzip2 compression library and MMap class,
a class for Memory-mapped files.
To my knowledge, he was the only french person to have commits right
to Ruby MRI source code. I don’t know if he was officially member
of the Ruby Core Team (I don’t know if there is an official Ruby Core
Team list).
I’m not sure ‘ts’ (what does ‘ts’ mean in his electronic address?)
had ever been to RubyConf nor any Ruby conference. Well I don’t
know if there is a french Rubyist who ever meet him. Was he mysterious
or secret ? Maybe he was just reserved. His colleagues described
Guy as reserved, kind, available, professional and technically
very competent. His messages on Ruby-Core or Ruby-Talk, sometimes
with a bit of humor, show all that.
This is a loss for Ruby Community.
In the name of french association RubyFrance, I present my condolences
to Guy Decoux’s family, his friends and his collegues.
Jean-François.
[1] This explains the ‘moulon’ server name in the prompt shell
that can be found in Guy’s messages on the Internet.
[2] ACeDB is a genomic OO and relational database system :
http://wwww.acedb.org
Posted in planet on September 25th, 2008 | Comments Off
(french version below)
I’m sad to announce you Guy Decoux’s death in the beginning of the month of July 20008. He was 53 years old. He died accidentally, intoxicated by
the smokes of the fire that took place during the night in his flat in Louveciennes (near Paris).
Guy Decoux was network and system admin at the Plant Genomics Research Unit
of INRA (Agricultural Research labs, where he worked
since 1982) in Moulon’s Farm (Moulon’s plateau, in the south west
of Paris).
He was an Internet pioneer. For example, he worked on Oraplex,
one of the first Oracle to web gateways. He deployed the first
website that gave access to an ACeDB system by the end of 1993.
He had worked on bioinformatic free software, like ProticDB , a
plant proteomic database.
He was part of the generation of developers who switched from Perl
to Ruby in the 90s. While his mastering of Perl was already great,
his knowledge about Ruby was so deep and impressive that a lot of Rubyists
would have been very happy to have the same one. Guy contributed to
Dave Thomas’ book, “Programming Ruby”. Of course he polled for the
comp.lang.ruby and fr.comp.lang.ruby newsgroups creation.
He was maintaining some libraries like PL/Ruby
a procedural language
for PostgreSQL, bdb / bdb1 bindings for Berkeley DB, bz2
bindings the libbzip2 compression library and MMap class,
a class for Memory-mapped files.
To my knowledge, he was the only french person to have commits right
to Ruby MRI source code. I don’t know if he was officially member
of the Ruby Core Team (I don’t know if there is an official Ruby Core
Team list).
I’m not sure ‘ts’ (what does ‘ts’ mean in his electronic address?)
had ever been to RubyConf nor any Ruby conference. Well I don’t
know if there is a french Rubyist who ever meet him. Was he mysterious
or secret ? Maybe he was just reserved. His colleagues described
Guy as reserved, kind, available, professional and technically
very competent. His messages on Ruby-Core or Ruby-Talk, sometimes
with a bit of humor, show all that.
This is a loss for Ruby Community.
In the name of french association RubyFrance, I present my condolences
to Guy Decoux’s family, his friends and his collegues.
Jean-François.
[1] This explains the ‘moulon’ server name in the prompt shell
that can be found in Guy’s messages on the Internet.
[2] ACeDB is a genomic OO and relational database system :
http://wwww.acedb.org
Posted in planet on September 25th, 2008 | Comments Off
Matt Aimonetti a ouvert un blog dédié à Merb : The Merbist. Moi qui cherchait un nom de domaine pour créer un blog sur Merb, je vais devoir me creuser la tête encore un peu.
Posted in planet on September 24th, 2008 | Comments Off
Posted in planet on September 23rd, 2008 | Comments Off
Récemment j'ai eu besoin d'utiliser uniq sur une collection d'objet ruby.
En l'occurrence il s'agissait de modèles ActiveRecord.
L'idée était donc de filtrer ces objets en se basant sur l'un des attributs pour éviter les doublons.
En premier lieu je pensais que uniq pourrait prendre un bloc en paramètre indiquant comment comparer les éléments deux à deux, du genre :
books.uniq { |b1, b2| b1.name == b2.name }
Pour le moment uniq ne sait pas faire ça (ou j'ai raté quelquechose).
Egalité et identité des objets ruby
uniq utilise eql? pour comparer les éléments deux à deux.
Pour qu'uniq fonctionne sur une collection d'objets, il nous faut donc surcharger eql? et hash qui vont de pair.
Pourquoi pas == ?
Contrairement à ==, .eql? compare aussi les types. Par exemple 42.0 == 42 mais ! 42.eql?(42.0)
A quoi sert hash ?
hash permet de générer un identifiant pour un objet non pas pour rendre l'objet unique mais pour permettre les comparaisons.
eql? et hash sont intimement liés.
Et equal?
equal permet de comparer l'identité des objets. Deux objets peuvent être strictement identiques en terme de valeur sans pour autant être les mêmes.
Ex :
a = "42"
b = "42"
a == b, a.eql?(b), a.hash == b.hash mais ! a.equal?(b) car a.object_id != b.object_id
La pratique : implémenter uniq sur une collection d'objets ruby
#!/usr/bin/env ruby -w
class Book
attr_accessor :name
def initialize(attributes)
attributes.each do |k, v|
send("#{k}=", v)
end
end
def eql?(o)
hash.eql?(o.hash)
end
def hash
name.downcase.hash
end
end
books = [
Book.new({ :name => "Programming Ruby" }),
Book.new({ :name => "Harry Potter" }),
Book.new({ :name => "Ruby on rails" }),
Book.new({ :name => "programming ruby" })
]
Avec ce code :
books.length == 4
books.uniq.length == 3
Posted in planet on September 22nd, 2008 | Comments Off
Posted in planet on September 22nd, 2008 | Comments Off
Pour faire suite à mon dernier article sur Merb en bundle, voici 2 scripts : le premier pour installer tout le nécessaire pour Merb Edge et le second pour mettre à jour tout ce qui a été installé par le premier. Plus de prise de tête !
Posted in planet on September 21st, 2008 | Comments Off
Avec Merb 0.9.7, on peut faire un bundle avec son application et toutes les gems dont elle a besoin en quelques petites commandes grâce à Thor (déjà avec 0.9.6 mais en standard maintenant). Il y a un tutorial sur Merbunity mais je vais juste expliquer comment j’ai fait pour mon application.
On commence par installer Merb via Rubygems :
sudo gem install merb thor
Ensuite on génère une application :
merb-gen app mybundle
Et on a plus qu’à installer dans l’application merb-core, merb-more, merb-plugins, dm-core et dm-more (et les dépendances pour tout ça viendront automatiquement). Pour cela rien de bien méchant, on utilise les tâches Thor (c’est pour ça qu’on l’a installé plus haut) qui sont déjà dans le répertoire :
cd mybundle
thor merb:edge --install
thor merb:edge:plugins --install
thor merb:edge:dm_core --install
thor merb:edge:dm_more --install
Et voilà ! On a un bundle avec les gems dans son application. Si on a envie de mettre d’autres gems, un simple thor -T montrera les différentes tâches disponibles. Si on veut les versions stable des gems on remplace dans les commandes ci-dessus le mot edge par stable.
Maintenant on démarre l’application
Aucun serveur n’est dans le bundle, j’ai envie de mettre Thin :
bin/thor merb:gems:install thin
Et enfin on lance Merb :
bin/merb -a thin
Mais on est pas dans un monde sans bugs
La commande thor merb:edge:plugins --install ne fonctionne pas si on fait comme ça, il va donc falloir mettre à jour le fichier merb.thor se trouvant dans notre application. Pour cela il suffit de le télécharger :
curl -L http://merbivore.com/merb.thor > merb.thor
Maintenant en plus de pouvoir installer les plugins, on pourra mettre à jour les tâches grâce à :
thor merb:tasks:update
Le merb.thor mis à jour se trouve dans Merb Edge et tout sera bon pour la version 0.9.8.
Posted in planet on September 21st, 2008 | Comments Off
Je me rend compte que je n’ai pas expliqué ce qui fait l’énorme intérêt de Dropbox par rapport à d’autres produits, hormis d’être natif tri plateforme. Il ne s’agit pas ici de monter un disque déporté façon WebDav ou SSH, car ici on parle de synchronisation. En effet les données placées dans le répertoire de Dropbox ne sont pas déplacées mais copiées sur leurs serveurs ce qui permet de pouvoir y accéder sans connexion Internet. Le démon dropboxd scrute le répertoire et copie les nouveaux fichiers et ceux modifiés. Mon laptop dans lequel j’ai également installé Dropbox peut ainsi récupérer en fond de tâche les modifications faites depuis le PC de bureau.
Donc nul besoin de copier dans ce répertoire les données que l’on souhaite sauvegarder, mais plutôt de les y déplacer. J’ai déplacé dans ce répertoire mes répertoires importants comme “dev” ou “docs”, ou des fichiers de config comme le .emacs avec un simple lien :
/home/fred
ls -al .emacs
lrwxrwxrwx 1 fred fred 21 sep 14 02:07 .emacs -> Dropbox/config/.emacs
Enfin si certains sont prêts à payer l’offre de 50Go à 10$/mois environ il est sans doute envisageable de synchroniser son répertoire home en entier dans le cas ou l’on utilise exactement les mêmes environnements logiciels sur ses différentes machines. Pour les libristes pointus il existe un logiciel libre très proche du fonctionnement de Dropbox, boxbackup. Bien sûr la configuration n’est pas aussi aisée et il n’y a pas d’interface web, mais l’alternative existe et des courageux peuvent peut être développer une offre entièrement libre.
Posted in planet on September 19th, 2008 | Comments Off