features:
This book is an excellent and intriguing resource for anyone who wants to experiment with cooking, even if you don't consider yourself a geek.
* Initialize your kitchen and calibrate your tools
* Learn about the important reactions in cooking, such as protein denaturation, Maillard reactions, and caramelization, and how they impact the foods we cook
* Play with your food using hydrocolloids and sous vide cooking
* Gain firsthand insights from interviews with researchers, food scientists, knife experts, chefs, writers, and more, including author Harold McGee, TV personality Adam Savage, chemist Hervé This, and xkcd
Good Hacking and feeding
Python, Ruby, javascript, node.js, cloud ,NoSQL bref que des bonnes choses
Contacter le robot germanlinux: german.eric AT gmail.com
mercredi 15 septembre 2010
lundi 13 septembre 2010
Jongler avec les versions de #ruby: rvm et bundler
La gestion de version des machines virtuelles Java, Python ou autre est un exercice difficile. Il en est de même pour les versions des librairies.
Dans l'écosystème Ruby des solutions existent : RVM et Bundler
Ces deux projets sont l'illustration du dynamisme de la communauté Ruby.
RVM
Ruby Version Manager, il permet d'avoir differents interpréteurs Ruby (RMI, Rubinius, Maglev, Jruby) avec pour chacun des versions différentes.
J'utilise habituellement la version 1.8.7 sous Debian , j'ai envie de tester la version 1.9.2 sans mettre en l'air mes programmes. Pas de problème avec rvm !
La commande rvm me permet de basculer à la fois l'interpréteur mais aussi le lien vers le dépot des gemmes.
ex :
Pour obtenir la liste de mes interpréteurs:
Pour basculer d'un à l'autre:
rvm list
rvm rubies
ruby-1.8.7-p302 [ i386 ]
ruby-1.9.2-p0 [ i386 ]
rvm 1.8.7 ou rvm 1.9.2
Tous mes liens ruby (/usr/bin/ruby) et gems pointent vers la bonne version.
Pour installer un interpréteur :
rvm install ruby-1.9.2
Installing Ruby from source to: /usr/local/rvm/rubies/ruby-1.9.2-p0, this may take a while depending on your cpu(s)...
#fetching ruby-1.9.2-p0
#downloading ruby-1.9.2-p0, this may take a while depending on your connection...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 8296k 100 8296k 0 0 101k 0 0:01:21 0:01:21 --:--:-- 4210
#extracting ruby-1.9.2-p0 to /usr/local/rvm/src/ruby-1.9.2-p0
#configuring ruby-1.9.2-p0
#compiling ruby-1.9.2-p0
#installing ruby-1.9.2-p0
#rubygems update for /usr/local/rvm/gems/ruby-1.9.2-p0@global
#rubygems update for /usr/local/rvm/gems/ruby-1.9.2-p0
#shebangs adjustment for ruby-1.9.2-p0 (gem irb erb ri rdoc testrb rake).
#importing initial gems
#complete install of ruby-1.9.2-p0
rvm implémente la notion de dépot de gemme mutualisé ou spécifique. Un gemme peut etre installé et partagé pour tous les interpréteurs.
J'ai réussi à faire fonctionner mon Rails 2.3.4 sur ruby 1.8.2 et récupérer une version de Rails 3.0 sans perturber ma machine. On peut ainsi lancer à la fois une application Rails 2.n et un Rails 3.n.
L'installation de rvm se fait sous forme d'archive et en tant qu'utilisateur root, la ligne :
doit etre ajoutée au lancement du shell.
[[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm"
Pour avoir la certitude que rvm fonctionne, la commande :
type rvm | head -n1
Doit retourner : rvm is a function
Bundler
Cet utilitaire permet de fixer les dépendance et les versions utilisées par un projet. Si celles ci ne sont pas installées, Bundler ira les chercher et les installer.
Good hacking
mercredi 8 septembre 2010
Où trouver une bonne réponse technique : #stackoverflow et #web_applications
Joel Spolsky tient un blog sur le développement qui fait référence dans ce domaine.
Avec son ami Jeff Atwood ils ont lancé avec succès le site de question/réponse : stackoverflow
L'idée directrice est la suivante: quand un développeur est face à un problème comment trouver la bonne solution. Le premier réflexe est de demander à google, mais en cas de réponse multiple, comment choisir la plus pertinente ?
Ainsi le site stackoverflow est une sorte de FAQ géante où il est possible de noter la justesse des réponses.
(copie d'écran du site)

L'auteur à lancé récemment un site analogue pour les applications web (lien ici).
Les sujets ouverts concernent facebook, youtube, google, google-aps etc.

Ces sites sont très utiles, le dernier né propose une charte graphique originale :

ou encore
Avec son ami Jeff Atwood ils ont lancé avec succès le site de question/réponse : stackoverflow
L'idée directrice est la suivante: quand un développeur est face à un problème comment trouver la bonne solution. Le premier réflexe est de demander à google, mais en cas de réponse multiple, comment choisir la plus pertinente ?
Ainsi le site stackoverflow est une sorte de FAQ géante où il est possible de noter la justesse des réponses.
(copie d'écran du site)
L'auteur à lancé récemment un site analogue pour les applications web (lien ici).
Les sujets ouverts concernent facebook, youtube, google, google-aps etc.
Ces sites sont très utiles, le dernier né propose une charte graphique originale :
ou encore
mardi 7 septembre 2010
Moteurs de recherche #duckduckgo et #blekko
Des alternatives à Google commencent à se mettre en place. Je ne parlerai pas de bing , mais de deux autres moteurs DuckDuckGo et blekko
DuckDuckGO.
(lien ici).
Il met l'accent sur le respect de l'anonymat et sur la fourniture d'astuce pour des recherches plus rapides et plus pertinentes.

La combinaison du caractère '!' suivi d'un mot clé permet de spécifier le domaine de recherche:
!ruby class pour lancer une recherche sur une déclinaison (class) du sujet principal ( ruby) .
Ce moteur est en Perl , hébergé par des serveurs NGINX et du cache avec memcached.
blekko.
Lien ici.
c'est un nouveau moteur de recherche où une authentification est nécessaire (invitation sur demande) . Il permet d'utiliser des '/' slashtag pour affiner les recherches.
Ex : echec /jeux remontera les liens relatifs au jeu d'échec.
Chaque utilisateur maintient ses /shashtag (un peu comme dans twitter)
Mais le point extrèment interressant est la transparence appliquée au moteur de classement. L'algorithme est en opensource et pour mot donné , il sera possible de comprendre le classement des liens.
DuckDuckGO.
(lien ici).
La combinaison du caractère '!' suivi d'un mot clé permet de spécifier le domaine de recherche:
!ruby class pour lancer une recherche sur une déclinaison (class) du sujet principal ( ruby) .
Ce moteur est en Perl , hébergé par des serveurs NGINX et du cache avec memcached.
blekko.
Lien ici.
c'est un nouveau moteur de recherche où une authentification est nécessaire (invitation sur demande) . Il permet d'utiliser des '/' slashtag pour affiner les recherches.
Ex : echec /jeux remontera les liens relatifs au jeu d'échec.
Chaque utilisateur maintient ses /shashtag (un peu comme dans twitter)
Mais le point extrèment interressant est la transparence appliquée au moteur de classement. L'algorithme est en opensource et pour mot donné , il sera possible de comprendre le classement des liens.
lundi 6 septembre 2010
#python , #ruby : c'est presque pareil
En relisant un tutorial python en francais , j'ai été frappé par la ressemblance entre Ruby et Python.
Exemple en Ruby
En Python :
Exemple en Ruby
#!/usr/bin/ruby
def dupont
print "dupont\n"
end
def suite(v)
puts v
end
def encore(param1,param2)
puts param1,param2
end
# appel de la fonction
dupont
En Python :
#!/usr/bin/python
def dupond() :print "dupond"
def suite(chaine) :
print chaine
def encore(param1,param2) :
print param1,param2
# appel de la fonction
dupond()
L'obligation d'utiliser les parenthèses dans l'appel d'une methode ou fonction Python a des conséquences étonnantes.
En Python , comme en 'c' , il est possible d'assigner une variable à une fonction
ex : data= suite # sans les parenthèses !
Et de demander data('exemple') pour appeler en coulisse la fonction suite avec le parametre 'exemple'.
La même chose en Ruby est plus compliquée à faire :Ces mécanismes ne doivent pas être confondus avec le currying qui est un procédé qui permet de
data= self.method(:suite)
data.call("coucou")
transformer une fonction qui a plusieurs parametre en une fonction qui ne prend qu'un paramètre.
Exemple en Haskell :
module Main where
prod x y = x * y
double= prod 2
triple = prod 3
Prelude> :load currying.hs[1 of 1] Compiling Main ( currying.hs, interpreted )
Ok, modules loaded: Main.
*Main> double(6)
12
*Main> triple(4)
12
La signature de la fonction prod reflète ce phénomène*Main> :t prod(prod 2)4
prod :: (Num a) => a -> a -> a
Un appel à prod retourne une fonction lambda \y = 2 * y
Puis un deuxième appel finalise le calcul en remplacant y par 4 => 8
C'est un système extrêmement important en programmation fonctionnelle.
dimanche 5 septembre 2010
samedi 4 septembre 2010
jeux pc :audiosurf et pacman
Pendant que les jeunes passent des heures sur le nouveau jeu à la mode : audiosurf . Les vieux comme moi préfèrent un bon vieux PacMan sur plateau.
source (fluctuat.net)
Dioparama (Lien ici).
Le jeu audiosurf vous propose une course d'obstacle sur vos musiques. Ici la bande son ne sert pas qu'à rythmer ou à souligner l'action, elle est l'élément principal du jeu. Ce petit jeu à deux balles ( 9,9 dollars) connait un succès énorme et rivalise avec les poids lourds des éditeurs.
(Lien du jeu ici.)
Inscription à :
Articles (Atom)