06 janvier 2022
sourceCet article regroupe les notes me permettant d'animer prochainement cet atelier.
Parce que chez Zenika, quand un nouveau collaborateur nous rejoint, on le fait participer à un bootcamp de 2-3 jours pour l'imprégner de nos valeurs (si vous me connaissez, vous imaginez tout ce que je peux tirer de cette phrase).
Donc, l'un des éléments clés de ce bootcamp est l'animation (fantastique) d'un atelier Extreme Carpaccio. Ca marche très bien en présentiel. Mais comment porter ça à distance ?
Un collègue m'a envoyé un lien vers un super article Extreme Carpaccio qui référence un tout aussi chouette repository GitHub (également nommé extreme-carpaccio) qui contient le code permettant d'animer ça à distance. Reste à le faire marcher (et c'est ce que je vais expliquer ici).
Là c'est simple
npm install node_modules\.bin\bower install # Parce qu'il semble y avoir un bug quelque part npm start
Et ça démarre gentiment.
L'interface d'administration est alors accessible sur http://localhost:3000.
Reste maintenant à l'exposer sur internet pour que les participants puissent s'y enregistrer facilement.
Pour ça, j'essaye déséspérément d'utiliser LocalTunnel.
Donc, dans un autre terminal, je tape
lt --port 3000 --subdomain bootcamp-janvier-2021 --local-https false --print-requests --open
Et ça marche.
Reste maintenant à démarrer un client
De la même manière, je vais dans le dossier des clients, et je vais préparer un client en ... Python, tiens!
cd clients\python\flask-server pip install Flask python .
Et à nouveau je démarrer un localtunnel pour que le serveur parle au client à travers internet
lt --port 5000 --subdomain flask-at-bootcamp-janvier-2021 --local-https false --print-requests --open
Et là, curieusement, ça ne marche pas !
D'un autre côté, je n'ai pas eu droit au message de Windows m'indiquant que le port 5000 était ouvert au monde entier. Pourtant, ça marche
> curl -v http://10.0.10.97:5000 * Rebuilt URL to: http://10.0.10.97:5000/ * Trying 10.0.10.97... * TCP_NODELAY set * Connected to 10.0.10.97 (10.0.10.97) port 5000 (#0) > GET / HTTP/1.1 > Host: 10.0.10.97:5000 > User-Agent: curl/7.55.1 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Content-Type: text/html; charset=utf-8 < Content-Length: 11 < Server: Werkzeug/2.0.2 Python/3.9.1 < Date: Thu, 06 Jan 2022 13:31:04 GMT < hello world* Closing connection 0
Alors qu'est-ce qui foire ? Est-ce que c'est Python ? Est-ce que c'est Flask ? En tout cas ça "marche à peu près" en Java et Javascript (même si ces clients demandent un peu d'amour, parce qu'ils ne marchent pas si bien que ça).
On a donc un client et un serveur qui peuvent se parler à travers internet. Ca va exiger un peu de support de la part des facilitateurs, mais à priori c'est jouable ...
Reste maintenant à voir si ça supportera l'épreuve du réel. Et pour ça, je dois bien reconnaître qu'il va falloir que je code une solution. Je vais donc prendre la solution Java et essayer de la faire marcher.
Donc pour le fun, j'ai pris la version java-httpserver.
La première chose que je remarque, c'est que cette version de l'extreme carpaccio envoie tout de suite l'ensemble des calculs de prix possibles. C'est un peu différent de ce qu'on fait en présentiel, mais on va s'adapter !
Donc j'ai produit mon implémentation et ...
Ca n'est pas forcément un succès. Et j'ai l'impression que c'est dû à de sales histoires de gestion des taxes ... (ou plus exactement de la manière dont Java et Javascript gèrent différemment les arrondis autour des doubles).
Cela dit, c'est intéressant et, comme pour Codingame, je me suis vite pris au jeu d'essayer de trouver une implémentation qui soit à la fois juste et efficace.
Autrement dit, c'est un chouette exercice, qui ne nécessite qu'un peu d'adaptation dans le sorytelling pour bien fonctionner. Et je vous en reparlerai ... prochainement.