sebastien-dupire.info

Dev, gribouillages et bidouilleries ...

mer. 13 novembre 2019

Résurrection et nostalgie

Posted by Sébastien Dupire in 3615 MyLife   

Ce blog est resté à l'abandon depuis début 2013. Beaucoup d'évenements pourraient expliquer cela mais je pense que c'est simplement ... la flemme. L'envie de faire vivre le blog était toujours là malgré tout mais les outils utilisés ne me convenaient plus. Et même si aux yeux de beaucoup, les blogs sont devenus "has been", je trouve au contraire que c'est un merveilleux outil de communication avec entre autres :

  • flux RSS/Atom,
  • le blog, au final, c'est vraiment adapté aux articles,
  • outils et languages de syntaxe sympas pour des développeurs (mort aux WYSIWYG !!!),
  • pas de censure de la plateforme,
  • possibilité d'héberger où on veut,
  • etc ...

Bref, reprenons pour un résumé de ce qu'il s'est passé depuis 2013 ! Oui, ça va être long !

Résurrection du site perso

J'ai utilisé Pelican au tout début, autour de 2012 et j'avais complétement laissé le blog à l'abandon. Je reviens sept ans plus tard et l'outil a méchamment évolué, et propose une documentation claire et concise.

PelicanLeRetour

Il y a ce qu'il faut pour les thèmes et les plugins. La migration n'a pas été douloureuse. Le site a pu faire peau neuve en moins de 2h et du coup, même le dépot Git associé au site a été vachement épuré pour devenir enfin lisible et conforme à mon usage.

La seule étape longue a été de convertir mes articles existants en Markdown. Après, je me rends bien compte qu'ils sont pour la plupart obsolètes mais peu importe. Il suffit de lire la date de l'article pour comprendre.

La conversion du RestructuredText vers Markdown a été faite avec pandoc via la commande suivante trouvée ici:

FILES=*.rst
for f in $FILES
do
  filename="${f%.*}"
  echo "Converting $f to $filename.md"
  `pandoc $f -f rst -t markdown -o $filename.md`
done

Je suis passé à Markdown tout simplement car la synthaxe en ReStructuredText a fini par me gaver. Je ne fais quasiment plus que du Markdown sur l'ensemble de mes projets, donc il était temps pour moi de convertir le contenu pour éviter de garder en tête deux syntaxes proches mais au final assez différentes.

Le combat sera ailleurs !

Refonte de mon blog BD

Mon autre site, dédié à mes conneries et dessins en tout genre, est sous Wordpress (était ?). Les mises à jour succesives et sa gestion ont fini par me saouler. Des fois, aucune publication en trois mois et pourtant, obligé d'y retourner toutes les deux semaines pour faire une upgrade de Wordpress ou de PHP.

flingue_wordpress

La plupart de mes articles sont des simples textes avec une à deux images ... donc au final, je m'oriente tout doucement via la même solution que mon site perso : un générateur de site statique + Disqus. Je ne dis pas que Wordpress n'est pas bien. Bien au contraire ! C'est un outil génial, bien fait, bien pensé, configurable et pluginable à souhait. Il ne convient simplement plus à mon usage.

J'ai déjà commencé la migration via la page de migration dédiée sur la documentation de Pelican et le résultat a été plutôt efficace. Par contre, je suis quand même obligé de repasser sur la plupart des articles et même s'ils sont simples, il y en a moultes.

Gestion des commentaires pour mes deux sites

DisqusLogo

Forcément lié aux deux précédents sujets, je me suis remis dans l'usage de Disqus pour faire le ménage. Je suis heureux de constater que l'outil permet de corriger les erreurs sur les référencements et la gestion de tout ça est toujours aussi aisé. J'avais des commentaires qui étaient placés sur mon site de preview et non, mon site de production (comment ai-je fais, bordel ?). Cela a permis de tout corriger.

En bref, l'outil est puissant et m'a permis de migrer mon site sans casse et même de réparer des liens qui n'étaient plus bons entre certains de mes articles et les commentaires qui y étaient associés.

Un truc marrant en fouinant sur le site, les choses que vous ne pouvez pas faire avec le logo ou la marque Disqus.

DisqusTrucPasCoolAFaire

Niveau vie privée et tracking des utilisateurs, ce n'est pas l'idéal mais bon voilà, l'outil est gratuit ... vous connaissez la chanson, tout ça. De toute façon, même sans cookie ou autre outil, vous restez traçable. Il suffit de faire un petit tour sur https://amiunique.org/fp pour finir de vous convaincre que le tracking est une affaire sérieuse.

Serveur Web pour les contenus

J'ai définitivement adopté Nginx en lieu et place d'Apache2. Son utilisation massive avec mes projets utilisant docker et docker-compose font que je n'utilise quasiment plus que lui.

... et pour faire croire à un WebSphere que tout tourne dans un localhost, nginx dispose de trucs sympas.

Voici la configuration que j'ai mis en oeuvre sur un projet perso:

upstream le-manege-echante-pollux {
    server websphere-8.5-instance-pollux:9043;
}

server {
    listen 443 ssl;
    server_name admin.pollux.vm;

    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;

    proxy_set_header X-Forwarded-Port 443;

    client_max_body_size 50M;

    location / {
        proxy_pass https://le-manege-echante-pollux;
        proxy_set_header Host localhost:9043;
        proxy_redirect https://localhost:9043 https://admin.pollux.vm;

        sub_filter_types *;
        sub_filter 'localhost:9043' 'admin.pollux.vm';
        sub_filter_once off;
    }
}

server {
    listen 80;
    server_name admin.pollux.vm;
    return 302 https://$host$request_uri;
}

J'ai dockerisé un WebSphere 8.5 qui expose son interface d'admin sur https://localhost:9043. Sauf que je veux pouvoir y accéder via https://admin.pollux.vm, un domaine fictive entré dans fichier hosts

Si on utilise Nginx comme proxy simple, cela ne marche pas, car le routeur intégré à WebSphere ne comprend pas qu'on puisse arriver dessus avec un DNS et un port différents.

Pour gruger, je fais croire à WebSphere que je viens de localhost:9043 via

proxy_pass https://le-manege-echante-pollux;
proxy_set_header Host localhost:9043;

puis je lui dis de rediriger tous les localhost:9043 vers admin.pollux.vm:443.

proxy_redirect https://localhost:9043 https://admin.pollux.vm;

Sauf qu'il reste le contenu des pages, et donc des liens dans l'interface qui pointent sur localhost:9043 .. donc on va modifier le contenu HTML à la volée pour changer ces liens pour pointer sur le domain admin.pollux.vm.

sub_filter_types *;
sub_filter 'localhost:9043' 'admin.pollux.vm';
sub_filter_once off;

Magique non ? J'ai pu faire du dégueulasse temps réel pour contourner les limites d'un outil dégueulasse.

Le rêve, quoi !

Changement et rationalisation de mes DCVS

Lié au changement précédent, j'ai définitivement abandonné l'utilisation de Mercurial (hg pour les intimes). La plupart des projets sur lequels je bosse, sont sous Gitlab ou Github et mécaniquement, même si je suis resté sur BitBucket qui proposait à l'origine que du Mercurial, j'ai tranquillement et sûrement adopté Git pour sa puissance. Bitbucket permettant d'héberger les projets Git depuis quelques années, cela a fini par m'achever et j'ai basculé dans le côté obscur de la force.

J'adopte le gitflow plus ou moins standard et globalement, même si je ne suis pas fan du cherry-pick ou du rebase que mes collègues plus jeunes "kiffent", je m'en tire bien.

Mais mieux encore, je ne fais plus du tout de subversion et ça ... ça n'a pas de prix !

Autres outils courement utilisés

Je refais une petite passe sur l'ensemble des outils que j'utilise au quotidien.

Jenkins / Maven / Sonar

Je n'ai pas succombé aux sirènes de Gradle. Maven reste mon outil de build principal et il fait le café.

Je n'ai pas succombé aux sirènes de la CI/CD de Gitlab car comme le dit un collègue et ami "il ne faut pas mettre tous ses oeufs dans le même panier !". Et il a raison ! Je préfère isoler les outils : gérer le code avec Gitlab, lancer les builds/tests/autres avec Jenkins.

ConarQube

Je suis resté chez Sonar pour l'analyse du code car ... je vois mal un concurrent faire mieux. C'est parfaitement intégré pour Jenkins+Maven, l'interface est sympa, moulte plugins .. bref, mangez-en !

Java 8 et 11 .. 13 .. etc ...

Fin 2015, je finissais une longue mission qui tournait autour de Java 6. Forcément après, Java 8 a été une bouffée d'oxygène (gestion des dates, lambdas, sucres synthaxiques divers). Pour Java 11, au final, il a juste fallu être patient afin que tout le monde s'adapte à la nouvelle politique de livraison d'Oracle.

Pour Java 13, pour l'instant, à part pour expérimenter 2/3 bricoles, je ne vois de grands changements dans son utilisation pour moi. Le seul qui m'a intéressé, c'était pour l'écriture de bloc de texte avec le triple quotes... comme en Python ... En tout cas, je n'ai rien trouvé de bloquant à faire "à l'ancienne" pour le moment.

Au final, je préfère des petits changements sur la JDK tous les 6 mois, qu'une révolution tous les 5 ans et objectivement, ça va permettre à certains clients de se bouger les fesses pour maintenir leurs applications à flots surtout au niveau sécurité.

Docker et docker-compose

Je ne peux plus m'en passer.

  • J'ai besoin d'une base MySQL ? hop ... docker
  • J'ai besoin d'un sonar ? hop ... dockker
  • J'ai besoin d'un SMTP de type MailHog ? hop ... docker
  • J'ai trop de docker à gérer ? hop ... docker-compose

Je ne vais pas m'étaler sur les bienfaits des containers. Contentez vous d'en bouffer, votre vie de développeur va devenir plus agréable.

Vagrant

Alors troll ou pas ? Ben trop pas ! J'adore l'idée d'installer toutes les merdes liées à un projet dans une VM isolée du reste. Pour peu que vous utilisiez les images bento, vous avez par défaut un répertoire partagée avec le host qui vous permet de rester sur votre host tout en lançant les commandes de build & deploy sur votre VM.

Le seul hic, c'est le problème avec les projets NodeJS bourés de liens symboliques dans le node_modules qui font que si vous compilez votre application dans ce répertoire partagé et que vous avez le malheur d'avoir un host sous Windows, alors ça va méchamment partir en cacahouète. Vous êtes prévenus ! Mais ... à priori, il y a une solution.

IntelliJ et Visual Code

Depuis 2012 sous Eclipse qui, pour moi, est vraiment un très bon IDE. Les dernières versions sont rapides, possèdent un Dark thème et globalement, tout fonctionne très bien dessus. Seulement dans le cadre d'un projet, j'ai du changer d'IDE et bon, IntelliJ a fini par me convaincre. Les options, les configurations plus rapides ... même si je n'ai pas encore bien appris les raccourcis clavier, au final, je le trouve plus pratique à utiliser au quotidien.

Visual Code est par contre, la claque que je n'attendais pas. Que ce soit pour les projets NodeJS, Go ou Python, ou même pour l'édition de ce blog en Markdown, je ne peux plus m'en passer. Il se lance rapidement, il est bourré d'extensions, tout est bien disposé, utile, bien pensé et en Python, l'autocomplétion est au top, la gestion de Git fonctionne très bien. Bref, fini Notepad++ et la plupart des IDE que j'utilisais par le passé. J'ai grandement adopté cet outil. Mes plugins préférés dessus ? Je ne vais en citer que deux.

  • Utilisation de MermaidJS pour faire des diagrammes de séquences notamment.

  • Plugin pour faire du Base64 encode / decode pour simplement décoder des retours de requêtes SAML avec une simple option dans l'IDE. C'est magique.

Il ne manquerait plus que je fasse du Java avec ... (en vrai, j'ai essayé, mais je ne suis absolument pas convaincu ou alors, j'ai très mal configuré le bouzin).

Gitbash (et les extensions)

La plupart du temps, mon bash de prédilection sous Windows est Gitbash qui est fourni avec la version Git for Windows. Alors oui, beaucoup critique ce choix, mais il fait le café, et il est possible d'y installer des extensions pour gérer l'ensemble des commandes GNU/Linux.

GitBash

Système d'exploitation

Oui, je suis majoritairement sous Windows 10 car pour la plupart des environnements où je suis, cela est nécessaire et pour avoir accès à la suite office, ben cela fonctionne mieux aussi. C'est con, mais l'intégration de la lecture des cartes à puces, et d'autres périphériques folkloriques ne fonctionnent bien souvent que sous Windows.

De plus, désormais, on a un bash Ubuntu disponible, il est possible de virtualiser des environnements avec vagrant voir Docker for Windows si vous aimez vous prendre la tête ... et on a des bureaux virtuels aussi maintenant. Objectivement, Windows n'est pas un problème au quotidien, même si après des années sous GNU/Linux, ça m'arrache un peu la gueule de le dire.

sousWindows

Humainement parlant ?

Beaucoup trop choses pour être résumé sur un article, mais en vrac :

  • Depuis 2/3 ans, je m'intéresse à tout ce qui est lié à sécurité. L'organisation OWASP, et notamment les initiatives sur notamment la définition des cas d'abus plutôt que d'appliquer une checklist stupide. C'est un boulot à plein temps. Malgré le temps passé dessus, je pense que je suis simplement "sensibilisé" à ce domaine.

  • Mon profil s'est spécialisé aussi dans tout ce qui est gestion de certificats, signature électronique, et architecture même si j'avoue ne pas avoir encore basculé dans tout ce qui tourne autour de k8s et le monde merveilleux des microservices...pas encore.

  • L'arrivée de petits jeunes dans la boite où je bosse fait un bien fou. Ils sont fougueux, plein de riches idées, souvent nouvelles et du coup, c'est un véritable plaisir d'apprendre autant de choses à leurs côtés. D'ailleurs, il y a une forme d'ambiguité. Ils viennent me voir car on me qualifie d'expert mais bien souvent ... je suis une quiche sur les sujets sur lesquels on me sollicite. Je commence à être catégorisé comme un "pompier du dev" pour aller là où les autres se chient dessus. N'allez pas croire ! Je me chie dessus aussi mais de manière professionnelle et bizarrement, je m'en sors toujours pas trop mal !

  • J'ai quitté le monde Struts 2/JEE pour faire principalement du SpringBoot 2 et Angular 6/7/8. J'ai pu faire un peu de Go, faire un petit retour sur Python temporaire, bref, ça fait du bien. Pour le coup, même une petite dérive sur PHP ne m'a pas déplu. Ce n'est pas que je n'aime pas Java.

  • Les YAJUG (dont le programme est ici)... comment ne pas les citer ? Si vous voulez assister à des conférences diverses et variées (non, ce n'est pas uniquement lié à Java), il faut y aller.

  • J'en oublie sûrement ...

La suite ?

AladdinEtSesTroisVoeux

  • J'aimerais finir mes tutoriels sur l'utilisation de canvas parce que c'est rigolo, et surtout quand on abordera l'utilisation de framework tout en un.

  • J'aimerais faire une serie de tutoriels très enfantins sur la création d'une API REST sécurisée mais avec différents langages et frameworks (Python-flask, Django Rest, Go, NodeJS notamment via Express, JavaEE avec les librairies standards, SpringBoot). Il me faut juste définir un cahier des charges simple et après le but serait de toutes les bourriner avec un test de charge pour évaluer les performances de chaque implémentation.

  • J'aimerais faire à nouveau un peu de mobile notamment pour utiliser tous les périphériques, apprendre à faire des interfaces utilisateurs cools, me connecter à tous types de backend, tout ça dans un mouchoir de poche.

Divers

Je termine par faire le point sur ma sélection de quelques lectures/visionnages du mois.

  • Une vieille histoire de site Web sous J2EE par Ploum : Toujours aussi marrant à lire et étant consultant moi-même sur Java/JEE, j'en retrouve certains travers. Par contre, je ne joue pas sur mon mobile.

  • OWASP Abuse Case Cheat Sheet : une nouvelle façon d'envisager la sécurité dans les développements en se concentrant sur les cas d'abus technique et fonctionnel plutôt que d'appliquer des checks lists à tout va ...donc une manière de faire plus pragmatique.

  • D'ailleurs, toujours dans le même thème, si vous voulez vous sensibiliser à tous ces points, je vous invite à vous tournez vers WebGoat (un peu vieux et certains tests sont justes mal documentés), Juice Shop, NodeGoat ou encore le toujours en place Root Me.

  • WSO2 a mis récemment à jour son API Manager et son Identity Server .. en fait, je m'en fous, mais comme j'ai bossé avec ce produit, j'y ai quand même jeté un coup d'oeil, et par rapport aux précédentes versions, ils ont abandonné leurs frameworks tout bizarre pour au final faire du ReactJS. Comme quoi ... la concurrence des autres produits ont du les faire réagir.

  • Septembre 2019, c'était la sortie du JDK 13 aussi.

  • La possibilité de pouvoir faire des snapshots de volume Docker m'intéresse mais à priori, ce n'est pas dans la version de Docker, ni dans le pipe. D'un côté, ce serait tellement le bordel à gérer.

  • A priori ce tutoriel est cool pour faire des applications mobiles avec React Native. Il ne me reste plus qu'à me trouver un créneau pour jouer avec ça.

  • Mais du coup, il y a aussi Flutter qui a débarqué et qui semble fournir tous les outils pour faire des superbes applications mobiles pour les feignasses dans mon genre.

  • Alors ça fait jeune débutant mais oui, je me suis mis très tard à Git, et j'ai appris l'existance du remissage. C'est cool !


Vous voulez partager cet article ? Rien de plus facile !
Le copier-coller est votre ami. Il suffit pour cela de copier l'URL de votre browser et de le coller dans votre réseau social préféré.
Vous ne vouliez quand même pas un bouton pour faire une tâche aussi simple, non ?