Articles

Affichage des articles du décembre, 2015

Faire de la programmation fonctionnelle en JavaScript avec Ramda

Image
Cet article n'est pas de présenter ce qu'est de la programmation fonctionnelle ( un bouquin pas mal sur le sujet). Le but est de plutôt présenter Ramda  qui permet d'en faire simplement. Prenons un code plutôt simple, où nous allons filtrer une liste d'utilisateur en se basant: Sur son nom ('Buzz') Si l'utilisateur est valide ou non /**  * Keep only valid @{User} with name 'Buzz'  * @method  * @param {User[]} users  * @returns {User[]} Filtered list of @{User}  */ function validUsersNamedBuzz(users) { var filtered = []; for (user of users) { if (user.name === ' Buzz ' && _.isEmpty(user.errors)) { filtered.push(user); } } return filtered; } Maintenant regardons avec le classique et fameux Lodash , qui permet l'enchaînement et la composition de fonctions utilitaires, soit à nous, soit de Lodash. /**  * Keep only valid @{User} with name 'Buzz'  * @method  * @param ...

JSON: vers une nouvelle mouture ?

Image
Vous connaissez JSON ? C'est une représentation "simplifiéé d'un objet en JavaScript. Quand je dis simplifié, c'est simplifié, car: Nous ne pouvons pas mettre de commentaire Nous devons impérativement utiliser des double-quotes Un certain nombre de valeurs sont autorisés, à savoir null Des strings Des numériques Des booléens Des objets composés des valeurs précédentes Des tableaux composés des valeurs précédentes Ainsi, certains valeurs comme NaN, Infinity+, etc ... ne peuvent pas pris en compte. Ni certaines représentations de valeurs comme de l'unicode ou de l'hexadécimal. Pour tout ce qui est commentaire (commentaire en ligne, ou en bloc), Sindre Sorhus , le papa de Bower et membre actif dans la communauté JavaScript, a eu la gentillesse de nous fournir " strip-json-comments ". C'est un module NodeJs qui permet de lire un fichier JSON, même si ce dernier contient des commentaires. Pour le reste nous n'avions pas...

Retour sur la DotJs 2015 - Real World WebRTC

Image
Cette fois-ci, parlons du talk d' Eric Schoffstall . Si ce nom ne vous dit, peut-être que GulpJs vous parlera un peu plus ? Car il est en effet à l'origine de cet outils que nous utilisons à longueur de temps. Et il nous a exposé la problématique qu'il a eu depuis la fin 2014: une application WebRTC . Le but: rendre accessible via une API le protocole RTC dans son navigateur. Autrement dit, pouvoir faire un tchat vidéo par exemple. Même si à l'heure actuelle, le WebRTC est compatible sous Chrome , les dernières versions d'Android et de Firefox, il y a un an, ce n'était pas vraiment le cas. En effet, il y a un an, seul Chrome proposait un vrai support. Et faire une application WebRTC qui ne fonctionne que sous Chrome n'est pas une application, c'est un prototype . http://caniuse.com/#feat=rtcpeerconnection Du coup, il s'est posé la question: que faut-il faire pour avoir une application WebRTC qui soit uniforme et consistant s...

Découverte de JSPM, ou comment utiliser ES6 et les modules dans son projet

Image
Ici, nous allons aborder l'usage de JSPM:  http://jspm.io/ Ce dernier est outils NodeJs qui permet d'avoir une surcouche au gestionnaire de dépendance NPM afin de pouvoir télécharger et utiliser des modules ES6 . Qui plus est, il va également se reposer sur la "norme" SystemJs afin de pouvoir charger dans le navigateur les modules ES6. Et enfin, JSPM va installer un transpileur ES6 pour compiler le code de notre projet ! Voici une petite démonstration de JSPM, qui est basé sur ce tutoriel . Nous allons juste afficher quelques super-héros. Installation Pour commencer, il faut installer JSPM via NodeJs. Il est conseillé de l'avoir en commande globale. Pour cela, tapez la ligne de commande suivante: > npm install jspm -g Plutôt simple pour l'instant. Générer son application Maintenant, nous devons créer le répertoire de notre projet et ouvrir un terminal pointant sur ce dernier. Une fois fait, il faudra alors taper la li...

Retour sur la DotJs 2015 - L'enfer des callbacks

Un deuxième retour sur la DotJS 2015, et cette fois-ci, c'est sur l'excellente présentation de Christophe Porteneuve . Pour pouvez d'ailleurs retrouvez ces slides sur ce lien . Son sujet: "Modern async js", ou comment éviter l'enfer des callbacks et faire un code asynchrone. Christmas tree effect En effet, dans le monde JavaScript, pour gérer de l'asynchronisme, la meilleure solution est de passer une fonction en paramètre d'une autre. C'est ce que nous appelons une "callback". Et l'asynchronisme, il peut en avoir beaucoup: Un appel Ajax Un appel à un WebWorker Un accès à une base de données Attente d'un traitement long ... Et ainsi, de file en aiguille, dans des applications complexes, nous pouvons arriver à l'effet "Christmas tree": asncFunction1( function (err, result) { asncFunction2( function (err, result) { asncFunction3( function (err, result) { asncFunction4( function ...

Retour sur la DotJs 2015 - Constat sur le Web mobile

Cette fois-ci j'aimerai faire un retour sur une des conférences que j'ai pu assister lors de la dotJs 2015 qui a eu lieu à Paris le 7 décembre 2015. Pour cet article, je voudrai parler d' Henrik Jorenberg , dont le sujet est " Pocket-Sized JS ", mais qui peut se résumer à l'état actuel du Web mobile et vers quoi devrions-nous aller. Henrik commence à expliquer que nous sommes dans une période où être un développeur JavaScript est opportun. En effet, nous avons dorénavant une tonne d'outils pour nous aider, nous déportons de plus en plus la logique d'interface voir applicative du côté du navigateur. Et également, nous développons de plus en plus nos serveurs ou nous outils en NodeJs. Néanmoins, un point noire obscurcit tout ça, c'est le Web mobile. Il y a eu depuis 2010 une effervescence à l'élaboration d'applications Web mobiles pures, ou d'applications dites hybrides ( nous utilisons une coquille native où une Webview ...

Sinon: restorer les espions et stubs automatiquements

Hop, une petite astuce pour vos tests unitaires avec Sinon. Parfois, vous allez avoir beaucoup de "restore" pour annuler des spies et des stubs. Pour vous simplifier la vie, vous pouvez faire: var sandbox ; beforeEach( function () { sandbox = sinon.sandbox. create (); }); afterEach( function () { sandbox . restore (); }); it( 'should restore all mocks stubs and spies between tests' , function () { sandbox .stub( some , 'method' ); // note the use of "sandbox" }); Cela permet de grouper vos déclarations et de les annuler d'un coup.

L'enfer des proxy d'entreprise

Plop, ça faisait longtemps, un petit article pratique pour résoudre ces problèmes de proxy d'entreprise lors du développement dans le monde NodeJS. Nous allons supposer que notre proxy d'entreprise se situera sur: http://proxy.company.com:8080 Git Tout d'abord, commençons par Git, qui est utilisé pour rapatrier le code du module NPM / Bower. Pour cela, nous devons préciser le fameux proxy d'entreprise. Mais également préciser que nous ne voulons pas une vérification stricte des certificats SSL. Cela afin de ne pas invalider des modules qui sont hébergés sur des serveurs HTTPS avec un certificat auto-signé par exemple. git config --global http.proxy http://proxy.company.com:8080 git config --global https.proxy http://proxy.company.com:8080 git config --global http.sslVerify false git config --global https.sslVerify false A noter qu'il est possible de préciser d'utiliser plutôt des liens en HTTPS que des liens en Git. Cela peut nous sauve...