favicon

SITE CV de Christophe BONNET

favicon

Ici vous trouverez la description de quelques unes de mes réalisations dont j'assume la paternité.
Toutes sont basées sur des produits Open Source.
Qui est une mine de matière première phénoménale pour un informaticien.


Suivi de Fabrication en Perl


Au siècle dernier, un de mes collègues avait mis au point un suivi de fabrication simplifié lié à la gestion
commerciale.

Cela a permis d'effectuer un suivi de la fabrication presque en temps réel. Les délais de fabrication étant fixés par contrat
les clients de mon client pouvaient savoir ou en était leur commande juste avec un coup de fil (internet n'était encore
très utilisé) les données remontaient chaque fois que quelqu'un bipait sur un dossier.

Basé sur des terminaux séries avec 2 lignes de 16 caracteres il fallait trouver un dialogue simple avec les utilisateurs
Je ne sais plus qui a eu l'idée du code-barre mais cela simplifiait énormément la chose.

Il fallait 2 choses : le dossier de fabrication qui avait un code barre et une feuille A4 par utilisateur ou se trouvait
codifié le code de l'utilisateur, l'opération et sont status (début, fin, arrêt etc .. )

En 2 bips les informations remontaientt des postes de fabrications.

En 2005 l'outil arrivait au bout de sa course, à cause du coût de chaque poste la liaison série imposait des vitesses réduites
et des câbles spécifiques.

Il fallait évoluer.

Il existait des solutions basé sur Windows NT (le unix killer de l'époque :) ) et des terminaux symbol mais tout cela était
disproportionné par rapport au besoin de base et au budget.

J'avais découvert le langage perl quelque années auparavant et je m'amusais avec les exemples du célèbre livre "Perl CookBook" de chez
O'Reilly ( Perl en Action en Français ).
Dedans se trouvait un exemple d'un serveur TCP simpliste.
Après quelques tests pour étudier la faisabilité, je proposais une évolution pour le suivi de fabrication.

La base du dialogue n'avait pas à être changé, les liaisons séries devaient être remplacé par du réseau TCP/IP
Les terminaux séries pouvaient être remplacés par des terminaux VT sans soucis, un cable en 'Y' permettait de gérer le clavier et
le lecteur code barre tout cela pour beaucoup moins cher, sans licence et quasiment sans limite.

L'échange avec la gestion se fait par un table commune entre les 2 bases, constamment synchronisée par un processus dédié
entre la base Mysql du code Barre et la base Oracle de l'ERP.

Il fallait que cela soit asycnhrone car nous avions vécu la pénibilité d'avoir a gérer des arrêts du code barre, à chaque fois que la gestion devait s'arrêter
alors que le coté production n'était pas concerné.

Avec ce processus de synchro et sa propre base le code barre est un outil indépendant de l'ERP.

L'utilisation d'écran standard a permis d'afficher beaucoup d'informations dont les opérations en cours et a venir, permettant ainsi
a certain poste d'optimise leur travail

Développé en 2005 ce petit exemple issue du Perl CookBook a été modifié plusieurs fois, mais depuis il continue a fonctionné
de manière autonome même au moment au j'écrit ces lignes en 2019

Un projet de remplacement est en à l'étude, mais si c'est moi qui doit le faire cela sera en python.

J'ai beaucoup aimé codé en perl. Mais à l'usage c'est un langage difficile à lire et relire quand on ne le pratique pas tout les jours.
Et la moindre modifs de ce scripts d'environ 3000 lignes me prend 3 jours dont 1 journée pour relire et me remettre dedans.

D'un autre coté c'est gràce a la concision et la simplicité de Perl, ainsi que la manière très particulière qu'a Larry Wall le créateur de ce langage
de voir les choses, que j'ai compris la différence entre une variable et un objet (au sens informatique du terme).
En perl un objet est un variable "Bénie" (la commande est bless $variable) qui devient unique dans le traitement.
Vous pouvez réfléchir sur le sens profond de ceci.



Suivi de température


Topic : raspberry et envoi de SMS

Pour la petite histoire ce projet est venu sur le tapis par hasard. En entendant mon patron raler après la société qui
s'occupe de la climatisation, au sujet d'un devis de 3000 euros pour un testeur de température dans la salle serveur.

Auparavant 2 ou 3 fois la climatisation était soit tombé en rade, soit non remise en route et dans la salle serveur la température
monte en moins d'une heure à plus de 40° ce qui met en défaut les processeurs sinon ils crament.

De mon coté, J'étais en pleine lecture de Hackable Magazine et autre mensuel sur la bidouille informatico-electronique basé sur le
raspberry et l'arduino.

Et la j'ai dit que je pouvais faire la même chose pour quelques centaines d'euros (surtout ne pas avancer de chiffre trop précis)
La réponse ne s'est pas fait attendre.
Donc j'ai présenté des devis pour :
- un raspberry
- du câble
- des testeurs de temperature
- du scotch
- une alimentation
- un écran LCD
et ce qui a couté le plus cher : un modem GSM

Bricolé avec un raspberry un testeur de temperature c'est facile, surtout quand on connait Unix et le langage python
Zabbix un outil de supervision m'a permis de gérer les écarts et le déclenchement de scripts en fonction de seuil
Moins facile l'envoi de SMS c'ets ce qui m'a donné le plus de difficulté et de temps, j'ai fini par écrire un spooler
simplifié basé sur les fichiers fifo d'unix.
Cela a marché quelques années sans soucis et nous a rendu quelques services en cas de coupure d'électricité
Puis un jour, le boss a voulu récupérer la carte SIM, mon collègue a cherché dans le mauvais boitier
et sans le faire exprès a arraché une partie du câblage.

Je ne l'ai pas remis en route faute de pouvoir utiliser le modem, inutilisable sans carte SIM.

Par contre à l'époque j'avais pris la peine d'écrire un blog https://clyontech.wordpress.com/prendre-la-temperature-avec-un-rasperry/



Simulation d'activité


Mettre en place de la réplication de base de données Oracle c'est bien.
Mais cela sous entend que la base de données ait des données et si possible vivante et changeante.

C'est ainsi que j'ai codé une simulation d'activité

Un truc simple :

Des clients des produits des fournisseurs
Un stock
Des commandes clients, des livraisons
Des commandes fournisseurs des réceptions

4 processus :
1 pour la prise de commande client : à intervalle régulier de 8h a 11h et de 13 à 16h
des clients choisissent des produits dans la base et passe des commandes

Les livraisons se déclenchent à 11h30 et 17h génération des livraisons en fonction du stock disponible

A 12h00 et 18H génération des commandes fournisseurs en fonction des commandes clients

Les réceptions fournisseurs se font a 9h et 11h puis à 16h30 chaque produit a un délai de réapprovisionnement

Je l'ai laissé tourné pendant plus d'un an sans soucis, cela nous a permis de mettre au point
les scripts de réplication de base de données ORACLE et de sauvegarde RMAN (Recovery Manager)
Cela nous a permis de tester les restaurations et les incidents sur des données presque réelles.
Avec des millions de lignes et plusieurs giga-octets de volume.


Remplacement de meladx


Sage X3 est un vieil ERP constamment remis au gout du jour
Mais il traîne encore certains points pas vraiment d'actualité

Ex: l'envoi de mail

L'utilitaire fourni par Sage et en fait un vieux binaire codé en C
qui se charge de se connecter sur le port 25 d'un serveur SMTP
et d'envoyer les commande ( EHLO ... etc .. ) sur ce port
Pas d'authentification ni de cryptage
La bonne vieille méthode des années 90 et 2000

Lassé d'expliquer aux administrateurs qu'ils devaient ouvrir le port 25 au 21e siècle
Je me suis décidé de coder cet utilitaire juste pour voir si j'en étais capable.

Comme le langage GO faisait parler de lui et que cela m'intéressais, surtout qu'avec le même script je pouvais générer
un binaire pour Windows et Linux.

Et peu de temps après j'avais une version utilisable et multi-plateforme (enfin au moins celle qui m'interressais)
Nous l'avons mis en application en interne et il a pas trop mal fonctionné.
Aucune décision pour finaliser ce produit n'a été prise et je ne voulais pas mettre en production un outil
d'importance et en assumer la maintenance tout seul.
Mais j'ai appris un peu le GO ...



Time Sheet JIRA


JIRA est un bel outil bien fait et même joli.
Mais il manque quelques petits trucs tout bete.

Par exemple ais je bien noté tout mon temps ? Comment savoir si je n'ai pas noté 2 fois la même chose ?

La aussi basé sur l'API REST et une librairie python, j'ai développé une petite application Web permettant
a quelques utilisateurs de visualiser les temps saisies.

Python + Django + Pug + Bootstrap


Export des données JIRA


Avoir un suivi de ticket pour le support c'est bien.
Mais encore faut il pouvoir facturer les clients et mettre à jour les contrats.

C'est le but de cet export basé sur les API REST de JIRA et écrit en python

Il permet d'automatiser le transfert des données vers l'outil de gestion et la base de Business Intelligence


Ce site


Rédiger un CV n'est pas un exercice facile, il faut respecter certaines contraintes de format et tout cela en quelques lignes.
Avec un site CV même combat, mais le format est plus libre, et en plus cela permet de découvrir de nouvelles technologies
et de se confronter au World Wide Web.

Le HTML est, à mon avis, verbeux et difficile à lire. Même si c'est indéniablement une réussite technologique.
Le css c'est pas mieux.
La plupart des éditeurs HTML générent une bouillie difficile à modifier.

Bref malgré de nombreuses tentatives, je n'arrivais pas à trouver la matière première qui me convenais.

Puis un jour en essayant de comprendre comment on gérait des sites webs adaptatifs ( il faut dire responsive ... je crois ) je découvrais
la librairie CSS bootstrap.

Au hasard d'un surf, j'avais découvert jade (il faut dire pug maintenant) un moteur de template vraiment sympa pour faire du html plus simplement.

Avec quelques tests Bootstrap + Pug m'ont plus tout de suite, avec un minimum d'effort on peut générer du HTML lisible sur smartphone, tablette PC ...

VI est mon éditeur de prédilection depuis longtemps, même si il doit bien exister d'autre outils du style de make c'est celui que je connais
le mieux.

VI + MAKE + BOOTSTRAP + PUG + des scripts python shell etc ... et voici comment se génére ce site

En tapant 'make' les pages sont générées, le bas de page est mis à jour avec la date et l'heure, les scripts éxécutés et le tout transféré chez l'hébergeur.

Il ne manquait plus qu'un gestionnaire de version : GIT

Et avec ce site j'ai même mis en oeuvre différentes branches ( dev / prod / master ... ) afin de n'avoir qu'un seul repository pour les différentes versions.

Et pouvoir comparer et diffuser les modifications effectuées sur les branches au cas par cas facilement.

Connaissant l'histoire de git, je ne dirais qu'une seule chose : Mr Torvalds ... respect.