mardi 27 octobre 2020

C'est quoi le Property Based Testing dans le TDD

Dit de cette façon, c'est quoi le PBT dans le TDD, c'est indigeste mais ce sont des concepts de base du Testing. Le choix des données de test est important et l'on dit qu'il faut se retourner vers le PO (Product Owner) pour bien savoir comment tester trouver le bon jeux de données d'entré.

GitHub - FsCheck
Voici la porte d'entrée vers l'automatisation des tests et le chois des jeux de données en entré.

F# for fun and profit - An introduction to property-based testing
Pourquoi faut-il utiliser FsCheck et QuickCheck en F# mais facilement adaptable à un autre langage.

Voilà, il s'agissait de vous sensibiliser au choix de vos jeux de données en entrée de vos tests, c'était le Property Based Testing dans le TDD.

Le TDD maintenant tout le monde connait ;)

Outils de Développement Logiciel - TDD

mardi 20 octobre 2020

Comment devenir un Ingénieur DevOps ?

Le DevOps est à la mode en ce moment, est ce que cela va durer est ce que cela va être balayé par une autre mode, en tous les cas c'est une bonne pratique pour les éditeurs de logiciels. 

Pourquoi on écrit ainsi DevOps avec un 'O' majuscule et bien parce que le DevOps vient de la réunion ou l'union de deux services dans l'Entreprise d'une part les Devs la R&D et d'autre part les Ops les Opérationnels ceux qui sont en contact avec le client.

Il a été diagnostiqué que le plus grand nombre de problèmes dans le continus delivery client vient du fait de la séparation entre la R&D et les Opérationnels par manque de communication, par une culture différentes, le déploiement chez les clients s'en ressent. D'où l'idée de réunir sinon ces deux services, de créer en tous cas des ressources ayant les deux culture R&D et Déploiement client chargé de faire la liaison.

Cela conduit à l'automatisation, ou le scripting (la mise en scripts) de tout un tas d'opérations qui pouvaient être faites à la main mais qu'il est souhaitable d'automatisées pour des questions de répétabilité et pour les rendre facile à utiliser.

Alors aujourd'hui un Ingénieur DevOps c'est quoi ? Et bien, c'est quelqu'un qui fait le lien entre la R&D et le déploiement chez le client qui rédige ces scripts pour s'assurer que tout se passera correctement  lors du Continus Delivery chez le client. 

Je vous propose de disséquer la fiche de poste de l'ingénieur DevOps :

Compétences techniques requises pour l'Ingénieur DevOps :

Franchement, vous croyez que celui qui a rédigé cette fiche sait de quoi il parle ? La première ligne c'est pour maintenir des Bases de Données. C'est toujours un problème de maintenir des versions de Bases de données et pouvoir faire des livraisons incrémentales et du rétrofite avec les Bases de données.

Les Outils de l'Ingénieur DevOps
Les Outils de l'Ingénieur DevOps

Voici quelques explications succinctes sur ces différents outils de la Stack DevOps. 

Elasticsearch : moteur de recherche et d'analyse permet de faire des recherches rapides dans des bases immense. Kibana pour afficher sous forme graphique probablement des logs récupérés par Logstash

Logstash : moteur de collecte de données open source avec des capacités de pipelining en temps réel. Logstash peut unifier dynamiquement les données de sources disparates et normaliser les données dans les destinations de votre choix.

Nexus ? A priori personne ne sait vraiment ce que ce terme vient faire là mdr

Ansible : est un outil d'automatisation informatique. Il peut configurer des systèmes, déployer des logiciels et orchestrer des tâches informatiques plus avancées telles que des déploiements continus ou des mises à jour progressives sans temps d'arrêt.

Puppet : est un logiciel libre permettant la gestion de la configuration de serveurs esclaves (GNU/Linux, Mac OS X et Windows2). Il est écrit à l'aide du langage de programmation Ruby et est diffusé sous licence Apache

Openstack : est un système d'exploitation "cloud" qui contrôle de grands pools de ressources de calcul, de stockage et de mise en réseau dans un centre de données, tous gérés et provisionnés via des API avec des mécanismes d'authentification communs.


Il faut en convenir, cela fait une sacrée Stack, pas mal d'outils à maîtriser mais on reconnait là des outils pour loguer, contrôler, faire des diagnostiques, scripter, déployer des applications logicielles.

En réalité, il n'est pas nécessaire de maîtriser la totalité de ces outils présents sur cette fiche de poste, beaucoup de fonctionnalités sont redondantes entre les différents outils. Le vrai travail serait de rationaliser ces outils.

Voilà, nous avons maintenant une meilleure connaissance des outils du DevOps, des outils qu'ils va falloir prendre en main pour devenir un véritable Ingénieur DevOps.

Sur ce Blog - Les Articles sur le DevOps


jeudi 15 octobre 2020

C'est quoi l'outil Jupyter Notebook ?

Tous ces outils, ils ont vraiment des noms parfois ! Comment se distinguer avec un nom comme Jupyter Notebook. Au départ cela ne doit pas être facile. Jupiter c'est un dieu Grec qui gouverne la terre et le ciel, Notebook pour moi c'est un petit ordinateur portable Macintosh. Donc Jupyter Notebook, ça devrait être un petit ordinateur portable avec lequel je peux gouverner le ciel et la terre.

Alors Juptyter Notebook c'est quoi ? C'est un projet Open Source une application Web qui permet de partager des documents qui contiennent du code, des équations, des visualisations et du texte narratif. S'utilise pour : le nettoyage et la transformation des données, la simulation numérique, la modélisation statistique, la visualisation des données, l'apprentissage automatique et bien plus encore ...

Et bien "Jupyter Notebook" est encore un de ces terme derrière lequel se cache un monde complexe. Je me demande la différence ou comment il se positionne par rapport à Talend par exemple.

jupyter notebook
jupyter notebook

Sur le site, très vite on trouve de quoi installer l'outil. C'est même le premier menu qui tombe sous mon clique.

jupyter - Install

Des scripts d'installation ... 

Je trouve toujours cette démarche un peu curieuse de vouloir faire tomber l'utilisateur dans l'adhésion de l'outil et son utilisation, je ne sais pas encore ce que c'est, ni même si j'en ais besoin.

Du coup, je me tourne vers la documentation :

jupyter - Project Documentation

Autant de lecture et toujours pas d'explication, Jupyter c'est encore une de ces applications, un éco-système complexe que l'on peut pas appréhender en une seule phrase.

Digital Guide - IONOS - Jupyter Notebook
Ce site donne des éléments pour comprendre et installer et utiliser Jupyter Notebook

Voici quelques éléments pour élaborer une définition : Jupiter Notebook permet la création et le partage de documents Web au format JSON constitués d’une liste ordonnée de "cellules d’entrées" et de sorties et organisés en fonction des versions successives du document ...

Un gestionnaire de documentation ? Mais pas seulement ...

Le nom Jupyter rassemble le nom des trois langages : Julia Python et R

Je reste un peu sur ma faim ! Je reviendrais pour creuser, ou pas ...


lundi 5 octobre 2020

Scilab l'outil mathématique par excellence, pour toutes vos études de data-scientist

Je ne vous ai pas encore parlé de Scilab. Je vais me rattraper. Ce n'est peut être pas un outil de développement au sens langage de développement et chaîne de compilation associée mais il est important de connaitre Scilab, l'alternative Open Source à Mathlab. C'est deux univers, portes d'entrée vers les mathématiques, cohabitent depuis presque toujours. 

L'outils mathématique Scilab de l'Inria
L'outils mathématique Scilab de l'Inria

Scilab est l'outil indispensable de tout bon DataScientist, un complément incontournable à Excel. Allez, passons directement au vif du sujet, j'installe la dernière version :

Scilab - Install

Scilab - Install
Scilab Install - Choix des modules 1/3

Encore quelques choix de modules à installer, c'est vraiment très complets pour tous vos travaux mathématiques :

Scilab - Install
Scilab Install - Choix des modules 2/3

Des choix basés sur les performances de l'ordinateurs sur lequel vous installez Scilab.
Pour finir par l'écran de fin :

Scilab Install - Choix des modules 3/3
Scilab Install - Choix des modules 3/3

Me voilà prêt à devenir un vrai data-scientiste. Scilab se charge voici l'écran principal :

Scilab - Fenêtre principale
Scilab - Fenêtre principale

Pour bien démarrer, je me créé un répertoire Scilab et puis un utilitaire Scinote me permet de créé un fichier essai1.sce.

Le moins que je puisse vous dire ce que l'interface n'est pas intuitive on sent bien l'interface dérivée de la fenêtre de commande, le problème c'est que Scilab est multiplaforme donc il doit s'arranger avec les navigateur de fichier de toutes les plateforme windows linux mac ... du coup c'est pas easy easy ...

Par exemple, je ferme par mégarde le "navigateur de fichier". Je trouve le menu Applications -> Navigateur de fichiers. Mais une fenêtre s'ouvre et ne trouve pas tout de suite comment l'intégrer dans la fenêtre principale de Scilab.

Je ne suis pas encore à créer mon premier script et à l'exécuter ce n'est pas du tout intuitif il va me falloir une longue phase d'apprentissage mais cela en vaut la peine.

Scilab je me retrouve avec le "navigateur de fichiers" dans le vide Grrrrr
Scilab - Je me retrouve avec le "Navigateur de fichiers" dans le vide Grrrrr

Donc ma première question à la communauté :

Scilab - Comment réintégrer le "navigateur de fichier" dans la fenêtre principale

Et la réponse que j'ai trouvé, ici : FAQ Scilab

Avec des histoire de bande bleue avec un "?" qu'il faut maintenir cliquée, puis faire glisser dans la fenêtre principale :

Scilab - Comment réintégrer le "Navigateur de fichiers" dans la fenêtre principale
Scilab - Comment réintégrer le "Navigateur de fichiers" dans la fenêtre principale

Attention la bande en question n'est pas forcément bleue, il n'y a pas de gestion de déplacement de la fenêtre simple on la voit réapparaitre dans la fenêtre principale une fois déplacée ... Bref ... c'est pas gagné mais j'ai finit par y arriver :

Scilab Comment réintégrer le "Navigateur de fichiers" dans la fenêtre principale
Scilab - Comment réintégrer le "Navigateur de fichiers" dans la fenêtre principale

Donc vous maintenez la souris cliquée sur la bande bleue et vous la déplacez dans la fenêtre principale. La fenêtre du Navigateur de fichiers que vous déplacez ainsi va venir se Docker automatiquement dans la fenêtre principale.

Je retourne dans mon répertoire de travail. J'ouvre le fichier que j'ai créé avec son contenu.

Scilan - Fichier ouvert avec SciNotes
Scilan - Fichier ouvert avec SciNotes

Je peux faire bouton droit exécuter dans Scilab :

Scilab - Exécution de mon Script
Scilab - Exécution de mon Script

L'exécution du Script me donne le résultat suivant :

--> exec('D:\Bruno\Scilab\essai1.sce',-1)
à la ligne 14 du fichier exécuté D:\Bruno\Scilab\essai1.sce
y = np.array([((np.log(np.abs(2 + x1[t])) - x2[t-1]**2) + 0.02*x3[t-3]*np.exp(x1[t-1])) for t in range(len(t))])
                                                         ^^
Erreur : syntax error, unexpected [, expecting "," or )

Voilà, Scilab permet d'exécuter les Scripts mathématiques que vous avez défini. Nous venons de faire un tour ultra-rapide de l'outil mathématique Scilab.