YtAutoDark – Version 3.0

J’ai passé plusieurs soirées la semaine dernière à écrire du code pour mon extension YtAutoDark. C’est donc avec une certaine satisfaction que je vous annonce que la version 3.0 est disponible sous Firefox et Chrome depuis le 25 juillet !

Pour cette nouvelle version, je me suis concentré sur des fonctionnalités des extensions que j’avais toujours voulu explorer: la page d’installation/mise à jour et les paramètres. C’est désormais chose faite. L’événement qui a justifié une nouvelle version pour cet été 2020, c’est l’arrivée d’une pull request sur le dépôt Github de l’extension. Un utilisateur a apporté des modifications à l’extension de son côté pour répondre à des besoins qui lui sont propres et a ensuite proposé que les modifications soient intégrées dans le code parent.

Les modifications apportées concernent en particulier les conditions de déclenchement de l’extension, afin que celle-ci suive la sélection du thème sombre ou clair effectuée par l’utilisateur au niveau du système d’exploitation ou du navigateur, via la propriété prefers-color-scheme. Une deuxième condition définie des règles horaires, respectivement avant et après deux bornes horaires pour le choix du thème. Si l’heure actuelle est inférieure à la première borne ou supérieure à la deuxième, le thème sombre sera activé, sinon l’extension rétablira le thème clair.

Afin de faire profiter les utilisateurs de ces ajouts et sans forcer pour tous ce comportement, j’ai donc ajouté une page de gestion des paramètres de l’extension, permettant d’activer au cas par cas l’une ou l’autre des fonctionnalités et de configurer les bornes horaires. J’en ai profité pour utiliser l’api storage dans sa version synchronisée, afin que les paramètres choisis soient partagés entre les différentes instances de navigateur d’un utilisateur authentifié. On notera au passage que si la partie sync n’est pas disponible, la configuration sera enregistrée automatiquement dans la partie locale du storage.

Deuxième ajout, la création d’une page d’information affichée après l’installation de l’extension, ou après sa mise à jour en cas de version majeure. Cette page me permet de m’adresser aux utilisateurs de l’extension, pour les informer des changements effectués. C’est un bon moyen, je trouve, pour prévenir de modifications du code s’exécutant dans le navigateur et de leur impact. De ce côté là, j’ai appris, après une bonne heure de recherche, que l’initialisation du listener sur l’événement onInstalled doit absolument être effectué dans le background script et non dans le content script. Ce qui est plutôt logique une fois que l’on connaît la solution.

Derniers ajouts, invisible ou presque, c’est la traduction de toutes les chaînes de caractères en français, afin de fournir l’extension dans ma langue maternelle à mes compatriotes français et autres francophones du monde. Et enfin, utilisation de webextension polyfill, pour l’utilisation des fonctions de stockage sous Chrome via browser comme mentionné dans la spécification et non chrome.

Avant de se quitter, petit point statistique. YtAutoDark, c’est, en cette fin juillet 2020, 141 utilisateurs actifs sous Firefox et 23 sous Chrome. Chers utilisateurs, si vous me lisez ici et que vous veniez à constater un dysfonctionnement de l’extension, n’hésitez pas à me le signaler ici en commentaires, ou en ouvrant une issue sur Github. Moi-même utilisateur quotidien de mon extension, je suis bien évidemment à l’affut du moindre bogue. Si vous en dénichez un, vous savez donc quoi faire.

Installation de sshpass sous macOS

Toujours dans le cadre de l’exécution d’ansible sous macOS, j’ai été confronté à une difficulté supplémentaire: sshpass n’était pas installé. Impossible de se connecter au serveur pour commencer le déploiement. Pas de solution simple du côté de brew, le canal officiel ne l’incluant pas. Retour aux bases donc, avec compilation du programme depuis les sources puis installation.

sshpass est disponible sur sourceforge. Après téléchargement de l’archive de la version 1.06 du programme, il ne reste plus qu’à extraire le code source et procéder à l’installation. Soit les étapes :

tar xvzf sshpass-1.06.tar.gz
cd sshpass-1.06
./configure
make
sudo make install

Source: Ansible OS X Mavericks You Must Install the sshpass Program

Ansible sous macOS: initializeAfterForkError

En exécutant récemment un script ansible, depuis mon ordinateur de travail, un mac (pour disposer simplement d’une base Linux en entreprise), j’ai rencontré l’erreur suivante :

+[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.

Après quelques recherches, il suffit d’ajouter la variable d’environnement OBJC_DISABLE_INITIALIZE_FORK_SAFETY à la valeur YES et de relancer le script, pour que celui-ci se termine correctement.

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

Source : StackOverflow

Petit calcul de coût en électricité pour l’auto-hébergement

En recevant ma dernière facture d’électricité, je me suis demandé quelle proportion, quel montant de la facture, provenait de la consommation électrique du Pi que j’utilise pour m’auto-héberger. Le but du calcul était également d’estimer le nouveau coût en cas de changement pour une machine assemblée pour l’occasion, plus puissante, et qui consommerait en moyenne 32Wh. Cette valeur de consommation s’appuie sur celle mesurée sur une ancienne machine que j’avais assemblé, à base de Core 2 duo et de RAM en DDR2. Pour la consommation du Pi (Modèle 3 B), j’utilise la valeur de 5Wh, mesurée sur un intervalle de presque deux mois. À noter qu’un maximum de modules sont désactivés du côté du Pi, comme la sortie HDMI entre autres, afin de réduire l’énergie utilisée. Passons maintenant au calcul.

J’effectue le calcul de coût pour une durée d’un mois de fonctionnement. Je choisis de me baser sur des mois de 30 jours et demi, soit 24 × 30,5 = 732 heures. J’obtiens donc pour le Pi, 3660 Wh, soit une consommation sur un mois de 3,66 kWh. Pour l’autre machine imaginaire, 23 424 Wh, soit 23,424 kWh.

Posons maintenant le prix de l’électricité en ce début d’année 2020.

  • kWh : 0,0965 €
  • TCCFE : 0,006545 €
  • TDCFE : 0,003273 €
  • CSPE : 0,0225 €

Soit un total par kWh de 0,128818 euros. Continuons le calcul pour obtenir le prix hors taxe.

  • Pour le Pi : 3,66 * 0,128818 = 0,47147388 € HT, soit après application de la TVA à 20% (* 1,20), nous donne le chiffre de 0,565768656 €.
  • Pour la machine imaginaire : 23,424 * 0,128818 = 3,017432832 € HT, soit après application de la TVA à 20% (* 1,20), nous donne le chiffre de 3,620919398 €.

Après calcul, j’aurais pu m’épargner le deuxième calcul et appliquer un facteur de 6 environ entre la consommation des deux machines, au coût obtenu pour le Pi.

Quel constat pouvons-nous maintenant effectuer ?

Tout d’abord, je trouve le coût en consommation électrique du Pi plus que correct, puisque nous restons en dessous d’un euro. En passant à une machine plus puissante, la facture augmente et la pertinence de conserver une telle machine à domicile, plutôt que de louer un serveur chez un hébergeur entre davantage en ligne de compte, si on ne considère que la question du prix (Chez OVH, premier prix VPS 3,60€ TTC, premier prix serveur Kimsufi 4,79€ TTC au 2 juillet 2020).

Rien de bien surprenant quand on y pense, mais ces quelques chiffres permettent d’affiner l’architecture cible de la solution d’auto-hébergement vers laquelle on souhaite se tourner. Je ne suis pas certain que le coût électrique soit parmi les facteurs principaux pris en compte au moment du choix, mais c’est indéniablement une composante du coût mensuel de l’hébergement à domicile. De mon côté, les facteurs principaux restent, entre autres, l’indépendance et l’assurance de la propriété de mes données; avec tous les risques que cela comporte.

[Note de service] Migration

Unicoda migre vers un nouveau serveur. En théorie, le changement devrait être transparent pour les lecteurs, le script de réinstallation s’étant exécuté sans erreur et puisque j’écris depuis la nouvelle instance. Cette nouvelle instance deviendra progressivement accessible avec la propagation de la nouvelle version de la zone DNS.

Si vous lisez ce texte, vous accédez donc bien à la nouvelle instance !