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].

[ANN] JRuby 1.4.0

Publié par Yannick Francois Mar 03 nov 2009 10:37:00 GMT

Après quelques release candidate, voici venu la nouvelle version de JRuby . On y retrouve:

  • compatibilité ruby 1.8.7
  • Amélioration du support ruby 1.9 (d’ailleurs, l’équipe demande à tous ceux qui le peuvent de tester et faire des retours sur les fonctionnalités implémenté dans cette nouvelle mouture de ruby)
  • Une installation windows native (pas encore essayé, mais ça facilitera certainement l’utilisation de jruby sur ces plateforme)
  • Un nouveau parseur YaML fait sont entré (un petit article Ola Bini: new yaml support for jruby: yecht
  • Amélioration du support Java (vitesse, nouvelles méthodes)
  • et 307 bugs corrigé…

Du bon, on voit que l’équipe et la communauté autour de cette implémentation est très active ! Et je pense que c’est un bon moyen de faire entrer Ruby dans le monde de l’entreprise. J’en suis témoin, et j’espère pouvoir vous en parler bientôt.

OSDC.fr 2009

Publié par Yannick Francois Jeu 16 juil 2009 19:21:00 GMT

Python, Perl, Ruby, et tout les langages “opensource” ont le vent en poupe. Mais on voit malheureusement trop souvent des trolls sortir du bois pour taper sur l’un avec l’autre et inversement…

L’Open Source Developper Conference France, c’est 2 jours de conférences pour échanger autour de ces langages, apprendre les uns des autres, découvrir les forces de chacuns et apprendre à mieux se connaitre. OSDCon est une initiative mondiale, chacun y va de ça petite conf. Et bien, et pour la première fois, les associations AFPY, Les mongueurs de Perl et RubyFrance s’associent pour organiser le 2 et 3 octobre l’"OSDC france 2009":http://act.osdc.fr/osdc2009fr/index.html. Ces conférences auront lieux au Carrefour Numérique de la Cité des Sciences, à Paris (porte de la Villette).

L’entrée est libre et gratuite, alors j’espère que vous pourrez y venir !

Ruby File.open 'w' Acces concurrent 2

Publié par Yannick Francois Mar 09 juin 2009 21:02:00 GMT

Je viens de tomber sur quelque chose d’étrange dans l’utilisation de l’objet IO de Ruby : La gestion des verrous sur les fichiers. Alors j’ai surement du rater quelque chose, mais voici mon histoire…

require 'test/unit'

DUCK="duck"
ELEPHANT="elephant"
SNAKE="snake"
FILE="test_file"

class TestFileConcurrencyAccess < Test::Unit::TestCase
  def test_concurrency_access
    t1 = Thread.start do
      File.open(FILE, "w") do |file|
        file.puts SNAKE
        file.flush
        sleep 8
        file.puts DUCK
      end
    end
    File.open(FILE,"r") do |f1|
      assert SNAKE, f1.read
    end
    t2 = Thread.start do
      File.open(FILE,"w") do |f|
        sleep 2
        f.puts ELEPHANT
      end
    end
    t2.join
    File.open(FILE,"r") do |f2|
      assert ELEPHANT, f2.read
    end

    t1.join
    File.open(FILE,"r") do |f3|
      assert SNAKE, f3.readline
      assert DUCK, f3.readline
    end

  end
end

fichier source

Le resultat d’execution de ce test donne une erreur sur la dernière lecture:


Loaded suite test_file_concurrency_access
Started
E
Finished in 8.003509 seconds.

1) Error:

test_concurrency_access(TestFileConcurrencyAccess):
EOFError: end of file reached
test_file_concurrency_access.rb:38:in `readline’
test_file_concurrency_access.rb:38:in `test_concurrency_access’
test_file_concurrency_access.rb:36:in `open’
test_file_concurrency_access.rb:36:in `test_concurrency_access’

1 tests, 3 assertions, 0 failures, 1 errors

Mais ce qui me gène (et qui ne ressort pas dans mon test, je l’avoue) c’est que j’aurais pensé que le deuxième File.open ne puisse pas s’executé, et me renvoie une Error du type: “Le fichier est déjà ouvert en écriture par quelqu’un d’autres”… Mais non, et du coup, j’ai un fichier assez moche qui ne ressemble à rien:

elephduck

Alors qu’on pourrait penser obtenir un truc dans le genre:

snake
duck

Avec éventuellement une erreur sur l’écriture d’éléphant dans le fichier.

J’ai également fait un essai en utilisant le code contenu dans chaque thread pour les executer dans deux console différentes, j’arrive au même résultat (c’est du coup dans test/unit, mais au niveau du contenu de FILE à la fin, j’ai là même chose…)
Fichier write_quickly.rb pour l’écriture d’ELEPHANT
Fichier write_slowly.rb pour l’écriture de SNAKE et DUCK

Bref, je suis perplexe. J’avoue ne pas avoir envie d’envoyer cela sur la mailing-liste Ruby-talk, ni sur celle de JRuby d’ailleurs (car j’ai vérifier, j’ai le même problème en JRuby). Du moins tant que je n’ai pas creusé un peu plus.

J’ai sûrement du faire une erreur quelque part, oublier quelque chose, ou faire quelque chose de travers. Si quelqu’un lit cela et à une idée, merci d’en m’en parler, je suis preneur !.

Si c’est un comportement souhaité, j’aimerais comprendre pourquoi, et si c’est un oubli ou une erreur, j’aimerais bien aider à trouver une solution.

ps: Retour au thème Scribbish que je trouve plus lisible, en attendant que je refasse quelque chose…

Apéro Ruby de mai 2009

Publié par Yannick Francois Mar 19 mai 2009 19:51:00 GMT

Pour ceux qui ne serait pas encore au courant, Cyril ‘shingara’ Mougel organise au nom de l’association RubyFrance le 12ième apéro Ruby de Paris.rb (la communauté parisienne de Ruby). Si cela vous tente, rendez-vous le 20 mai à partir de 20h au Dune (ça devient une habitude ;-)) 18 avenue Claude Vellfaux 75010 Paris (Métro Colonel Fabien ou Goncourt: e-dune/acces).

Petit extrait des activités de la soirée (à part boire un coup et discuter):

Les sujets que nous pourrons abordé sont :
– Rails 3 étant annoncé en Alpha pour très bientôt, nous pourrons tous
en parler entre nous.
– RailsConf 09 qui s’est terminé le 10 Mai

Vous pouvez voir quelque vidéo de cet conférence sur blip.tv

http://railsconf.blip.tv/posts?view=archive&nsfw=dc

Et Cyril nous précise les non-modalités

Aucun enregistrement préalable n’est nécessaire. mais vous pouvez
toujours m’indiquer votre venue par email. Si vous souhaitez réaliser
une présentation, n’hésitez pas à me l’indiquer pour qu’on puisse
l’organiser.

En espérant vous voir à nouveau, bonne soirée

Je pense que j’y ferais un tour, j’espère vous y voir ;-)

Changement de thème 1

Publié par Yannick Francois Dim 10 mai 2009 11:24:00 GMT

Après pas mal de temps passé sur Scribbish j’ai repris un petit thème maison. C’est pas forcement aussi bien léché, mais au moins, C’est moi qui l’ai fait :-)

Et ça me permet également de faire mon premier repository public sur GitHub histoire de voir comment ça marche. Retrouvé donc les sources de ce thème sur github.com/yaf/to_the_left .

Maintenant il faut que je vois si c’est assez beau pour être proposé sur le typogarden

OpenBSD 4.5 et PickAxe 1.9

Publié par Yannick Francois Ven 01 mai 2009 10:03:00 GMT

Deux annonce pour ce 1er mai, l’une attendu l’autres, presque, mais pas forcement aujourd’hui.

OpenBSD 4.5

C’est un classique du 1er mai, une nouvelle version d’"OpenBSD":http://www.openbsd.org voit le jour. Cette version est associé à un thème Tron, très réussi je trouve.

Dans la liste des améliorations et nouveautés de cette version on pourra noter:

  • Amélioration du support wifi (les cartes d’intel posait des problème par exemple)
  • Ajout de fonctionnalité de composite au serveur X d’openbsd Xenocara xcompmgr
  • OpenSSH 5.2

et tout un tas d’autres choses que je vous propose d’aller lire sur le journal officiel d’openbsd

PickAxe Ruby 1.9

Le pickaxe est LE livre de référence du langage de programmation Ruby. Son nom viens de la couverture qui, vous l’aviez deviné, représente une pioche. Et bien une version à jour, c’est à dire parlant de la version 1.9 de ruby est en cours d’impression. On attend avec impatience cette nouvelle référence du langage. Je vous laisse lire la nouvelle sur le Ruby Inside, Ruby 1.9 pickaxe

Pffiiu, on a de quoi s’occuper ce week-end ;-)

Skinny controllers and fat models 1

Publié par Yannick Francois Mar 21 avr 2009 08:18:00 GMT

Hier, j’ai posé une question à la terre entière (ou presque):

http://identi.ca/notice/3568719

MyModel.paginate(blablabla) or just call MyModel.give_data and call paginate in MyModel ?

J’ai mis en place une pagination sur une liste de commande. Cela à plusieurs avantages.

  • Graphique d’abord. On ne peut vraiment pas proposer une interface claire avec une liste de 150 commandes
  • Performances ensuite. Aller cherche 150 commandes d’un coup, c’est faire attendre le client qui finalement n’en fera que 10.

Ceci étant dit, sur divers exemple que j’ai observé à droite et à gauche, l’appel au modèle pour récupérer la liste de commandes dans le contrôleur ce fait sous la forme:

  @ma_liste = MonModel.paginate :page => params[:page], :per_page => 10, :condition {mes_conditions}, :order => 'date DESC'

Je ne détail pas les conditions ici, mais pourtant ce sont elles qui me gène dans ce code. L’appel à paginate (ou une autre méthode) dans le contrôleur ne me gène pas, de toute façon, il faut bien qu’il travail un peu, même s’il est maigre ! Mais par contre j’ai beaucoup de mal avec le fait que le contrôleur connaisse les conditions pour la récupération de la liste. D’autant que j’ai dans ces conditions quelque valeur par défaut qui dépende d’un contexte non présent dans les paramètres aujourd’hui.

Je vais donc opter pour le déplacement de l’appel à paginate dans mon modèle. J’ai donc maintenant dans mon contrôleur quelque chose de plus clair, et plus simple (ou plus maigre :)):

  @ma_liste = MonModel.commandes_en_attente params

Et dans mon model

  def commande_en_attente params
    MonModel.paginate :page => params[:page], :per_page => 10, :condition {mes_conditions}, :order => 'date DESC'
  end

C’est bien beau, mais je me retrouve maintenant avec des éléments de présentation dans mon modèle. C’est mal.

Je vais pour l’instant passer la page demandé et la quantité par page en paramètre.

class MonController < ApplicationController
  def index
    @ma_liste = MonModel.commandes_en_attente params[:page], 2 
  end
end

class Commande < ActiveRecord::base
  def commande_en_attente params page, perpage
    MonModel.paginate :page => page, :per_page => perpage, :condition {mes_conditions}, :order => 'date DESC'
  end
end

Ce n’est pas top non plus, mais je préfère cela pour l’instant. Si quelqu’un a une idée, je suis prêt à l’entendre.

Passage à Typo 5.3 (en retard)

Publié par Yannick Francois Ven 17 avr 2009 21:39:00 GMT

Alors que la version 5.3.1 avance, je viens juste de me mettre à jour.

Ce blog tourne maintenant avec “Typo 5.3 Robert Franck”. Principalement dédié au portage de l’application pour RubyOnRails 2.2.2 , cette version amène tout de même un paquet de corrections de bug et d’évolutions.

Il y en a une que j’attendais (par flème de la faire) depuis longtemps: la redéfinition du format des urls. Je pense que d’ici peu, les urls ici passeront d’un format /année/mois/jour/titre à /titre :-)

Merci à l’équipe, comme d’habitude, pour le bon boulot !

Passage à Typo 5.3 (en retard)

Publié par Yannick Francois Ven 17 avr 2009 21:39:00 GMT

Alors que la version 5.3.1 avance, je viens juste de me mettre à jour.

Ce blog tourne maintenant avec “Typo 5.3 Robert Franck”. Principalement dédié au portage de l’application pour RubyOnRails 2.2.2 , cette version amène tout de même un paquet de corrections de bug et d’évolutions.

Il y en a une que j’attendais (par flème de la faire) depuis longtemps: la redéfinition du format des urls. Je pense que d’ici peu, les urls ici passeront d’un format /année/mois/jour/titre à /titre :-)

Merci à l’équipe, comme d’habitude, pour le bon boulot !