24 juillet 2015

MacOS Terminal shortcuts


20 shortcuts to help you get work done in Terminal on your Mac.

Option/Alt + Left or Right

This shortcut allows you to move the cursor between separate words in a command line. Use Option and the left arrow to move back and use Option with the right arrow to move forward down the line.

Control + W

Using this keyboard combination will delete the word immediately before, or to the left of, the cursor.

9 juin 2015

Sonar - Analyse d'un projet Javascript

Nous allons effectuer l'analyse de code sur Sonar d'un projet Javascript avec l'outil de build Grunt.

Nous utiliseront les images officielles MySQL et Sonar de Docker.

Pour info, voici la documentation de Sonar :

MySQL & Sonar

Lancer les commandes suivantes sur le serveur pour démarrer les conteneurs Docker :

MySQL

docker run --name sonarmysql -e MYSQL_ROOT_PASSWORD=admin -e MYSQL_DATABASE=sonar -e MYSQL_USER=sonar -e MYSQL_PASSWORD=sonar -p 3306:3306 -d mysql:latest

Sonar

docker run --name sonarqube -p 9000:9000 -p 9092:9092 -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL="jdbc:mysql://sonarmysql:3306/sonar?useUnicode=true&characterEncoding=utf8" --link sonarmysql:sonarmysql -d sonarqube:latest

Interface Web de Sonar

URL :
  • http://[URL du serveur Docker]:9000
    • avec [URL du serveur Docker] : URL ou Adresse IP de la machine sur laquelle les commandes docker ont été lancées

3 juin 2015

Maven & Yeoman


Nous allons voir comment mixer un projet Java Maven classique avec un projet frontal Yeoman à l'aide du plugin yeoman-maven-plugin de Thomas Recloux, qui est aussi utilisé dans JHipster.

Le frontal Web écrit en Javascript va utiliser les services REST du back écrit en Java. Le tout dans un seul et même projet et packagé au sein d'un même Jar ou War.

Arborescence du projet

pom.xml     => Fichier Maven
src         => Source du projet
   main
      java
      resources
      webapp
   test
      java
      resources
yo          => Projet Yeoman
   package.json
   Gruntfile.js
   bower.json
   app/
Le répertoire "yo" contient les sources du projet Yeoman qui ne sont pas inclus directement dans les sources du projet. Ceci permet de conserver un projet Yeoman indépendamment du reste du projet qui lui respecte la structure d'un projet Maven.

Maven

La construction du projet "Yeoman" s'effectuera à l'aide de la commande "grunt build" lancée par Maven via le plugin yeoman-maven-plugin.

Ce build nécessite l'appel aux outils "npm", "bower" et "grunt".

Ainsi le plugin va lancer les commandes suivantes par défaut :
  • npm install
  • bower install --no-color
  • grunt test --no-color
  • grunt build --no-color
Ainsi, Maven lance npm, bower puis grunt lors de chaque build de l'application.

7 mai 2015

OAuth 2.0 - Principes et Fonctionnement


OAuth 2.0 permet de gérer l'authentification et les droits d'accès aux informations d'un utilisateur via un serveur d'autorisation.

Plus complexe qu'une authentification simple, OAuth 2.0 permet d'effectuer du Single Sing-On entre services et entre serveurs distants.

Pour bien comprendre OAuth 2.0 il faut connaître les rôles et les types de jeton suivants :

Rôles

  • Resource Owner : Le propriétaire / détenteur des ressources
    • Par exemple: l'utilisateur qui a déposé ses photos sur le serveur de ressources
  • Resource Server : Le serveur de ressources qui contient les ressources protégées appartenant au Ressource Owner
    • Par exemple: le serveur de ressources qui contient les photos d'un utilisateur que l'on peut récupérer via des requêtes HTTP REST
  • Client Application : l'application cliente qui demande les ressources au serveur de ressources
    • Par exemple: Une application Android qui souhaite récupérer les photos de l'utilisateur qui sont stockées sur le serveur de ressources
  • Authorization Server : Le serveur d'autorisation délivre le jeton d'accès (Access Token) aux ressources protégées à l'application cliente dans le cas où le Resource Owner valide cet accès
    • Par exemple: l'application Android récupère un jeton d'accès pour récupérer les images d'un utilisateur depuis le serveur de ressources

Jetons (Token)

Le jeton est une chaîne de caractères aléatoire généré par le serveur d'autorisation.

Il existe deux types de jeton :
  • Access Token : le jeton d'accès permet au client d'accéder à une partie des ressources protégées du serveur de ressources
  • Refresh Token : le jeton de renouvellement permet le renouvellement du jeton d'accès lorsque celui-ci arrive à expiration

23 mars 2015

Docker Compose - Gérer plusieurs conteneurs en une commande


Docker Compose est l'intégration de Fig dans Docker.

L'objectif est de gérer en une commande docker compose le build, le démarrage et l'arrêt de plusieurs images et conteneurs.

Il s'agit de remplacer l'usage des commandes docker build et docker run par un fichier YAML docker-compose.yml qui décrit les images à construire, les paramètres de démarrage des conteneurs ainsi que les liens entre ces conteneurs.

Pour cela, le fichier docker-compose.yml décrit :
  • si le conteneur est issu d'une image existante ou s'il est nécessaire d'en construire une nouvelle à partir d'un fichier Dockerfile
  • les arguments qui étaient spécifiées lors du démarrage du conteneur via la commande docker run :
    • mapping des ports entre la machine hôte et le conteneur
    • le montage des volumes entre la machine hôte et le conteneur
    • les liens entre les conteneurs
La commande docker-compose up effectue ainsi la création des images et le démarrage des différents conteneurs d'après ce qui est décrit dans le fichier docker-compose.yml

Installation

13 mars 2015

Netflix Hystrix Dashboard - Monitoring du cloud


Netflix Hystrix permet d'effectuer du monitoring et de la gestion d'erreurs sur les services et les applications dans le Cloud. Il dispose d'un tableau de bord qui présente les graphes et les métriques sur l'état des services dans le cloud.

Netflix Turbine sert à aggréger dans le temps les données envoyées par les clients Hystrix et transmet ces données au serveur Hystrix pour afficher le dashboard.

Nous allons voir dans cet article la mise en place du dashboard Hystrix pour voir les métriques sur les accès aux services Rest d'une application basée sur Spring Boot à l'aide de Spring Cloud Netflix.

Création du serveur Hystrix

Nous créons un nouveau projet Spring Boot:
  • Aller sur le site Spring Initializr:
    • http://start.spring.io/
    • Renseigner les informations du projet avec comme nom "spring-hystrix-server" par exemple
    • Ne pas sélectionner de dépendances
    • Cliquer sur "Generate project" pour télécharger le projet basé sur Spring Boot
    • Dézipper le projet
  • Dans le fichier pom.xml, remplacer le parent et ajouter les dépendances suivantes :
  • Dans la classe principale Application.java, ajouter l'annotation @EnableHystrixDashboard
  • Créer le fichier application.yml dans le répertoire src/main/resources:
  • Démarrer le serveur:
  • mvn spring-boot:run
Hystrix Dashboard demande l'URL d'un flux Hystrix pour en afficher les statistiques.

Il n'y a pas encore de statistiques à afficher: nous allons configurer les applications pour qu'elles envoient des métriques au serveur Turbine et Hystrix.

Application cliente: activation de Hystrix