lundi 23 juin 2008

shoes, bien dans ses pompes

Un Programme que je viens de découvrir : Shoes

Shoes est un tout petit toolkit qui permet de créer facilement des programmes graphiques en ruby !Dit comme ça, cela semble être une véritable bombes.
J'ai donc décidé d'y jeter un oeil et voir de quoi il retourne réellement.

Premièrement, sur le site il existe en version binaire pour mac et windows et en sources pour linux. Ce qui me fait dire qu'il n'est pas capable de créer des binaires linux [je le vois mal me fair un .deb nickel aussi ;)]

Après avoir téléchargé l'engin, une petite lecture du readme nous en apprend plus : Shoes est donc un toolkit graphique qui permet de developper sans ce soucier du système sur lequel il va tourner.
Léger, et simple, il ne se veut pas trop ambitieux. Il s'appuie sur cairo, pango et ruby.
en gros, il vise OSx, windows et GTK.

De prime abords, il me parait parfait pour commencer la programation fenêtre ave ruby :)

Un oeil sur la licence : bien qu'il n'en soit pas fait mentiion, cela ressemble beaucoup à la GPL. En tout cas, les quatres libertées y sont. Pour moi, ça me vas !

L'installation

L'installation est tout ce qu'il y as de plus simple :

make VIDEO=1, #pour ajouter le support de VLC (nécessite libvlc-dev)
make PREFIX=/opt/shoes install #pour installer le binaire dans /opt/shoes

Pour vérifier votre installation, un petit

shoes --manual

Vous pouvez éventuellement naviger dans le répertoire "samples" qui regroupe pleins de petits programmes sympa pour shoes.

Hello World

comme pour chaque programme du style, un petit programme qui affiche hello world est de rigueur. Le voici :

Shoes.app do
@label = banner "Hello World."
end

Ai je besoin d'en dire plus ? Je trouve le code limpide :

Shoes.app do
end

vas lancer une fenetre vide

@label

est la variable d'instance qui va afficher quelquechose dans la fenêtre. La suite, c'est le texte à afficher.
enregistrez ce code dans un fichier nommé hello_world.rb et lancez le avec la commande :

shoes hello_world

ET VOILA !

dans la prochaine partie de ce tutorial sur shoes nous verrons comment utiliser les données fournis par l'utilisateur.

mardi 17 juin 2008

développement agile et bonnes pratiques sur RoR

En programmation comme en toute chose un esprit rigoureux, une organisation claire du travail et le respect des délais sont les maîtres mot de votre réussite. A travers de courts tutoriaux, je vais tenter de poser les bases de la mise en place d'un environnement de travail et d'une méthodologie de travail qui vous feront gagner de précieuses heures et vous sauveront même carrément la mise dans bien des cas.

Pour l'exemple et parce que c'est exactement ce que je suis en train de faire, nous allons prendre l'exemple d'un projet Ruby On Rails. Ce projet qui est encore aujourd'hui en développement intensif peut être visible ici

La préparation du projets

Dans un premier temps, il conviens de quitter pour un temps l'ordinateur. J'aime me poser avec un papier et un crayon et réfléchir calmement à mon projet. Pour qui, pourquoi, comment, l'idéal est de pouvoir résumer en une phrase ce que l'application, le script ou le site web serra en mesure de faire. Dans mon cas, il s'agit de créer des CV.

A ce moment, on peut commencer à rédiger un petit cahier des charges qui prend en compte les besoins techniques de l'application.

En ce qui me concerne, l'idée était de faire un CV en quelques minutes et de pouvoir l'imprimer directement. Pas besoin de s'occuper de la mise en page, des formulaires déjà prévus, une grande liberté d'action pour l'utilisateur.

En ce qui concerne la base de donnée, là aussi on peut commencer à dessiner le schéma qui sera utilisé, définir les clés étrangères et les relations entre les tables.

La bonne idée étant de penser "itération"

La pensée itérative

Ce que j'appelle la pensée itérative, c'est la capacité à ne voir le projet que petits bouts par petits bouts :
  1. je fait ça , ça marche
  2. je fait encore ça, ça marche ...
Pour ceux qui ont déjà programmés, ça ressemble fortement à :
  1. programmation
  2. tests
  3. production
Dans le cas qui nous occupe, c'est à dire le design d'une base de données, j'ai commencé par penser CV, un CV est constitué de sections, formations, expériences, etc.. Qui sont elles même constituées d'entrées.

Maintenant, j'ai trois éléments dont les relations tombent sous le sens :
  • le cv contient des sections
  • les sections contiennent des entrées
Premières lignes de codes

J'aurais put passer un temps fabuleux à tenter d'imbriquer mes tables, a penser à l'état civil, à la photo du CV, à l'utilisateur et à l'authentification mais je décide, de ne me pencher QUE sur la table entrée.

Je lance donc mon terminal préféré et je lance :

rails cv_en_ligne -d mysql
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
...

J'ai lancé l'option -d mysql car rails 2.0 à eu la bonne idée de choisir sqlite comme base de donnée par défaut. Je ne commenterais pas ce choix mais je ne suis pas certain que ce soit une bonne chose. Passons !
A ce moment, il nous faudra éditer le fichier /config/database.yml pour indiquer à rails l'utilisateur et le mot de passe de la base de donnée. Nous pouvons laissez les autres champs à l'identique pour le moment.


Grâce à la méthode des échafaudages je vais pouvoir facilement créer mes entrées :
desktop:~/cd cv_en_ligne
desktop:~/cv_en_ligne$ script/generate scaffold entree
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/entrees
exists app/views/layouts/
exists test/functional/
exists test/unit/
create app/views/entrees/index.html.erb
create app/views/entrees/show.html.erb
create app/views/entrees/new.html.erb
create app/views/entrees/edit.html.erb
create app/views/layouts/entrees.html.erb
create public/stylesheets/scaffold.css

J'ai laissé volontairement une partie de ce que retourne la commande pour vous permettre de voir tous les fichiers que me génère la commande.

Pour le moment et pour la première itération nous ne nous intéressont pas à tous ces fichiers, nous allons simplement éditer le fichier /db/migrate/create_entrees


class CreateEntrees
pour le moment, cela suffira à nos besoins. En effet, en lançant la commande :
rake db:create:all
cette ligne de code crera les table :
  • cv_developpement
  • cv_test
  • cv_production
rake db:migrate
cette commande va créer la table entrees dans les trois tables.
rake db:test
cette commande va effectuer une serie de tests pour vérifier que tout c'est bien passé.
pour finir, vous pouvez bien sur lancer la commande

script/server
ce qui va lancer le serveur webrick sur le port 3000
http://localhost:3000
vous envera vers la page de garde de rails
http://localhost:3000/entrees
vous permettra de créer vos premières entrées (pour faire des petits test).

conclusion

Voila, cette première itération vous aura tout au plus pris une demi heure et vous avez quelquechose de fonctionnel. A partir de ce moment, nous allons pouvoir nous charger de mettre en place un environnement de develloppement qui vous permettra de vous sentir à l'aise.

la suite au prochain numéro !!