dimanche 13 mars 2011

japon, images tsunami


Le site du New-York Times a mis en ligne un montage qui permet de voir le Japon avant et après le tsunami. Le dispositif est réalisé avec jquery.

Meme système sur abc: http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm
Ce drame dépasse largement le simple cadre du Japon et nous concerne tous.

dimanche 6 mars 2011

Le cout des réunions



Les réunions ont un coût qui peut être visualisé par des petits appareils comme ceci



Il suffit de d'entrer le salaire horaire moyen , le nombre de participant et de lancer le décompte.
Ces petits gadgets sont de plus en plus utilisés dans les sociétés.

A ce coût direct, il faut ajouter les divers frais (trains, repas etc.) . La contrepartie de cette somme est le gain direct généré par cette réunion.


Une réunion c'est aussi un temps de préparation: ordre du jour, liste des points à traiter et un suivi de décision.
Les gars de 37 signals prônent l'utilisation d'un minutier pour obliger les participants à régler les problèmes dans le temps imparti. En plus, ils recommandent de ne pas hésiter à planifier des réunions courtes (ex : 15 minutes)

samedi 26 février 2011

Perl Dancer - Sinatra Ruby



En consultant les pages de compte rendu des Perl Mongueurs Paris , je suis tombé sur cette phrase:
Guillaume a installé Dancer sur sa machine. Compte tenu des dépendances, il a été obligé d'installer Moose et « la moitié de CPAN ». La recherche des dépendances n'est pas un problème lorsque l'on utilise CPAN.pm,


Quel est ce fameux Dancer ? . Une recherche après sur google, je tombe sur:
http://perldancer.org/ : Minimal-effort oriented web application framework for Perl (inspired by Ruby's Sinatra)
Sinatra Ruby est cadriciel qui permet d'écrire un application WEB en quelques lignes.

Le grand Confucius disait même: si tu veux connaitre Ruby, regarde le code source de Sinatra.

En effet parmi les étapes recommandées pour connaitre Ruby , la lecture du code source de Sinatra figure en bonne place.


Reading the Sinatra code is a good start. You might also want to read up on Rack, the HTTP interface Sinatra uses. Not necessarily for coding practices but just to understand how Sinatra fits in the whole stack.

#!/usr/bin/env perl

Avec dancer :

use Dancer;
get '/' => sub {
"Hello World!"
};
dance;
$ perl bin/app.pl &...
$ curl http://localhost:3000/
Hello world!


Avec Sinatra:

require 'sinatra'
get '/hi' do
"Hello World!"
end

mardi 15 février 2011

Si versailles m'était conté


L’expérience de la décharge enchaînée dans la galerie des Glaces en 1746.



Le château de Versailles propose jusqu'au 03/04/11 (prolongement) une exposition sur le thème des sciences au chateau de Versailles. Lien à consulter ici.

J'ai rarement vu une exposition sur la science aussi bien faite. La visite commence avec un film panoramique projeté en 360° sous une coupole.
Le prix d'entrée de la visite du château comprend le billet pour l'exposition.
A voir aussi sur le site de google : la visite virtuelle du château de Versailles (c'est du google map mais à l'intérieur d'un bâtiment) . Les jardins sont accessibles. Sur le sol au détour d'une ombre on peut deviner les drôles d'engins des gars de google utilisés pour prendre les photos.




lundi 14 février 2011

La tablette Internet ou le portable de Lenovo



Lenovo, partenaire chinois d'IBM va lancer un nouveau produit hybride. En gros, c'est une tablette Internet qui sert d'écran dans une station d'accueil, le tout étant un PC portable. Dans un ordre inversé: c'est un portable dont l'écran se détache pour devenir une tablette Internet. Cette tablette embarque donc le processeur, la connexion wifi (ce n'est pas un simple écran).
Sachant qu'il existe déjà des stations d'accueil transformant votre portable en PC:



Il serait possible d'avoir le système suivant:

Un smartphone qui s'intègre dans une tablette internet qui s'incruste dans une base d'accueil d'un portable qui lui même s'installe dans une station d'accueil qui elle (la suite à inventer ?)

dimanche 30 janvier 2011

Quel est le langage le plus adapté pour du script


Le site scriptometer qui compare les capacités de scripting des langages, classe en numero 1: sh et en 2 eme ruby ! (3 eme Perl , 5eme Python , 28 eme Java ...)

Ici en java un exemple de programme qui ne fait rien :
public class smallest { public static void main(String[] args) { } }

La même chose en ruby :'NEANT'

Lire les arguments de la ligne de commande :
En java
public class argv {
public static void main(String[] args) {
if (args.length > 0) System.out.println(args[0]);
}
}

En ruby
puts ARGV[0]
En python
import sys; print sys.argv[1]

samedi 29 janvier 2011

Cucumber, RSPEC :Comment une rondelle de concombre peut changer votre vie



Si Ruby on rails connait un succès croissant, c'est grace notamment à sa capacité à s'intégrer dans des démarches agiles de gestion de projet. Je connaissais pour la pratiquer (à ma façon) la méthode TDD : conduite du développement par les tests. Dans cette technique le développement du produit commence par la réalisation de tests (unitaires,d'intégration et fonctionnels) avant toutes choses. Le cadriciel Rails intègre nativement tout ce que vous avez besoin pour couvrir ces trois volets de test. Rails propose en plus l'utilisation des fixtures (garnitures) pour remplir ou manipuler les données de tests. le TDD propose des objets 'fictifs' mock ou stub afin de retarder le développement en 'dur' des objets.

J'ai souvent entendu parlé de RSPEC , un environnement de test offrant des techniques de développement basées sur le comportement de l'utilisateur (des histoires) : Behaviour DD (BDD).
La lecture de ce livre m'a ouvert des nouveaux horizons



Un fichier RSPEC (Ruby spécification) va décrire des évènements , des actions ou des états et comment le système doit réagir vis à vis de ces situations. RSPEC utilise un DSL (langage spécifique à un domaine) orienté développeur. Les RSPEC seront traduits en assertions de test.

 2 describe Game do
3 describe "#start" do
4 it "sends a welcome message" do
5 output = double('output')
6 game = Game.new(output)
7
8 output.should_receive(:puts).with('Welcome to Codebreaker!')
9
10 game.start
11 end
12
13 it "prompts for the first guess"
14 end


Ce livre consacre plusieurs chapitres à un projet appelé : cucumber (concombre). Cucumber est le projet qui réalise le rêve de tous les développeurs: il traduit les spécifications de votre client(sponsor-moa etc) en test de comportement (RSPEC :la synthèse des 3 types de test) .

Ici le DSL est orienté client (MOA). Le client va décrire avec ses mots des situations. Exemple:


Feature: code-breaker starts game

As a code-breaker
I want to start a game
So that I can break the code

Scenario: start game
Given I am not yet playing
When I start a new game
Then I should see "Welcome to Codebreaker!"
And I should see "Enter guess:"
Cucumber va traduire les termes :'given', 'when' 'then' en scénario de test de type RSPEC.
Ce DSL existe en version française.

(ressource: http://blog.octo.com/cucumber-pour-les-railers/)



Pour terminer, il convient de signaler que cucumber fonctionne avec watir et selenium qui sont deux outils complémentaires de test fonctionnel


(synthèse des composants: cliquer pour agrandir)



Il est plaisant de voir ces outils envahir le monde Java. C'est par ce moyen que Ruby
penetre dans les entreprises.