Coat::Persistent aux Journées Perl 2009

Je reviens à l’instant des Journées Perl 2009. La conférence se tenait au Carrefour Numérique de la Cité des Sciences et de l’Industrie, nous y avions deux salles très confortables. Je vous livre à chaud quelques impressions (ce billet n’est pas une couverture de l’ensemble de la conférence).

A noter au passage que d’après ce que m’a dit Sébastien Déseille – vice-président des Mongueurs et organisateur de l’événement – ces salles sont grâcieusement prétées à l’association, ce qui a permi de rendre cette conférence entièrement gratuite. Une belle initiative qui méritait d’être salluée.

J’ai d’abord assisté à la présentation de Philippe « BooK » Bruhat sur les opérateurs secrets de Perl : il s’agit d’un cocktail explosif de Perl, d’ASCII Art, de Star Wars et d’humour – avec un zeste de Goatse.

Finalement, BooK nous a montré comment on peut combiner différents opérateurs entre eux et avec les jeux de précédence, obtenir de nouveaux opérateurs, ou même des constantes.

L’immagination semble être la seule limite à cette véritable chasse au trésor. Quelques exemples pris sur le vif :

  • Bang Bang : !! $anyvalue : retourne l’expression booléenne de $anyvalue
  • Inch Worm : ~~ @anylist : retourne l’expression scalaire de @anylist
  • Goatse : $count =()= $regexp : Retounre le nombre de match dans la $regexp sur $_

Je vous renvoie aux slides de BooK Pour plus de détails (et surtout pour les illustrations croustillantes).

Après la pause déjeuner, c’était au tour de Coat d’être présenté par SébastienDéseille.

Pour sa présentation, Sébastien s’est donné comme défi de reprendre la série d’articles publiée sur ce blog et dédiée à l’apprentissage de Moose afin de l’adapter avec Coat. On a ainsi pu découvrir comment faire de l’objet avec Coat et avoir les bases nécessaires à l’apprentissage de Coat::Persistent.

J’ai donc ensuite présenté le petit frère Coat::Persistent dont voici les slides :

La vidéo de la présentation sera probablement en ligne prochainement, certainement par ici.

Sebastien Déseille Présente Coat

Dans l’ensemble la présentation s’est bien déroulée (du moins je l’espère :-).

J’aurais juste dû choisir un autre exemple pour la coercition car le mien ne correspondait pas à quelquechose de convenable en pratique. Lorsqu’on s’en rend compte en pleine présentation suite à une question du public ce n’est pas très agréable.

Du côté des bonnes surprises, Philippe Bruhat m’a parlé de son module Test::Database qui m’à tout l’air d’être le module manquant du jeu de test de Coat::Persistent : il permet de d’obtenir un pool de $dbh disponibles sur la machine courante, pour une série de drivers. C’est tout simplement l’outil révé pour écrire le jeu de tests unitaires de Coat::Persistent (pour l’instant je suis contraint à faire tourner les tests uniquement avec le driver CSV). A suivre donc.

1190 views · Tags: , , , · Both comments and pings are currently closed.

8 Comments

  1. T’es le plus beau /o/

  2. Surtout avec de la neige sur mes épaules en réalité augmentée :-)

  3. Hello

    Merci encore d’être venu présenter Coat::Persistent.
    Je vais tester les autres types de base de données que je pourrais associer à ton module.

    A bientôt

  4. Merci à toi Sebastien, pour ta présentation Coat et pour l’organisation de cet événement, c’était très réussi.

  5. La gestion des Join est prête dans les PPO, il faudrait vraiment que j’intègre ça à Coat::Persistent.
    J’ai développé ce que j’appelle la dot notation qui permet de faire référence dans les critères de find au sous-objets
    ex:

    personne = Personne->find({‘personne.adresse.rue’ => ‘rue de la convention’});

    Comment vois-tu la syntaxe du finder dans ces cas ?

    Nicolas

  6. Hmm, si on suit la logique d’ActiveRecord (et c’est un peu la règle avec le principe sous-jacent à C::P) la syntaxe serait une condition SQL en fait.

    Par exemple :

    Personne->find("adresse.rue = 'rue de la Convention'",
       {join => ['adresse']})
    

    Dans le style, et C::P serait donc sensé générer le SQL suivant :

    SELECT personne.*
    FROM personne, adresse
    WHERE personne.id = adresse.personne_id
    AND adresse.rue = 'rue de la Convention'"
    
  7. Je me demande bien à quoi sert l’option {join => ['adresse']} ?

    Perso je mets l’option si uniquement s’il le join n’est pas implicie dans la clause where.

  8. Oui ça se tient, c’était pour montrer l’idée surtout.
    En Rails, on fait carrément des fragments de SQL pour les join, par exemple :

    Personne.find(:all,
                :conditions => "adresses.rue = 'rue de la Convention'",
                :joins => "as adresses inner join personnes as p on p.id = adresses.personne_id ")
    
Get Adobe Flash playerPlugin by wpburn.com wordpress themes