
Débuter avec Redis
Qu’est-ce que Redis ? Redis est un stockage en mémoire de structures de données simple (chaîne de caractère, hash, liste, ensemble, bitmap…). Il a la particularité de travailler seulement en mémoire ce qui lui confère de très bonnes performances. Il peut toutefois persister ses données sur disque. Il supporte aussi des fonctionnalités avancées comme : Transactions, Mécanismes de publication et d’inscription, Le scripting Lua, Gestion automatique du TTL sur les clefs, Haute disponibilité, Clustering. Modes de fonctionnement Fonctionnement en mémoire uniquement Dans ce mode, Redis utilise seulement la mémoire. Si le serveur est arrêté, les données disparaissent. Fonctionnement en mémoire avec persistance régulière sur le disque Dans ce cas, Redis qui fonctionne avec toutes ses données en mémoire, va les enregistrer régulièrement (suivant la configuration) sur le disque. Si le serveur est arrêté, les données ajoutées ou modifiées depuis la dernière persistance sur disque seront perdues. Lorsque Redis reçoit une nouvelle donnée à insérer, à modifier ou à supprimer, il incrémente un compteur. Suivant le nombre d’opérations d’écriture et le temps, Redis va persister sa mémoire sur disque (dans un fichier RDB). C’est le rôle de la configuration suivante : save 900 1 save 300 10 save 60 10000 La première ligne indique de sauvegarder si au moins une clef a été modifiée dans les dernières 15 minutes. La seconde, de sauvegarder si au moins dix clefs ont été mises à jour (ajoutées, supprimées, modifiées) dans les 5 minutes. La dernière, de sauvegarder au bout d’une minute si 10000 clefs ont été mises à jour. Fonctionnement en mémoire avec persistance régulière sur le disque et enregistrement des commandes Afin de minimiser encore plus la perte de données, sans pour autant sacrifier les performances, Redis va enregistrer les commandes qu’il reçoit dans un fichier à part (AOF – Append Only File),…

Shell, mon amour
Depuis de nombreuses années, peu de personnes comprennent mon affection pour les scripts Shell (OS X ou Linux). Je suis triste sur les missions où un poste Windows est imposé sans possibilité d’installer un git bash ou un cygwin… L’absence de grep, sed, awk est un manque cruel pour le développeur que je suis. Je ne vais pas vous faire un mode d’emploi des différentes commandes, mais plutôt vous présenter les différentes astuces que j’utilise pour écrire des scripts fiables.

Retour sur BlackHat London 2018 : Jour 1
Le pôle sécurité s’est rendu à l’édition 2018 de la BlackHat Europe qui s’est déroulée à Londres du 3 au…

Retour sur BlackHat London 2018 : Jour 1
Le pôle sécurité s’est rendu à l’édition 2018 de la BlackHat Europe qui s’est déroulée à Londres du 3 au…

Journal de bord d’un craftswap / Zenika x Codurance
Je me souviens de ce que m’a dit Xavier Detant quand je suis sorti de l’école : « Abdel, si tu veux bien commencer ta carrière commence par ce livre “The Software Craftsman: Professionalism, Pragmatism, Pride” de Sandro Mancuso. » “Mindset first”, j’ai adoré ce livre et je me suis fixé comme objectif de devenir un vrai craftsman comme Xavier. Vous imaginez donc dans quel état j’étais quand il a accepté que je devienne son apprenti chez Zenika ! Après 3 ans d’expérience, j’ai eu la chance de représenter Zenika lors d’un craftswap (un échange d’employés, entre deux entreprises) avec Codurance Londres et travailler dans l’entreprise de Sandro. (Oui, oui ! Le même que le livre cité plus haut !) Ceci est mon journal de bord de ma semaine chez Codurance.

Débuter avec Redis
Qu’est-ce que Redis ? Redis est un stockage en mémoire de structures de données simple (chaîne de caractère, hash, liste, ensemble, bitmap…). Il a la particularité de travailler seulement en mémoire ce qui lui confère de très bonnes performances. Il peut toutefois persister ses données sur disque. Il supporte aussi des fonctionnalités avancées comme : Transactions, Mécanismes de publication et d’inscription, Le scripting Lua, Gestion automatique du TTL sur les clefs, Haute disponibilité, Clustering. Modes de fonctionnement Fonctionnement en mémoire uniquement Dans ce mode, Redis utilise seulement la mémoire. Si le serveur est arrêté, les données disparaissent. Fonctionnement en mémoire avec persistance régulière sur le disque Dans ce cas, Redis qui fonctionne avec toutes ses données en mémoire, va les enregistrer régulièrement (suivant la configuration) sur le disque. Si le serveur est arrêté, les données ajoutées ou modifiées depuis la dernière persistance sur disque seront perdues. Lorsque Redis reçoit une nouvelle donnée à insérer, à modifier ou à supprimer, il incrémente un compteur. Suivant le nombre d’opérations d’écriture et le temps, Redis va persister sa mémoire sur disque (dans un fichier RDB). C’est le rôle de la configuration suivante : save 900 1 save 300 10 save 60 10000 La première ligne indique de sauvegarder si au moins une clef a été modifiée dans les dernières 15 minutes. La seconde, de sauvegarder si au moins dix clefs ont été mises à jour (ajoutées, supprimées, modifiées) dans les 5 minutes. La dernière, de sauvegarder au bout d’une minute si 10000 clefs ont été mises à jour. Fonctionnement en mémoire avec persistance régulière sur le disque et enregistrement des commandes Afin de minimiser encore plus la perte de données, sans pour autant sacrifier les performances, Redis va enregistrer les commandes qu’il reçoit dans un fichier à part (AOF – Append Only File),…

La machine virtuelle Erlang
Initiée par Ericsson dans la fin des années 80 et rendue open-source en 1998, la machine virtuelle Erlang (aussi appelée la BEAM pour « Bogdan’s Erlang Abstract Machine ») avait pour but initial de répondre aux problématiques du monde des télécommunications. Utilisée aujourd’hui par des services tels que WhatsApp, Discord ou encore Pinterest, la BEAM semble pourtant être une technologie méconnue. Cet article essaie de présenter de manière concise les intérêts de cette machine virtuelle. Les concepts derrière la BEAM Dans les années 80, Ericsson souhaitait répondre aux problématiques rencontrées lors du développement de solutions dans le domaine des télécommunications (notamment pour les switchs téléphoniques). Le but de leurs recherches était de produire des systèmes moins complexes à maintenir que leur solution de l’époque à base de C et de Prolog. Dans le cadre du domaine de télécommunication, Ericsson visait un outil permettant de créer des programmes : – fortement distribués – tolérants à la faute – temps-réels (soft) – à forte disponibilité – où le code peut être mis à jour à chaud (sans downtime) La firme suédoise déduira que le modèle d’acteur semble être une solution appropriée à leurs problèmes. Dans le modèle d’acteurs, un acteur est une entité qui, en réponse à un message, peut : – envoyer des messages à des acteurs – créer de nouveaux acteurs – changer son état Ce modèle a plusieurs intérêts : – l’isolation : si un acteur « crash », cela n’affecte que l’acteur en question – la distribution : les acteurs peuvent communiquer ensemble, qu’ils soient sur la même machine ou bien répartis sur un réseau, tout ceci de manière transparente – l’équité : un acteur ne peut affamer d’autres acteurs, c’est-à-dire consommer à lui seul toutes les ressources disponibles https://blog.zenika.com/wp-admin/post-new.php# Une implémentation du modèle d’acteur La BEAM implémente le modèle d’acteurs. Chaque…

Atelier Agile : La Product box
Nous avons testé à Zenika Labs un atelier agile nommé “La Product Box” et nous partageons dans cet article notre retour d’expérience.

Java.Next
Si vous avez suivi un petit peu l’actualité de Java vous avez dû remarquer qu’il s’est passé pas mal de choses cette dernière année : Java 9 est sorti il y a un an avec pas mal de nouveautés (dont la tant attendue modularité du JDK) et n’est déjà plus supporté depuis 6 mois, Java 10 est sorti il y a 6 mois et n’est plus supporté non plus, Java 11 vient de sortir et est LTS (Long Term Support). Oracle fournit deux distributions de Java : Oracle et OpenJDK et propose du support étendu pour ceux qui le veulent. Java 8 (la version la plus utilisée actuellement) ne sera plus supporté à partir de janvier 2019! Pour ceux qui sont un peu perdus là-dedans, cet article est fait pour vous ! Je vais tenter d’éclaircir le nouveau mode de gouvernance de Java (cycle des release, support, distribution) et de vous présenter les principales nouveautés des versions 9, 10 et 11 en faisant le focus sur les changements à destination des développeurs.