jeudi 26 mars 2009

rails activerecord: utilisation d'une simple table pour des libellés

Il arrive souvent d'avoir besoin d'une table toute simple qui sera utilisée pour afficher un libellé correspondant à un code.

Il faut prévoir à la création et à l'édition une liste déroulante construite à partir de ces tables de libellé.

ActiveRecord de Rails permet de simplifier l'écriture des vues.

Soit la table des Produits (notre table des libellés)

id :primary key (auto-incrementé)
libelle : string

Soit la table Factures qui va utiliser ces libellés :
id :primary key (auto-incrementé)
... infos diverses ....
produit_id (clé étrangère)
...Suite ....

Pour ajouter une liste déroulante dans la vue facture , il suffira d'écrire :

<%= f.label :Produit %>

<%= select("facture", "produit_id", Produit.find(:all).collect {|p| [ p.libelle, p.id ] }, {:include_blank => 'None'})
%>

Ces lignes vont :
chercher toutes les occurences de la table produit
Construire la liste déroulante en ajoutant au sommet une ligne 'none'
Associer le parametre params[:facture][:produit_id] au formulaire .

Pour fonctionner il faut décrire le lien unissant produit à facture par la clause :

belongs_to :produit DANS le modèle de Facture.

mercredi 18 mars 2009

L'atlantide retrouvée grace à google

Un internaute affirme avoir retrouvé les vestiges de l'atlantide grace à la version 5.0 de google EARTH qui permet d'explorer les fonds marins

Voici la photo:


Les coordonnées:31 15'15.53N, 24 15'30.53W.

Hélas un détail vient mettre mal cette théorie : Platon parlait d'une cité formée de cercle concentrique , ici tout est rectiligne.
Dommage , mais c'est un bon début.

mardi 17 mars 2009

L'open francais de Rubik's cube 14 mars 2009

Je me suis rendu dimanche à l'open de france de Cube. Je pensais croiser deux ou trois cinglés de mon genre mais à mon grand étonnement il y en avait presque une centaine venant d'un peu tout les pays

Il y a plusieurs  épreuves pour le cube 3*3
-Avec une main seulement.
-En aveugle.
-Avec le minimum de rotation.

Des 'préparateurs'   configurent les cubes suivant la même position de départ.

La prochaine rencontre en france a lieu le 10 avril à Paris (les Halles) .


J'ai acheté : un cube 2*2 , un cube 4*4  et un  cube 5*5

dscn0945

Les photos sur  le site flickr.






dscn0931dscn0899dscn0896

vendredi 13 mars 2009

Rubik's cube encore et toujours

Ce week-end , Marne la vallée accueille une importante manifestation:

la seconde édition du French Open,  c'est une compétition officielle de la WCA (World Cube Association).



Le site officiel est sur ce lien.

Encore des photos de variantes:
 

Ici toutes les arretes sont bien placées mais mal orientées.







mercredi 11 mars 2009

Comment se faire des amis

Le processus social de création d'une amitié correspond a un algorithme assez simple illustré par ce schémas :


Un test comptant le nombre d'essai pour trouver une activité commune a été ajouté apres pour éviter une boucle infinie.
Cette illustration est tirée de la série : The big bang Theory (ici le site officicel)
 

samedi 7 mars 2009

A voir :Stanley Kubrick

Sur le site du journal le monde : ici et là: six scènes cultes tirées des films de Stanley Kubrick:

* Lolita (62)
* Orande Mécanique (71)
* 2001 odyssée de l'espace (68)
* Docteur Folamour (64)
* Shining (80)
* Full Metal Jacket (87)


Tous ces films sont dans mon TOP 20 du cinéma.

mercredi 4 mars 2009

L'éternel Rubik's cube

En ce lendemain de date 'au carré parfait' (le 3/3/9 la prochaine étant le 4/4/16)
J'ai ressortie mon rubicks cube (en fait c'est un nouveau). Dans les années 80, j'utilisais 3 ou 4 formules pour le reconstituer. J'ai cherché sur des sites des solutions simples à retenir.

Les règles à respecter :
1 )Toujours commencer par la même face.
2 )Toujours respecter la règle 1
3 )Apprendre les formules par tous les sens : visuel, auditif, gestuelle.

Conventions :

H => rotation face haut,sens aiguille d'une montre
A => rotation face avant ,sens aiguille d'une montre
D'=>rotation face droite ,sens inverse aiguille d'une montre
etc.

Première étape : la première face.

Ici pas de formule, juste du bon sens.
La face terminée devient la BASE (face du dessous)

Deuxième étape : La couronne centrale : placement des arrètes.


Une formule utilisable dans les deux sens : HD - H'D'- H'A'- HA
(remarque: essayez de trouver un sens à la construction de la formule )
Sa symétrique : H'G'- HG - HA - H'A'

Ces formules permutent une arrête de la couronne du haut avec une de la couronne du milieu.
(Vers la droite ou vers la gauche)















Troisième étape: La croix du dessus.



Il faut que les 4 arrêtes du haut soient orientées dans le bon sens:
La formule : D'H'A' - HAD : les deux arrêtes (Sud et est) se retournent.


















Puis bon alignement de la croix :


DH - D'H - DHH - D'HH (je prononce : dh,d-prime h , d h au carré ,d-prime h au carré.
Cette formule va resservir dans la phase finale.





















Quatrième étape : Le bon placement des coins de la couronne du haut.


Cette formule permute 3 coins , en laissant le 4 eme coin à sa place (le coin nord-ouest)
La formule: D'HG H' et DHG' H' (la formule doit etre apprise visuellement)

























Dernière étape : orientation des coins:


Il faut enchaîner la formule déjà utilisée : DH - D'H - DHH - D'HH avec sa réciproque
D'H' - DH' - D'H'H' DH'H'


























Il est possible faire des variantes :

Le serpent :



























Le carré dans le carré :


Il est possible en partant de cette position de faire pivoter le coin du petit carré donnant ainsi 3 niveaux de décalage.














formule bonus : AADD X 3 appliquée sur toutes les faces donne:

mardi 3 mars 2009

Rails 3


Rails 3 commence à pointer son nez (version bêta pour mai 2009) . Encore une fois des gros changements par rapport à la version 2.n

-Fusion avec le framework Merb : les deux équipes travaillent sur la version 3 qui agrègera Merb et Rails, Rails servant de modèle à l'architecture.

-Intégration dans Rails d'une alternative à ActiveRecord (ORM) : Datamapper (utilisé par Merb).
D'après ce que j'ai compris, datamapper ne propose pas une seulement une couche d'abstraction entre les données et les classes Ruby, il s'occupe aussi du stockage des enregistrements (à sa façon) dans une base de données. Datamapper est moins contraignant qu'Activerecord.

-Possibilité d'avoir une application rails contenant une autre application Rails (app/app ?)