Typo 5.4 Willy Ronis

Publié par Yannick Francois Dim 20 déc 2009 18:45:00 GMT

Et bien voilà, comme un cadeau de noël, l’équipe du blogware Typo viens de sortir la version 5.4 surnomé “Willy Ronis”. Pas mal de changement codé interface admin, je vous laisse lire l’annonce sur le blog de type Release of Typo 5.4 Willy Ronis [en].

Message de service 3

Publié par Yannick Francois Jeu 09 avr 2009 08:55:00 GMT

Depuis ce week-end, il y a quelque soucis sur la Bricabox

Le ping réponds, mais les sites et le ssh non. Une surcharge ? Ca m’étonnerais. Des attaques ? Pas plus que d’habitude, quoique, une bonne série de tentative d’accès en brut force.

Je ne sais pas si cela vous a géné, moi pas trop :-). Cependant, je vais tacher d’être vigilant ces prochain jour, et étudier la possibilité de changer de serveur web (aujourd’hui Lighttpd, passé à Nginx ou l’Apache Chrooté d’OpenBSD), ou bien changer de serveur d’application (passer de mongrel à Thin, ebb ou carrement ModRails (avec Apache)).

Je vous tiendrais au courant si je trouve un quelque chose d’interessant.

RailsCampParis #2 1

Publié par Yannick Francois Dim 08 mars 2009 11:25:00 GMT

Hier avait lieu le 2ième RailsCampParis dans les locaux de Sun .

Très beau locaux d’ailleurs, dommage que Sun déménage. On verra ou se passera le prochain.

Pas mal de participant, pas autant que d’inscrit finalement, mais quand même une bonne 60aine je crois. Merci à tous, ce fut un RailsCamp très sympa, très riche en échange. On regrette quand même l’absence de quelques figures de la communauté Rails de Paris, j’espère que l’on vous verras au prochain ;-)

Quelques belles sessions, mais peu nombreuses je trouve. Ceci dit tout le monde semble y avoir trouvé sont compte. Manque peut-être quelques sessions un peu originale, à voir pour la prochaine fois.

Aujourd’hui ce déroule un mashpit Merb au Dune. J’espère que vous vous y amuserais bien (ça commence dans une demi heure ;-)).

A quand le prochain ? (peut-être un RubyCamp cette fois ?)

TDD Default and Optimistic Lock on Rails 1

Publié par Yannick Francois Mer 25 fév 2009 13:57:00 GMT

RubyOnRails utilise par défaut ActiveRecord comme ORM.

J’ai eu envie de faire quelques tests sur le fonctionnement des accès concurrents. Voici les resultats sur le comportement par défaut et lorsque l’on met en place une gestion optimiste de verrou (ou une gestion de verrou optimiste ;-)).

J’ai effectué mes tests avec un Ruby 1.8.6.p114, un MySQL-server-5.0.51ap1 et un ActiveRecord 2.2.2 le tout sur mon bon openbsd 4.4

On va commencer par mettre en place une table Users avec juste champ Name pour faire nos tests et ajouter un enregistrement avec un ID à 1, ça facilitera le test.

Comportement par défaut

Le test.

require 'test/unit'
require 'rubygems'
require 'active_record'

class DBAccess < Test::Unit::TestCase
  def setup
    # On va prendre la connection à la base de données ici. Ca me gène dans le cas d'un test unitaire, mais passons
    ActiveRecord::Base.establish_connection(:adapter => 'mysql', :database => 'optimistic', :username => 'yaf', :password => 'monpassword', :socket => '/var/run/mysql/mysql.sock')
  end

  def teardown
    # on remet l'enregistrement comme il était avant de venir
    user = User.find 1
    user.name = "Joe"
    joe.save
  end

  def test_default_db_priority
    joe = User.find 1
    bill = User.find 1
    bill.name = "billy"
    assert bill.save
    assert_equal "billy", User.find(1).name
  
    joe.name = "joe"
    joe.save
    assert_equal "joe", User.find(1).name
  end
end

class User < ActiveRecord::Base; end;

J’ai glissé le model User dans le même fichier, c’est plus simple.

Executons le test:

$ ruby test.rb
Loaded suite test
Started
.
Finished in 0.173901 seconds.

1 tests, 3 assertions, 0 failures, 0 errors

Conclusion
Par défaut, c’est le dernier qui enregistre une modification qui a raison. Cela peut poser des problèmes dans certains cas, c’est pourquoi on va maintenant aller voir comment mettre en place une gestion de verrou optimiste.

Verrou optimiste (Optimistic Lock)

ActiveRecord permet la mise en place d’un verrou optimiste. Pour cela il nous faut ajouter un champ spécifique de type entier qui servira à la gestion des accès.
Cette colonne doit s’appeler lock_version selon les conventions ActiveRecord, mais on peut utiliser un autre nom.

Ajoutons donc cette colonne et écrivons notre test:

Le test

require 'test/unit'
require 'rubygems'
require 'active_record'

class DBAccess < Test::Unit::TestCase
  def setup
    ActiveRecord::Base.establish_connection(:adapter => 'mysql', :database => 'optimistic', :username => 'yaf', :password => 'monpassword', :socket => '/var/run/mysql/mysql.sock')
  end

  def teardown
    user = User.find 1
    user.name = "Joe"
    joe.save
  end

  def test_optimistic_lock
    joe = User.find 1
    bill = User.find 1
    bill.name = "billy"

    assert_equal joe.lock_version, bill.lock_version
    # et oui, maintenant nos objet on un attribut lock_version

    assert bil.save
    assert_equal "billy", User.find(1).name
  
    joe.name = "joe"
    assert_raise(ActiveRecord::StaleObjectError) { joe.save }
    assert_equal "billy", User.find(1).name
  end
end

class User < ActiveRecord::Base; end;

Executons le test:

$ ruby test.rb
Loaded suite test
Started
.
Finished in 0.437534 seconds.

1 tests, 5 assertions, 0 failures, 0 errors

Conclusion

Maintenant, au moment d’enregistrer des modifications, ActiveRecord est capable de nous prevenir par le biais d’un ActiveRecord::StaleObjectError. On peut donc imaginer encapsuler le save dans un begin/rescue pour gérer la situation.

la methode reload permet de recharger l’objet à partir de la base de donnée, ça peut être pratique dans ce cas

Un certain jqr propose un stale_object_destroyer qui apparemment permet de facilité la gestion des tentative de mise à jour plus facilement

Il serait interessant de faire tourner ces tests sur les divers base de données suporté par ActiveRecord. Notamment avec sqlite3. J’essayerais de faire le test sur une base oracle. N’hésitez pas à me tenir au courant si vous executez ces tests sur d’autres bases ;-)

On verra les verrou en mode pessimiste dans un autre billet

RailsCamp Paris 2 le retour 2

Publié par Yannick Francois Ven 20 fév 2009 08:06:00 GMT

Fin d’hiver chargé coté évènement autour de Ruby:

Et oui, encore une fois Jean-Francois fait des étincelles, il a trouvé le moyen d’organiser un RailsCamp dans les locaux de Sun, avenue Iéna, avant qu’ils déménage !

Ce RailsCamp va ce dérouler sur un fond de merge entre Rails et Merb. Comme l’année dernière c’est encore un super moyen de ce rencontrer, de coder, de discuter, de partager, d’apprendre, de découvrir…

Cet fois, j’espère pourvoir y passer la journée (et pourquoi pas être présent au mashpit du lendemain, si mashpit il y a).

Par contre dépéchez vous de vous inscrire, il n’y a déjà plus beaucoup de place.

RubyFrance vous donne rendez-vous pour le RailsCamp Paris 2

hmmm Ce thème de blog est sympa, mais je n’aime pas trop l’organisation de la typo dans les billets… Il va falloir relever les manches

Ruby et les frameworks web

Publié par Yannick Francois Sam 10 jan 2009 14:16:00 GMT

Pour noël on a eu le droit à une annonce très bruyante (mais plus très fraîche maintenant).

Rails 3 intègrera Merb

Personnellement, je trouve que c’est une bonne chose. Ces deux framework apporte la même chose aux développeurs: un confort de développement pour des applications web. Et on juste quelques divergence de point de vue qui explique l’existance des deux frameworks. Et pour des nouveaux venu, quelque semaine de tests sur l’un, puis sur l’autres pour vraiment savoir lequel choisir… Cette fusion devrait permettre d’apporter les bonnes idées de Merb dans Rails et inversement. De plus il semblerais que les développeurs de Merb travail beaucoup plus à l’écoute de la communauté d’utilisateur, si Rails peut s’enrichir de ce mode de fonctionnement, ça permettra surement à tout le monde d’en profiter. Nous verrons bien ce que cela peut donner.

De la même manière, j’ai l’impression que Sinatra et Camping marche dans la même direction: faire un framework web ultra léger. C’est dommage de ne pas joindre leurs force.

Avant de juger trop vite il faut que j’étudie ce Sinatra… “Fly me to the moon”

Retour sur un bon week-end Ruby et Rails 1

Publié par Yannick Francois Jeu 04 déc 2008 22:42:00 GMT

Dimanche: RailsParty

J’ai décidé de me rendre au Dune, lieu de l’évènement en voiture plutôt qu’en transport, pensant que pour le soir ça serait plus rapide. J’ai donc proposé à Guillaume de passer le prendre à l’hotel, porte de la villette. Avec les 10 minutes de retard habituelle du au embouteillage du périph, Guillaume arrive accompagné de Yann Lugrin venu de Suisse pour ParisOnRails ET la RailsParty (Nouveau membre de RubyFrance depuis d’ailleurs , Bienvenue ;-)).

Mais voilà, trop de bouchon, Guillaume ne fera pas de discour d’intro.

Finalement avec plus d’une heure de retard, nous arrivons dans un Dune bien rempli, avec, comme d’habitude dans les réunions Ruby et Rails, l’impression d’être dans une boutique Apple. Deux vidéoprojecteurs, un comptoir, des gens en train de pianoter : c’est bien décontracté, un évènement communautaire quoi.

Beaucoup de présentations, plutôt courte mais bien mené, Petite difficulté pour suivre puisque les deux se déroule presque cote à cote.

J’ai bien discuté avec Frederic et Cyril au sujet de Typo. Ils m’ont présenté l’énorme boulot accompli pour la version 6. Cette mouture devrait voir le jour depuis quelque semaine déjà, mais trop de nouvelle fonctionnalité semble manquer à Frederic ;-).

On a pu y voir aussi Eric Daspet, Nicolas Merouze, Sunny et plein d’autres ! Les sponsors sont venu en force, il me semble que Novelys a dépéché sur place 5 ou 6 personnes, et AF83 a innondé la salle de badge.

Merci à Jean-François d’avoir réussi à mettre cette évènement sur pied en a peine plus d’un mois.

Lundi: ParisOnRails

Pas fou, cette fois j’y vais en transport en commun ! Du coup je suis à l’heure. Prise de badge, bonjour à plusieurs personnes déjà vu la veille (Yann, cette fois tu es à l’heure ;-)). Je suis avec une personne qui, avec un passif sur une techno propriétaire, s’interesse à Ruby depuis une petite année. Du beau monde, et une cité de science vide car fermé le lundi. Ca fait bizarre, je ne l’avais jamais vu comme ça.

Après une introduction assez breve de Richard et Laurent organisateur de l’évènement, Guillaume attaque direct sur les nouveautés qui nous attende dans la version 1.9 de Ruby . Du bon, du moins bon, mais on sent que le “Matz” et la CoreTeam de Ruby corrige certaine erreur de jeunesse, propose de nouvelle possibilité de syntaxe (c’est surtout là le bon et le moins bon je trouve), mais surtout apporte le support de l’unicode, propose une solution de gestion de Thread interessante (Fibre). A noter surtout, YARV qui va remplacé la MRI actuel: amélioration de performance a venir !

Ensuite, présentation du framework Mootools. Interessant, mais je crois que je me contenterais de prototype.js pour le moment. Ceci dit, c’est bon de savoir que cela existe ! :)

Vient ensuite une conf de Russ Olsen qui c’est levé très très tôt pour nous parlé de Ruby et de son expérience dans les langages en général. Exellent ! J’adore la façon dont il a traité des designs patterns en Ruby, et j’ai beaucoup aimé sont intervention à ParisOnRails. Respect.

L’après midi reprend avec deux conférences parlant de Selenium. J’ai un peu raté la première (trop de temps à table), mais la deuxième à été très agréablement présenté. Cependant, et même si je suis convaincu que mettre en place des test d’acceptance est important, je crois qu’il faudrait d’abord avoir une bonne habitude des tests unitaires dans les équipes… ça serait déjà pas mal. Mais pour l’étape suivante, j’ai bien noté, Selenium Grid ! :)

Michael Koziarski en passage à Paris depuis cette été (repartant dans les jour qui vienne) nous a fait une présentation sur les performances d’un application Web. Partant du plus important: le resultat que l’utilisateur voit et s’enfonçant jusqu’au memcahe et autre système d’optimisation. Très riche, très dense, très rapide… grosse présentation.

Intervention de DHH himself. c’est sympa de le voir, mais finalement, nous n’apprenons pas grand chose. Une présentaiton de Liquid. Un moteur de template… Mouais. Je ne suis pas convaincu, pas assez KISS pour mes besoins.

Une petite table ronde et puis s’en vont… Un peu dommage finalement la fin de cette journée. Je ne suis pas déçu, mais après la très bonne matinée, j’avoue que l’après midi ma paru un peu fade. Ca ne peut pas être à mon gout toute la journée, nous étions quand même prêt de 250.

Lundi soir Apéro Ruby #8 le soir de ParisOnRails…

Je n’y suis pas aller, no comment.

Rails Party le 30 novembre 2008

Publié par Yannick Francois Sam 22 nov 2008 10:54:00 GMT

Avec les feuilles qui tombent vient le temps de ParisOnRails . Et cette année, plutôt que d’organiser un apéro Ruby la veille au soir, l’association RubyFrance a décider d’organiser une Rails Party

Au programme

L’après-midi sera consacré à des ateliers, sûrement autour de Typo, peut-être de Pictrails, RSpec et sûrement bien d’autres !

La soirée sera ouverte au Lightning talks (présentation courte d’une dixaine de minutes).

L’évènement se veut conviviale, c’est avant tout un moyen de ce retrouver entre raillers avant les conférences du lendemain.

Rendez-vous donc le dimanche 30 novembre 2008 de 16 heures à 22 heures au Dune, 18 avenue Claude Vellefaux, dans le 10ème arrondissement de Paris.

Cyril y sera, Frederic viens aussi (Typo, Ergonomie, Web, et plein de chose à dire, bien sur l’association RubyFrance avec tout plein de membre motivé autour de l’organisateur des évènements Ruby Parisien Jean-François !

A dimanche alors !

Self.migrate(5.0.3) 5

Publié par Yannick Francois Sam 01 mars 2008 23:10:00 GMT

Et bien voilà, ce blog, toujours propulsé par Typo bénéficie maintenant de la dernière version: 5.0.3.

Impréssionnante évolution dans l’arrière boutique.

Vous aurez remarqué, mon thème était tout cassé, du coup, je suis de retour avec Scribbish. J’adore :)

Un grand bravo a l’équipe !

Et XUL alors ! 3

Publié par Yannick Francois Mar 02 oct 2007 11:52:00 GMT

Non de XUL !

Ce matin en lisant ce billet du sur lemondeinformatique.fr au sujet des risques liés à Ajax j’ai été surpris… Surpris par ce passage:

Ted Farrell, architecte en chef et vice-président outils et middleware d’Oracle, rappelle déjà qu’en raison de la jeunesse des technologies, les entreprises doivent être prudentes quand au choix de leur solution : il y a deux grands frameworks sur le marché, et entre Microsoft et Adobe, il vaut mieux qu’elles ne se trompent pas car elles risqueraient alors de se retrouver coincées pour des années.

Hmmm. On parles ici de Flex © Adobe Systems Inc. et SilverLight © Microsoft Corporation. je suppose.

Mais, arrêtez moi si je me trompe… Non, …, personne ? bon, Flex et Silverlight ne sont pas les pendants de Xul ? Alors pourquoi on en parle pas plus ? Surtout que là, pour la peine, avec Xul on reste ouvert !

Rappel: XUL c’est eXtensible User Language (il me semble). En gros c’est du XML pour la description d’interface, CSS pour la présentation et Javascript pour l’interaction dans l’interface. Que de la technologie existante, ouverte, spécifié, standard

Alors le bon pour choix pour ne pas s’enfermer ne serais pas XUL ? Ah oui. LE pépin de XUL. Il faut soit Firefox ou alors un XulRunner

Quoique, On voit apparaître doucement des moteurs reprenant les spécifications de XUL comme Lark (du XUL on Rails). Et a mon avis on a pas fini d’en voir… Je crois, et depuis un moment, que XUL est la bonne technologie pour les interfaces dit riche.