Articles

Sonarqube & JavaScript / Web: un nouvel espoir ?

Image
SonarQube et le Web: un passif lourd... Il est vrai qu'il est frustant de faire des projets en JavaScript / NodeJs, ou en Web, et que nous ayons à passer dans SonarQube. Alors que de principe, c'est important d'utiliser un outil de ce genre ! En effet, SonarQube est un outil qui permet de faire un suivi en continue de la qualité du code. Il permet ainsi de remonter (et de versionner) les "code smells". Ces derniers sont des erreurs d'écritures de code (plus ou moins critiques) et qu'il vaut mieux de corriger. Nous pouvons voir également un code coverage associé, ainsi que le taux de duplication de code, des statistiques sur les fichiers, etc ... Le hic survient quand on voit pour quelle technologie était faite à la base SonarQube: Java. Et le soucis est bien là. En effet, il faut savoir que pour générer un code smell, il faut créer des plugins Sonar avec des règles non dynamiques (dans le sens où nous ne pouvons pas à notre guise ajouter...

Utiliser les JSON Schema

Il existe depuis quelques temps une spécification afin de permettre de définir une structure JSON à travers des schémas. Cette spécification, vous pouvez la retrouver sur le lien suivant:  http://json-schema.org/specification.html Le principe: définir à travers un JSON des règles afin de pouvoir valider d'autres JSON. Cela permet d'avoir comme sur le site  http://schema.org/docs/gs.html  des schémas de données qui permettent de mieux comprendre les données que nous recevons. Ainsi, nous pouvons définir le schéma suivant: 'use strict' ; module. exports = { "title" : "Person" , "type" : "object" , "properties" : { "firstName" : { "type" : "string" }, "lastName" : { "type" : "string" }, "age" : { "description" : "Age in years" , ...

Docker sous Windows & NPM: un marriage parfois difficile

Image
Problème Vous êtes sous Windows, et vous utilisez donc Docker For Windows. Vous avez une image Docker de développement, qui contient un certain nombre d'outils comme NodeJs et NPM. Pour travailler, vous lancez cette image en partageant des volumes qui contient vos projets. Et là, vous installez des dépendances NPM ... Que se passe-t-il ? Dans une de vos dépendances NPM, vous allez très certainement avoir une dépendance que nous pouvons utiliser en ligne de commande. Il va donc créer un fichier dans le répertoire ".bin". Le hic est le suivant: votre image Docker tourne sur un noyau Linux. Du coup, NPM croit que vous êtes sur Linux et veut donc créer un symlinks. Or le répertoire que vous avez partagé est un répertoire Windows. Et vous allez alors tomber sur des problèmes de droits. Quelles solutions ? Travailler dans son répertoire C:/Users/XXX En effet, Docker For Windows a plus de droits dans ce répertoire et posera moins de soucis. Néanmoi...

Découverte des variables CSS4 !

Image
Hop, un petit article autour des variables CSS4. Dans la joie et la bonne humeur :) Je veux les utiliser ! Tout d'abord, il faut savoir que le taux d'adoption de cette feature est au delà des 87% des navigateurs:  https://caniuse.com/#feat=css-variables En somme, si vous visez IE11 ou moins, vous ne pourrez pas les utiliser, à condition alors d'utiliser un "ponyfill" tel que  https://github.com/jhildenbiddle/css-vars-ponyfill  qui ne s'activera que si vous le lui dites: < script src= "https://unpkg.com/css-vars-ponyfill" > </ script > < script > // Call using defaults cssVars(); // Or call with options cssVars({ variables: { color: ' red ' , unknown: ' 5px ' } }); </ script > Les variables CSS, c'est quoi ? C'est tout simplement la possibilité de déclarer une variable dans le sens propre du terme et de stocker une valeur qui pourra être réutilisée. Ce...

Orchestration versus Chorégraphie

Image
Un petit article autour des Micro Services, sur lequel un point important et qui montre à quel point ce type d’architecture differt de ce que nous faisons habituellement: la "Chorégraphie". Habituellement (ce n'est pas obligé, mais c'est très souvent le cas), nos programmes font ce que nous appelons du " Service Orchestration ". C'est une entité business (en l’occurrence, l'orchestrateur ) qui va se charger de coordonner toutes les interactions entre nos différences services. L'orchestrateur va devoir alors invoquer tous les services nécessaires, les combinés si besoin, et procéder à l'ensemble des opérations. L'avantage: c'est centralisé et la gestion de la transaction est plus aisé. L'inconvénient majeur: l'évolutivité est plus restreinte et du coup le scaling est difficile à adapter (nous pourrions imaginer que nous faisons deux actions: l'une coûteuse en mémoire, l'autre non). De plus, cela ne ...

NPM et les paramètres nommés

Image
Une petite astuce bien sympathique autour de NPM. Imaginons que nous avons le package.json suivant: { " name " : " npm-named-argument " , " version " : " 1.0.0 " , " description " : " " , " main " : " index.js " , " scripts " : { " say " : " echo Hello && exit 0 " , " test " : " echo \" Error: no test specified \" && exit 1 " }, " keywords " : [], " author " : " " , " license " : " ISC " } Si nous l'exécutons, nous obtenons alors: Ce qui est logique Maintenant, imaginons que nous aimerions utiliser un paramètre de CLI dans notre NPM run-script (ici, un nom par exemple). Rien de plus simple, mettez %npm_config_username" dans votre run-script: { " name " : " npm-named-argument " , " versi...

Ce que le Web fait aujourd'hui

Image
Je voudrais vous parler d'un site qui est superbe, qui est ...  https://whatwebcando.today/ (oui, j'ai traduit littéralement l'url, j'ai honte). Le principe est très simple: par grande catégorie, nous listons le fonctionnel que nous pouvons espérer avoir et nous disons si nous l'avons ou pas. Ensuite, pour chaque fonctionnalité, implémentée ou non, nous avons un descriptif nous donnant son état, sa future implémentation, ou son usage courant. Par exemple, l'envoi de SMS n'est pas encore disponible, mais je peux voir ce que cela donnera le jour où elle sera implémentée: En revanche, pour une fonctionnalité comme le type et la vitesse du réseau, nous avons tout le détail: Enjoy !