ActiveRecord: Attributs en lecture seule sous conditions

Par Florian Dutey, le 27/04/2009 à 12:53: Rails

Un problème se pose souvent avec ActiveRecord.
Le attr_readonly, c’est très bien, mais ca ne représente qu’un comportement global, au niveau de la classe et non pas au niveau de l’objet.

Ceux qui ont déjà utilisé acts_as_state_machine (ou tout autre plugin de workflow) ont surement déjà eu un problème similaire: “rendre un attribut read-only seulement lorsque l’objet est dans un état précis”.

Voici la solution que je propose, sous forme de validation, dont l’utilisation est relativement simple et qui répond normalement à une majorité de cas de figure.

0 commentaires

Solutions pour charts

Par Florian Dutey, le 03/04/2009 à 09:39: Web

Pour ceux qui ne savent pas ce qu’est un chart, en gros, c’est un objet qui englobe ce qui peut être désigné en français par: graphique, diagramme, schéma.
Ce qui nous intéresse ici, ce sont les outils pour réaliser des graphiques (statistiques principalement mais aussi rendu de fonctions mathématiques).

Il existe deux grands ensembles de solutions: javascript + svg ou flash.
Pour ma part, j’ai une petite préférence pour le js+svg. En effet, c’est beaucoup plus simple à manipuler: le svg est un meta-langage au meme titre que le xhtml ce qui ne constitue pas une barrière infranchissable pour un développeur et la logique qu’on peut appliquer au schéma est assurée par le javascript qui est un langage que tout développeur web est supposé connaitre au moins un minimum.
De plus, le svg étant un format vectoriel, il assez aisé de transformer un canvas en png (image).

Flash, lui, tire son avantage surtout au niveau de la finition. Il est indéniable que les charts flash ont bien plus de gueule que leurs homologues svg. Les bibliothèques flash proposent aussi des fonctionnalités un peu plus fines que les bibliothèques js+svg.

Après quelques fouilles, voici ce que j’ai retenu pour ma part.

Javascript + SVG

Flash

Bien sur, il existe bien d’autres bibliothèques aussi bien en flash qu’en SVG, je n’ai testé que celles-ci.
Ma préférence s’oriente tout de même vers Flotr car je n’utilise pas JQuery et ProtoChart n’a pas l’air maintenu.

Notez que FusionCharts propose toute une panoplie de charts / map / widgets supplémentaires (et payants), en flash bien sur.

0 commentaires

Alléger son code avec la méthode with

Par Florian Dutey, le 27/02/2009 à 07:58: Ruby

Il vous arrive surement parfois d’avoir un certain nombre de méthodes à appeler sur le même objet. Suffisamment pour ne pas pouvoir les chainer sans avoir une ligne de 2km de long.

Pour observer un peu de constance et de lisibilité, Michael propose la méthode with(obj){ }.

On va pouvoir se comporter dans le bloc comme si on se trouvait dans l’objet lui même. Cela comprend aussi l’appel de méthodes protégées et privées.

Cela peut permettre aussi de modifier le comportement d’un objet ponctuellement sans affecter les autres instances de sa classe.

0 commentaires

Rails, CoreExt et Enumerable

Par Florian Dutey, le 24/02/2009 à 10:52: Ruby

Pour terminer le tour des astuces sur Enumerable, nous allons détailler un peu ce que Rails nous apporte en plus.

0 commentaires

Inject sur un Hash

Par Florian Dutey, le 19/02/2009 à 12:57: Ruby

Un problème courant quand on débute en Ruby (et qu’on a lu la doc d’Enumerable), c’est d’utiliser correctement certaines méthodes sur les Hash.

On se prive souvent d’un inject sur un Hash car on ne sait pas trop ce qu’on récupère.
En fait, la doc de Ruby n’est pas très explicite et il faut chercher au fond des choses pour bien comprendre ce qui se passe.

Tout d’abord, qu’est-ce qu’un Hash?
Grossièrement, c’est un tableau dans lequel, chaque item est une paire (un tableau contenant deux valeurs).

Le sachant, les choses deviennent deja beaucoup plus claires. Mais alors, pourquoi certaines méthodes comme each prennent 2 paramètres (clef et valeur) et pas d’autres comme inject?

Encore une fois, la solution est à chercher dans la syntaxe un peu space de Ruby.

0 commentaires