So it isn't possible to create a clean Singleton in JavaScript due to constructor restriction? Really?
Whether or not Design Patterns in oriented programming language are a language smell is another story (even if I could not personally agree more). I wanted to write about the following affirmations in Mastering JavaScript Design Patterns:
My first reaction reading this was:
The second check inside the Wall constructor is hideous and we can definitely hide the constructor thanks to a closure, leveraging JavaScript functional nature. I thus gave this affirmation as an exercise for my students and here is a possible solution:
But we can go even further, why bother duplicating singleton logic when you can make a Singleton factory:
Note that the Singleton factory invocation must be alongside the internal implementation otherwise the JavaScript constructor could be instantiated multiple times.
Bonus: a lot of Singleton implementations available on Internet forgot to hide the constructor, even Addy Osmani books on JavaScript Design Patterns forgot this:
PS: The __proto__ trick for hiding the constructor is now widely supported (IE11+).
[Update] Supporting static methods and leveraging Object.create features instead of redefining __proto__.constructor:
Projet RCA - Génération scalable de vidéos personnalisées à forte valeur créative
Pour une première mise en contexte n'hésitez pas à lire le billet d'annonce du projet Le Père Noël RCA gâte les membres de la CEG. Escale a aussi écrit un beau billet résumant le travail de Mathieu et Killian sur la partie frontend "2015 démarre avec des voeux innovants pour rca".
Au côté de Mathieu Le Gac d'Escale et de Clément Perron de Doze Studio mon rôle dans ce projet a été de rendre possible, d'imaginer, de concevoir et d'implémenter une technologie scalable de génération de vidéo à forte valeur créative (e.g. motion design) personnalisées à la volée par des utilisateurs.
Une belle réalisation @Doze_Studio @EscaleDigitale @FGRibreau @C7_com http://t.co/NzjT9Rqcy3 pour @Experts_Gestion @RCA_logiciels #voeux2015
— Mathieu Le Gac (@mateoelgaco) December 22, 2014
En toute franchise, nous allons décliner cette technologie dans d'autres projets donc je ne m'étendrai pas ici sur ses caractéristiques techniques. Ce que je peux par contre affirmer c'est que contrairement aux projets :
- Facebook Loopback : Génération à la volée HTML/CSS3/JS avec ffmpeg/phantomjs (ou équivalent) pour la partie encodage.
- Bref 30 ans : superposition via Flash de séquences vidéo pré-enregistrées.
- HashTagMyAss : incrustation (non réaliste et donc de mauvaise qualité) d'images Instagram dans un template vidéo réalisé avec ImpossibleSoftware.
Notre technologie offre la possibilité à des artistes de permettre à des utilisateurs non technique de personaliser leurs créations afin de générer des vidéos de haute qualité graphique et dynamique dont voici un exemple :
Ce projet a été pour moi l'occasion de travailler sur d'autres technologies – génération de vidéos oblige – et sur d'autres environnements (Windows Server 2012...) dans des délais très courts (mais tenus !). Grâce à notre équipe très complémentaire et quelques pizzas j'ai pu développer en une soirée une première version du système de génération de vidéos personalisées à la volée !
Request-api - NodeJS request library as HTTP API
#ProTip I built request-api to extend @zapier feature set. I'm now able to send #oauth requests as zap actions - http://t.co/BkR2mNIXKs
— François-G. Ribreau (@FGRibreau) January 18, 2015
