Suivez moi sur GitHub

Guirec Corbel

Mon blog

Open/closed principle

| Comments

Le principe d’ouverture/fermeture, où OCP, permet de créer un code plus clair et plus facilement modifiable. Dans cet article, nous allons voir dans quels cas il peut être utilisé et quels en sont les bénéfices. OCP fait partie des principes SOLID, qu’il faut absolument connaître pour devenir un meilleur programmeur.

Single responsability principle

| Comments

S’il n’y avait qu’un principe de Programation Orienté Objet à retenir, ça serait celui-ci. Dans cet article, nous allons voir comment le Single Responsability Principle peut aider à avoir un code plus clair et plus simple à maintenir.

Design principles et design patterns avec rails

| Comments

Losque l’on débute notre vie de programmeur, l’architecture du code est secondaire. En prenant de l’expérience, on se rend compte qu’une application a besoin d’une structure quand sa taille augmente. Il est possible de développer ces propres techniques, mais d’autres personnes sont passées par le même chemin et certains ont publié leurs solutions. Ce sont les Principes et les Design Patterns. Cet article en présente quelques-unes appliquées à Ruby on Rails.

Benchmark entre digitalocean et heroku

| Comments

Aujourd’hui, j’avais envie de mettre des chiffres sur un fait que je pensais avéré. J’ai voulu faire un comparitif simple entre l’offre gratuite d’Heroku et celle la plus populaire de Digital Ocean.

L’application

L’application utilisée dans ce cas est une application Ruby on Rails standard utilisant Rails 3.2.17, Ruby 2.1.0 et Unicorn 4.8.2.

Les outils mesures

Pour mesurer les performences du serveur, j’ai utilisé New Relic. Il s’agit d’un excellent utilitaire qui indique en détail les performences d’une application ainsi les différents points sensibles.

J’ai également utilisé Load Impact, un outil au fonctionnement assez simple. Il suffit d’enregistrer un scénario pour pouvoir le rejouer en simulant un certain nombre de visiteurs. Load Impact fait en sorte d’augmenter peu à peu le nombre de visiteurs sur le site comme on peu le voir sur cette image :

Grâce à cet outil, j’ai pu créer des scénarios et les jouers en simulant 50 visiteurs. L’application comporte 3 types d’utilisateurs, j’ai donc créé un scénario dans chacun de ces cas.

Les chiffres

DigitalOcean

J’ai utilisé l’offre à 10$ par mois, la plus populaire, de Digital Ocean pour effectuer ce test et voici le résultat :

Comme on peut le voir, le temps de réponse est de moins de 800ms. Le temps de traitement est partagé entre Ruby et la base de données. Je crois qu’il s’agit d’un comportement normal et d’un bon temps de réponse.

Heroku

J’ai répété exactement le même test avec Heroku et voici le résultat :

On voit clairement qu’Heroku est le grand perdant du duel. Je me doutais déjà du résultat, mais je ne pensais pas que la différence serait aussi probante. Le temps de réponse est supérieur à 25 secondes. La majeure partie du temps est prise dans la queue de traitement. On peut également voir qu’Heroku a eu du mal à se remettre du test sur ce graphique :

Avant 10h, il s’agit du trafic normal. La pointe verte, entre 10h et 10h30 représente le pic lors du test effectué. On peut voir qu’après cette pointe, tous les temps sont très longs et la situation n’estpas revenue à la normale.

Conclusion

De part cet exemple, on peut voir assez clairement que DigitalOcean est plus rapide qu’Heroku.

Les résultats obtenus ici ne montrent pas définitivement qu’Heroku est moins efficace que DigitalOcean. Premièrement, je suis loin d’avoir fait des tests exhaustifs. Pour aller plus loin, il serait nécessaire de faire des essais avec les offres payantes d’Heroku ainsi qu’en essayant d’autres scénarios et cas d’utilisation. De plus, Heroku reste génial comme environnement de développement et de test.

Comme d’habitude, je ne prétend pas détenir la vérité. Si vous avez d’autres arguments permettant de confirmer ou d’infirmer ma conclusion, s’il vous plaît, laissez vos commentaires.

Pyleapmouse: commandez votre os par la voix et les mouvements

| Comments

Suite à mon article et ma vidéo sur Sbire, je poursuis dans ma lancée pour expliquer comment j’ai modifier le projet PyLeapMouse pour coupler LeapMotion et Sbire. LeapMotion est un très bon outil permettant de détecter les mouvements. L’une des fonctionnalités évidentes que l’on imagine rapidement avec LeapMotion est de remplacer la souris pour commander le système d’exploitation. Pour cela, il existe le projet openleap/PyLeapMouse. Celui-ci émule le pointeur de la souris et permet de simuler les clics. Dans cet article, vous verrez le cheminement que j’ai effectué pour contrôler l’OS avec LeapMotion.

Sbire : dites ce que vous voulez, il le fera

| Comments

Sbire est un outil permettant d’exécuter des commandes grâce à la voix. Le principe est simple. Vous taper une commande pour l’enregistrement d’une phrase avec un micro et vous taper une seconde commande pour terminer l’enregistrement. Suite à cela, Sbire reconnait votre voix et exécute la commande associée.