La reconstitution d’objets 3d basée sur des images permet de créer des modèles 3d d’objets réels. Ce processus qui peut paraître complexe est en fait rendu très simple grâce aux outils que nous allons voir dans cet article.
Open/closed principle
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
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.
Allumer une led lors de la réception d’un email avec raspberry pi
L’article a pour but d’expliquer, en détail, les principes de programmation avec le Raspberry Pi. Comme exemple, je vais indiquer les différentes étapes nécessaires pour faire un petit programme en Python permettant d’allumer une LED à la réception d’un email sur un compte GMail.
Mes trucs pour augmenter sa productivité
Dans cet article, vous verrez quels outils j’utilise afin d’avoir un bon rendement au travail en tant que développeur.
Design principles et design patterns avec rails
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.
Digitalocean vs heroku - round 2
Dans un article précédent, j’ai publier une comparaison entre un serveur DigitalOcean à 10$ pour 1go de RAM et la version gratuite de Heroku comportant 512mo de RAM. Plusieurs personnes m’ont demandé de faire le même test en augmentant le nombre de dyno de Heroku. Voici donc les résultats des tests demandés.
Benchmark entre digitalocean et heroku
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
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
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.