‘Coding’

Mon stage en Ruby on Rails

Mardi 5 août 2008

Comme dis dans un billet précédent, je vais travailler lors mon stage sur un projet en Ruby On Rails. Mais pourquoi Ruby On Rails ?

A l’origine, c’était dans le cadre de mon école : Supinfo. En effet, celle-ci a décidée depuis cette année de demander à des entreprises de fournir des projets aux étudiants à réaliser en groupe durant toute l’année. Je ne vais pas revenir sur les débordements que cela a occasionné : Simple sous-traitance, exploitation des étudiants à des fins commerciales, bref… Dans l’ensemble, c’est une très bonne mesure, pour les raisons suivantes : Vrai cas d’études, Diversité dans les projets, Relation entreprise, autonomie face à un interlocuteur qui n’est pas l’école, etc… Pour notre part, nous avons sélectionné un projet de veille principalement technologique. Nous avons donc travaillé pendant quelques mois avec la société en question, nous la remercions d’ailleurs pour les moyens mise en œuvre : Bonne communication, Achat de e-Books, Mise en place d’un serveur dédiés pour les tests et la mise en production. Notre travail a été grandement complimenté, nous sommes arrivés 1er sur les 5 groupes travaillant sur le projet et nous avons été noté 20/20.

Dans un premier temps, il nous fallait choisir l’environnement de travail, nous avons donc longtemps hésité entre plusieurs framework (Pas de “From Scratch”, pas le temps et c’est désormais plus un choix valable) : Symfony, Zend Framework et Ruby On Rails. Puisque nous étions deux (Moi-même et Fred) dans le groupe à avoir fait beaucoup de PHP, notre formation n’aurait pas été longue et nous aurions pus facilement chapeauter les autres. La question qui se posait, était donc “quel framework pour les autres ?” (Les autres : Daniel, Jérome et Antoine). Après étude, la formation sous Ruby était moins longue, puisque notamment basé sur des conventions. Et aussi, car je m’intéressais au langage et que je les ai bien soûlés pour faire du RoR, et j’ai montré la fameuse vidéo : “Toi aussi code ton blog en 15min !“, ça fait toujours son effet… En plus de cela, pour démarrer, il n’y avait pas besoin d’environnement lourd (LAMP/WAMP) puisqu’un serveur est intégré au framework et SQLite suffit pour la base de donnée. Pour le développement, nous utilisions NetBeans, perso je le trouve pas mal, Daniel lui préférait Eclipse. Une fois commité via un Subversion sur le serveur de test, celui-ci basculait automatiquement sous MySQL 5, gain de temps pour les tests grandeur nature. On avait aussi mis en place un wiki pour récolter les informations au début et une mailing-liste pour se tenir au courant mutuellement. Les outils étaient OK, so let’s go !

Les résultats ne se sont pas fait attendre, tous les CRUD étaient créés en une semaine, le suivi facile, une fois compris l’architecture Controller/Model/Helper/Vue, on sait où est quoi, pas de recherche dans plein de fichiers… Un peu dur de faire comprendre l’intérêt des migrations a des gens qui commit tout les 16 du mois, mais dans l’ensemble, c’est bien passé, et avec les fixtures (Données de pré remplissage de la base de donnée), ils pouvaient réinitialiser leur base et remettre toutes les données comme leur compte, trop cool !

Je suis content, on a pas perdu de temps, on a tenu nos deadlines sans trop se presser… Le Ruby On Rails, ça marche ! C’est productif !

Le but premier de ce post était de faire une comparatif des plugins de moteur de recherche en Rails, mais je voulais d’abord raconter notre épopée. Voilà, c’est fait ! Le billet en question est remis à demain…

Rails scale ? Of course !

Dimanche 13 juillet 2008

Depuis quelques mois, je développe mes sites en Ruby On Rails. En effet, je reste avant tout un geek et cela m’amuse de temps en temps de développer selon mes besoins des applications Web. La plupart d’entre elles restent des prototypes, une fois la difficulté passée ou le core terminé, je me lasse et je passe à autre chose…

La question étant souvent la même : Pourquoi après 5 ans sous PHP, ce changement “radical” ?

Je vais tacher de me résumer en une simple liste de 10 points :

  1. Les CRUD assistés. Un gain de temps non-négligeable. (Toi aussi code ton blog en moins de 15min ;) )
  2. Le modèle MVC.
  3. Une propreté/structure dans le code du fait du modèle forcé en MVC.
  4. Une richesse de centaines de tips/helpers intégrés au framework. Là aussi un gain de temps et d’effort.
  5. Une communauté active et structurée.
  6. Une diversité de plugins hallucinante, pour la plupart orienté production, comme des daemons d’indexation pour des moteurs de recherche, des interface pour système de paiement en ligne, de tag, de template, c’est sans-fin… Pas de scripts tiers à intégrer. Logique différente.
  7. Database agnostic. Assez cool pour une migration de MySQL vers PostgreSQL (Du vécu… ;) ).
  8. JS/AJAX intégré et assisté. Malgré le fait que je remplace systématiquement Prototype par jQuery.
  9. La maintenance est bien plus simple ! Dépends du petit 3.
  10. Le Ruby est, au final, un langage agréable à coder. Basé sur la convention plutôt que la configuration, on ne recode par la roue…

Il y a des trolls en ce moment sur les performances de Ruby On Rails, sa stabilité et sa capacité à prendre la charge. Bref, comme dit au début du paragraphe, ceci est un troll. Je vous invite à faire quelques recherches pour vous en rendre compte. Ceci est parti de Twitter et de son downtime systématique, cela viens de Twitter et non du Ruby. La preuve, ni YellowPages qui vient complètement d’être refait en Rails et Scribd ne sont sujets à cette polémique. Cela vient, je pense, de la sur-utilisation de l’API de Twitter (+ de 3000 requètes SQL par seconde).

Blog et projets

Lundi 26 mai 2008

On commence par une information primordiale : Passage sous Wordpress 2.5.1 ! Bref…

Mon engouement pour le Ruby On Rails ne cesse pas. Je commence même mes propres projets :

Rss2Us : Portail de gestion de flux RSS, avec filtre bayesien. Cet algorithme est utilisé dans la détection de spam, j’ai un peu adapté le système pour faire de la recommandation d’article et de l’auto-tagging. Le système n’est pas abouti mais les résultats sont au rendez-vous, je dirais qu’il fonctionne à 70% pour le moment. En effet, tout dépend du temps d’apprentissage du filtre, puisqu’il s’adapte à chaque utilisateur du système, il apprends ses goûts. Pour l’auto-tagging, ça fonctionne pas encore très bien, mais la phase de test à été un peu court, je ne peux pas trop me prononcer, les résultats ne sont pas mauvais, mais il y a une grosse marge d’erreur, il a tendance à “sous-tagguer”, malgré un seuil de tolérance plus bas que celui de la recommandation. Ce projet est temporairement en pause au profit du suivant.

ImagR : Galerie photos développer en Ruby On Rails. Un FlickR à la portée de tous. Les features sont nombreuses, et les produits dérivés arrivent vite. Ça code, ça code… :) Je ferais sûrement un billet un peu plus long d’ici 15 jours pour le lancement d’une béta de test.

Pour ceux qui seraient intéressés, j’ai installé un Redmine (Gestionnaire de projet) et mis en public ces deux projets : http://dev.e-lam.net/

En Vrac

Vendredi 2 mai 2008

Un petit en vrac, car ça prends 5min.

  • Streamzy - rechercher et écouter de la musique en ligne. Propulsé par le bot seeqpod, je dis bot, car ce site se balade sans cesse sur la toile et indexe tout MP3, Vidéos et articles… Un Google Multimédia, il est déjà bien fourni et deviens un concurrent sérieux de notre fameux Deezer. Streamzy est juste une interface plus propre et plus user-friendly de seeqpod, une bonne nouvelle.
  • Ruby On Rails : Arrivé de la version 2.1 (je connais pas bien le changelog). Je m’amuse vraiment beaucoup avec ce langage, simple, puissant. Malgrés quelques trolls sur les performances, il répond à beaucoup de besoins ! A savoir par exemple que les pages jaunes sont propulsées par RoR, pour moi un gage de stabilité.
  • A ce titre, je cherchais un projet OpenSource en RoR pour me faire la main, je l’ai trouvé : Redmine. Logiciel de gestion de projet vraiment génial : bien pensé, light et propre. Je vous invite vraiment à aller regarder ça de plus près. J’ai commencé à l’utiliser professionnellement, mon boss aime beaucoup et moi aussi. Il manque l’exportation vers iCal, que je suis en train d’implémenter et avec un peu de chance ça sera dans la prochaine version du logiciel :)

Become a fan of Ruby on Rails

Mercredi 12 mars 2008

Comme le dit le titre, je suis récemment tombé fan du Ruby On Rails, un framework web libre écrit en Ruby.

Comme certains le savent déjà, il y a depuis quelques mois un gros buzz autour de ce framework, et cela pour plusieurs raisons qui sont à mon goûts très vraies.

Pour résumer en quelques points :

  • Il est conçu selon un modèle : Modèle-Vue-Contrôleur très agréable d’un point de vue de développeur.
  • JS/AJAX inclue via les librairies script.aculo.us et Prototype. jQuery peut être utilisé pour les fans comme moi ;)
  • Déploiement simple : Pré-installé sous Mac, dans tous les dépots Linux et sous Windows ca se fait également très bien puisque qu’il embarque un serveur local au projet.
  • Au-delà du support des bases de données suivantes : SQLite, MySQL, PostgreSQL, DB2, Oracle et Microsoft SQL Server. L’avantage est qu’il gère toutes les connections à la base automatique, donc pas de requète à écrire et il devient donc extrèmement facile de migrer de base (Un simple ligne à ahcnger dans son fichier de config), il intègre aussi un système de versionnalisation de base. Il gère aussi plusieurs environnement : Dev, Production et tests. (Précision sur ce dernier RoR inclus un moteur de tests unitaire de son appli)
  • Les deux principes, cité de Wikipedia, sont :
    • Ne pas se répéter : les éléments de l’application ne doivent être qu’à un seul endroit.” , logique mais pas forcement évident en PHP par exemple.
    • Et l’autre principe, celui qui rends l’approche un peu plus repoussante, mais qui devient un réel avantage de performance et de temps de programmation avec le temps, et dont je suis moi-même très content, c’est : Convention plutôt que Configuration : il est inutile de préciser des détails lorsqu’ils respectent des conventions établies. (En effet, Rails exploite cela en proposant des comportements par défaut pour la plupart de ses fonctionnalités).

Pour ma part, j’ai développer un Craigslist-like avec gestion de GoogleMap, FlickR, Comptes utilisateurs, Authentification, Recherche et admin en Ajax, en 5/6h et 200 lignes de code (En moyenne 20 mots par ligne…). Et c’était mon 1er site en RoR !

J’esserais de faire quelques rapports de mon apprentissage et passage à Ruby On Rails, en effet après près de 6ans sous PHP, ca va pas être évident. Je vais aussi vous fournir mes bookmarks dans un prochain billet (Déjà 31 après une semaine…).

Je vous invite à lire le eBook que je joinds à l’article, qui permet de faire une partie de se qui est décrit ci-dessus. Et aussi la doc/Wiki officiel du site de Ruby On Rails.

Liens :

Password Generator disponible en SSL

Dimanche 17 février 2008

Suite à la remarque de mon ami Mr. Mathieu Seguin le générateur de mot de passe est désormais accessible en HTTPS donc crypté en SSL (Clée RSA 1024). Pour de la gestion de mot de passe, c’est vrai que c’est quand même mieux…

C’est l’un des premiers services proposé par eLamConcept.