Rails trucs rapides #2

Posted by | Posted in Dev, Web | Posted on 07-09-2009

Rails est synonyme de raccourcit, il nous permet par exemple de faire une simple requête DB en une ligne comme ceci:

Model.find(id) ou encore Model.all, Model.first, Model.last
Model.all va générer une requête semblable à cela SELECT * FROM model

Simple non!?
Très! Oui, mais….. Cette requête retourne et met en mémoire toutes les données de la row. A-t-on réellemement besoin de retourner toutes les colonnes?

Il est plus long lors d’une requête de retourner toutes les colonnes que de n’en retourner seulement quelques unes. Bien sur on parle ici de millisecondes, mais sur certains sites, ces millisecondes peuvent s’avérer être précieuse.

Si on veut construire un select plus précis et moins “time consumming” on peut le faire avec la même fonction dans Rails, il suffit de lui passer un seul paramètre comme ceci.

Model.all(:select => ‘model.id, model.firstname, model.lastname’)
génère ceci => SELECT model.id, model.name, model.lastname FROM Model

Cette manière de faire, bien que plus longue à écrire, est à mon avis une bonne pratique à appliquer sur le web. Pourquoi charger des données non utilisées dans un objet alors que nous n’avons besoin que de quelques colonnes!? Je n’en vois pas la raison.

En plus du pratique argument :select, il est possible de passer plusieurs autres d’arguments à la méthode find. En voici une liste:

: order, :from, :conditions, :joins, :group, :limit, : offset, :readonly, :lock et :include.

référence => Railsbrain

Bookmark and Share

Rails trucs rapides #1

Posted by | Posted in Dev | Posted on 22-08-2009

Depuis quelques semaines déjà je fais souvent des découvertes quant aux fonctionnalités plus discrète que Rails offre. J’ai décidé de les partager et aussi de m’en faire une archive.

Incrémenter un compteur

increment_counter(counter_name, id)

Simple à utiliser, je vous sers un exemple implanté dernièrement

Counter.increment_counter(:visits,id)
génère => UPDATE "counter" SET "visites" = COALESCE("visites", 0) + 1 WHERE ("id" = id)

simple et directe.

on peut aussi répéter l’expérience avec decrement_counter et update_counters

référence via RailsBrain

Bookmark and Share

Taxi.ca application verte ecobot

Posted by | Posted in Divers, coup de gueule | Posted on 26-06-2009

Je suis toujours curieux de voir ce que les autres agences font comme travail.  C’est comme ça qu’en recevant un lien d’un des associés chez VDL2 je me suis retrouvé sur le site d’ecobot une application “verte” servant en fait à calculer la trace de carbone que l’on consomme chaque jour en essence papier et énergie.

Le site est sympathique et me donne envie d’installer l’appli, je m’attends à un widget, une appli pour iPhone / iPod Touch et non, finalement, c’est une appli AIR.  À ce moment, je suis déjà moins encline à installer une application AIR. Pourquoi?!  Tout simplement parce qu’AIR est encore un autre plugin permettant de rouler une application flash embarquer dans un wrapper permettant de rouler sur le système directement au lieu de visionner l’appli dans une page web…  Oh great, un widget!? Une appli iPhone?! Nan, une maudite appli AIR…

Je reçois un autre courriel quelques minutes plus tard pour annoncer que l’appli est compatible seulement Mac OSX.  Wow, méchante affaire! Le marché cible est plus vert chez Apple?!  Windows était trop compliqué à programmer!?  La version Windows est à venir?!  Why?  Taxi avec Ecobot ce sont coupé quoi, 75% des gens de la planète?

Bref, bonne idée, mais malheureusement FAILED.

Bookmark and Share

Les Éditions du huit ont maintenant leur site

Posted by | Posted in travail | Posted on 21-05-2009

Les Éditions du 08-08-88 à 8h08 ont maintenant leur site Internet. Une réalisation de Nektar multimédia conjointement avec Dominic Bourret de Guet Apens

Merci à GSI Musique et Gwendolina Genest de m’avoir confié ce projet alors que je n’étais disponible que quelques heures semaines.

Bookmark and Share