Il est ou ton environnement de travail ? Dans ton cloud!

Dans de précédents articles (IDE rails la suiteAptana, finalement pas) , nous avons abordé différents IDE pour faire du développement rails sous Windows. Le choix d’outils en fonction de l’environnement est incontournable pour tout développeur. L’installation de l’IDE et la configuration de votre environnement n’est plus une fatalité, il existe une alternative: le cloud !

Je vous propose de découvrir deux outils  Koding et Cloud9 IDE online. Ce sont tous deux des environnements de développement intégrés utilisables directement dans votre navigateur favori.

Koding

C’est une plateforme de développement orientée réseau social. Quand vous vous connectez, vous tombez sur l’activité de tous les usagers. Sachant qu’à l’heure ou j’écris cet article, il y a 44 144 utilisateurs (d’après leur page membres), ça pollue passablement votre flux. Mais n’ayez crainte, vous pouvez configurer tout ça.

Coté développement, il y a de quoi s’amuser un peu. Il s’agit d’une VM avec un CentOS et des éléments de base: un terminal pour manipuler la vm, un éditeur de texte avec une coloration syntaxique et quelques applications.

J’ai testé un créateur de projet rails qui semble fonctionner sans problème. J’avoue avoir été un peu perdu une fois le projet créé, j’ai cherché comment l’utiliser car le viewer ne le permet pas.  Après plusieurs tentatives infructueuses et un peu de googling, je suis tombé sur la marche à suivre : http://kwiki.koding.com/wiki/RoR. Bon c’est un peu basique mais ça fonctionne ;) . J’ai également récupéré mes projets depuis mon compte github sans aucun soucis.

Conclusion

Le message est clair, c’est une beta avec pas mal de « coming soon », de choses assez basiques  et de plantages réguliers (ralentissements, impossibilité d’utiliser la console). Cependant, on peut s’en sortir avec quelques recherches sur google et la lecture des documents proposés par les utilisateurs. L’orientation application  à la façon market encourage la communauté dans l’amélioration des services de la plateforme. On peut toutefois se demander sous quelle forme ce service sera monétisé et dans quelle mesure on pourra utiliser son compte « gratuit ».

Cloud9

Plus ancien, il est aussi plus abouti et bien documenté. La version gratuite permet une utilisation « basique » avec des espaces de travail publiques et alloue un espace de 123M. La version payante (12$/mois) permet, entre autre, 6 espaces privés, votre propre VM et un nombre illimité de collaborateurs. Pour mon test, je me suis connecté sur mon compte github et j’ai récupérer quelques projets. Pour le projet rails, j’ai suivi cette documentation. L’utilisation m’a parue plus simple que Koding et l’environnement moins « fouillis ». On comprend rapidement comment lancer son application.

Conclusion

Cloud9 propose un environnement efficace et clair. Il est plus mature, possède également une formule payante plus complète. Je n’ai pas eu de soucis particulier, ces quelques heures d’utilisation m’ont convaincue. Je pense continuer dans mon exploration, voir développer un ou deux petits projets avec, histoire d’en voir un peu plus. La version gratuite me suffit car je n’ai que peu de projets et ils sont tous open-source. Un passage à la version payante se justifierait avec un projet non open source ou des besoins plus importants (plus d’informations).

Le mot de la fin

A mon sens, Koding est clairement plus orienté plateforme communautaire alors que Cloud9 propose un environnement développement pur et dur. Les deux permettent de développer une application en gardant un œil sur le résultat et une console ouverte pour l’exécution des commandes et autres scripts.

Dans les deux cas, l’avantage de ne pas avoir à installer son environnement de travail est incontestable  Vous pouvez développer de n’importe où, il vous suffit d’un navigateur. L’inconvénient est bien-sur le besoin d’une connexion internet et l’ouverture vers l’extérieur qui peut soulever des problèmes de sécurité.

N’hésitez pas à partager vos expériences sur ces outils ou d’autres environnements. Il me reste deux invitations pour Koding si ça tente quelqu’un ;)

@bientôt

Tester, tout un art

Bien le bonjour. Aujourd’hui, nous allons aborder la partie tests d’une application. Je pensais attaquer directement sur des exemples de tests appliqués à Pibou mais nous allons d’abords discuter  de façon plus générale.

Pourquoi tester ?

L’utilité des tests est un grand sujet de débat. Pour ma part ils servent pour plusieurs choses :

Le design

La réalisation de tests aide à structurer son code. Ceci pour plusieurs raisons :

  • Les tests nécessitent une réflexion sur la façon de découpler son code.
  • Les tests mettent en pratique votre pensée et les concepts que vous voulez implémenter. C’est du « code d’intention », votre design va évoluer au fur et à mesure que vous allez le mettre en pratique dans le contexte d’utilisation.
  • Dans une logique de TDD (voir chapitre suivant), ils vont peu à peu changer votre façon d’aborder le développement.

La validation des fonctionnalités

Les tests sont à la fois l’expression des besoins fonctionnels et celle du comportement de votre code.
Il va permettre de valider ce qu’attend l’utilisateur mais également fixer le comportement, c’est une forme de spécification via des cas d’utilisations.

Le filet de sécurité

Les tests sont également là pour s’assurer de la non régression. Cette sécurité améliore les conditions de développement pour la maintenance, l’évolution et le refactoring du code. Combien de fois avez vous évité une refonte car vous n’étiez pas sûr de ne pas ‘casser’ quelque chose ? ;)

La documentation

Contrairement à une documentation « classique »  (type javadoc, wiki, doc, etc..), votre code se doit d’être à jour pour fonctionner.
L’écriture des tests nous indique comment le code doit se comporter mais également l’approche des personnes qui l’ont écrit. Les cas d’utilisation et les limites.

L’apprentissage

Si vous découvrez une nouvelle API ou un nouveau framework, l’utilisation de tests pour comprendre et découvrir est une excellente approche. Non seulement les tests mettront en évidence le comportement mais ils permettront également de fixer ce que vous attendez. Si le framework ou l’API évoluent, ces tests vous montrerons les changements qui impactent votre utilisation.

Un petit mot sur le TDD

Le Test Driven Development est une approche qui prône pour l’écriture des tests avant le code de production mais pas que. On peut le résumer par un cycle de développement tel que:

  1. Ecrire un test pour valider une fonctionnalité ciblé du code
  2. Faire échouer le test
  3. Ecrire le code de production qui répond à ce test
  4. Faire réussir le test
  5. Refactorer son code chaque fois que nécessaire à partir d’une suite de tests valide
Il s’agit de cycles courts qui doivent cibler des parties spécifiques du code. C’est un développement itératif et incrémental où chaque étape est une  évolution stable du code en fonction des besoins.

Les types de tests

  • Il y a les tests unitaires qui sont des tests en isolation. Il servent à tester spécifiquement des parties du code ‘de façon unitaire’.
  • Les tests d’intégration testent le comportement plus global de l’application. Il vérifient  les liens entre les différentes parties du code.
  • On parle parfois de test d’intégration pour les tests d’interface graphique. Il s’agit dans la plupart des cas de framework qui permettent de simuler des actions utilisateurs (click, changement de pages, remplissage de formulaires)
  • Il y a les tests fonctionnels qui sont la vérification du besoin métier. Ces tests sont plus souvent écrit dans un langage proche du métier et peuvent correspondre à des scénarios d’utilisation.
  • Les tests de performances poussent le code dans ses retranchements (mémoire, rapidité, scalabilité, charge).

Les limites

La rédaction de tests est un fabuleux outils de design, un filet de sécurité et une documentation. Mais pour que ça marche, il faut prendre soin du code de test autant que du code de production. Il doit rester le plus clair possible, à jour et doit évoluer en même temps que le code de production.

Il faut parfois se méfier de l’envie de tester systématiquement chaque méthode, il vaut mieux tester des fonctionnalités. Il faut également garder une cohérence dans le code, le test est là pour mettre en avant les problèmes potentiels, il ne doit pas en créer. Les tests doivent être facilement utilisables et relativement rapides pour tous les développeurs au risque d’être délaissés et donc inutiles.

Références

P1020130

Déballage du Nexus4, le google phone par LG

Bien le bonjour,

Après quelques frayeurs au moment de la commande puis de la livraison, je vous propose quelques photos du déballage du Nexus 4.

 

Les premières impressions

Le Nexus 4 a une bonne prise en main et je trouve que les finitions sont nickels. Pas de mauvaise surprise pour la configuration, tout se fait sans soucis. J’avais des craintes pour l’espace mémoire disponible (16Go) à cause des médias mais avec google drive et google Music, j’ai déjà la majorité de ma consommation multimédia « dans le cloud ».

Je sors d’un htc hero alors coté performance je suis gâté ! L’utilisation est très fluide, les images impeccables et ma partie de « cut the rope » n’avait rien à envier a mon IPad. Pour le fun, j’ai installé mes appli avec la détection vocale, la encore du pur bonheur…

Bref, je suis très content de cet achat, enfin de retour dans l’air du temps.  N’hésitez pas à me poser des questions. En attendant, je retourne jouer avec ;)

@Bientôt

 

IDE rails la suite : NetBeans puis RubyMine

Bien le bonjour, suite aux mésaventures avec Aptana (cf: Aptana, finalement pas…), j’ai tenté NetBeans puis Rubymine.

NetBeans

Installation

Une fois NetBeans installé, il faut télécharger  les plugins pour rails et les installer via Tools>plugins>downloaded. Et là, c’est le drame :

  • L’ordre d’installation des plugins du package n’est pas géré. Du coup, il faut le faire à la main.
  • Il me manque des plugins mais pas de lien direct pour les charger
  • Il n’y a pas de quoi sélectionner/déselectionner tout dans la liste des éléments téléchargés
  • L’installation met beaucoup, beaucoup de temps

Conclusion

Je n’ai peut-être pas eu de chance, et j’avais surement moins de patience qu’avec Aptana mais ça ne c’est pas bien passé. Au final, je n’ai pas résisté à la lenteur d’installation et aux problèmes de compatibilité et de gestion de dépendances de plugins, SUIVANT :)

RubyMine

Installation

Nouvelle IDE, nouvelle installation. Soyons clair, il s’agit d’un produit spécifique de développement rails payant (voir tarifs).  Mais cela veut dire aussi :

J’ai ajouté mon compte Github et j’ai précisé le projet que je voulais récupérer, aucun soucis pour la mise en place du projet. Puis, j’ai mis mon GemFile à jour pour lancer les tests avec test-unit et avoir quelques statistiques :
group :test, :development do
  gem 'sqlite3'
  gem 'test-unit'
  # Used by rubymine to display test statistics
  gem 'ruby-prof'
end

Les messages d’aide  sont clairs. Il y a même  une popup qui propose un lien pour lancer l’installation d’une Gem manquante.

Conclusion

C’est le seul qui ne m’a pas nécessité une recherche avancée pour installer mon environnement. Et c’est également le seul qui a pu me lancer mes tests sans problème. Je vous l’accorde, ce n’est qu’un début.  Je vais profiter du mois de période d’essai pour voir s’il vaut le coût. @bientôt

Aptana, finalement pas…

Bien le bonjour,

je pensais publier mon 1er article sur les tests rails cette semaine. Je n’ai malheureusement pas pu le faire suite à des difficultés avec Aptana (sous windows).

Le problème

En fait, il y a des conflits entre la configuration « générale » de rails et la configuration de l’IDE.  Le problème aurait pu être rapidement réglé si RadRails proposait une configuration plus fournie via les préférences (définition des paths par exemple). Cette petite mésaventure m’a conduit à plusieurs choses :

  • La manipulation des paths de mon windows pour remplacer les éléments installés par Aptana par ma configuration
  • La manipulation des gems « à la main »
  • L’installation du plugin Aptana pour eclipse (pour voir s’il avait une meilleure configuration)

Conclusion

Il est possible de faire marcher plus ou moins tout ça mais au prix de « bidouillages » qui ne me semblent pas pérennes. Je pense qu’il s’agit en grande partie de l’environnement Windowsien qui est moins accueillant pour ce genre de technologie. Bref, j’ai décidé de me passer d’Aptana et de tester d’autres IDE. Le prochain sur ma liste est Netbeans.

NB: Je suis peut-être passé à côté d’une opération simple, n’hésitez pas à partager votre expérience ;)

@Bientôt

Reprise de Pibou : Git, Rails et Heroku avec Windows

Bien le bonjour,

Comme promis, nous allons continuer Pibou sous Windows. Au menu du jour :

  1. Installer un environnement de développement Rails sous Windows
  2. Récupérer le projet Pibou qui est resté au chaud sur github 
  3. Tester le déploiement du projet sur heroku depuis Windows

Ruby & rails

  • Pour installer Ruby sur notre poste, nous allons utiliser rubyinstaller & ruby developement kit (outils pour les extensions natives) téléchargeables tous deux sur http://rubyinstaller.org/downloads/
  • Une fois Ruby installé, nous trouvons tout ce qu’il nous faut dans C:\Ruby193\bin (par défaut) et RubyGem prêt à servir
  • Pour le kit de développement, il suffit de suivre les instructions du wiki
  • Vous risquez devoir installer Python, allez faire un tour sur http://www.python.org/getit/ (ajoutez le répertoire d’installation dans votre path)
  • Pour se préparer à l’utilisation de SQLite3, nous allons l’installer à partir du zip pour windows
    1. déposer avec délicatesse les fichiers sqlite3.dll & sqlite3.def dans notre répertoire tout neuf C:\Ruby193\bin
    2. Lancer la commande gem install sqlite3 dans votre shell préféré
  • Tant que nous avons le shell sous la main, installons rails avec la commande gem install rails (il y en a pour un petit moment)

Et voila, vous pouvez vérifier votre installation via les commandes ruby –version  & rails –version

IDE & Récupération du projet pibou

  • Si vous ne l’avez pas déjà, installez GIT
  • Nous allons installer Aptana histoire de tester l’un des IDE gratuit les plus utilisé pour le développement web.
  • Puis, nous allons utiliser l’import Git avec l’url github du projet https://github.com/jbdoumenjou/pibou.git
  • Nous allons profiter de problèmes de compatibilité pour mettre à jour le Gemfile
      • Petite mise à jour de Rails en 3.2.8
    gem 'rails', '3.2.8'
      • Nous allons passer therubyracer dans le scope de production
    group :production do
      gem 'pg'
      gem 'libv8', '3.11.8.0'
      # See https://github.com/sstephenson/execjs#readme for more supported runtimes
      gem 'therubyracer', :platform => :ruby
    end
  • Un bundle install plus tard et nous sommes à jour
  • N’oublions pas d’indexer nos changements
    • git add Gemfile Gemfile.lock
  • Puis de les ajouter au dépôt local
    • git commit -m « Worked on the configuration to develop under windows »
  • Ces modifications sont visibles sur github
  • Pour lancer le projet sur notre poste, il faut commencer par générer la base
    • rake db:migrate
  • Puis lancer le server
    • rails s
  • Et vérifier sur http://localhost:3000/movies que nous avons bien l’application

Le dépoilement sur Heroku

  • Installons heroku belt sous windows
  • Ensuite, il faut nous connecter au service heroku via une commande lancée à la racine du projet
    • heroku login
  • Ajoutons la clé ssh de notre nouvelle machine
    • heroku keys:add
  • Ajoutons le dépot heroku à nos dépots distants
    • git remote add heroku git@heroku.com:pibou.git
  • Et envoyons nos modifications sur le dépôt distant heroku (ça prend un moment):
    • git push heroku master

Finalement ca marche

Nous y sommes! Ruby et tous ses amis se sont invités sur notre Windows sans trop de soucis. Git ne semble pas récalcitrant et Aptana s’est montré docile, que demander de plus ?
Nous allons pouvoir reprendre le développement de Pibou sous Windows et découvrir Aptana

@bientôt

De retour sous windows

Chère Lectrice, cher Lecteur,

cela fait quelque temps que nous ne nous sommes pas vus.

J’ai changé d’environnement de travail et je suis retourné sous Windows. Point de moquerie je vous prie…
Allez, comme j’aime partager mes découvertes, je vous propose quelques liens pour améliorer vos conditions de travail :

  • Pour regarder votre base de données : Heidi SQL
  • Si vous connaissez SublimeText , il est disponible sous Windows !  A défaut NotePad++
  • Pour les capture d’écran, un outil simple et efficace : ScreenPresso
  • Pour les diagrammes et autres schémas de réflexion, je vous propose une application web fort symphatique : Cacoo

Voila un article de remise en jambe un peu court mais je vous prépare la suite en coulisse  :

  • Reprise de pibou
  • Développement en rails depuis Windows (si c’est pas de l’aventure ca ;) )
  • Du JS (extjs/highcharts/…)
  • Du java
  • Des news sur le pouce

@ Bientôt

Code and coffee à Toulouse – découverte

Code and coffee, le concept

Une idée toute simple circule sur le net, le code and coffee. Concrètement, c’est juste un prétexte pour que les gens se croisent et discutent. On s’installe dans un café ou n’importe quel espace qui permet de partager, coder, twitter etc…

Sur Toulouse, l’initiative est partie de @avernois avec un article sur son blog et d’un peu d’activité sur twitter.

Mes impressions

Vraiment Sympa!

Et surprise, je retombe que sur les mêmes visages qu’a Sudweb. C’est bon enfant, on peut aborder n’importe quel sujet, qu’il soit technique ou non. Ca permet aussi de trouver des gens qui font du ruby ;) , de partager ses expériences et de se détendre avant une rude journée. Si je ne me trompe pas, j’ai pu croiser @dplaindoux @hilldude @joelazemar  et @AntoineCezar

Le mot de la fin

C’est un bonne expérience malgré le réveil un peu difficile. Finalement, nous étions un peu plus dans le #tweetandcoffee, voir le #tweetandtea ;) . Je pense que ça vaut le coup d’y aller au moins une fois de temps en temps pour échanger avec des gens de tous horizons, améliorer son réseau ou tout simplement passer un bon moment.

@+

 

 

codeschool

CodeSchool – Rails Testing for Zombies

Aujourd’hui je vais vous parler d’un site qui propose des cours en ligne CodeSchool.

Le service

La structure

L’accroche « Learn by doing » résume bien l’esprit. Les cours sont découpés en chapitres, pour chacun il y a :

  • Une vidéo de présentation des points abordés
  • Une série d’exercices pour appliquer directement les notions du chapitre

Les vidéos et les slides des présentations sont téléchargeables. Vous n’aurez besoin que de votre navigateur pour réaliser les exercices, nul besoin d’environnement de développement.

La philosophie

L’esprit est résolument fun et bon enfant. Les exercices permettent de gagner des points, un peu comme un jeu vidéo. Ces points sont utilisables pour débloquer des aides lorsqu’un exercice vous bloque. L’obtention de badges augmente la sensation de progression dans les niveaux du cours. Vous pouvez partager vos succès sur twitter.

La politique commerciale

J’ai commencé l’utilisation de CodeSchool avec un cours gratuit http://www.codeschool.com/courses/rails-for-zombies. Puis un cours payant: http://www.codeschool.com/courses/rails-best-practices pour environ 40$. Lorsque vous finissez un cours, vous avez des réductions pour des livres, d’autres sites d’e-learning et les cours suivants. Vous avez deux approches pour acheter :

  • Acheter les cours à l’unité (aux alentours des 50$)
  • Avoir un abonnement mensuel (25$/mois) qui vous donne un accès illimité aux cours et screencasts. (Détails : http://www.codeschool.com/enroll)

Rails Testing for Zombies

La forme

Graphiquement très agréable, on repère facilement où on en est dans le chapitre. La structure des cours est efficace et permet une bonne assimilation des sujets présentés. Par rapport au premier cours (rails for zombie), les messages sont plus explicites et les exercices plus clairs.

Le contenu

Ce cours aborde rapidement mais efficacement le Test Driven Development puis les différentes sortes de tests. Les exercices proposent d’utiliser les outils de base puis de compléter ou de remplacer par des frameworks comme :

Le cours est suffisant pour mettre en place une bonne politique de tests. Les exercices sont progressifs et on valide les étapes avec plaisir.

Ce que j’ai aimé

  • La liberté totale, aucune contrainte d’environnement, un simple navigateur est suffisant
  • Le coté jeu vidéo
  • La qualité du contenu
  • Les progrès réalisés depuis le premier cours testé
  • Le compte en accès illimité
  • La vidéo de clôture et les références

Ce que j’ai moins aimé

  • Les messages d’erreur parfois tronqués
  • Le système de points pourrait être mieux exploité (reward, débloquer des niveaux bonus)
  • J’aurai aimé un point sur rspec et un peu plus d’informations sur l’intégration continue
  • Ca se fini trop rapidement, on en veut encore ;)

Le mot de la fin

CodeSchool est vraiment un outil d’e-learning intéressant et bien ficelé. Il évolue bien et propose des tarifs qui me semblent honnêtes. L’article sur les tests sur Pibou est fortement inspiré de ce cours.

N’hésitez pas à tester CodeSchool ou à partager vos bon plans d’e-learning.

@bientôt

site officiel d'Heroku

Pibou dans les nuages avec Heroku

site officiel d'HerokuDans l’article précédent, Pibou – Partage ton code, nous avons ajouté les sources du projet sur Github via Git. Nous allons maintenant déployer le projet sur Heroku.

A quoi ça sert Heroku ?

Heroku est un service en ligne qui permet de déployer des applications dans « le cloud ». Concrètement ça permet :

  • De ne pas se soucier de l’infrastructure serveur
  • D’adapter les ressources en fonction de ses besoins (puissance/budget)
  • De profiter de git pour envoyer ses sources dans les nuages

Comment ça marche ?

Heroku utilise Git pour déployer l’application. Il s’agit en fait d’un nouveau dépôt de sources. Quand on pousse ses sources vers Heroku, il s’occupe de tout. Il faut quand même faire un peu de configuration. Pour aller plus loin -> http://www.heroku.com/how.

Mise en route

La documentation est bien faite, nous allons en profiter -> https://devcenter.heroku.com/articles/rails3.

Installation

Installer les outils ->  https://toolbelt.herokuapp.com/

Avoir un compte Heroku

  • Pour utiliser le service, il faut un compte. ;) Ça se passe par ici -> https://api.heroku.com/signup Une fois l’enregistrement terminé, nous pouvons nous connecter via une commande lancée dans le Shell à la racine du projet : $heroku login
  • Lors de votre connexion au service, si on ne vous propose pas l’ajout de votre clé publique, vous pouvez le faire via la commande : $heroku keys:add
    Pour plus de détails -> https://devcenter.heroku.com/articles/keys

Configurer la base de données

Par défaut, nous avons des bases sqlite pour les tests, le développement et la production. Heroku demande une base en PostgreSQL. Nous allons donc :

  • Installer PostgreSQL sur son poste. Si vous rencontrez cette erreur https://gist.github.com/2400759, il suffit d’installer  la lib libpq-dev.
  • Mettre à jour le Gemfile pour prendre en compte la dépendance vers la gem ‘pg’ en environnement de production. Concrètement,  on modifie le fichier /pibou/Gemfile avec ces lignes :
group :test, :development do
  gem 'sqlite3'
end

# for heroku environment
group :production do
  gem 'pg'
end

  • Mettre à jour ces dépendances via la commande lancée à la racine du projet : $bundle install

Synchronisation des sources avec le dépôt Heroku

Le déploiement d’un projet sur Heroku se fait via l’envoie des sources sur un dépôt Git. Nous allons donc rajouter les fichiers que nous avons modifiés puis les envoyer sur nos dépôts :

Ajout des sources en local
$git add Gemfile Gemfile.lock config/database.yml
$git commit -m « Updated the dependencies »

Envoie des sources sur notre dépôt GitHub
$git push origin master

Déploiement Heroku
$git push heroku master

Mise à jour de la base de donnée distante

Tout se résume en une simple commande lancée à la racine du projet:
$heroku run rake db:migrate

Où est l’application ?

Si vous regardez votre Shell attentivement, vous verrez l’url de déploiement, pour moi -> http://pibou.herokuapp.com

En bref

Ce que nous avons réalisé :

Et après ?

Maintenant que nous avons une application déployée et un code partagé, nous allons pouvoir développer notre application de gestion de films. Mais pour bien faire, nous avons besoin de mettre en place des tests, ce sera le sujet suivant.

@bientôt