mercredi 25 avril 2018

Retours sur les Devoxx France 2018

Cette année 2018 a encore été très enrichissante. Le nombre de sujets et de conférences étaient très nombreux. Les participants étaient aussi au rendez-vous, c'est simple si on traine un peu trop on se retrouve a chercher une solution de replis car la salle est pleine (sauf pour l'amphi qui hors keynotes est jamais plein a 100%).

Voici donc une partie de mes notes :

Les nouveautés autour de Java

Présenté par José Paumard & Rémi Forax, cette présentation nous a montré que le cycle de version des releases Java à vraiment accéléré (pour ceux qui l'avaient pas constaté). 

Java adopte maintenant un système de fork pour la gestion des version. 
Une fois qu'une version est release un fork est crée et ce fork devient la nouvelle version de java.

Le cycle de version est maintenant de 6 mois avec des version LTS
La prochaine version LTS étant Java 11 qui devrait sortir en septembre 2018.

Pour les personnes qui souhaiteraient effectuer une montée de version il vaut mieux attendre la version LTS plutôt que de passer de Java 8/9 vers java 10 par exemple. 

Etant personnellement pas encore passé a Java 10, j'ai découvert avec bonheur une nouvelle fonctionnalité : 

var users = new ArrayList<User>();

Oui oui, ça ressemble bien a du javascript :) 
Ce nouveau mot-clef ne s'utilise qu'au sein d'une fonction (Donc pas en tant que déclaration d'attribut)  et permet aussi de mettre dans une variable une fonction exemple : 

public List<String> getUrls () {return List.of("");} 

protected List<String> sendsUrls(){
  
 List<String> result = new ArrayList<>();
 var maFonction = getUrls();

 result.addAll(maFonction);
 return result;
}

Et voici rapidement les nouveautés a venir dans les prochaines versions (sous réserve de du suivi de la roadmap)


Java 11: var as type in Lamba Parameters Constant Dynamic Raw string Condy Java 12: Nouveaux Switch Preconditions : ex: Preconditions.requireNonNull(variable); Java 14: Sealed interface : defini l'ensemble des classes qui implementent l'interface. Generalized pattern maching

Authentification et autorisation décentralisée avec jwt et macaroo

Présenté par Julien Tanguy, lors ce cette présentation il a été rappelé la différence entre l'autorisation et l'authentification. 
L'authentification: Qui suis je ? 
L'autorisation: Qu'est je le droit de faire ? 

Pour ces deux notion , deux outils, JWT pour l'authentification et Macaroons pour les autorisation. 
Ces deux outils fonctionnent avec des tokens, une signature basée par un secret et une Payload. 

De ce que j'ai pu voir lors de la démo ça à l'air simple à utiliser 

Pour regarder plus près macaroons.io et jwt.io

Chaos Engineering

Présenté par Julien Gakic.

Dashboard à l'appui lors de la présentation, le chaos engineering est une pratique qui prends de plus en plus d'ampleur. 

Cette pratique vise à accroire la résilience des applications afin que la production soit toujours stable malgré les aléas du backend.

Le concept est d'introduire des dysfonctionnements sur la production (oui oui) afin de voir comment se comporte le système dans sa globalité.
Cela permet notamment de détecter les effets de bords d'un dysfonctionnement d'une application (une application qui impacterait par exemple une autre application qui n'aurait pas de lien direct avec celle en défaut).

Pour induire ces défauts sur la production il existe un outil qui s'appelle Chaos monkey. 
Enfin voici un site qui en parle plus en détail Principle of chaos.


Swagger 2 est mort vive openapi 3 !

Présenté par Sébastien Lecacheur

Voici ce qu'apporte Openapi 3 par rapport à Swagger 2:

Ajout de la balise servers (permets de mettre plusieurs liens d'envs par ex)
Ajout de la balise components
Ajout sheme et bearer format
Modification de la balise Basic qui devient http
Wilcard pour les codes http
Ajout de Content et media type
Possibilité de mettre plusieurs exemples
Support d'openid connect


lundi 26 février 2018

Unassigned shards in Elasticsearch

Problème

Suite à la montée de version d'elasticsearch 5 vers 6 les shards n'étant pas alloués ce qui provoquait un dysfonctionnement du cluster elastic (j'avais 50% des shards alloués et donc un cluster 'Jaune' -> Pas fonctionnel)


Solution 

Il fallait simplement lire la doc de migration ...
Dans la doc de migration d'elastic 5 vers 6 on désactive le setting d'allocation de shards et a la fin de la migration il faut simplement la réactiver (une étape qui a du être oubliée). 

Sur un des nœud : 
curl -XPUT 'localhost:9200/_cluster/settings' -d
'{ "transient":
  { "cluster.routing.allocation.enable" : "all" 
  }
}'
Après avoir activé l'allocation, les shards ont été automatiquement activés et le cluster est passé en Vert (fonctionnel a 100%).

mardi 13 février 2018

ElasticSearch 6 Systemd configuration memory lock pour Redhat 7

Problème

Suite à la mise a jour d'elasticsearch 5.x vers 6.x, il m'était impossible de démarrer le demon via systemd car j'avais l'erreur suivante :

[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

Solution

C'est tout simplement écrit dans la doc d'elasticsearch mais il faut fouiller un peu.

Dans le fichier de configuration systemd elasticsearch.service rajouter apres [Service] , LimitMEMLOCK=infinity:

[Service]
LimitMEMLOCK=infinity

Puis recharger le demon systemctl

sudo systemctl daemon-reload

lundi 12 février 2018

Alternative a la commande tree avec find

Problème

Afficher l'arborescence d'un filesystem quand la commande tree n'est pas disponible et qu'on a pas les droit d'admin sur la machine

Solution

Afficher que les répertoires

find . -type d | sed 's/[^/]*\//| /g;s/| *\([^| ]\)/+--- \1/'

Tout afficher (répertoires + fichiers)

find . | sed 's/[^/]*\//| /g;s/| *\([^| ]\)/+--- \1/'


lundi 6 novembre 2017

Ajouter la date et les secondes dans gnome shell

Dans un terminal exécuter :

gsettings set org.gnome.desktop.interface clock-show-date true
gsettings set org.gnome.desktop.interface clock-show-seconds true