PROJET AUTOBLOG


Le blog de Seboss666

Site original : Le blog de Seboss666

⇐ retour index

Windows, WSL et Docker, mode d’emploi

lundi 25 novembre 2019 à 18:30

Soit Qwant n’est pas encore assez doué, soit je n’ai pas trouvé l’intégralité des infos que je cherchais sur ce sujet. Et après avoir vu la vidéo de Thomas, dans laquelle il manque un ou deux morceaux, comme je suis moi-même en train de tester Ubuntu via le Windows Subsystem for Linux, me suis dit qu’il fallait tester moi-même, et vous faire un retour. Et ça n’a pas été forcément tranquille.

Une solution qui a quelques prérequis pénibles

Docker for Windows a un fonctionnement tout de même bien différent de sous Linux. Sous ce dernier, il fait encore appel partiellement à LXC, qui permet de « conteneuriser » l’application à l’exécution. Sous Windows, choix a été fait de reposer sur Hyper-V, la couche de virtualisation de Windows. Hors, cette couche nécessite une version « Pro » au minimum de Windows, donc exit tous les Windows vendus avec les laptops grand public du marché. Pour ma part, j’utilise une version entreprise LTSC, vous savez pourquoi, donc c’est bon.

Le deuxième prérequis apparent est là encore une décision détestable : demander de créer/disposer d’un compte sur le Docker Hub pour pouvoir récupérer Docker Desktop for Windows. Alors même que la version Linux et Mac n’en demandent pas autant. Devoir filer une fois de plus des infos persos, à une boite américaine de surcroit, pour un truc opensource et gratuit, non merci. Fort heureusement, j’ai fini sur un article anglais par trouver le lien direct vers l’installeur, qui fonctionne parfaitement, comme quoi demander un compte alors qu’on verrouille pas le direct download est juste de la malhonnêteté. Ce qui est « drôle », c’est que l’article en question conseille tout de même la création du compte, arguant que ça permet le téléchargement d’images. Se peut-il que le rédacteur se soit planté en utilisant « download » plutôt que « upload », à savoir téléversement, c’est à dire déposer des images sur le Hub, qui là oui demande un compte ? Mais la plupart des images sont publiques sur le Hub, donc pas besoin de compte pour les télécharger.

Enfin bon, c’était entre autres le gros point qui manquait dans la vidéo de Thomas, le reste, ça ne va être grosso modo que de la transcription. J’ai le temps d’écrire, le téléchargement prend 1Go pratiquement…

Configuration de Docker for Windows

A l’installation l’utilitaire propose de cocher une case « Use Windows containers instead of Linux containers », que j’ai laissé décoché évidemment. Il faudra se délogguer de votre session à la fin de l’installation, un peu comme sous Linux ou il faut relancer la session pour prendre en compte l’ajout de votre utilisateur au groupe docker pour que le démon accepte que vous l’utilisiez.

Le démarrage et le redémarrage du service Docker sont longs, très longs comparé à Linux, je soupçonne qu’en fait en dessous c’est une machine virtuelle Hyper-V qui est démarrée/redémarrée, et c’est pas rapide (ça expliquerait aussi la taille du téléchargement ceci dit). Je dis ça parce qu’une des premières choses à faire est d’aller dans les options de Docker (clic droit sur la baleine dans la barre des tâches, puis « Settings »), Pour décocher la télémétrie (Usage statistics, encore cette saloperie), et cocher « Expose daemon on tcp://… without TLS », c’est lui le plus important en fait.

Une fois validé, il vous demandera certainement de redémarrer, faites donc et patientez de longues secondes…

Configuration du client Docker dans WSL

L’installation du client docker (et uniquement lui) est gérable de manière tout à fait classique via la documentation officielle, à savoir ajout de la clé GPG, ajout du dépôt, et installation du client. Faut-il vraiment remettre les commandes ? Allez :

$ sudo apt install apt-transport-https ca-certificates gnupg-agent software-properties-common curl
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt install docker-ce-cli

Il faut ensuite paramétrer l’environnement pour indiquer au client docker de taper sur le démon Windows qu’on a exposé un peu plus tôt. Pour ça, direction le fichier ~/.bashrc ( je préfère utiliser ~/.bash_aliases qui permet d’être plus indépendant de la distribution, et le bashrc d’Ubuntu est configuré pour charger celui-ci s’il existe), et ajouter une ligne dedans :

export DOCKER_HOST=tcp://localhost:2375

On le recharge ( source ~/.bashrc ) et roulez jeunesse. Un petit docker info devrait vous rassurer :

$ docker info
Client:
 Debug Mode: false

Server:
(...)
Kernel Version: 4.9.184-linuxkit
Operating System: Docker Desktop
(...)

Mes soupçons se confirment, c’est bien une machine virtuelle Linux qui est utilisée avec un noyal 4.9.x comme référence pour le démon Docker.

Reconfiguration WSL pour les volumes

Ah, oui, en l’état ça fonctionne, vous pouvez démarrer du container à foison, mais pour la gestion des volumes c’est pas encore tout à fait ça. En effet, par défaut sur WSL les volumes de Windows sont « montés » dans le dossier /mnt/c, /mnt/d, etc. Et ceux-ci ne sont pas utilisables avec Docker, on va voir pourquoi :/

Il faut pour ça commencer par reconfigurer WSL, via un fichier de configuration /etc/wsl.conf avec le contenu suivant :

[automount]
enabled = true

options = "metadata,umask=22,fmask=11"
mountFsTab = false
root = "/"

En fait, le « root », quand il n’est pas renseigné c’est /mnt. Vous commencez à voir où on va ?

Fermez la session, parce qu’il faut qu’on redémarre ensuite le service « LXSSManager », c’est le service système qui se charge de l’environnement WSL (oui, cherchez pas la logique du nom). Pour ça, j’ai une habitude fâcheuse mais très rapide depuis plusieurs années, c’est le raccourci clavier Win+R, services.msc :

Quand on relance, les volumes C:\, D:\ etc… ne sont plus montés dans /mnt/c/… mais directement dans /c/…, et ça tombe bien, puisque c’est le même point de montage dans la machine virtuelle de Docker Desktop. Il aura donc les bonnes informations pour aller créer/récupérer ses volumes. Attention, ça veut donc dire qu’il faut placer ses volumes persistants non pas dans la session WSL mais bien dans l’arborescence Windows. Avec toutes les limitations que posent le système de fichiers NTFS (sur la casse, les permissions…) 🙁

Y’a pas à dire, Linux c’est quand même mieux (ou le WSL 2 ?)

Ça a été long, chiant, mais ça fonctionne parfaitement. Malgré tout, c’est un sacré bidouillage, et une consommation de ressources sans commune mesure avec un démon Docker linux natif. C’est pas pour rien non plus que je me suis débarrassé de Windows au boulot, avec toutes les contraintes que ça m’a apporté derrière.

Microsoft l’a bien compris, et les améliorations tirées de ses enseignements sur Azure notamment l’ont poussé à travailler sur un WSL 2.0 qui embarquera un vrai noyau Linux pour pouvoir cette-fois-ci prendre en charge la version Linux de docker de manière native, donc beaucoup plus léger qu’un système à base de VM Hyper-V. Oui parce que j’ai pas évoqué l’impact sur les performances, mais disons simplement que c’est bien pour construire ses applis et tester leur stabilité, mais c’est pas l’environnement rêvé pour valider les performances…

WSL a d’autres limitations via certains programmes qu’on pourrait aborder dans d’autres articles. Déjà celle de Docker est contournée 🙂

Réduire la taille d’un disque virtuel au format VDI

dimanche 17 novembre 2019 à 10:30

Après mon changement d’OS sur le PC du boulot, j’avais notamment transféré la machine virtuelle Linux que j’utilisais pour récupérer notamment l’environnement SSH, Git, et Bash de manière générale. Et en regardant l’espace utilisé sur le système hôte, j’y ai vu un gros souci : la taille du disque virtuel. J’ai donc cherché à corriger ça.

L’image approchait les 40Go :

$ ll
total 75949920
drwxr-xr-x 4 seboss666 seboss666 4096 04.10.2019 09:25 ./
drwxr-xr-x 3 seboss666 seboss666 4096 04.10.2019 08:54 ../
drwxr-xr-x 2 seboss666 seboss666 4096 04.10.2019 08:54 Logs/
drwxr-xr-x 2 seboss666 seboss666 4096 05.06.2019 09:25 Snapshots/
-rw------- 1 seboss666 seboss666 8603 04.10.2019 09:25 SebLBNvm.vbox
-rw------- 1 seboss666 seboss666 8603 04.10.2019 09:06 SebLBNvm.vbox-prev
-rwxrwxrwx 1 seboss666 seboss666 40155217920 04.10.2019 09:06 SebLBNvm.vdi*

Pourtant, une fois dans la VM, la consommation n’est pas si importante :

$ df -h /
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/lubuntu--vg-root 38G 7,3G 29G 21% /

L’explication est simple, le disque virtuel a beau être alloué de manière dynamique, par le passé j’ai pratiquement rempli cet espace, et le fichier ne se réduit pas de lui-même une fois le ménage effectué. C’est un fait bien connu des administrateurs de bases de données qui doivent exécuter des tâches de maintenance pour éviter que les tables explosent.

Pour réduire la taille, mes premières recherches m’ont conduit à une procédure qui demande de passer par deux étapes de conversion, VDI->VMDK, puis VMDK->VDI. On commence par faire la première passe, de VDI à VMDK. Alors avant de vous montrer la commande, il faut passer par une commande supplémentaire, zerofree, qui permet de réécrire des zéros sur l’espace libre, parce que sinon :

$ vboxmanage clonehd --format vmdk SebLBNvm.vdi SebLBNvm.vmdk
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone medium created in format 'vmdk'. UUID: 17f3ff3e-d23d-4091-a68d-00e9173de795

Voyons le résultat :

$ ll
total 75949920
drwxr-xr-x 4 seboss666 seboss666 4096 04.10.2019 09:25 ./
drwxr-xr-x 3 seboss666 seboss666 4096 04.10.2019 08:54 ../
drwxr-xr-x 2 seboss666 seboss666 4096 04.10.2019 08:54 Logs/
drwxr-xr-x 2 seboss666 seboss666 4096 05.06.2019 09:25 Snapshots/
-rw------- 1 seboss666 seboss666 8603 04.10.2019 09:25 SebLBNvm.vbox
-rw------- 1 seboss666 seboss666 8603 04.10.2019 09:06 SebLBNvm.vbox-prev
-rwxrwxrwx 1 seboss666 seboss666 40155217920 04.10.2019 09:06 SebLBNvm.vdi*
-rw------- 1 seboss666 seboss666 37617532928 04.10.2019 09:25 SebLBNvm.vmdk

Comme on le voit, le résultat n’est pas très efficace. zerofree est un utilitaire qui s’exécute en mode rescue ou via un live cd/usb, et demande paradoxalement de remonter en read-only le volume concerné.

En cherchant un peu plus à propos de zerofree et des réductions d’image disque, je suis tombé sur le Saint Graal, spécifique au format VDI, la commande vboxmanage dispose d’une option « compact » qui fait exactement le boulot sans se taper la double conversion. Un gain de temps appréciable, et un résultat intéressant :

$ vboxmanage modifymedium disk "./SebLBNvm.vdi" --compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
$ l
total 50365484
drwxr-xr-x 2 seboss666 seboss666 4096 04.10.2019 09:53 Logs/
drwxr-xr-x 2 seboss666 seboss666 4096 05.06.2019 09:25 Snapshots/
-rw------- 1 seboss666 seboss666 8603 04.10.2019 10:29 SebLBNvm.vbox
-rw------- 1 seboss666 seboss666 8603 04.10.2019 09:25 SebLBNvm.vbox-prev
-rwxrwxrwx 1 seboss666 seboss666 11418992640 04.10.2019 10:59 SebLBNvm.vdi*

Ah ben c’est mieux. Alors évidemment, pour m’assurer que c’est peinard j’ai fait un backup du fichier avant, et je ne peux que recommander de faire cette sauvegarde au préalable.

Les formats de disques virtuels, tout un monde

Je pourrais presque faire un article complet sur les principaux formats de disque virtuel, de leurs avantages et inconvénients, les implications sur la consommation, les performances, et l’aspect ouvert ou non des formats. Mais bon, déjà là vous avez une petite bidouille si vous êtes dans une chasse à l’espace disque et que vous travaillez avec des machines virtuelles. Ici, le format était celui de Virtualbox, et donc j’ai utilisé les outils fournis avec, mais vous pouvez sinon vous tourner vers l’utilitaire qemu-img que j’avais évoqué il y a cinq ans (déjà !).

Pourquoi l’utilisateur et le mot de passe sur deux pages différentes ?

mercredi 13 novembre 2019 à 18:30

Avec la multitude de services auxquels on doit se connecter en permanence, vous avez sûrement remarqué que certains sites proposent de saisir l’utilisateur (ou l’adresse e-mail) et le mot de passe sur deux pages différentes. C’est parfois fluide, parfois pénible, et je suis tombé sur un article en anglais qui met en lumière les réflexions derrière cette technique. Une traduction, ça faisait longtemps n’est-ce pas ?

L’article original a été posté sur le blog de Twilio, un service proposant des API pour construire des applications de communications (très très résumé).

La raison la plus courante pour demander l’utilisateur et le mot de passe sur deux pages différentes est de pouvoir supporter à la fois :

  1. Le Single-Sign On, aka SSO (par exemple, « se connecter avec Google », ou un autre service comme Okta)
  2. Le login classique utilisateur/mot de passe

Cependant, ce flux de login embrouille les gens ce qui est probablement la raison pour laquelle vous lisez ceci ! Les sites Web présentent habituellement les champs utilisateur et mot de passe sur la même vue pour l’authentification. Donc vous n’êtes pas seuls si vous vous êtes déjà demandé pourquoi le champ du mot de passe manque ou est sur une autre page.

Cet article jette un oeil à la sécurité associée à cette décision concernant cette conception et propose quelques options pour concevoir des formulaires de connexion qui supportent plusieurs méthodes d’authentification.

Est-ce que séparer les champs utilisateur et mot de passe sur deux pages différentes est plus sécurisé ?

La séparation pourrait rendre les attaques « credential stuffing » (NdT : attaque voisine du brute-force, qui se concentre sur les dictionnaires d’identifiants fuités provenant d’attaques différentes) plus compliquées. Ça permet également à la plateforme de vérifier certaines conditions de sécurité. Par exemple, le site peut vérifier si le compte a activé l’authentification à deux facteurs, et sinon, demander de valider un CAPTCHA. La conception sur deux pages permet également de rendre plus difficile la création de sites de phishing avec des pages qui se ressemblent quand ça implique une redirection. Mais l’étape supplémentaire n’est probablement pas nécessaire à moins d’être dans un cas d’usage de SSO.

Il y a quelques discutions excellentes sur le sujet sur dev.to et Security Stack Exchange si vous voulez en savoir plus.

Options pour prendre en charge l’authentification à la fois SSO et utilisateur/mot de passe

1. Pages séparées pour les deux champs

Ce design fournit un chemin clair à suivre pour l’utilisateur dans les deux cas. L’étape de vérification de l’e-mail et l’action distincte (‘Next’) peut aussi simplifier le code de l’implémentation sous le capot. La séparation permet également les vérifications conditionnelles évoquées plus tôt.

Aujourd’hui, des sites comme Shopify, Yahoo, Google, Twilio font tous ça. Le bémol, c’est que les gens l’ont remarqué et se sont plaints. Également, ce flux n’est pas très pratique pour les gestionnaires de mots de passe et leur fonction d’auto-remplissage, mais les plus répandus (LastPass, 1Password) se sont adaptés.

2. Vérification sur une seule page

Des sites comme Dropbox et Segment proposent une belle interface pour ça. Un des ingénieurs de Segment m’a montré comment ça fonctionne. Si vous allez sur https://app.segment.com/ et entrez foobar@segment.com une option pour utiliser le SSO apparaîtra. Ca vérifiera le domaine de l’adresse e-mail et vérifier si l’organisation utilise le SSO avec Segment. C’est similaire à l’option 1 mais sans impliquer deux vues séparées. Cette option met d’abord l’accent sur l’authentification utilisateur/mot de passe, et peut fonctionner mieux avec les gestionnaires de mots de passe, mais ça demande une gestion via Javascript qui peut être capricieuse.

3. Champ de mot de passe optionnel

Une autre option est de rendre le champ du mot de passe optionnel. Hackerone, une plateforme de « bug bounty », procède ainsi sur son formulaire de login. Ca simplifie la page, ne nécessite pas la vérification du domaine, mais ça peut être malhabile/peu pratique pour les utilisateurs de SAML.

Montrer les deux champs sur une seule page permet aussi d’inclure d’autres méthodes d’authentification comme celles via les comptes de réseaux sociaux. Des sites comme Pinterest et Twitch proposent de telles options.

Comment concevoir le formulaire d’authentification parfait

Brad Frost a d’excellents conseils qui valent la peine d’être débattus dans son article « Ne soyez pas astucieux avec les formulaires de mots de passe« . Vous pouvez suivre la discussion sur Hacker News pour voir également d’autres idées. Évidemment les utilisateurs et mots de passe ne sont pas les seuls éléments à considérer sur un écran d’authentification. Vous pouvez renforcer la sécurité de votre flux avec l’authentification à deux facteurs de Twilio ou via la vérification du numéro de téléphone (NdT : ce que propose Twitter par exemple).

Est-ce que votre entreprise a résolu le problème d’une manière différente ? Où y a-t-il une autre raison pour séparer les pages utilisateur et mot de passe que je n’ai pas mentionné ? Dites le moi sur Twitter @kelleyrobinson ou allez voir la discussion sur cet article sur Hacker News.

Installer le WSL (et Ubuntu) sans Microsoft Store

dimanche 10 novembre 2019 à 18:30

Quand on a besoin d’un environnement Linux pour travailler mais que le poste de travail en question est un Windows, les solutions ne sont pas légions. Si j’avais opté pour une machine virtuelle auparavant, solution consommatrice de RAM, il existe désormais une option mature, bien qu’encore imparfaite, le Windows Subsystem for Linux. Comment s’en servir malgré ses imperfections ?

Présentation

Le sous-système Windows pour Linux est un des moyens inventés par Microsoft et livré en 2017 pour tenter de garder dans sa prison aspiratrice à données personnelles les développeurs partis soit sous Linux soit sous Mac, en leur proposant un moyen efficace de faire tourner un environnement de type shell, provenant d’une distribution linux « classique ». La principale différence, l’absence de noyau puisque le concept est de « traduire » à la volée les appels système des applications pour que ce soit le noyau de Windows qui fasse le boulot en dessous.

Quand je disais qu’il était imparfait, c’est notamment par son mode d’installation. En fait, vous activez d’abord la fonctionnalité WSL,  et il faut ensuite installer une distribution, qui s’affiche dans votre menu démarrer comme une application classique. Déjà, l’activation demande de redémarrer l’ordinateur, ce que je trouve toujours pénible. Mais surtout, les distributions sont à récupérer… par le Microsoft Store, ce qui nécessite un compte en ligne Microsoft. Mais c’est niet chez moi, Microsoft n’espionnera que le strict nécessaire (sous couvert de la fameuse télémétrie). En plus, j’en avais parlé dans le passé, je n’ai pas d’application du store ni le store lui-même sur l’installation personnalisée que j’ai faite.

Installation sans le store, c’est possible (sans la carte Kiwi)

Alors comme souvent, la ligne de commande est plus rapide que le clicodrome, on commencer par activer WSL, via Powershell en mode administrateur :

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Ensuite il faut redémarrer (j’ai déjà dit que c’était con ?). À partir de là, il faut trouver le moyen de récupérer les packages d’installation. Grâce à Internet et la magie des moteurs de recherche (Qwant en l’occurrence), et Stackoverflow, j’ai pu obtenir une liste d’images officielles à installer :

Ensuite, créez un dossier C:\Users\<votre_utilisateur>\<votre_distrib>. Avec 7-Zip (et uniquement celui-ci apparemment), décompressez le fichier téléchargé dans le dossier fraîchement créé. Lancez l’exécutable (par exemple, Debian.exe si vous avez choisi Debian), patientez que le système de base soit installé, et c’est terminé. Optionnel mais recommandé : créez un raccourci vers l’exécutable dans le menu Démarrer pour faciliter les lancements futurs.

L’imperfection va devenir moins imparfaite

La première version du WSL, comme je l’ai dit, avait un gros manque pour les adorateurs de Linux : l’absence d’un vrai noyau, et donc de la possibilité d’utiliser Docker (un Docker pour Linux s’entend). Ce manque est sur le point d’être « corrigé » par Microsoft avec la future version 2. Ceux qui sont contraints de garder un Windows tout en devant bosser sur des environnements Windows (comme moi), ça devient une solution très intéressante. Le problème reste Windows lui-même, sans parler de l’inévitable antivirus qu’on doit se paver.

En effet, jusque là, c’était la machine virtuelle qui constituait la solution à privilégier. Sauf que pour l’avoir vécu, c’est pas toujours ultra stable, très consommateur de mémoire, même en prenant une distribution ultra-légère, et basculer de l’un à l’autre n’est pas aussi naturel et fluide. Et pour avoir pété la VM de mon PC de jeu peu de temps avant d’en changer, je me suis dit que ça serait intéressant de se pencher sur la techno. Pour ma part, j’ai fait le choix d’Ubuntu, Canonical étant un partenaire de plus en plus courant de Microsoft sur pas mal de sujets, dont Azure.

Quelques bonus

Installer Terminator : Là, je vais faire le gros flemmard, et vous diriger vers le site Pofilo qui a écrit un très bon tuto. Un collègue de boulot ingénieur avait déjà tenté le coup à l’époque de la sortie du premier WSL, c’était encore un peu frais, mais ça semblait faire le taf.

Installer CentOS : Il n’y a pas de package officiel pour la distribution chapeautée désormais par Red Hat, mais vous pensez bien que certains ont cherché à corriger ce point. Je n’ia pas du tout essayé, mais si ça vous tente, vous pouvez tenter l’expérience.

Plus de détails sur WSL 2 : Comme souvent je vous recommande la lecture de NextINpact pour les détails à la fois sur WSL 2 (version du noyau, support Docker et FUSE) et sur le futur Windows Terminal qui doit là aussi séduire les exilés.

J’ai deux codes Xbox Game Pass à offrir

mardi 5 novembre 2019 à 18:30

Suite aux achats des pièces pour mon nouveau PC, j’ai reçu par mail deux codes pour l’activation du service Xbox Game Pass de Microsoft. Je n’ai pas l’intention de m’en servir, mais si vous êtes intéressé, je pensais plutôt vous les offrir.

Xbox Game Pass c’est quoi ?

Pour ceux qui connaissent peu, le marché du jeu vidéo a bien évolué en l’espace de dix ans. D’un marché purement physique, Internet s’est immiscé, pour d’abord proposer les mises à jour permanentes via le réseau permettant aux développeurs de faire du travail de roumain vendu au prix fort, puis désormais, vendre plus de « copies » numériques que de copies physiques. Mais pas question de s’arrêter ici, désormais le futur avance ses pions, avec deux éléments distincts, le cloud gaming, et les services de jeu à la demande.

Le cloud gaming consiste à faire tourner le jeu à distance, et à vous transmettre juste l’image résultante. Le jeu à la demande, vous propose un catalogue de jeux à installer sur votre machine, vous demandant donc d’avoir la machine nécessaire (sauf sur console évidemment). Les deux demandent de payer un abonnement mensuel. Arrêtez de payer, et vous n’avez plus accès à rien.

Le Xbox Game Pass est un de ces services de jeu à la demande. Le catalogue de plus d’une centaine de jeux peut être installé sur PC et/ou Xbox One. On y trouve à peu près de tout, de tous les styles, même si une centaine parait peu, le catalogue grossit avec le temps, et il y a de grandes chances que vous trouviez les styles de jeu et les ambiances qui vous conviennent. Mais ce n’est pas mon mode de consommation préféré (j’aime bien payer one shot et pouvoir réinstaller les jeux quand ça me plaît), et c’est pour ça qu’on en parle aujourd’hui.

Comment vous offrir les codes ?

Avec le CPU et la carte graphique, j’ai donc reçu deux codes différents, à récupérer sur le site AMD Rewards. Au début je m’étais dit « balance sur Twitter et chope les deux premiers », mais comme j’ai eu qu’une seule réponse, on va tenter autre chose 😀

Et puis bon, j’ai gueulé récemment sur un concours sur Twitter où le lot était aussi en jeu sur Instagram, alors voilà, on va la jouer autrement. Il ne faut pas de compte sur un site aux USA, puisqu’on va utiliser les commentaires du blog. Et au bout d’une période, qu’on va dire d’une semaine, pour le résultat ça sera un tirage au sort, du pur hasard informatique, que je ferai en vidéo pour ne pas biaiser le résultat. Faudra juste bien renseigner une adresse mail valide pour que je transfère les mails avec les codes 😉

Si vous vous sentez inspirés pour mettre un message montrant tous vos talents en français, faites-vous plaisir, mais ça ne fera aucune différence dans le résultat 😛