Initial commit
This commit is contained in:
132
content/interets/informatique/2021/01/01/introduction/index.md
Normal file
132
content/interets/informatique/2021/01/01/introduction/index.md
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
date: '2021-01-01T21:39:56+01:00'
|
||||
title: Introduction
|
||||
---
|
||||
|
||||
Nouvelle année, nouveau blog.
|
||||
Ce n’est pas mon premier, et je ne peux pas garantir que ce sera le dernier.
|
||||
Mais ma résolution pour 2021 : le garder au moins un an…
|
||||
|
||||
Effectivement, au fil des ans, depuis 1998, j’enchaîne la publication de sites divers et variés, souvent des blogs, et puis, ne cherchant pas particulièrement à les faire connaitre, je les supprime au gré de mes humeurs.
|
||||
Sans sauvegarde.
|
||||
Je suis comme ça : quand quelque chose ne m’intéresse plus, je n’y consacre plus de temps.
|
||||
Je redémarre à zéro.
|
||||
|
||||
L’effet pervers de ce système est que du coup, vous trouverez assez peu de choses sur moi sur Internet, autres que ce qui est mis en lien en haut à droite de ce site, et ce, d’autant que _Richard Dern_ n’est que mon nom de plume.
|
||||
|
||||
Je me réjouis de commencer un nouveau site le jour même d’une nouvelle année.
|
||||
C’est probablement mon côté psychorigide, mais j’éprouve une certaine satisfaction à mettre en ligne quelque chose de nouveau au premier de l’an.
|
||||
|
||||
## À propos de moi ##
|
||||
|
||||
### Mon handicap ###
|
||||
|
||||
Tout d’abord, il me semble important de vous dire quelle est ma caractéristique principale, ce qui me définit, ce qui fait de moi ce que je suis.
|
||||
Vous verrez après en quoi c’est important, mais avant, sachez que je le considère comme un **handicap**, pas comme un don.
|
||||
|
||||
Je suis **neuro-atypique**, plus vulgairement (et faussement) appelé **surdoué**.
|
||||
|
||||
C’est cette caractéristique qui vous fera m’apprécier ou me détester, selon votre point de vue sur la question, parce qu’il est inévitable que vous en ayez un.
|
||||
|
||||
Cela a de multiples conséquences : j’ai un QI élevé (142), et un système de pensées en arborescence (là où les neurotypiques ont une pensée linéaire), constamment actif, très rapide, rarement mis en défaut.
|
||||
|
||||
C’est un handicap en particulier sur le plan social.
|
||||
J’ai écrit plusieurs fois à ce sujet (par exemple, sur [reddit](https://www.reddit.com/r/self/comments/f525iz/being_smarter_than_98_of_people_could_be_a/)), mais la douance ne semble toujours pas être globalement acceptée, en tout cas pas en France.
|
||||
Les “surdoués” sont vus comme des personnes imbues d’elles-mêmes, se vantant de leur intelligence, et rabaissant les autres.
|
||||
Un ressenti particulièrement important (et injuste) compte tenu de mon inextinguible soif de connaissances, source de mon intérêt pour toute chose, cause du fait que j’ai un avis (souvent éclairé et toujours sourcé) sur de nombreux sujets.
|
||||
Je le ressens comme injuste (et comme un handicap), parce que, fondamentalement, si j’ai accès à ces connaissances, tout le monde aussi.
|
||||
Il ne tient qu’aux gens de s’instruire.
|
||||
Me détester pour ça est un **choix** profondément injuste.
|
||||
|
||||
La douance m’empêche de me faire comprendre clairement et succinctement.
|
||||
À cause de mon système de pensées en arborescence, dans le cadre d’une discussion simple, je passe mon temps à piocher des idées en relation avec cette conversation, plus ou moins éloignées de l’idée initiale mais toujours en rapport.
|
||||
Cela engendre un manque de compréhension chez l’autre, qui n’avance pas au même rythme que moi et se sent perdu.
|
||||
Ceci constitue l’autre raison pour laquelle je considère ma douance comme un handicap.
|
||||
|
||||
Je vais m’arrêter là pour l’instant en ce qui concerne ma douance, j’aurai le temps et l’occasion d’y revenir plus tard, au gré de mes articles sur ce nouveau site.
|
||||
|
||||
### Mon parcours ###
|
||||
|
||||
#### Personnel ####
|
||||
|
||||
J’ai commencé l’informatique à l’âge de cinq ans sur un Amstrad CPC 464, où j’ai découvert la programmation en BASIC fin des années 1980.
|
||||
J’ai pu ensuite accéder aux PC, puis à Internet en 1998, d’abord en fréquentant les premiers cybercafés puis avec ma propre connexion 512K par câble.
|
||||
|
||||
À cette époque, j’étais très actif sur MSN Chat et MSN Communities, ancêtres de WhatsApp et facebook (en schématisant).
|
||||
J’avais même reçu une certification de Microsoft pour la qualité de mes communautés d’aide en informatique.
|
||||
|
||||
Et puis j’ai commencé à développer en PHP.
|
||||
D’abord des modules pour le forum libre [phpBB](https://www.phpbb.com/), puis mes propres applications.
|
||||
J’ai ensuite laissé tomber PHP quelque temps (entre la version 3 et la version 5) pour travailler sur le framework .Net de Microsoft, en particulier en C#, et c’est ainsi que, vers 2005, j’ai commencé à travailler sur Cyca en tant que
|
||||
“laboratoire de développement”.
|
||||
|
||||
J’ai fait plusieurs tentatives pour m’intégrer à diverses communautés sur Internet, incluant facebook, twitter, ActivityPub, mais aussi des sites comme [LinuxFr.org](https://linuxfr.org/).
|
||||
J’ai tenu plusieurs blogs successifs, traitant toujours d’informatique, mais aussi d’autres sujets qui me sont chers.
|
||||
J’ai réalisé quelques applications que j’ai voulu publier, mais je n’ai jamais eu le “succès” que j’attendais.
|
||||
J’ignore toujours si c’est parce que ce que je faisais n’intéressait personne, si c’est parce que je ne savais pas comment interagir avec les autres humains, ou si c’est parce que je ne savais pas comment gérer la haine de certains de mes détracteurs.
|
||||
Quoiqu’il en soit, tout ou presque est désormais perdu, oublié.
|
||||
|
||||
Ce qui me ramène à mon handicap.
|
||||
Malgré ma présence sur Internet depuis ses débuts en France (je me souviens qu’à cette époque, je notais dans un carnet toutes les adresses web que je voyais dans les journaux et magazines, en prévision de les consulter quand j’aurais Internet, mais j’ai vite lâché prise face à la quantité), je n’ai pas de réseau.
|
||||
Je ne connais personne, et personne ne me connait contrairement à d’autres “vieux de la vieille”, dont certains
|
||||
sont apparus après moi sur Internet, mais qui sont toujours présents et populaires.
|
||||
Et cela a des conséquences aussi sur ma vie professionnelle.
|
||||
|
||||
#### Professionnel ####
|
||||
|
||||
Je n’ai pas très envie de m’étendre sur le sujet.
|
||||
Je n’ai connu que des déceptions professionnelles, parfois graves.
|
||||
La dernière en date, celle qui a causé mon chômage actuel, s’est terminée en burn-out.
|
||||
Ce chômage m’a permis de travailler sur Cyca, mais je n’ai pas eu le temps d’en faire un projet financièrement viable.
|
||||
Par manque de réseau, de compétences sociales, et peut-être aussi parce que personne n’en a l’intérêt, finalement.
|
||||
|
||||
En bref, mon parcours professionnel est un désastre, mais je garde espoir de trouver un employeur qui saura utiliser mes compétences (et mon handicap) à bon escient.
|
||||
|
||||
<details class="update"><summary>Mise à jour du 28 août 2021</summary>
|
||||
|
||||
A priori, [j'ai trouvé](/interets/informatique/2021/08/28/de-retour/#au-chômage-et-nouveau-travail) :smile:
|
||||
|
||||
</details>
|
||||
|
||||
## Ce que j’attends de ce site ##
|
||||
|
||||
J’ai beaucoup de choses à dire, sur beaucoup de sujets différents.
|
||||
J’ai besoin de les extérioriser.
|
||||
Mais jusqu’à présent, je n’avais peut-être pas la bonne approche.
|
||||
|
||||
Ce blog est sous-titré :
|
||||
|
||||
> Opinions impopulaires d’un robot parmi les humains
|
||||
|
||||
J’essaye de convoyer plusieurs choses dans ce sous-titre, lisible sur toutes les pages du site :
|
||||
|
||||
- Je m’exprime, en mon nom, sur mon site, mon propre point de vue, sur les sujets de mon choix. Cela fait beaucoup de possessifs, mais il me semble important de mettre en exergue que mes pensées m’appartiennent, et que je suis libre de les diffuser comme je l’entends, sans crainte de la censure
|
||||
- Ces idées sont impopulaires : mon point de vue est généralement différent des autres, sauf sur des sujets bien spécifiques où un élément extérieur vient corroborer une idée parfaitement inébranlable. De plus, elles concernent parfois des sujets disruptifs, clivants, quand je crois en l’inéluctable. Ma vision du monde est binaire ([booléenne](https://fr.wikipedia.org/wiki/Booléen) serait
|
||||
plus appropriée), en contradiction avec la vision populaire nuancée
|
||||
- Le terme “robot” fait référence à cette vision booléenne du monde, mais aussi à ma capacité à me focaliser sur un sujet précis sans en démordre. Mes sujets sont sourcés, vérifiables. Mais même quand, parfois, je m’aventure dans des domaines où les idées sont encore indécises, je maintiens mes positions. Ça ne veut pas dire que je suis fermé à toute discussion, mais cela signifie que si
|
||||
vous souhaitez me faire changer d’avis, il vous en coûtera (émotionnellement)
|
||||
- Enfin, “parmi les humains”, parce que je ne me sens pas à ma place dans la société humaine, capitaliste, et… sociale
|
||||
|
||||
J’ai bien conscience que présenté de cette façon, je n’incite pas le dialogue.
|
||||
Pourtant, les rares personnes qui ont des rapports sociaux avec moi ont l’air d’en être plutôt satisfaits.
|
||||
Je suis en couple depuis quinze ans 😊.
|
||||
|
||||
De toute façon, le but de ce site, pour moi, est surtout de communiquer sur ce qui m’intéresse.
|
||||
Si cela provoque une discussion intéressante et constructive, c’est un gros bonus, évidemment.
|
||||
Mais je ne tolère plus les _haters_, en particulier sur un site que j’héberge moi-même.
|
||||
|
||||
Au-delà de ça, j’espère conserver ce site en ligne plus longtemps que les précédents.
|
||||
C’est la raison pour laquelle j’ai choisi d’utiliser [Hugo](https://gohugo.io/) plutôt qu’un moteur de blog comme [WordPress](https://wordpress.com), [dotClear](https://fr.dotclear.org) (que je connais depuis longtemps) ou hébergé par un tiers.
|
||||
Hugo est moins facile à “casser” à cause d’un plugin, plus personnel.
|
||||
De plus, un site “statique” correspond à mes valeurs (peu ou pas du tout de javascript), et à l’usage d’un blog.
|
||||
Là encore, [j’aurai l’occasion de revenir sur ce sujet](/interets/informatique/2021/09/12/deployer-hugo-via-gitea-et-drone-ci/).
|
||||
|
||||
## Le mot de la fin, “Peinture fraîche” ##
|
||||
|
||||
Si vous avez tenu le coup jusqu’ici, merci !
|
||||
Mais attendez-vous à des articles encore plus longs à l’avenir.
|
||||
Comme je l’ai dit, j’ai beaucoup de choses à dire, et je ne suis sûrement pas doué pour être concis.
|
||||
|
||||
Comme dit précédemment, j’utilise Hugo pour publier ce site.
|
||||
J’ai donc toute latitude pour en faire ce que je veux, mais pour l’instant, c’est encore un peu vide.
|
||||
Patience : il y a plein de choses que j’aimerais faire ici…
|
||||
@@ -0,0 +1,277 @@
|
||||
---
|
||||
date: '2021-01-03T02:03:36+01:00'
|
||||
title: Presentation de Cyca
|
||||
---
|
||||
|
||||
> ⚠️ Cyca est en cours de réécriture, le dépôt git est toujours disponible mais
|
||||
> pas le site officiel.
|
||||
|
||||
Je vous présente aujourd’hui mon principal projet: Cyca, un gestionnaire de
|
||||
favoris et de flux.
|
||||
|
||||
- [Dépôt git](https://git.dern.ovh/richard/cyca)
|
||||
|
||||
## (Bref) Historique du projet ##
|
||||
|
||||
L’histoire de Cyca démarre il y bien longtemps. Au début, c’était une
|
||||
application de bureau écrite en C#, et disponible pour Windows uniquement. Par
|
||||
la suite, devenant de plus en plus à l’aise en PHP, j’en ai fait une application
|
||||
web. Mais que ce soit en C# ou en PHP, Cyca a toujours été mon projet
|
||||
“laboratoire”: chaque fois que je voulais tester une technique, un framework,
|
||||
une bibliothèque, je le faisais sur Cyca. Aujourd’hui, évidemment, les process
|
||||
de développement ont bien changé (parfois en bien), et ce n’est plus un projet
|
||||
laboratoire victime du syndrome de Frankenstein mais bien une application
|
||||
fonctionnelle depuis **septembre 2020** et l’apparition de son dépôt sur GitHub.
|
||||
|
||||
## Introduction ##
|
||||
|
||||
Cyca est un gestionnaire de favoris et de flux:
|
||||
|
||||
- Libre (publié sous licence [GNU GPL](http://www.gnu.org/licenses/gpl-3.0.html))
|
||||
- basé sur le web (écrit en PHP)
|
||||
- multi-utilisateurs
|
||||
- _desktop-centric_ (pensé pour le bureau avant le mobile)
|
||||
- non-intrusif (pas de notifications surgissantes ou visuellement agressives)
|
||||
- respectueux de la vie privée (via différents moyens, mais en particulier par
|
||||
l’**absence de système de télémétrie**)
|
||||
- aussi **simple** à utiliser que possible (peu de formulaires)
|
||||
- destiné à récolter autant d’informations que possible à propos de vos favoris
|
||||
et de vos flux
|
||||
|
||||
### Technique ###
|
||||
|
||||
La _stack_ de Cyca repose sur:
|
||||
|
||||
- [Laravel](https://laravel.com)
|
||||
- [Vue](https://vuejs.org/)
|
||||
- [TailwindCSS](https://tailwindcss.com/)
|
||||
|
||||
Puisque Cyca fait appel au framework Laravel, l’application supporte:
|
||||
|
||||
- une base de données MySQL/MariaDB, PostgreSQL, SQLServer ou SQLite (non
|
||||
recommandé pour des raisons de performance dans le cas d’une utilisation
|
||||
intensive)
|
||||
- Redis pour le cache, les sessions, les files d’attente
|
||||
|
||||
D’autres outils peuvent également être utilisés, tels que BeanStalkd, memcached,
|
||||
Amazon SQS, etc. De plus, le système de stockage de Cyca permet l’usage de
|
||||
systèmes de fichiers tels que FTP, Amazon S3 en plus du stockage local. En
|
||||
effet, Cyca est amené à stocker un certain nombre d’informations additionnelles
|
||||
et offre donc le choix de leur emplacement.
|
||||
|
||||
## Fonctionnalités ##
|
||||
|
||||
### Arborescence ###
|
||||
|
||||
Cyca permet la gestion de favoris (ou _documents_) au sein d’une arboresence de
|
||||
dossiers (par opposition à un système de _tags_, qu’il sera toujours possible
|
||||
d’implémenter ultérieurement s’il y a une demande). Cette arborescence constitue
|
||||
le premier panneau de l’interface, occupant le côté gauche de l’écran.
|
||||
|
||||
En outre, chaque utilisateur peut créer ou rejoindre un ou plusieurs groupes.
|
||||
Un groupe permet de partager avec plusieurs utilisateurs la même arborescence de
|
||||
dossiers, de documents et de flux, avec des permissions attribuables par
|
||||
utilisateur et par dossier, par le créateur du groupe.
|
||||
|
||||
<!-- Capture de Cyca -->
|
||||
|
||||
Chaque nouvel utilisateur se voit attribuer son propre groupe, par défaut
|
||||
inaccessible aux autres (“Seulement sur invitation”).
|
||||
|
||||
Un groupe peut être directement rejoint par un utilisateur, ou seulement sur
|
||||
invitation. Une fonctionnalité prévue dans la _roadmap_ impliquera un système
|
||||
de fédération, où il sera possible d’accéder à un groupe hébergé sur une autre
|
||||
instance de Cyca.
|
||||
|
||||
Il existe actuellement trois types de dossiers, chaque type ayant certaines
|
||||
caractéristiques:
|
||||
|
||||
- Le dossier _Éléments non-lus_ permet de lister tous les documents possédant
|
||||
des éléments de flux non-lus
|
||||
- Le dossier _Racine_, où seront stockés les autres dossiers et les documents
|
||||
- Les dossiers créés par l’utilisateur
|
||||
|
||||
Chaque groupe possède sa propre arborescence de dossiers, incluant un dossier
|
||||
_Éléments non-lus_ et un dossier _Racine_ qui lui sont spécifiques.
|
||||
|
||||
L’utilisateur a la possibilité de basculer d’un groupe à l’autre très facilement
|
||||
grâce aux liens situés au-dessus de la liste des dossiers.
|
||||
|
||||
<!-- Capture de Cyca -->
|
||||
|
||||
Sur cette capture, vous pouvez voir le groupe en haut (avec le nombre total
|
||||
d’éléments non-lus dans ce groupe), puis, en dessous, l’arborescence appartenant
|
||||
à ce groupe.
|
||||
|
||||
Un formulaire simple permet de créer ou renommer chaque dossier (à l’exception
|
||||
des dossiers _Éléments non-lus_ et _Racine_). Le _drag’n’drop_ permet de
|
||||
déplacer dossiers et documents.
|
||||
|
||||
Chaque dossier peut être déployé ou réduit (_expanded_ ou _collapsed_), comme
|
||||
dans toute arborescence digne de ce nom, avec toutefois une subtilité: il est
|
||||
possible de déployer ou réduire un dossier **et** ses sous-dossiers en
|
||||
maintenant un clic long sur l’icône en forme de triangle à gauche du dossier.
|
||||
Pratique pour cacher ou voir un sous-ensemble des dossiers en quelques instants.
|
||||
|
||||
<!-- Capture de Cyca -->
|
||||
|
||||
### Documents ###
|
||||
|
||||
Un dossier peut contenir un nombre illimité de documents. Cette liste occupe la
|
||||
partie médianne de l’écran. Elle peut afficher des listes différentes en
|
||||
fonction du dossier sélectionné: soit les documents effectivement liés au
|
||||
dossier en cours, mais aussi les documents contenant des éléments non-lus si le
|
||||
dossier éponyme est sélectionné.
|
||||
|
||||
Là encore, le formulaire pour ajouter un document est extrêmement simple: il
|
||||
suffit de renseigner l’URL du document (ou du flux) qui nous intéresse dans le
|
||||
panneau des détails (occupant la partie inférieure droite de l’écran).
|
||||
|
||||
Si vous renseignez l’URL vers un flux (RSS ou Atom), Cyca analysera ce flux à la
|
||||
recherche du document parent. Cyca ajoutera alors à vos favoris ce document à la
|
||||
place du flux RSS, qui, lui, sera associé au document.
|
||||
|
||||
Vous avez ensuite la possibilité de découvrir les informations collectées par
|
||||
Cyca à propos de l’URL qui vous lui avez soumise en sélectionnant le document,
|
||||
ce qui provoquera la modification du panneau de détails en bas à droite de
|
||||
l’écran:
|
||||
|
||||
<!-- Capture de Cyca -->
|
||||
|
||||
Vous constaterez sur la capture ci-dessus la présence d’un flux RSS qu’il est
|
||||
possible d’ignorer. Cyca l’a automatiquement découvert, et me proposera donc
|
||||
l’actualité de ce site dès qu’elle sera disponible.
|
||||
|
||||
Vous remarquerez en outre la coloration de certains éléments des adresses
|
||||
affichées dans Cyca, dans le but d’améliorer leur lisibilité, et éviter certains
|
||||
problèmes de sécurité les conçernant, malheureusement pas en évitant ces
|
||||
problèmes (Cyca ne peut pas deviner si le site que vous avez ajouté à vos
|
||||
favoris soit bien celui qu’il prétend être, en tout cas pas à ce stade), mais en
|
||||
vous présentant l’URL que vous venez d’ajouter d’une façon plus claire, plus
|
||||
lisible, en vous permettant de différencier rapidement les caractères disposant
|
||||
d’une graphie similaire (ce qu’on appelle les
|
||||
[homoglyphes](https://fr.wikipedia.org/wiki/Homoglyphe)).
|
||||
|
||||
Enfin, vous noterez en bas de cette capture un groupe “Réponse HTTP” dépliable
|
||||
qui contient toutes les informations récoltées lors de la requête HTTP au
|
||||
serveur.
|
||||
|
||||
Ces informations ont un but informatif. Ce n’est pas un outil de sécurité, qui
|
||||
ne cherche ni à récolter des données auxquelles il n’a pas accès, ni à faire
|
||||
usage de ces données à des fins malencontreuses. Les données récoltées par Cyca
|
||||
sont des données publiques, accessibles à tous, telles que la version du
|
||||
protocole, les en-têtes de la réponse, le type MIME, etc. Par ailleurs, aucune
|
||||
donnée personnelle n’est envoyée au serveur distant, pour qui c’est Cyca le
|
||||
client.
|
||||
|
||||
Pour les connaisseurs, c’est la librairie [Guzzle](https://docs.guzzlephp.org/en/stable/overview.html)
|
||||
qui est mise en oeuvre ici.
|
||||
|
||||
### Flux ###
|
||||
|
||||
Dès qu’un document est créé dans Cyca, l’application va automatiquement
|
||||
découvrir les flux associés de deux façons différentes:
|
||||
|
||||
- la méthode classique, consistant à analyser les balises ```<link>``` à la
|
||||
recherche de flux **déclarés**
|
||||
- la méthode brute, consistant à tester certaines URLs connues (par exemple,
|
||||
_/feed_, _/rss_, etc.)
|
||||
|
||||
Grâce à ce fonctionnement, et c’est le but de Cyca, même si vous ignorez que
|
||||
certains sites déclarent un flux, ou même si vous ignorez ce qu’est un flux,
|
||||
vous aurez accès à l’actualité de vos favoris, même si vous n’êtes pas encore
|
||||
consommateur de flux. Autrement dit: Cyca a été conçu pour vous engager sur la
|
||||
voie de la consommation des flux RSS et/ou Atom.
|
||||
|
||||
### Éléments de flux ###
|
||||
|
||||
Les éléments de flux sont affichés dans le panneau situé en haut à droite, et
|
||||
se présente sous la forme d’une liste, mêlant éléments lus et éléments non-lus
|
||||
dans tous les dossiers, à l’exception du dossier _Éléments non-lus_ qui ne
|
||||
listera que les éléments… non-lus.
|
||||
|
||||
<!-- Capture de Cyca -->
|
||||
|
||||
Vous pouvez voir ici que Cyca liste les éléments lus en gris clair, tandis que
|
||||
les éléments non-lus sont affichés en blanc. On dispose par ailleurs du titre
|
||||
du flux dans lequel chaque élément a été publié, ainsi que la date de
|
||||
publication.
|
||||
|
||||
Enfin, on aperçoit une fonctionnalité intéressante de Cyca: la mise en
|
||||
surbrillance, qui vous permet de mettre en exergue certaines expressions qui
|
||||
vous intéressent en particulier (ici, “Apple”).
|
||||
|
||||
Cyca respecte la décision des éditeurs de flux de ne pas inclure la totalité du
|
||||
texte dans leur flux. Certains, particulièrement les geeks, les revues
|
||||
scientifiques ou les systèmes d’alerte incluent le texte complet de leur
|
||||
publication, parfois même avec des pièces jointes (que Cyca ne supporte pas
|
||||
encore), mais d’autres se contentent d’un résumé, voire d’un simple lien.
|
||||
|
||||
Cyca n’a pas et n’aura jamais la volonté d’aller plus loin. Il existe des outils
|
||||
spécifiques à cet usage, mais ils ne respectent pas l’éthique que je veux pour
|
||||
Cyca.
|
||||
|
||||
### Mises en surbrillance ###
|
||||
|
||||
<!-- Capture de Cyca -->
|
||||
|
||||
Cyca vous permet de définir des mises en surbrillance, qui vous vous permettre
|
||||
d’isoler, dans la liste des éléments de flux, ceux qui vous intéressent
|
||||
particulièrement.
|
||||
|
||||
Il vous suffit pour cela de définir une expression et une couleur associée.
|
||||
Cette expression peut être un simple mot, ou une
|
||||
[expression régulière](https://fr.wikipedia.org/wiki/Expression_régulière).
|
||||
|
||||
### Autres fonctionnalités ###
|
||||
|
||||
- Cyca supporte un thème sombre et un thème clair, soit forcé soit adapté
|
||||
automatiquement en fonction du système d’exploitation
|
||||
- Cyca est actuellement capable de lire les méta-données d’une image et d’un
|
||||
fichier PDF
|
||||
|
||||
## Fonctionnalités à venir ##
|
||||
|
||||
- J’aimerais intégrer un système de fédération permettant, comme dit plus haut,
|
||||
de rejoindre un groupe hébergé sur une autre instance de Cyca
|
||||
- J’ai commencé à travailler sur une [librairie](https://github.com/RichardDern/php-gemini)
|
||||
pour le protocole [gemini](https://gemini.circumlunar.space/), qui permettra
|
||||
d’ajouter des liens sur ce réseau à Cyca…
|
||||
- …puis, en créant une abstraction des protocoles, permettre à Cyca de gérer
|
||||
des favoris sur n’importe quel réseau (FTP, Gopher, etc.)
|
||||
- J’aimerais introduire un moteur de recherche local, permettant de retrouver
|
||||
facilement documents et éléments de flux (en cours lors de la publication de
|
||||
cette présentation)
|
||||
- J’aimerais ajouter la possibilité de trier les documents et les flux selon
|
||||
les préférences de l’utilisateur
|
||||
|
||||
## De quoi Cyca a besoin ? ##
|
||||
|
||||
- D’argent: j’arrive en fin de droits au chômage, ce qui signifie que je ne
|
||||
pourrais plus travailler sur Cyca à temps plein. Mon objectif était de monétiser
|
||||
Cyca par la mise en place d’un service hébergé, mais je n’ai plus le temps
|
||||
d’atteindre cet objectif. Les dons me permettraient de financer l’électricité,
|
||||
le matériel, et le travail que je fournis sur Cyca, en attendant d’atteindre
|
||||
l’indépendance financière.
|
||||
- De traducteurs: Cyca n’est pour l’instant disponible qu’en anglais et en
|
||||
français.
|
||||
- De “colporteurs”: si vous avez lu mon premier post sur ce blog, vous savez
|
||||
déjà qu’il me manque un réseau social, de personnes en mesure de tester Cyca,
|
||||
en parler autour d’eux, et me remonter problèmes et suggestions.
|
||||
|
||||
## Conclusion ##
|
||||
|
||||
J’ai développé Cyca parce que j’estime que c’est une application qui répond à
|
||||
deux besoins que j’ai en tant qu’Internaute: gérer des favoris (en grande
|
||||
quantité) et des flux (de même). Il me semblait logique de faire les deux au
|
||||
même endroi.
|
||||
|
||||
C’est, pour moi, pour mon usage quotidien, une application essentielle, qui
|
||||
répond à ces besoins de la meilleure manière possible, selon mes critères.
|
||||
|
||||
Mais je souhaite qu’elle puisse répondre aux vôtres aussi, afin qu’elle figure
|
||||
dans le rang des outils “essentiels”, au même titre qu’un gestionnaire de mots
|
||||
de passe, ou d’un éditeur de texte.
|
||||
|
||||
Merci d’avoir lu cette présentation. J’espère qu’elle vous donnera envie de
|
||||
donner sa chance à Cyca, et d’en parler à vos contacts.
|
||||
@@ -0,0 +1,276 @@
|
||||
---
|
||||
date: '2021-01-04T11:16:36+01:00'
|
||||
title: Installer Gitea sur un NAS Synology
|
||||
---
|
||||
|
||||
Je vous propose un tutoriel sur l'installation de la forge Libre Gitea sur un
|
||||
NAS Synology avec une petite nuance par rapport à ce qu'on trouve habituellement
|
||||
sur le sujet: on n'utilisera pas Docker...
|
||||
|
||||
<!--more-->
|
||||
|
||||
En effet, j'ai à ma disposition un
|
||||
[DS216play](https://global.download.synology.com/download/Document/Hardware/DataSheet/DiskStation/16-year/DS216play/enu/Synology_DS216play_Data_Sheet_enu.pdf), basé sur un processeur STM Monaco
|
||||
[STiH412](https://www.st.com/resource/en/data_brief/stih412.pdf), processeur ARM
|
||||
à double-coeur à 1.5GHz (plus quatre coeurs dédiés à la vidéo). Un bon NAS pour
|
||||
un usage courant, mais qui ne supporte malheureusement pas Docker, ce qui aurait
|
||||
considérablement simplifié l'installation et la maintenance de logiciels tiers,
|
||||
en particulier celui qui nous intéresse aujourd'hui:
|
||||
[Gitea](https://gitea.io/en-us/).
|
||||
|
||||
La méthode que je vais décrire ici pourrait également être appliquée avec un NAS
|
||||
où l'on pourrait (techniquement) utiliser Docker, mais sans le vouloir. Je pars
|
||||
du principe que votre NAS est à jour (version 6.2.3 au moment d'écrire ce
|
||||
tutoriel), mais il est probable que cela fonctionne pour des versions
|
||||
antérieures.
|
||||
|
||||
## Installation de paquets supplémentaires ##
|
||||
|
||||
Notre procédure exige l'installation de paquets Synology supplémentaires. Allez
|
||||
dans le _Centre de paquets_, et installez:
|
||||
|
||||
- Git Server
|
||||
- MariaDB 10
|
||||
- phpMyAdmin
|
||||
|
||||
Tous trois se trouvent dans les paquets _Tierce partie_.
|
||||
|
||||
Notez le mot de passe que vous allez saisir dans MariaDB, vous en aurez besoin
|
||||
plus tard.
|
||||
|
||||
Ouvrez ensuite MariaDB via le lien présent dans le menu principal, afin de
|
||||
cocher la case "Activer la connexion TCP/IP", sur le port 3307.
|
||||
|
||||
## Activer SSH sur le NAS ##
|
||||
|
||||
Connectez-vous à l'interface d'administration de votre NAS, puis allez dans le
|
||||
_Panneau de configuration_. Activez le _Mode avancé_ en cliquant sur le lien en
|
||||
haut à droite, puis ouvrez _Terminal & SNMP_. Activez _SSH_, et laissez-le sur
|
||||
le port 22 pour le moment. Cliquez sur _Appliquer_.
|
||||
|
||||
## Créez un dossier dédié à Gitea ##
|
||||
|
||||
Allez maintenant dans _Dossier partagé_, et créez un partage _Gitea_.
|
||||
|
||||
- [x] Cacher ce dossier partagé dans "Mes emplacements réseaux".
|
||||
- [x] Masquer les sous-dossiers et les fichiers des utilisateurs sans autorisations.
|
||||
- [ ] Activer la corbeille.
|
||||
|
||||
Ne donnez aucun accès à personne pour le moment (c'est-à-dire, laissez tous les
|
||||
autres paramètres à leurs valeurs par défaut).
|
||||
|
||||
## Créer un utilisateur pour Gitea ##
|
||||
|
||||
Toujours dans le _Panneau de configuration_, ouvrez la page _Utilisateur_, et
|
||||
créez-en un nouveau, appelé comme vous le souhaitez, mais partons pour _gitea_.
|
||||
Affectez-lui un mot de passe dont vous vous souviendrez.
|
||||
|
||||
Laissez-le dans le groupe _users_. Par contre, donnez-lui les accès en lecture
|
||||
et en écriture dans le dossier partagé _gitea_ que vous venez de créer.
|
||||
|
||||
Vous pouvez éventuellement attribuer des quotas, mais laissez tout le reste aux
|
||||
valeurs par défaut.
|
||||
|
||||
## Se connecter en SSH au NAS ##
|
||||
|
||||
Depuis votre terminal préféré, initiez une connection SSH vers votre NAS, avec
|
||||
l'utilisateur _admin_.
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
ssh admin@nas
|
||||
```
|
||||
|
||||
Une fois votre mot de passe saisi, vous devriez être connecté.
|
||||
|
||||
## Télécharger Gitea ##
|
||||
|
||||
On va stocker Gitea dans son propre répertoire, dans le dossier partagé créé
|
||||
précédemment.
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
cd /volume1/gitea/
|
||||
mkdir bin
|
||||
cd bin/
|
||||
wget https://dl.gitea.io/gitea/1.13.1/gitea-1.13.1-linux-arm-6
|
||||
ln -s gitea-1.13.1-linux-arm-6 gitea
|
||||
ls -alh
|
||||
```
|
||||
|
||||
Vous devriez voir la sortie suivante, qui vous montre la création d'un lien
|
||||
symbolique _gitea_ vers le binaire téléchargé _gitea-1.13.1-linux-arm-6_, ce qui
|
||||
simplifiera les commandes futures.
|
||||
|
||||
```plaintext {linenos=false,class=not-prose}
|
||||
lrwxrwxrwx+ 1 gitea users 24 Jan 4 00:12 gitea -> gitea-1.13.1-linux-arm-6
|
||||
-rwxrwxrwx+ 1 gitea users 96M Dec 28 19:50 gitea-1.13.1-linux-arm-6
|
||||
```
|
||||
|
||||
## Tester ##
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
chmod +x gitea
|
||||
export GITEA_ROOT="/volume1/gitea"
|
||||
./gitea --port 13000 --custom-path $GITEA_ROOT/custom --config $GITEA_ROOT/custom/conf/app.ini
|
||||
```
|
||||
|
||||
Le port 3000 étant déjà utilisé, on demande à Gitea de démarrer sur le port
|
||||
13000, et on lui indique où stocker ses données.
|
||||
|
||||
La dernière ligne de la sortie provoquée par cette commande devrait ressembler à
|
||||
ça:
|
||||
|
||||
```plaintext {linenos=false,class=not-prose}
|
||||
2021/01/04 00:19:43 ...s/graceful/server.go:55:NewServer() [I] Starting new server: tcp:0.0.0.0:13000 on PID: 26230
|
||||
```
|
||||
|
||||
Confirmez en ouvrant votre navigateur, puis en allant à l'adresse de votre NAS,
|
||||
sur le port 13000:
|
||||
|
||||
> http://nas:13000/
|
||||
|
||||
En théorie, vous devriez voir la page d'accueil de votre instance Gitea.
|
||||
|
||||
N'y faites rien pour l'instant, on ne l'a pas démarré avec le bon utilisateur:
|
||||
c'était juste une _proof-of-concept_, il est maintenant temps de lancer Gitea
|
||||
avec son utilisateur attitré.
|
||||
|
||||
Retournez dans votre terminal, puis stoppez le processus avec
|
||||
<kbd>CTRL</kbd>+<kbd>C</kbd>.
|
||||
|
||||
## Démarrage de Gitea ##
|
||||
|
||||
Allez dans le _Panneau de configuration_, puis dans le _Planificateur de
|
||||
tâches_. Créez une nouvelle _Tâche déclenchée_. Nommez-la "Gitea", affectez
|
||||
l'utilisateur _gitea_, à l'évènement "Démarrage". Allez ensuite dans l'onglet
|
||||
"Paramètres de tâche". Le temps des tests, je vous recommande de cocher la
|
||||
case permettant d'envoyer les détails d'exécution par email. Une fois qu'on se
|
||||
sera assuré que tout fonctionne, on pourra aussi cocher la case "Envoyer les
|
||||
détails d'exécution uniquement lorsque le script se termine de manière
|
||||
anormale".
|
||||
|
||||
Dans la zone de texte du bas, "Script défini par l'utilisateur", copiez-collez
|
||||
ceci:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
export HOME="/volume1/homes/gitea"
|
||||
export GITEA_ROOT="/volume1/gitea"
|
||||
$GITEA_ROOT/bin/gitea --port 13000 --custom-path $GITEA_ROOT/custom --config $GITEA_ROOT/custom/conf/app.ini
|
||||
```
|
||||
|
||||
Enregistrez, puis faites un clic droit sur la tâche et _Exécuter_.
|
||||
|
||||
Si vous pouvez accéder à l'interface web de Gitea, comme pendant le test
|
||||
précédent, et qu'aucun mail ne vous est envoyé avec une sortie de programme,
|
||||
c'est qu'on peut passer à la configuration...
|
||||
|
||||
## Base de données ##
|
||||
|
||||
Dans le menu principal de DSM, ouvrez _phpMyAdmin_. Connectez-vous au compte
|
||||
_root_, avec le mot de passe spécifié pendant l'installation du paquet MariaDB.
|
||||
|
||||
Dans la barre en haut, cliquez sur _Comptes utilisateurs_, puis _Ajouter un
|
||||
compte d'utilisateur_.
|
||||
|
||||
Donnez-lui un nom (par exemple, _gitea_), un mot de passe, puis cochez les cases:
|
||||
|
||||
- [x] Créer une base portant son nom et donner à cet utilisateur tous les privilèges sur cette base.
|
||||
- [x] Accorder tous les privilèges à un nom passe-partout (utilisateur\_%).
|
||||
|
||||
Puis cliquez sur le bouton _Exécuter_ tout en bas à droite.
|
||||
|
||||
## Configuration de Gitea ##
|
||||
|
||||
De retour dans l'interface de Gitea, on peut remplir les champs liés à la base
|
||||
de données.
|
||||
|
||||
Le serveur MariaDB sur le NAS écoute sur le port 3307, au lieu du 3306 habituel.
|
||||
Le nom d'utilisateur et le nom de la base de données devraient être _gitea_ si
|
||||
vous avez suivi mes indications, et le mot de passe est celui que vous venez de
|
||||
donner à l'utilisateur _gitea_ dans MariaDB.
|
||||
|
||||
Il est important maintenant de définir les chemins d'accès aux fichiers:
|
||||
|
||||
- Emplacement racine des dépôts: /volume1/gitea/gitea-repositories
|
||||
- Répertoire racine Git LFS: /volume1/gitea/bin/data/lfs
|
||||
- Chemin des fichiers log: /volume1/gitea/log
|
||||
|
||||
Vous devez aussi vous assurer que les noms de domaines mentionnés correspondent
|
||||
à celui utilisé pour accéder à votre NAS.
|
||||
|
||||
Placez le port d'écoute SSH sur le port 10022, puis continuez la configuration
|
||||
avec les paramètres facultatifs.
|
||||
|
||||
## Tester ##
|
||||
|
||||
Allez dans la configuration de Gitea, une fois que vous y serez connecté, puis
|
||||
dans "Clés SSH/GPG".
|
||||
|
||||
Récupérez votre clé publique depuis une autre machine:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
ssh-keygen -t rsa
|
||||
cat ~/.ssh/id_rsa.pub
|
||||
```
|
||||
|
||||
La clé aura cette forme:
|
||||
|
||||
```plaintext {linenos=false,class=not-prose}
|
||||
ssh-rsa <série de caractères> <utilisateur>@<ordinateur>
|
||||
```
|
||||
|
||||
Dans Gitea, faites un copier-coller de cette clé publique dans "Ajouter une
|
||||
clé".
|
||||
|
||||
Créez maintenant un dépôt de test qui sera supprimé ensuite. Gitea vous donne
|
||||
même la marche à suivre:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
touch README.md
|
||||
git init
|
||||
|
||||
git add README.md
|
||||
git commit -m "first commit"
|
||||
git remote add origin ssh://gitea@<domaine>:13000/<utilisateur>/test.git
|
||||
git push -u origin master
|
||||
```
|
||||
|
||||
Arrivé là, il est fort à parier qu'un nom d'utilisateur et un mot de passe vous
|
||||
sera demandé, à la place de l'identification à clé publique. C'est tout
|
||||
simplement parce que les permissions du dossier _.ssh_ de l'utilisateur _gitea_
|
||||
ne sont pas les bonnes, et parce que Gitea n'a pas lancé son propre serveur SSH.
|
||||
|
||||
Dans votre terminal, toujours en tant qu'_admin_, exécutez les commandes
|
||||
suivantes:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
sudo su
|
||||
cd /volume1/homes/gitea
|
||||
chmod 0711 ./
|
||||
chmod 0711 ./.ssh/
|
||||
chmod 0600 ./.ssh/authorized_keys
|
||||
```
|
||||
|
||||
Vous devez également ajouter un paramètre à la configuration de Gitea, située
|
||||
dans le fichier _/volume1/gitea/custom/conf/app.ini_.
|
||||
|
||||
Dans la section `[server]`, rajoutez:
|
||||
|
||||
```ini {linenos=false,class=not-prose}
|
||||
START_SSH_SERVER = true
|
||||
```
|
||||
|
||||
Arrêtez Gitea en faisant:
|
||||
|
||||
```bash {linenos=false,class=not-prose}
|
||||
killall gitea
|
||||
```
|
||||
|
||||
Et relancez la tâche planifiée créée plus tôt. Gitea doit démarrer et un _push_
|
||||
ou un _pull_ vers votre dépôt de test devrait fonctionner.
|
||||
|
||||
## Mise à jour de Gitea ##
|
||||
|
||||
À chaque nouvelle version, il vous suffit de télécharger le fichier binaire, et
|
||||
de changer le lien symbolique vers lui, comme on l'a fait avant. Vous stoppez
|
||||
ensuite Gitea, sauvegardez les données comme vous le faites d'habitude avec DSM,
|
||||
et relancer la tâche planifiée.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
date: '2021-01-26T21:18:11+01:00'
|
||||
title: Un Livre en approche
|
||||
---
|
||||
|
||||
Après la publication de deux billets sous une bannière commune, "L'Humain, cette
|
||||
espèce primitive", j'ai voulu aller plus loin dans la réflexion, et en écrivant
|
||||
un troisième "chapitre", je me suis dit: "Pourquoi pas ?". Pourquoi n'en
|
||||
ferais-je pas un "vrai" livre, plutôt qu'une simple série de billets de blog ?
|
||||
|
||||
<!--more-->
|
||||
|
||||
Une vingtaine de jours plus tard, j'apporte les dernières touches à ce qui va
|
||||
devenir mon premier livre publié. Je suis actuellement en phase de relecture.
|
||||
|
||||
C'est un moment très stressant: est-ce que j'en ai trop dit ? pas assez ? est-ce
|
||||
que ça va plaire ? vais-je déchainer les _haters_ contre moi ? y aura-t'il
|
||||
quelqu'un pour me lire ? Les questionnements se bousculent dans ma tête,
|
||||
générant une peur tenace. Mais je finis toujours par me dire: j'ai _envie_ de le
|
||||
faire. J'ai écrit ce dont j'avais _envie_, et c'est sûrement ça, le plus
|
||||
important (même si savoir que ce qu'on a écrit est lu est quand même très
|
||||
agréable !).
|
||||
|
||||
On m'a souvent reproché d'être "aggressif" dans mes écrits antérieurs. C'est
|
||||
d'ailleurs probablement la raison pour laquelle je n'ai jamais voulu publier
|
||||
sous une autre forme que le blog. Mais, l'âge aidant probablement, je me suis
|
||||
assagi, posé. Et je suis _un peu_ fier d'y être parvenu: contrôler mes émotions
|
||||
est parfois difficile en tant que neuro-atypique, mais je crois que, dans ce
|
||||
livre, et malgré le titre que certains jugeront sûrement provocateur, je m'en
|
||||
sors plutôt bien. Les quelques personnes qui ont accepté leur rôle de
|
||||
relecteurs, connaissant mes anciens écrits, m'ont tous jugé sur cet aspect
|
||||
spécifique: je ne suis plus aussi "condescendant" ou "moralisateur". Ils avaient
|
||||
envie de lire, et ont trouvé ça intéressant. Je sais que ça n'a pas vraiment de
|
||||
valeur pour mes futurs lecteurs, mais ça m'encourage. J'ai - enfin ! - ce
|
||||
sentiment d'avoir progressé.
|
||||
|
||||
À tel point que j'ai déjà un second livre dans les cartons, mais dans un tout
|
||||
autre registre...
|
||||
|
||||
Une fois la relecture terminée et après quelques derniers fignolages, je rendrai
|
||||
le livre public. Comme j'ai besoin de me nourrir, me loger, et surtout d'avoir
|
||||
Internet (notez les priorités), le livre ne sera pas gratuit, mais il sera
|
||||
**libre**, publié sous la licence
|
||||
[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.fr). Je
|
||||
mettrai évidemment à disposition (gratuitement) les sources du livre dans un
|
||||
dépôt git qu'il me reste à définir (auto-hébergé ou sur GitHub).
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
date: '2021-02-28T23:11:30+01:00'
|
||||
title: 'Rant : Raspberry Pi 4'
|
||||
---
|
||||
|
||||
Je suis un utilisateur de Raspberry Pi depuis longtemps. Je possède au moins un exemplaire de chaque itération "grand public", à l'exception du 2. Chaque itération apporte son lot de nouveautés, d'espérences, et de déceptions. Voici un tour d'horizon de ce qui me frustre avec ces petites machines.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Le système d'exploitation
|
||||
|
||||
<details class="update"><summary>Mise à jour du 4 février 2022</summary>
|
||||
|
||||
Ça y est, le système d'exploitation Raspberry Pi OS 64 bits est [officialisé](https://www.raspberrypi.com/news/raspberry-pi-os-64-bit/).
|
||||
|
||||
</details>
|
||||
|
||||
Pour commencer, il n'existe pas de version 64bits stable du système d'exploitation "officiel", Raspberry Pi OS. Une version "bêta" est en développement depuis au moins le 28 mai 2020. Je trouve ça plutôt embêtant parce que :
|
||||
|
||||
- Le Raspberry Pi 3 dispose d'un processeur 64bits [depuis 2016](https://www.raspberrypi.org/interets/informatique/raspberry-pi-3-on-sale/)
|
||||
|
||||
L'architecture ARM 64bits existe [depuis 2011](https://en.wikipedia.org/wiki/ARM_architecture#64/32-bit_architecture). Toutefois, l'absence de système 64bits officiellement supporté par la fondation Raspberry Pi à l'heure actuelle n'est pas entièrement de sa faute : l'architecture ARMv8 n'est disponible "que" [depuis 2019](https://www.debian.org/releases/buster/) sous Debian (distribution sur laquelle repose Raspberry Pi OS).
|
||||
|
||||
- De nombreuses distributions tierces offrent une version 64bits pour le Raspberry Pi 3
|
||||
|
||||
C'est le cas de nombreuses distributions GNU-Linux, telles que [Ubuntu](https://ubuntu.com/download/raspberry-pi), [Alpine Linux](https://alpinelinux.org/downloads/), mais aussi [FreeBSD](https://www.freebsd.org/where/). Dès lors, on se demande pourquoi Raspberry Pi OS ne dispose pas déjà d'une version 64bits.
|
||||
|
||||
Je regrette toutefois que la plupart des systèmes d'exploitation "tiers" ne supportent pas officiellement le Raspberry Pi 4. Le problème, c'est que tout le monde annonce un support à 100% du Pi 3 _aujourd'hui_. Quand ils annonceront un support à 100% du Pi 4, je m'attends à ce qu'un hypothétique Pi 5 sorte sur le marché. Il y a un décalage assez désagréable entre la vente du matériel et la mise à disposition du logiciel.
|
||||
|
||||
Ce décalage est d'autant plus problématique qu'il est sans doute la source des problèmes assez graves qui ont miné les débuts du Pi 4, notamment en ce qui concerne l'[USB-C](https://bgr.com/2019/07/10/raspberry-pi-4-usb-c-charging-issue-how-to-fix-the-power-problem/), et d'autres manquements, en particulier du boot sur USB.
|
||||
|
||||
- Le Raspberry Pi 4 offre jusqu'à 8Go de mémoire vive, dont ne peuvent pleinement bénéficier que des applications 64bits
|
||||
- Il y a un [gain de performance](https://matteocroce.medium.com/why-you-should-run-a-64-bit-os-on-your-raspberry-pi4-bd5290d48947) significatif à passer sur un système 64bits, même sans disposer de 8Go de mémoire
|
||||
|
||||
Pour une utilisation "desktop", le gain est appréciable notamment dans la navigation web. Pour une utilisation "serveur", c'est le réseau et la gestion mémoire qui bénéficient du passage à 64bits. Je crois d'ailleurs me souvenir (sans pouvoir retrouver la source, malheureusement), que la fondation Raspberry Pi avait freiné le développement de la version 64bits, prétextant que le gain de performance n'était pas justifié, ce qui n'avait pas manqué de me rappeler [la légende](https://www.wired.com/1997/01/did-gates-really-say-640k-is-enough-for-anyone/) selon laquelle Bill Gates aurait affirmé que "640Ko était une quantité de mémoire suffisante"...
|
||||
|
||||
- Les choix logiciels tendancieux
|
||||
|
||||
Dernière critique en date : l'inclusion par défaut - et sans prévenir les utilisateurs - d'un dépôt Microsoft pour VSCode, surgie de nulle part. Problème éthique, problème de télémétrie, même partielle, et puis problème de confiance : comment faire encore confiance à Raspberry Pi OS ? Comment ne pas voir un rapprochement de Microsoft qui a déjà officialisé il y a longtemps un système de son cru pour cette plateforme ? Comment ne pas envisager que Microsoft ait des vues sur cette petite carte, et qu'il va finir par l'avaler ?
|
||||
|
||||
## Le matériel
|
||||
|
||||
- Supports de stockage
|
||||
|
||||
Le support de stockage de prédilection du Raspberry Pi est la carte micro-SD, qui n'est pas réputé être le plus fiable, notamment à cause de la durée de vie des cellules mémoire, mais aussi à cause de la fragilité et de la sensibilité du support. Je n'espère plus faire tourner un serveur 24h/24 sur un Raspberry Pi 4 et carte SD plus d'un an (et je n'achète que du SanDisk).
|
||||
|
||||
Bien que j'apprécie la possibilité de démarrer depuis le réseau, je trouve que c'est très complexe à mettre en oeuvre, et peu pratique à l'usage. C'est un plus indéniable dans une utilisation "industrielle" du Pi, mais dans un cadre privé, c'est trop incommode. Notez que cette remarque n'est pas spécifique au Raspberry Pi mais au _network boot_ en général.
|
||||
|
||||
Enfin, il est possible de démarrer depuis un périphérique USB. Par contre, c'est une fonctionnalité que j'estime avoir attendu trop longtemps (elle était disponible sur les versions précédentes du Pi, mais les changements matériels apportés au Pi 4 ont imposé des changements au niveau logiciel de la procédure de démarrage), et n'est toujours pas universelle, en particulier en ce qui concerne les SSD externes. Certains boitiers sont reconnus et permettent le boot par USB, d'autres non, et cela dépend parfois du système d'exploitation : Raspberry Pi OS peut démarrer depuis un boitier spécifique, mais FreeBSD ou même [Home Assistant OS](https://www.home-assistant.io/installation/raspberrypi) ne le peut pas. Et je ne parle pas du support de [TRIM](https://en.wikipedia.org/wiki/Trim_(computing)) qui nécessite parfois [une configuration spécifique](https://lemariva.com/interets/informatique/2020/08/raspberry-pi-4-ssd-booting-enabled-trim).
|
||||
|
||||
- Wifi
|
||||
|
||||
J'ai voulu tester le Raspberry Pi 4 en tant que point d'accès sans-fil pour un réseau hétérogène. À vrai dire, c'est pour cette raison précise que je les avais acheté initialement. Le but était de remplacer mes deux [Synology RT1900ac](https://global.download.synology.com/download/Document/Hardware/DataSheet/Router/16-year/RT1900ac/fre/Synology_RT1900ac_Data_Sheet_fre.pdf). Idéalement, je voulais faire du mesh, mais je me serai contenté de l'auto-sélection 2.4/5GHz, c'est-à-dire pouvoir configurer un SSID unique accessible sur les deux bandes de fréquence, mais aussi en 802.11g/n/ac, comme c'est le cas sur mes actuels [MR2200ac](https://www.synology.com/en-us/products/MR2200ac).
|
||||
|
||||
Malheureusement, je n'ai pas réussi à le faire, ni via [OpenWRT](https://openwrt.org), ni sur Raspberry Pi OS. Je ne sais pas si c'est une limitation matérielle ou logicielle, et je ne me suis pas posé la question depuis que j'ai opté pour les MR2200ac.
|
||||
|
||||
- Coût de possession
|
||||
|
||||
On vante le bas prix du Raspberry Pi, mais je trouve le coût total de possession très élevé comparativement à ses performances. Un rapport qui tend à diminuer avec la puissance offerte par le Pi 4, encore que son _form-factor_ ne permet pas de réutiliser les anciens boitiers, jusque là compatibles avec toutes les versions B de la carte. En plus, au-delà du _form-factor_, il faut aussi s'accomoder d'une hausse de température en fonctionnement, et donc opter pour un boitier adéquat, plus cher à cause de la présence d'un radiateur, voire d'un ventilateur. En comptant alors le Pi, le boitier, la carte SD, l'alimentation USB-C officielle pour éviter les problèmes de compatibilité, et un câble micro-HDMI (spécificité du Pi 4, les versions antérieures utilisaient un connecteur HDMI classique), on arrive facilement aux 80 euros pour une carte donnée à moins de 30 euros. Le geek excité par la découverte puis la possession de l'objet fait alors les comptes, et réalise trop tard que ce n'est pas si intéressant au final...
|
||||
|
||||
- Pilotes non-libres
|
||||
|
||||
Broadcom n'offre pas de pilotes ou de firmware libres pour ses composants matériels, en particulier le GPU et le réseau. J'avoue que depuis mon premier Pi 1B, j'espère voir arriver une version qui puisse tourner avec 100% de Logiciels Libres...
|
||||
|
||||
## La concurrence
|
||||
|
||||
J'ai conscience des difficultés que peut représenter le développement d'une telle machine, et son support logiciel. Ce qui m'embête, c'est qu'il existe une concurrence, qui dispose parfois de très nets avantages au niveau matériel. C'est notamment le cas de [ODROID](https://www.hardkernel.com), qui fait de **très** bons produits dans une gamme variée, y compris à base de CPU x86. Et je ne parle pas de la quantité impressionnante de clones, tels que le [Banana Pi](http://www.banana-pi.org), l'[Orange Pi](http://www.orangepi.org), etc.
|
||||
|
||||
De mon point de vue, ces solutions ne disposent pas de la même force "marketing" que la fondation Raspberry Pi, soit que ce soit pour des raisons financières ou culturelles. En effet, la plupart des concurrents du Raspberry Pi sont d'origine asiatique, tandis que le Pi est d'origine européenne (britannique pour être précis). Et c'est heureux pour son fabriquant, parce que je n'ai pas l'impression que le Pi dispose d'arguments suffisants pour être plus apprécié que ses concurrents.
|
||||
|
||||
## Relativisons...
|
||||
|
||||
En soi, ce n'est pas une mauvaise machine, loin de là. Le CPU est très bon, la quantité de mémoire disponible est appréciable, et en outre, le Pi 4 a fait un formidable bond en avant en ce qui concerne le réseau. Il y a des points à améliorer, c'est certain, et cela signifie que d'autres versions devraient voir le jour. Mais il faudrait que chaque nouvelle version matérielle s'accompagne d'un meilleur support logiciel au même moment, au moins en ce qui concerne le système d'exploitation officiel, et certains choix techniques devraient être reconsidérés : je préfèrerai par exemple un maximum de 4Go de mémoire vive, ce qui me semble amplement suffisant sur une telle machine, et utiliser l'espace physique ainsi gagné sur la carte pour y placer au moins 8Go de mémoire flash, avec des performances et une fiabilité accrue. J'aimerais aussi avoir le choix dans les sorties vidéo : deux prises micro-HDMI ne me semble être qu'une démonstration technique plutôt que le témoin d'un besoin réel. On pourrait très bien imaginer une version avec ces deux prises pour un usage desktop, voire une unique prise Display Port, et une version avec une seule prise HDMI au format classique pour un usage plus occasionel de la sortie vidéo (comme sur un serveur par exemple).
|
||||
|
||||
Bref, je _rant_ contre le Pi, mais je continue de l'utiliser, et j'achèterai surement la prochaine itération...
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
date: '2021-03-05T21:53:34+01:00'
|
||||
title: Plaidoyer en faveur de l'intelligence
|
||||
---
|
||||
|
||||
Je ne supporte plus l'acceptation sociale de la ségrégation de l'intelligence. Comment peut-on considérer comme acceptable la maltraitance dont sont victimes les gens intelligents, de leur plus jeune âge jusqu'au moment de leur isolement social total ? Comment peut-on voir des oeuvres culturelles tourner en dérision l'enfermement d'un « intello » dans un vestiaire, moquer ses passions et centres d'intérêts, mépriser ses choix de vie sans éprouver au moins de la gêne ?
|
||||
|
||||
À une époque où les mouvements sociaux se font de plus en plus fréquents et intenses, où chaque groupe revendique à raison le droit d'exister, les gens intelligents font toujours l'objet d'exclusion sociale. Le regard qu'on porte sur eux est toujours imprégné de dégoût, de répulsion, de mépris. On les croit égocentriques, on les croit bizarres, on les croit mégalomanes. On leur prête de mauvaises intentions, on se persuade qu'ils vont manipuler les autres pour arriver « à leurs fins », sans même savoir ce qu'elles sont.
|
||||
|
||||
Même le milieu médical n'a aucune considération pour l'intelligence des patients. Pourquoi les médecins pressent-ils tout le monde à faire du sport, alors qu'ils ne pressent personne pour entretenir leur activité intellectuelle, alors même que l'on sait à quel point cette activité est essentielle pour ralentir la dégénérescence du système nerveux et permet donc de se maintenir en bonne santé ? Comment accepter qu'un psychiatre traite un patient de nazi parce qu'il souhaite intégrer une association comme Mensa, sous prétexte que c'est de la « discrimination intellectuelle », alors que c'est exactement ce que fait le monde du travail en exigeant des quantités invraisemblables de diplômes et de compétences, ces mêmes diplômes qui ont permi à ces mêmes médecins d'accéder à leurs fonctions ?
|
||||
|
||||
Pourquoi l'intelligence fait-elle si peur ? Personne ne se sent menacé par un sportif de haut niveau, et pourtant, tout le monde se sent menacé par les gens intelligents. Comment peut-on dire que c'est « fatiguant de réfléchir », ou au contraire, que les métiers intellectuels sont réservés aux oisifs ? De quel droit peut-on placer les gens intelligents à de telles extrêmités sur le spectre de la perception individuelle ? C'est réducteur, désobligeant, en plus d'être faux.
|
||||
|
||||
Ce n'est pas le football qui produit des téléphones portables. Ce n'est pas le rugby qui envoie des satellites dans l'espace. Ce n'est pas la chasse qui informe le monde. Ce ne sont pas les activités physiques qui permettent l'évolution de la société et de la technologie, la communication d'un bout à l'autre du monde, la guérison des maladies, ou l'intégration sociale. Et pourtant, ce n'est pas l'intelligence qui est récompensée, reconnue. L'intelligence ne déplace pas des dizaines de milliers de personnes dans des stades. L'intelligence n'est pas suivie par plus de deux milliards de personnes à la télévision.
|
||||
|
||||
Je dénonce l'attitude scandaleuse de la société à l'égard des personnes intelligentes. Même le terme « intelligent » indigne, offusque, comme si l'on s'adressait à un dictateur qui méprise son peuple ; un terme dont on a fait une insulte, crachant le venin du mépris à la face de « ceux qui savent ». Comme si « savoir » était l'affaire d'une élite dénigrée par le bas-peuple qui ne cherche pas à comprendre quoi que ce soit, haïssant juste pour haïr.
|
||||
|
||||
Je suis intelligent, et je ne veux plus avoir peur de le dire. Je veux que toutes les personnes intelligentes puissent se sentir comme des athlètes qui gonflent leurs muscles pour montrer ce qu'ils valent et suscitent l'admiration. Je veux que toute personne intelligente soit appréciée, intégrée à la société, valorisée, comme le sont les sportifs. Je veux qu'on suive avec autant de passion la remise des Prix Nobels que la Coupe du Monde de football. Je veux qu'on puisse dire : « Je suis intelligent », et que cela soit aussi anodin que dire : « Je suis fort ». Je veux que l'intelligence soit banale, commune, appréciée de tous, et non plus moquée, dévalorisée, ou méprisée. Je ne veux plus que les gens intelligents aient à subir de harcèlement, comme c'est actuellement le cas dans l'indifférence générale.
|
||||
|
||||
Le temps est venu désormais pour apprécier l'intelligence, car il ne serait rien de ce que la société possède aujourd'hui sans elle. On ne peut continuer à l'exploiter de la sorte sans un juste retour de bâton. Il n'existe aucune raison pour que cette situation perdure, pas même celle de ne pas offusquer les moins intelligents. Seriez-vous capable de tenir ne serait-ce qu'un semi-marathon ? Est-ce pour autant que vous dénigrez ceux qui y parviennent ? Alors pourquoi dénigrez-vous ceux qui connaissent les mathématiques ou la physique, ou qui ont de la culture générale ?
|
||||
|
||||
Haussons-donc le ton, face à ces petits chefs méprisants, face à ces brutes pour qui l'école est ennuyante, et face à toutes ces personnes étrangères à l'instruction. Révoltons-nous contre le diktat du bien-être physique, et contre l'élitisme nauséabond de la culture d'entreprise qui exige des compétences qu'elle ne valorise jamais. Ne tolérons plus aucune forme de harcèlement et rappelons à tous que l'intelligence n'est pas la bénédiction ou le don qu'ils croient ou qu'ils jalousent.
|
||||
|
||||
#HQItoo
|
||||
@@ -0,0 +1 @@
|
||||
file: images/85pTzq.webp
|
||||
@@ -0,0 +1 @@
|
||||
file: images/Fh4mxG.jpg
|
||||
@@ -0,0 +1 @@
|
||||
file: images/PRPhit.jpeg
|
||||
@@ -0,0 +1 @@
|
||||
file: images/VKY27Y.jpg
|
||||
@@ -0,0 +1 @@
|
||||
file: images/WRUmZN.jpg
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 71 KiB |
BIN
content/interets/informatique/2021/03/09/mon-reseau/images/Fh4mxG.jpg
Executable file
BIN
content/interets/informatique/2021/03/09/mon-reseau/images/Fh4mxG.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
BIN
content/interets/informatique/2021/03/09/mon-reseau/images/PRPhit.jpeg
Executable file
BIN
content/interets/informatique/2021/03/09/mon-reseau/images/PRPhit.jpeg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 119 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
146
content/interets/informatique/2021/03/09/mon-reseau/index.md
Normal file
146
content/interets/informatique/2021/03/09/mon-reseau/index.md
Normal file
@@ -0,0 +1,146 @@
|
||||
---
|
||||
date: "2021-03-09T02:04:16+01:00"
|
||||
title: Mon réseau
|
||||
---
|
||||
|
||||
J’avais envie d’honorer une vieille tradition geek : présenter mon réseau, son architecture, son contenu, etc. Deux objectifs sont poursuivis : un objectif de mémoire - un jour, je relirai cet article avec nostalgie… - et un objectif d’échange - si vous trouvez des infos intéressantes ici, ou si vous avez des idées d’amélioration.
|
||||
|
||||
<!--more-->
|
||||
|
||||
- L’historique de cet article est consultable depuis [ma forge logicielle](https://git.dern.ovh/Blog/contenu/src/branch/main/interets/informatique/2021/03/09/mon-reseau/index.md)
|
||||
|
||||
## Généralités
|
||||
|
||||
Je suis client [free](https://portail.free.fr) depuis 2004, et j’ai la fibre depuis mars 2023.
|
||||
|
||||
## Infrastructure
|
||||
|
||||
### Freebox
|
||||
|
||||
Ma Freebox est une [Pop](https://www.free.fr/freebox/freebox-pop/) configurée en bridge. Je dispose d’une adresse IPv4 « full-stack », demandée dès que l’option était disponible, et de l’IPv6 natif.
|
||||
|
||||
### Routeur
|
||||
|
||||

|
||||
|
||||
Mon routeur est un [AWOW AK34](https://awowtech.com/products/awow-mini-pc-ak34). Il dispose d’un Celeron N3450, 6Go de DDR4, un SSD de 128Go et surtout, deux ports gigabit. Il est installé sous [OpnSense](https://opnsense.org/).
|
||||
|
||||
L’un des ports est relié à la Freebox ; du point de vue de OpnSense, c’est l’interface _WAN_. L’autre port est relié au switch ; c’est l’interface _LAN_.
|
||||
|
||||
La freebox Pop permet d’atteindre en théorie un maximum de 5GB/s en téléchargement et 700Mb/s en envoi.
|
||||
En pratique, les 5Gb/s sont répartis entre les deux ports filaires 1Gb/s et le port 2.5GB/s, et le wifi.
|
||||
|
||||
Par conséquent, mon architecture bride d’office l’ensemble de mon réseau à 1GB/s en téléchargement.
|
||||
Je pourrais passer à 2.5Gb/s en changeant de routeur, mais je ne dépasserai pas ce débit avec la Pop.
|
||||
|
||||
Il faut cependant relativiser tout cela : je me suis satisfait d’une connexion ADSL à 16Mb/s en téléchargement et 1Mb/s en envoi pendant très, très longtemps.
|
||||
|
||||
En outre, en tant qu’auto-hébergeur, c’est surtout le débit en envoi qui m’intéresse, et ce débit n’est pas bridé par mon architecture.
|
||||
|
||||
Je note que le passage à de tels débits n’est pas sans conséquences sur les performances de mon routeur.
|
||||
Je ne peux saturer la connexion 1Gb/s qu’en désactivant Suricata.
|
||||
Avec la protection activée, le débit plafonne à environ 250Mb/s, tout en sollicitant fortement le CPU.
|
||||
|
||||
### Switch
|
||||
|
||||

|
||||
|
||||
Je dispose d’un switch [TP-Link TL-SG1016](https://www.tp-link.com/fr/business-networking/unmanaged-switch/tl-sg1016/) de 16 ports.
|
||||
|
||||
### Wifi
|
||||
|
||||

|
||||
|
||||
J’ai trois [Synology MR2200ac](https://www.synology.com/fr-fr/products/MR2200ac) configurés en mesh. Cela confère un certain nombre d’avantages :
|
||||
|
||||
- toute la configuration de mon réseau sans-fil se fait depuis une seule interface (ce n’est pas spécifique à Synology)
|
||||
- je n’ai à configurer qu’un seul SSID sur toutes mes machines, qu’elles utilisent la bande de 5GHz, 2.4GHz, en wifi g, n ou ac
|
||||
- la connexion est stable, même en basculant d’un point d’accès à l’autre
|
||||
|
||||
### Serveur domotique
|
||||
|
||||

|
||||
|
||||
Le serveur domotique est un Kodlix GN41, doté d’un Celeron N4100, de 8Go de mémoire vive et d’un SSD Samsung 850 EVO de 120Go.
|
||||
Il fait tourner [Home Assistant](https://www.home-assistant.io/).
|
||||
|
||||
J’ai intégralement conçu et manufacturé toute la domotique de mon logement. J’ai dessiné les circuits imprimés, et je les ai réalisés grâce à la bonne vieille méthode du bain au perchlorure de fer, apprise plus de vingt ans plus tôt en cours de technologie…
|
||||
|
||||
Ma domotique est donc constituée des éléments suivants, tous construits autour d’[ESP8266](https://www.espressif.com/en/products/socs/esp8266) :
|
||||
|
||||
- 5 thermostats
|
||||
|
||||
Ils disposent de trois modes, « Présent », « Nuit » et « Absent ». Les plages horaires de chaque mode sont définies dans un calendrier spécifique à chaque thermostat. L’ESP8266 présent dans chaque boitier mural contrôle simplement un relais, et capte la température et l’humidité de la pièce via un SHT31-D.
|
||||
|
||||
- 7 lumières, dont 6 bandeaux de LEDs et une prise Sonoff S20
|
||||
|
||||
J’ai défini deux entrées dans Home Assistant, respectivement pour l’extinction et l’allumage « inconditionnel » de l’éclairage. Ainsi, quoiqu’il arrive, les lumières automatisées (certaines ne le sont pas parce que ce n’est pas nécessaire) ne s’allumeront jamais dans cette plage horaire (typiquement entre 2h30 et 5h45, soit entre l’heure à laquelle je me couche et celle à laquelle mon épouse se lève).
|
||||
|
||||
En outre, les lumières automatisées ne s’allument que si la luminance extérieure fournie par la station météo est en dessous d’un certain seuil que je peux définir pour chacune d’entre elles. Enfin, le calendrier me permet de définir les plages horaires pendant lesquelles elles doivent présenter une scène particulière. J’ai défini quatre types d’ambiance : heures de passage (pour un éclairage à pleine puissance), éclairage normal, éclairage tamisé, et éteint.
|
||||
|
||||
Un bandeau de LEDs est contrôlé par un capteur de mouvement de type PIR, dont la seule dépendance est la luminance extérieure : même en présence de mouvement, il ne s’allumera pas s’il fait encore jour. Un autre bandeau est uniquement contrôlé par un bouton poussoir. Un dernier ne peut être contrôlé que par Home Assistant.
|
||||
|
||||
Au niveau électronique, chaque contrôleur pilote simplement trois MOSFETs (également des IRLZ34n), et dispose de deux entrées (pour un bouton ou un capteur de mouvement). C’est mon premier projet électronique à usage réel.
|
||||
|
||||
- 2 horloges
|
||||
|
||||
J’aime bien avoir l’heure partout où je suis. Si j’ai la date complète, et la température extérieure, c’est encore mieux… Alors j’ai conçu deux horloges dotées d’un écran LCD 16x2 piloté en I2C par un ESP8266. Rien de compliqué, rien qui nécessite un circuit imprimé, juste quelques câbles.
|
||||
|
||||
- 1 bouton d’appel
|
||||
|
||||
Utilisé pour que mon épouse puisse me signifier sans hurler à travers toute la maison qu’elle va faire dodo quand je suis enfermé dans mon bureau… Quand elle appuie sur son bouton d’appel, j’ai une alerte sur mon tableau de bord. Un appui de ma part sur le tableau de bord éteint sa LED pour lui signifier que j’arrive.
|
||||
|
||||
- 1 bouton « Linge »
|
||||
|
||||
Pour que mon épouse puisse m’indiquer s’il y a du linge à étendre ou à passer au lave-linge, je lui ai créé un petit boitier logé près de la machine à laver, dérivé du bouton d’appel, et doté de deux boutons et deux LEDs. Cela provoque l’affichage d’un avertissement sur mon tableau de bord.
|
||||
|
||||
Tous ces périphériques tournent sur des ESP8266. En conséquence, j’ai installé [ESPHome](https://esphome.io/) qui gère tout ça via de simples fichiers de configuration yaml, et connecte le tout à Home Assistant. Ça rend tout le processus très agréable et facile à utiliser et maintenir au quotidien.
|
||||
|
||||
J’ai également installé deux caméras sous [motionEyeOS](https://github.com/ccrisan/motioneye/) sur un Raspberry Pi 0W et un Pi 4.
|
||||
|
||||
### Serveur principal
|
||||
|
||||

|
||||
|
||||
Mon serveur préféré (chut, ne le dites pas aux autres), c’est aussi celui qui m’a coûté le plus cher, mais c’est le plus polyvalent. C’est un [minisforum U820](https://www.amazon.fr/dp/B096R95YPG). Son Core i5 8259U (4c/8t @2.30GHz) est accompagné de 16Go de DDR4.
|
||||
|
||||
Il dispose de l’USB-C, plein de ports USB 3.0, deux ports ethernet (dont un 2.5Gbit/s), de HDMI et de Display-Port, ce qui me donnerait presqu’envie de le reconvertir en machine desktop plutôt que serveur si j’en avais l’utilité. Mais surtout, il offre deux baies pour SSD 2.5in, ce qui en fait le meilleur candidat au poste de serveur de stockage. Je lui ai donc collé mes deux Samsung 860 EVO de 500Go. Il tourne sous NixOS.
|
||||
|
||||
Sa puissance m’est très profitable, puisque j’y fais tourner :
|
||||
|
||||
- Caddy (en reverse-proxy ou serveur web direct pour mes applications disponibles depuis l’extérieur de mon réseau local)
|
||||
- Gitea (ma fameuse forge logicielle)
|
||||
- PostgreSQL (stockage de toutes mes bases de données utilisées par les autres applications)
|
||||
- Redis
|
||||
- plus quelques autres services natifs et containers
|
||||
|
||||
### Tableau de bord
|
||||
|
||||
Le tableau de bord que je mentionne depuis avant est un iPad Pro 10.5 de récup.
|
||||
|
||||
### Station de travail
|
||||
|
||||
Ma station de travail est un Mac mini M2.
|
||||
Je travaille sur une TV LG 55C3 et un écran portable [Arzopa de 16 pouces](https://www.amazon.fr/dp/B0CJCBQYDY).
|
||||
J’ai abandonné la souris pour un TrackPad.
|
||||
|
||||
<details class="read-more"><summary>Voir aussi</summary>
|
||||
|
||||
- [/interets/informatique/2024/01/15/2024-l-annee-du-changement/](/interets/informatique/2024/01/15/2024-l-annee-du-changement/)
|
||||
- [/interets/informatique/2024/01/31/test-de-l-ecran-portable-arzopa-z1fc/](/interets/informatique/2024/01/31/test-de-l-ecran-portable-arzopa-z1fc/)
|
||||
- [/interets/informatique/2022/03/11/a-la-recherche-du-clavier-parfait-personnalisation-terminee/](/interets/informatique/2022/03/11/a-la-recherche-du-clavier-parfait-personnalisation-terminee/)
|
||||
- [/interets/informatique/2023/10/02/mort-de-ma-steelseries-aerox-3-wireless/](/interets/informatique/2023/10/02/mort-de-ma-steelseries-aerox-3-wireless/)
|
||||
|
||||
</details>
|
||||
|
||||
### Station de jeu
|
||||
|
||||
<details class="read-more"><summary>Voir aussi</summary>
|
||||
|
||||
- [/interets/informatique/2022/04/15/mon-nouveau-pc-de-jeu-est-arrive/](/interets/informatique/2022/04/15/mon-nouveau-pc-de-jeu-est-arrive/)
|
||||
|
||||
</details>
|
||||
|
||||
## Consommation électrique
|
||||
|
||||
Je dispose d’un onduleur Eaton Ellipse 1200 Pro qui présente la caractéristique intéressante de me fournir la consommation réelle de ce qui est branché dessus. Ainsi, je peux dire que l’ensemble de mon réseau consomment au total moins de 40W en moyenne. Je trouve que c’est très satisfaisant. L’onduleur pourrait ainsi fonctionner pendant deux heures sur batterie si une coupure de courant devait survenir. Largement de quoi voir venir…
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
date: "2021-03-14T02:25:43+01:00"
|
||||
title: E-commerce et auto-hébergement
|
||||
---
|
||||
|
||||
Un état des lieux non exhaustif des Logiciels Libres d'e-commerce disponibles en auto-hébergement. _Spoiler alert_ : c'est affligeant.
|
||||
|
||||
<!--more-->
|
||||
|
||||
## Contexte
|
||||
|
||||
Suite à une discussion privée avec @Shinra[^shinra] sur mon (ancien) microblog, je prends conscience que tout le monde n'a pas nécessairement envie d'acheter mon premier livre, [_L'Humain, cette espèce primitive_](/interets/philosophie/2023/05/18/lhumain-cette-espece-primitive-lhumain-cette-espece-primitive/) sur Amazon. Comme j'ai d'autres projets de livres dans les cartons, je me suis dit que ça serait bien d'offrir une petite boutique en ligne où mes lecteurs pourraient acheter directement mes écrits, via PayPal, ApplePay, ou même, soyons fous, par carte bancaire.
|
||||
|
||||
[^shinra]: Son compte n'existe plus sur mastodon.social.
|
||||
|
||||
Mon cahier des charges est le suivant :
|
||||
|
||||
- Logiciel Libre
|
||||
- Sécurisé
|
||||
- Léger, rapide
|
||||
- Facile à installer
|
||||
- Prévu pour des produits dématérialisés (intégré ou en plugin, je m'en fout)
|
||||
|
||||
## Disclaimer
|
||||
|
||||
Je suis développeur web depuis plus de quinze ans, j'en ai vu du code moisi, j'en ai aussi vu du très bon. Mais, d'expérience, le très bon code n'est pas _mainstream_, contrairement au code de merde. Je préfère vous prévenir, je ne vais pas faire du politiquement correct dans cet article.
|
||||
|
||||
## Solutions testées
|
||||
|
||||
### PrestaShop
|
||||
|
||||
- [Site officiel](https://www.prestashop.com/fr)
|
||||
- [Dépôt de code](https://github.com/PrestaShop/PrestaShop)
|
||||
|
||||
PrestaShop est au e-commerce ce que WordPress est au blog : un vieux monstre, immonde, effroyable, terrifiant, encore en vie sans qu'on sache comment c'est possible. C'est mal pensé, mal exécuté, buggué comme pas possible, et pas du tout orienté auto-hébergement tel que je l'entends (_« read our guide on installing PrestaShop for development »_, sous-entendu que si tu veux l'installer à ta sauce, c'est que pour du dev...)
|
||||
|
||||
[Pas de support officiel](https://devdocs.prestashop.com/1.7/basics/installation/system-requirements/) d'autre chose que MySQL 5.7 (exit donc PostgreSQL) et php7.4 (pas de php8). [La documentation du container docker](https://hub.docker.com/u/prestashop/#!) est spartiate et ne dit pas comment persister les données. En gros, il faut créer un volume vers `/var/www/html`. C'est tout sauf propre. Vu les pré-requis, je ne tiens pas à casser mon serveur, je n'ai donc pas essayé autre chose que le container.
|
||||
|
||||
Une fois installé, c'est lent, inacceptablement lent. Il y a des requêtes vers Google et l'api de PrestaShop dans tous les sens. Des dizaines, voire des centaines de requêtes vers l'extérieur de mon serveur alors que je n'ai encore rien fait. C'est blindé ras-la-gueule de tutos vidéos et d'assets chargées depuis des URLs distantes. C'est crade, c'est franchement la gerbe. En plus, comme je bloque au niveau DNS les requêtes vers certains domaines de Google, l'interface est pétée. C'est immonde. Je n'ai rien fait d'autre que charger la page d'admin, j'ai arrêté le massacre très très vite.
|
||||
|
||||
### Magento
|
||||
|
||||
- [Site officiel](https://magento.com)
|
||||
- [Dépôt de code](https://github.com/magento/magento2)
|
||||
|
||||
Un peu moins pourri au niveau du code que PrestaShop. Pas difficile, en même temps. Par contre, c'est toujours aussi lourd. Je ne parle même pas du temps de rendu ou de la charge serveur. Le code en lui-même est propre, bien écrit et documenté, mais fouiller là-dedans est un calvaire.
|
||||
|
||||
Toujours [pas de support officiel](https://devdocs.magento.com/guides/v2.4/install-gde/prereq/prereq-overview.html) d'autre chose que MySQL et MariaDB, et toujours pas de php8. Par contre, Elasticsearch est requis, et donc, Java... Bonjour la légèreté.
|
||||
|
||||
### OpenCart
|
||||
|
||||
- [Site officiel](https://www.opencart.com)
|
||||
- [Dépôt de code](https://github.com/opencart/opencart)
|
||||
|
||||
**OpenCart est visiblement en train de subir pas mal de mises à jour importantes dont certaines visent à corriger les problèmes que je vais évoquer ici.**
|
||||
|
||||
Là non plus, pas de support officiel de PostgreSQL. La documentation n'est pas à jour, et le processus d'installation est buggué, même en respectant les pré-requis. Par exemple, la documentation annonce le support de php7.4, mais l'installateur ne veut rien d'autre que php8. Une fois installé, impossible de faire quoique ce soit à cause de bugs bloquants.
|
||||
|
||||
Le code est mal structuré, le dossier _vendor_ complet est versionné (heu... [oui](https://github.com/opencart/opencart/tree/master/upload/system/storage/vendor)...), le code n'est pas documenté, et pas prêt pour le passage à php8 alors que l'appli l'exige.
|
||||
|
||||
J'espérais beaucoup de OpenCart : il me semblait bien correspondre à mon cahier des charges, mais absolument pas utilisable en production à l'heure actuelle.
|
||||
|
||||
## Solutions non-testées
|
||||
|
||||
- Thirty bees : Fork de PrestaShop 1.6. Hérite donc de tous ses défauts. Le code est toujours aussi dégueulasse et pas documenté.
|
||||
- WooCommerce : Plugin de WordPress. Heu, non merci...
|
||||
- osCommerce : [Une version 4 serait à venir cette année](https://www.oscommerce.com/Us&News=177). La version précédente [semble dater de 2016](https://github.com/osCommerce) (notez l'organisation étrange des dépôts). Je n'ai pas spécialement envie d'utiliser une version obsolète, et de faire une grosse mise à jour à une date indeterminée.
|
||||
|
||||
## À propos des licences
|
||||
|
||||
Les deux poids lourds du "marché" que sont PrestaShop et Magento ont opté pour une licence [OSL](https://opensource.org/licenses/OSL-3.0). Ils ont adopté cette fâcheuse tendance à planquer au fond de sous-menus obscurs les liens vers leurs dépôts de code source. Je n'aime pas cette pratique parce qu'elle relègue de façon à peine voilée l'accès au code source aux contributeurs exclusivement. J'ai envie de voir le code source pour voir ce que l'application fait (au titre de la confiance que je vais - ou non - lui accorder, une confiance que mes propres visiteurs devront m'accorder aussi), pas forcément pour y contribuer.
|
||||
|
||||
OpenCart est sous licence [GNU GPL](https://www.gnu.org/licenses/gpl-3.0.en.html). En ce qui me concerne, ça me met déjà plus en confiance.
|
||||
|
||||
## Bilan
|
||||
|
||||
Je déplore la qualité médiocre, au mieux, des applications que j'ai testé, ou dont je me suis limité à la lecture de la documentation. On a l'impression que ça a été bricolé à la va-vite par un pseudo geek des années 2000, et que ça a évolué en lui greffant des tas d'immondices pour faire genre, exactement comme WordPress (en fait, c'est littéralement ce qui s'est passé). Le code de PrestaShop mériterait bien d'être cramé au lance-flamme et de repartir sur des bases saines. Magento s'en sort mieux sur ce point, mais trop lourd pour ce que je veux en faire. Le reste, malheureusement, est mort, mourrant, ou en attente de résurrection.
|
||||
|
||||
Rien d'utilisable en fait.
|
||||
|
||||
Alors, vous me direz : « T'es développeur, t'as une grande gueule, t'as qu'à faire/contribuer ».
|
||||
|
||||
1. D'une, je suis aussi écrivain, et c'est pas parce que vous savez écrire que vous allez contribuer à mes livres sous licence Libre.
|
||||
2. De deux, il est hors de question que je contribue à une merde comme PrestaShop (j'ai déjà donné à titre professionnel) ou à un truc supporté par Adobe comme Magento, parce qu'ils ont assez de moyens financiers pour ne pas s'offrir mes services gratuitement.
|
||||
3. De trois, c'est peut être exactement ce que je vais faire...
|
||||
34
content/interets/informatique/2021/03/19/les-gafam/index.md
Normal file
34
content/interets/informatique/2021/03/19/les-gafam/index.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
date: '2021-03-19T14:47:20+01:00'
|
||||
title: Les GAFAM
|
||||
---
|
||||
|
||||
Ça fait depuis longtemps que je veux m'exprimer sur la question. Mes sources d'information ont relativement abandonné cet acronyme, ne titillant plus mon exaspération. Mais mon arrivée sur ActivityPub a quelque peu changé la donne.
|
||||
|
||||
<!--more-->
|
||||
|
||||
GAFAM. Google, Amazon, Facebook, Apple, Microsoft. On utilise cet acronyme pour désigner - certains - des géants du net. Je déteste cet acronyme à plus d'un titre. Voici pourquoi.
|
||||
|
||||
Ces cinq entreprises sont américaines. Et s'il y a une chose que j'ai bien constaté en France, c'est notre racisme envers les américains. Je ne sais pas d'où il vient, quelle rancune peut justifier une telle haine pour un peuple issu en partie de la France, dont nous avons aidé l'établissement face à l'empire britannique, qui nous a sauvé pendant la Seconde Guerre Mondiale, qui nous apporte tant, et qui nous a longtemps aimé plus que nous ne l'aimions (ce n'est plus le cas, et ça se comprend).
|
||||
|
||||
On dénigre ces cinq entreprises américaines rien qu'avec cet acronyme, en écartant toute entreprise chinoise ou Russe. Pourquoi contribuer à marginaliser la domination de Samsung, Baidu, Huawei, Xiaomi, Tencent, Yandex, en continuant d'utiliser un acronyme ne désignant que des entreprises américaines ?
|
||||
|
||||
Notre rancoeur vient sans doute du fait que nous disposions, un jour, d'un solide concurrent à Amazon : [alapage](https://fr.wikipedia.org/wiki/Alapage), que nous avons démembré. Peut-être le regrettons-nous, et déversons notre haine vers Amazon pour cette raison.
|
||||
|
||||
En outre, nous n'avons pas de "géant du net" français. Nous essayons, bien sûr, mais c'est un simple fait : nous n'avons pas développé ou nous avons tué la concurrence internationale à Google, Amazon, Facebook, Apple, ou Microsoft. Et je crois que c'est dû à notre légendaire prétention nationale. À force de prôner qu'une entreprise est française, comme si c'était un argument commercial valable à l'étranger, il n'y a bien que des français pour en être client.
|
||||
|
||||
J'ai l'impression que le message diffusé contre l'utilisation des "GAFAM", c'est surtout de ne pas envoyer les ressources françaises à l'étranger (argent, données, personnelles ou non), et plus précisément, aux États-Unis. Alors que le discours devrait réellement être plus philosophique et nuancé.
|
||||
|
||||
Aurons-nous la même haine contre une entreprise française qui se sera hissée dans les mêmes niveaux de capitalisation boursière ? Je parie que non, et qu'au contraire, on en serait fiers. Ou alors, on le passera sous silence. Avez-vous une bonne opinion d'Orange ? Moi non plus. Pourtant, c'est une entreprise française, présente à l'international, dont la capitalisation boursière est de plus de [28 milliards d'euros](https://fr.finance.yahoo.com/quote/ORA.PA). Et si, pour être un "GAFAM", il faut un mélange de monopole et de pratiques _borderline_, Orange mérite sûrement sa place dans l'acronyme.
|
||||
|
||||
Parce que finalement, c'est sûrement comme ça que le terme _GAFAM_ se définit dans l'imaginaire collectif : un ensemble d'entreprises qu'il faut détester. Ils sont leaders dans leurs domaines respectifs, parfois même plusieurs d'entre eux, ce sont donc des cibles à abattre. C'est très réducteur, et ne peut aboutir à aucune solution viable. S'il y a un leader, c'est qu'il y a une hiérarchie, et que le leader sera remplacé par le second. Si on parle de capitalisation boursière, il y a une foule qui attend avec avidité de prendre la place d'un _GAFAM_. Super. Une fois érigée à ce rang, la société concernée sera haïe. Simplement parce qu'elle réussi.
|
||||
|
||||
En fin de compte, nous ne haïssons pas les _GAFAM_, nous haïssons leur réussite, et c'est une preuve de jalousie. Cibler spécifiquement des entreprises américaines est en plus une preuve de racisme. Est-ce vraiment ainsi que vous voulez définir un mouvement intellectuel ? Personnellement, ça ne m'intéresse pas.
|
||||
|
||||
Lutter pour la protection de nos données personnelles, empêcher leur centralisation, notre tracking publicitaire. Empêcher ces entreprises de relier des points qu'elles ne sont pas censées relier (géopolitique - santé - publicité comme Google, éducation - systèmes d'exploitation - hébergement de données comme Microsoft, commerce - hébergement de données - exploration spaciale comme Amazon, etc.). Les empêcher de détruire des écosystèmes. Oui, là, ça m'intéresse.
|
||||
|
||||
Mais ça ne se limite pas aux _GAFAM_. Et ce n'est pas parce que ce sont des sociétés américaines. **Les idées contre lesquelles nous nous opposons sont mises en oeuvre aussi par des sociétés françaises, et le fait qu'elles stockent leurs données en France, ou paient leur impôts en France ne justifie en rien qu'elles le fassent.**
|
||||
|
||||
Je rappellerai enfin qu'on a vertement critiqué les États-Unis dans leur opposition à Huawei, qu'on accueilli à bras ouverts en France, avant de se rendre compte de leur méfaits.
|
||||
|
||||
Arrêtez de parler de _GAFAM_. Ça ne veut rien dire. Et ce que ça exprime est faux, en plus de donner une mauvaise image de nous.
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
date: '2021-04-01T17:57:23+02:00'
|
||||
title: 'Covid-19 : Vous avez tous tort'
|
||||
---
|
||||
|
||||
Vous n'êtes pas obligés de lire cet article si vous n'avez pas envie de vous sentir insultés. Mais je vous préviens : tout le monde va en prendre pour son grade.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
Quelques éléments pour comprendre d'où vient cet article.
|
||||
|
||||
J'ai le respect des individus, pas du peuple.
|
||||
|
||||
Et ça commence par notre Chef d'État. Il l'a éloquemment rappelé en temps voulu : c'est Monsieur le Président ou Monsieur Macron, pas "Manu", ni "Macron", ni aucun autre sustantif irrévérencieux. Posez-vous la question : si le Chef d'État s'adressait directement à vous, par votre prénom ou même un surnom, comment le prendriez-vous ?
|
||||
|
||||
Exactement.
|
||||
|
||||
Et vous n'êtes pas à la tête d'une nation.
|
||||
|
||||
Le Chef d'État, que ce soit Monsieur Macron, Madame Michu ou Tartempion, c'est pas votre pote de beuverie, c'est le taulier. Dans une gentille dictature, il vous mettrait à la porte. Dans une dictature telle que vous la fantasmez, eh bien, demandez des nouvelles à Alexeï Navalny.
|
||||
|
||||
Pour rappel, il n'y a pas si longtemps que ça, tout le monde se fouttait de la gueule des Chinois parce qu'ils portaient un masque en permanence. Qu'est-ce que ça dit de nous, aujourd'hui ? Et notez par ailleurs que ça n'a pas empêché la pandémie - tirez-en les conclusions que vous voulez.
|
||||
|
||||
La "guerre" contre le virus est avant-tout une guerre psychologique, et le peuple la perd. Pas aujourd'hui : depuis le début. On est peu nombreux à bien supporter la situation, et c'est symptomatique de l'état psychologique de la société dans son ensemble.
|
||||
|
||||
## Vous avez tort
|
||||
|
||||
Vous faites partie de ceux qui râlent contre l'instauration du troisième confinement ? Alors pour rappel, là encore :
|
||||
|
||||
- on vous a prévenu, depuis un an en fait, que ça allait arriver (les scientifiques et même les politiciens)
|
||||
- non, **on ne vous prive pas de vos libertés**, on fait respecter celle de tout citoyen français au droit de vivre : ne pas respecter cette règle, c'est **bafouer un droit élémentaire**, celui des autres - réfléchissez-y
|
||||
- vous ne haïssez pas Monsieur Macron, vous haïssez le Chef d'État, peu importe son nom, ça ne changerait rien à votre comportement réactionnaire
|
||||
- c'est bien fait pour vos tronches : vous aviez la possibilité de faire preuve de bon sens, vous avez choisi l'égoïsme - maintenant, assumez
|
||||
|
||||
Je rappelle aussi que chaque pays a fait ses propres choix concernant la "stratégie" à adopter face au virus, ce qui, en soit, est la pire des stratégies. On le dit depuis le début : seule une réponse globale et unanime peut être efficace contre une pandémie. Le virus n'a pas de frontières et s'en tape de nos considérations humaines, qu'elles soient sociales, familiales, ou économiques. Le virus s'en tape que vous voulez larguer vos enfants à l'école pour que vous puissiez vous rendre à votre travail en présentiel pour avoir un semblant de vie sociale. Le virus s'en tape que votre restaurant n'a plus de client, ou que votre cinéma est à l'arrêt. En faisant le choix de l'ignorer, vous contribuez directement à sa propagation, et aux conséquences politiques qui s'ensuivent, du genre couvre-feu ou confinement.
|
||||
|
||||
Il y a un code de la route. Il est destiné à protéger l'ensemble des conducteurs contre une minorité qui exerce leur liberté de façon égoïste, risquant la vie des autres. Des règles qu'on pourrait juger liberticides. Elles sauvent pourtant des vies. Pourtant, chaque année, on déplore au moins 3 500 victimes des accidents de la route.
|
||||
|
||||
Le Covid-19 a tué, en un an, 95 640 personnes en France. Avant le Covid-19, on estimait que 10 000 morts par an "seulement" était imputables à la grippe. C'est simple, ce sont les chiffres officiels, il n'y a pas lieu de tergiverser sur la façon de présenter les "chiffres". Ils sont juste là, sous nos yeux. Le Covid-19 a fait neuf fois plus de morts que la grippe sur la même période. Et on savait que ça allait arriver. Et c'est encore pire si l'on considère le modèle de l'Inserm, pour qui il n'y aurait que 431 décès par an directement imputables à la grippe.
|
||||
|
||||
Alors : non, le Covid-19 n'est pas une petite grippe, et oui, il justifie des mesures exceptionnelles, et exceptionnellement contraignantes.
|
||||
|
||||
D'autant plus que vous attendez que le gouvernement vous tienne la bite pour pisser. Où avez-vous planqué votre bon-sens, votre citoyenneté, votre solidarité, votre humanité, pour après gueuler quand le gouvernement vous le rappelle ?
|
||||
146
content/interets/informatique/2021/08/28/de-retour/index.md
Normal file
146
content/interets/informatique/2021/08/28/de-retour/index.md
Normal file
@@ -0,0 +1,146 @@
|
||||
---
|
||||
date: "2021-08-28T01:57:23+02:00"
|
||||
title: De retour
|
||||
---
|
||||
|
||||
## Au chômage... et nouveau travail
|
||||
|
||||
En février, mon chômage s'arrêtait. J'ai obtenu un sursis grâce à la crise
|
||||
sanitaire. Je comptais alors sur la vente de mon livre, [_L'humain, cette espèce primitive_](/interets/philosophie/2023/05/18/lhumain-cette-espece-primitive-lhumain-cette-espece-primitive/) et sur l'hypothétique intérêt
|
||||
pour [Cyca](/interets/informatique/2021/01/03/presentation-de-cyca/) pour gagner de quoi vivre,
|
||||
mais comme toujours, les choses ne se passent pas comme on l'espère...
|
||||
|
||||
Dans ce cas précis, ce n'est pas plus mal. Certes, je n'ai pas vendu assez de
|
||||
livres pour en obtenir un équivalent de salaire. Certes, je ne suis pas parvenu
|
||||
à attirer assez d'utilisateurs de Cyca. Par contre, en avril, j'ai trouvé une
|
||||
entreprise formidable.
|
||||
|
||||
La hiérarchie et le management sont parfaits. Ils sont à l'écoute, curieux de
|
||||
connaitre mon avis sur les questions de développement, ont confiance en moi, et
|
||||
ne cherchent pas à abuser. Ce sont tous (ou presque) des geeks, ou des gens
|
||||
connaissant le milieu du développement. De fait, leur perception du métier est
|
||||
réaliste, et ils n'imposent jamais l'impossible.
|
||||
|
||||
Quant à mes collègues, ils sont tous plus intéressants les uns que les autres.
|
||||
Ils ont tous un background spécifique, des compétences particulières, qui
|
||||
viennent complèter celles des autres avec une grande fluidité. Une nouvelle
|
||||
amitié est même née pendant un pair-programming.
|
||||
|
||||
## Un temps de pause
|
||||
|
||||
Du coup, depuis avril, je suis à fond dans ce travail, et j'ai délaissé mes
|
||||
projets personnels, dont le blog. Par conséquent, j'ai aussi manqué à ma
|
||||
résolution pour 2021 qui consistait à publier et maintenir en ligne mon site
|
||||
pendant au moins un an. Au moins, je ne l'ai pas fait pour de bonnes raisons !
|
||||
|
||||
Mais maintenant que je suis en poste depuis avril, je me suis de plus en plus à
|
||||
l'aise. Moins sur la défensive, ou la paranoïa. Je sens que je suis accepté, et
|
||||
que je peux rester un certain temps dans cette entreprise. Je n'ai pas peur de
|
||||
faire un faux-pas. Je suis d'ailleurs aussi à l'aise avec les projets qu'avec
|
||||
les gens, c'est assez rare pour être souligné.
|
||||
|
||||
Et donc, cette tranquilité m'offre du temps pour moi, et j'ai envie de consacrer
|
||||
ce temps à beaucoup de choses.
|
||||
|
||||
## La paternité
|
||||
|
||||
Les "vrais" papas vont me trouver ridicule mais je m'en fous. J'ai 11 enfants :
|
||||
six poules, deux meunons (des boucs nains castrés), un chien et deux chats, le
|
||||
plus vieux étant malheureusement décédé il y a quelques semaines. Je veux
|
||||
désormais à nouveau m'occuper d'eux comme il se doit. Comme d'autres choses,
|
||||
j'ai sacrifié du temps avec les membres de ma famille au profit du nouveau
|
||||
travail, mais la situation me permet désormais de rectifier ce délaissement.
|
||||
|
||||
## Mon dos
|
||||
|
||||
J'ai besoin de repos physique. J'ai rentré deux tonnes de bois pour cet hiver,
|
||||
réparties en 132 sacs et 15Kg. Mon hernie discale s'est rappelée à mon bon
|
||||
souvenir. La douleur n'était pas intense (comme j'ai connu en 2018, ce qui
|
||||
m'avait conduit à l'hôpital pour... rien), mais elle est persistante. Cette
|
||||
année, elle m'a coûté une canne de marche, et un bureau électrique assis/debout
|
||||
qui a coûté près de 500 euros. Mais au final, c'est un excellent investissement
|
||||
qui se traduit par un soulagement de mon dos. Toutefois, le repos reste le
|
||||
meilleur remède. Mais, comme j'ai rentré ce bois au mois de juillet, cela fait
|
||||
depuis deux mois complets que je souffre, et que je n'ai pas pu m'occuper
|
||||
convenablement ni de ma maison, ni de mon épouse, ni de mes enfants, ni même de
|
||||
moi-même en dehors de gérer la douleur.
|
||||
|
||||
## Mon blog
|
||||
|
||||
Octobre est une période importante pour moi : c'est mon anniversaire le 24,
|
||||
Halloween le 31, et c'est un mois que j'aime consacré au visionnage de films ou
|
||||
séries appropriées.
|
||||
|
||||
Je voulais profiter de cette occasion pour mettre en route une fonctionnalité
|
||||
que je prévoyais déjà en janvier : la publication de critiques de films ou de
|
||||
séries. Je vais mettre en place la partie technique qui va me permettre de le
|
||||
faire, même si, en réalité, j'ai déjà bien avancé sur ce sujet, de sorte que
|
||||
chaque jour du mois d'octobre, je regarderai un film ou une série, et j'en
|
||||
publierai ma critique.
|
||||
|
||||
J'aimerai le faire pour chaque période de l'année, parce que j'associe certains
|
||||
films et certaines séries à certains moments particuliers. Par exemple, LOST se
|
||||
regarde en été selon moi.
|
||||
|
||||
## Mes autres activités
|
||||
|
||||
J'ai toujours voulu m'abonner à un magazine. Recevoir la surprise, chaque mois,
|
||||
dans ma boîte aux lettres physique, d'un emballage plastique léger recouvrant
|
||||
la une de mon magazine préféré. J'ai jeté mon dévolu sur l'abonnement au
|
||||
magazine [La Recherche](https://www.larecherche.fr/), qui comprend également
|
||||
l'envoi de [Sciences et Avenir](https://www.sciencesetavenir.fr).
|
||||
Parallèlement, je vais régulièrement chez un marchand de journaux pour me
|
||||
procurer la collection
|
||||
[Apprendre à philosopher](https://www.apprendreaphilosopher.fr), qui me
|
||||
plait beaucoup pour l'instant dans la mesure où le premier livre paru traite de
|
||||
Platon, et j'y ai découvert des choses très intéressantes, des similitudes
|
||||
avec mes propres écrits. Alors j'espère que le prochain volet, consacré à
|
||||
Nietzsche, sera aussi intéressant.
|
||||
|
||||
Je continue de prendre une heure le soir avant de me coucher pour lire l'un des
|
||||
meilleurs livres que j'ai lu sur la question :
|
||||
[Sapiens, a brief history of Humankind](https://www.amazon.fr/dp/B07125HP8C)
|
||||
de Yuval Noah Harari. qui m'incite vraiment à continuer à lire ses deux suites.
|
||||
|
||||
## Et le reste
|
||||
|
||||
En plus de tout cela, j'ai l'intention de travailler sur Cyca, ce que je fais
|
||||
déjà depuis quelques jours, avec pour but de sortir une nouvelle version stable
|
||||
et au top. J'ai divisé le projet en de plus petites unités, ~~librement
|
||||
accessibles depuis ma forge~~ (temporairement inaccessible, jusqu'à ce que je me remette dessus). L'étape
|
||||
suivante concerne le _core_, qui assemble tout ça et orchestre la gestion des
|
||||
favoris et des flux.
|
||||
|
||||
J'aimerais reprendre un peu l'écriture. Peut-être pas dans le but de produire un
|
||||
livre, mais en tout cas consigner mes pensées, mes réflexions, en plus de celles
|
||||
que j'écris manuellement dans des carnets de cuir. Le ton n'y est pas le même,
|
||||
le contexte non plus. Mes futurs écrits qui seront publiés
|
||||
[dans ma forge](https://git.dern.ovh/Livres) auront une valeur
|
||||
philosophique, tandis que mes écris de plume et d'encre ont plus une valeur
|
||||
historique, tel un journal de ma vie dans ce monde.
|
||||
|
||||
## Bientôt 40 ans
|
||||
|
||||
Ainsi, à l'aube de mes 40 ans, je suis heureux. J'ai une épouse parfaite, des
|
||||
enfants qui m'aiment et que j'aime, une bonne maison, du matériel pour bricoler,
|
||||
du matériel pour jouer, du matériel pour réfléchir, écrire, me cultiver, et un
|
||||
métier pour payer pour tout cela. Mes relations familiales sont itérativement
|
||||
moins dysfonctionnelles, et mes relations sociales s'améliorent. Il y a, certes,
|
||||
mon dos et mes dents qui me font souffrir, mais le bilan reste largement
|
||||
positif. Je me réjouis de presque tout : des 38℃ de l'été dernier, qui m'a
|
||||
montré que c'était ma température idéale, du froid glaçant à venir parce qu'il
|
||||
m'évoque les soirées jeux de société avec mon épouse, bien emballés dans des
|
||||
plaids polaires et des pyjamas bien chauds, entourés de nos enfants, buvant des
|
||||
tisanes et des chocolats chauds, mangeant des biscuits et autres pâtisseries
|
||||
préparées par mon épouse (qui est diplômée en la matière), dans la petite pièce
|
||||
qu'on a dédié à cet usage, et à laquelle on a appliqué une ambiance comfy-cozy
|
||||
digne de nous recevoir, nous, les chats et le chien pour un moment en famille,
|
||||
à sourire, profiter, être heureux, ensemble.
|
||||
|
||||
## Le mot de la fin
|
||||
|
||||
Mon intention est donc de ranimer ce blog, ajouter plein de choses, en
|
||||
particulier des critiques de films et de séries. Et continuer de partager un peu
|
||||
de ma vie, en tout cas les meilleurs moments.
|
||||
|
||||
Merci de me lire.
|
||||
@@ -0,0 +1,277 @@
|
||||
---
|
||||
date: '2021-09-12'
|
||||
title: Déployer Hugo via Gitea et Drone-CI
|
||||
---
|
||||
|
||||
## Pourquoi faire simple quand on peut faire compliqué ?
|
||||
|
||||
De prime-abord, on pourrait se dire : "si je veux un blog, je lance un WordPress
|
||||
comme la moitié du web et je commence à publier en deux minutes". Mais quand on
|
||||
est un vieux routard du web, on a des aspirations et des principes un peu plus
|
||||
élitistes :
|
||||
|
||||
- WordPress ne génère pas de sites statiques (nativement)
|
||||
- Le fait qu'il soit utilisé [par la moitié d'Internet](https://w3techs.com/technologies/overview/content_management) me révèle que c'est une cible facile pour des personnes ou des robots mal-intentionnés
|
||||
- PHP est indispensable pour faire fonctionner WordPress, même si WordPress est configuré pour générer des pages pseudo-statiques
|
||||
- WordPress est une usine à gaz, qui sort du HTML, du CSS et du Javascript pas optimisés
|
||||
- Le code de WordPress est abominablement dégueulasse, impossible de faire quoique ce soit de propre, ni même de léger
|
||||
- WordPress est impersonnel, ce que je trouve embêtant pour un blog (et encore plus pour un site corporate d'ailleurs) : il doit être le reflet de son auteur ; s'il ressemble à tous les autres, quel intérêt ? (et je vous le dis : ce n'est pas simplement parce que vous customisez un thème qu'on ne voit pas que vous utilisez WordPress...)
|
||||
- WordPress a besoin d'une base de données
|
||||
- L'écrasante majorité des extensions tierces un tant soit peu intéressantes sont payantes ou sur l'immonde modèle du premium
|
||||
|
||||
Un générateur de sites statiques comme Hugo me permet de :
|
||||
|
||||
- Séparer l'apparence, le contenu, et l'outil qui construit le site final (je peux utiliser autre chose qu'Hugo si j'en ai envie, moyennant quelques ajustement mineurs). Impossible de faire ça avec WordPress
|
||||
- Publier un site 100% sécurisé : sans PHP, sans formulaires, sans Javascript, le maillon faible de la sécurité de mon site n'est pas mon site
|
||||
- Avoir un suivi de mes modifications (grâce à Git)
|
||||
- Simplifier les processus de sauvegarde et de restauration (en gros, avoir un plan de relance en béton armé en cas de défaillance technique - je peux même faire héberger temporairement mon site ailleurs sans avoir besoin d'aucune autre dépendance qu'un serveur web, impossible de faire ça avec WordPress en un minimum de temps)
|
||||
- Être réellement libre du point de vue logiciel
|
||||
|
||||
L'utilisation de git dans ce processus est totalement facultative : il est tout
|
||||
à fait possible de construire son site avec Hugo sans tout ce que je vais
|
||||
présenter dans cet article. Néanmoins, cette procédure qui semble fastidieuse
|
||||
de prime-abord est en réalité très puissante et très confortable au quotidien :
|
||||
|
||||
- Je créé ou modifie mes articles sous la forme de fichiers [Markdown](https://gohugo.io/content-management/formats/) - pratiquement du texte brut
|
||||
- Je les publie sur [ma forge Gitea](https://git.dern.ovh/)
|
||||
- Drone-CI fait le reste : construire le site en lançant l'exécutable Hugo et envoyer les fichiers HTML et CSS au serveur de production
|
||||
|
||||
Pour peu qu'on choisisse un thème existant plutôt qu'en créer un, on peut
|
||||
**réellement** ne se préoccuper que du contenu de son site.
|
||||
|
||||
## Composant logiciels
|
||||
|
||||
Tout passe par des containers (docker, évidemment, mais l'utilisation de podman
|
||||
est possible). Je présume donc que docker est installé et fonctionnel.
|
||||
|
||||
### Gitea
|
||||
|
||||
[Gitea](https://gitea.io/en-us/) est une _forge logicielle_ qui s'appuie sur le
|
||||
système de gestion de code [Git](https://git-scm.com). J'ai choisi Gitea pour sa
|
||||
sobriété, sa légèreté et sa simplicité, mais il existe d'autres forges
|
||||
logicielles : [GitHub](https://github.com) qui appartient à Microsoft et qu'il
|
||||
n'est pas possible d'auto-héberger, ou [Gitlab](https://about.gitlab.com) pour
|
||||
ne citer que ces deux-là.
|
||||
|
||||
_docker-compose.yml_ :
|
||||
|
||||
```yaml {class=not-prose}
|
||||
version: "3"
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:latest
|
||||
restart: always
|
||||
ports:
|
||||
- "${HTTP_PORT}:3000"
|
||||
- "${SSH_PORT}:22"
|
||||
volumes:
|
||||
- ${DATA_DIR}:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
```
|
||||
|
||||
Remplacez les variables en fonction de vos besoins :
|
||||
|
||||
- `HTTP_PORT` : le port sur lequel les requêtes HTTP arrivent sur votre serveur (pas le port HTTP du container)
|
||||
- `SSH_PORT` : le port du serveur SSH du serveur (pas le port SSH du container)
|
||||
- `DATA_DIR` : le chemin complet du dossier dans lequel stocker les données de Gitea, ou le volume si vous préférez utiliser un volume
|
||||
|
||||
### Hugo
|
||||
|
||||
[Hugo](https://gohugo.io) est un générateur de sites statiques. C'est ce que
|
||||
j'utilise pour créer et maintenir mon blog. Il en existe d'autres, tels que
|
||||
[Jekyll](https://jekyllrb.com). J'ai choisi Hugo pour sa légèreté.
|
||||
|
||||
L'essentiel du travail avec Hugo se fait sur votre machine locale. Il n'y a rien
|
||||
à installer côté serveur. La construction du site se fera via Drone-CI, dans
|
||||
lequel on va configurer un
|
||||
[_pipeline_](https://docs.drone.io/pipeline/overview/) pour compiler les
|
||||
ressources CSS (et éventuellement Javascript), et créer l'ensemble du site
|
||||
statique dans un container docker. Tous ces fichiers seront ensuite envoyé au
|
||||
serveur web via rsync, scp, ou ce que vous voulez.
|
||||
|
||||
Pour faire tout cela, il "suffit" d'ajouter un fichier _.drone.yml_ à la racine
|
||||
de votre projet Hugo avec le contenu suivant :
|
||||
|
||||
```yaml {class=not-prose}
|
||||
kind: pipeline
|
||||
type: docker
|
||||
name: default
|
||||
|
||||
steps:
|
||||
|
||||
- name: submodules
|
||||
image: alpine/git
|
||||
commands:
|
||||
- git submodule update --init --recursive
|
||||
|
||||
- name: build
|
||||
image: klakegg/hugo:ext-ci
|
||||
commands:
|
||||
- cd themes/blog_theme && npm i && cd -
|
||||
- hugo --gc --minify --environment production
|
||||
|
||||
- name: deploy
|
||||
image: appleboy/drone-scp
|
||||
settings:
|
||||
host: "10.0.2.1"
|
||||
target: /mnt/volume1/shares/www/richard-dern.fr/www/
|
||||
source: public/*
|
||||
username:
|
||||
from_secret: ssh_user
|
||||
password:
|
||||
from_secret: ssh_password
|
||||
|
||||
trigger:
|
||||
branch:
|
||||
- master
|
||||
```
|
||||
|
||||
L'étape _submodules_ (entre les lignes 7 et 10) n'est nécessaire que si le thème
|
||||
que vous utilisez est dans un _submodule_ git dans le répertoire _theme_ de
|
||||
votre projet Hugo. Si le thème est directement dans l'arborescence de votre
|
||||
projet, vous pouvez supprimer les lignes concernées.
|
||||
|
||||
Le thème que j'ai créé utilise
|
||||
le framework [Tailwind CSS](https://tailwindcss.com), j'ai donc besoin de
|
||||
compiler les ressources via `npm`, ce que je fais à la ligne 15, juste avant de
|
||||
construire toutes les pages du site. Jusqu'à présent, c'est plutôt simple, non ?
|
||||
|
||||
Ensuite, l'étape la plus compliquée (_deploy_). Il faut créer des _secrets_ dans
|
||||
Drone-CI (ici, `ssh_user` et `ssh_password`), mais nous verrons cela un peu plus
|
||||
bas. Pensez simplement à modifier les valeurs de _host_ et _target_ : l'adresse
|
||||
IP du serveur qui va héberge Hugo et le chemin où les fichiers générés par Hugo
|
||||
seront envoyés.
|
||||
|
||||
Ceci dit, ici j'utilise `scp`, mais d'autres services sont disponibles.
|
||||
Consultez la [liste des plugins Drone-CI](http://plugins.drone.io) pour utiliser
|
||||
celui qui convient à votre hébergement.
|
||||
|
||||
Enfin, on a ajouté la directive
|
||||
[_trigger_](https://docs.drone.io/pipeline/triggers/) pour que tout ce processus
|
||||
de publication ne soit déclenché **que** lorsque la branche git _master_ est
|
||||
modifiée, l'idée étant de protéger la branche _master_ en écriture, modifier le
|
||||
contenu dans une nouvelle branche, fusionner avec _master_ une fois terminé,
|
||||
mais là on part dans des considérations philosophiques devops :smile:
|
||||
|
||||
### Drone-CI
|
||||
|
||||
[Drone-CI](https://www.drone.io) est une application d'intégration continue :
|
||||
c'est le genre d'applications qui s'intercalent entre la forge logicielle et les
|
||||
serveurs de mise en production, une position privilégiée qui confère à ces
|
||||
outils beaucoup de puissance et un intérêt considérable. Tests unitaires,
|
||||
construction de ressources, publication automatique, les cas d'usage sont
|
||||
nombreux.
|
||||
|
||||
La documentation de Drone-CI préconise de l'installer sur une machine physique
|
||||
différente du serveur Gitea afin d'éviter les problèmes et de simplifier la
|
||||
configuration. C'est l'option que j'ai choisi, mais en pratique, si vous savez
|
||||
ce que vous faites, vous ne devriez pas avoir de soucis.
|
||||
|
||||
Il faut toutefois prendre en considération les ressources du (des) serveurs. Si
|
||||
vous utilisez des Raspberry Pi par exemple, il vaut peut-être mieux lancer
|
||||
Drone-CI sur un Pi dédié à cet usage.
|
||||
|
||||
Pour que Drone-CI puisse communiquer avec Gitea, il faut aller dans Gitea,
|
||||
votre profil, puis dans l'onglet _Applications_. Là, créez une application
|
||||
_OAuth_. Mettez ce que vous voulez comme nom ("drone", par exemple), et l'URL
|
||||
de redirection, qui correspond à l'URL complète à laquelle vous accèderez à
|
||||
Drone-CI, suffixée par _/login_. Dans mon cas, l'URL de redirection est :
|
||||
|
||||
> https://ci.athaliasoft.com/login
|
||||
|
||||
Validez, et Gitea vous communiquera un certain nombre d'informations à
|
||||
renseigner dans le fichier _docker-compose.yml_ pour Drone-CI, notamment un
|
||||
_Client ID_ et un _Client Secret_, à remplacer ci-dessous.
|
||||
|
||||
_docker-compose.yml_ :
|
||||
|
||||
```yaml {class=not-prose}
|
||||
version: "3"
|
||||
services:
|
||||
drone:
|
||||
image: drone/drone
|
||||
restart: always
|
||||
ports:
|
||||
- "${PORT}:80"
|
||||
environment:
|
||||
- DRONE_GITEA_SERVER=${DRONE_GITEA_SERVER}
|
||||
- DRONE_GITEA_CLIENT_ID=${DRONE_GITEA_CLIENT_ID}
|
||||
- DRONE_GITEA_CLIENT_SECRET=${DRONE_GITEA_CLIENT_SECRET}
|
||||
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
|
||||
- DRONE_SERVER_HOST=${DRONE_SERVER_HOST}
|
||||
- DRONE_SERVER_PROTO=https
|
||||
volumes:
|
||||
- ${VOLUME_ROOT}:/data
|
||||
```
|
||||
|
||||
- `DRONE_GITEA_SERVER` correspond à l'URL de votre serveur Gitea
|
||||
- `DRONE_RPC_SECRET` est une clé à générer via la commande `openssl rand -hex 16` (par exemple)
|
||||
- `DRONE_SERVER_HOST` est le nom d'hôte correspondant à l'URL de redirection (donc, dans mon cas spécifique, _drone.git.dern.ovh_)
|
||||
- `VOLUME_ROOT`, un volume docker ou un répertoire dans lequel seront stockées les données de Drone-CI
|
||||
|
||||
### Runners
|
||||
|
||||
En plus de Drone-CI, il faut configurer des
|
||||
[_runners_](https://docs.drone.io/runner/overview/), c'est-à-dire un ou
|
||||
plusieurs services qui vont exécuter les pipelines configurés. Comme je dispose
|
||||
de plusieurs serveurs, j'ai installé un runner par serveur, ce qui permet
|
||||
d'améliorer les performances générales de Drone-CI, mais il est tout à fait
|
||||
possible (et viable) d'avoir un seul runner installé sur la même machine que
|
||||
Drone-CI.
|
||||
|
||||
_docker-compose.yml_ :
|
||||
|
||||
```yaml {class=not-prose}
|
||||
version: "3"
|
||||
services:
|
||||
runner:
|
||||
image: drone/drone-runner-docker
|
||||
restart: always
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- DRONE_RPC_PROTO=http
|
||||
- DRONE_RPC_HOST=drone
|
||||
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
|
||||
- DRONE_RUNNER_CAPACITY=${DRONE_RUNNER_CAPACITY}
|
||||
- DRONE_RUNNER_NAME=${DRONE_RUNNER_NAME}
|
||||
```
|
||||
|
||||
Pensez à modifier les variables suivantes pour convenir à votre environnement :
|
||||
|
||||
- `DRONE_RPC_SECRET`, la même clé que celle définie plus haut pour Drone-CI
|
||||
- `DRONE_RUNNER_CAPACITY`, le nombre de pipelines que le runner peut exécuter en même temps (1 est suffisant pour des environnements modestes, 2 ou plus pour des environnements plus musclés)
|
||||
- `DRONE_RUNNER_NAME`, un nom à attribuer au runner pour savoir quel runner a exécuté quoi et quand
|
||||
|
||||
## Performances
|
||||
|
||||
En voyant tout ça, on pourrait se dire que c'est consommateur de ressources. En
|
||||
réalité, tout cela est très, très léger, et très performant. Il faut moins de 30
|
||||
secondes pour déployer en production un nouvel article ; une durée qui serait
|
||||
beaucoup - beaucoup - plus courte s'il n'y avait pas l'étape de compilation CSS
|
||||
avec `npm`.
|
||||
|
||||
La possibilité de tirer partie d'un nombre indéterminé de runners est un gage de
|
||||
scalabilité, même si les performances sont déjà élevées avec un seul serveur,
|
||||
grâce à la sobriété des applications mises en oeuvre.
|
||||
|
||||
J'aime ce qui est rapide et performant, même si cela nécessite un peu de temps
|
||||
pour être mis en oeuvre. Le processus expliqué ici respecte mon cahier des
|
||||
charges.
|
||||
|
||||
## Conclusion
|
||||
|
||||
J'ai présenté ici le déploiement automatisé d'un site statique créé avec Hugo,
|
||||
puisant dans un serveur Gitea, en construisant le site via Drone-CI avant de
|
||||
copier les fichiers sur le serveur de production. C'est **un** cas d'usage parmi
|
||||
d'autres : je me sers également de cette configuration pour créer
|
||||
automatiquement des releases pour certaines de mes librairies, par exemple.
|
||||
|
||||
Le simple fait de parcourir [la liste des plugins](http://plugins.drone.io/) de
|
||||
Drone-CI donne un aperçu de ce qu'il est possible de faire _out-of-the-box_,
|
||||
mais en réalité, il n'y a pas vraiment de limite dans la mesure où on peut
|
||||
facilement créer ses propres plugins, puisque ce ne sont que des containers
|
||||
docker !
|
||||
@@ -0,0 +1,205 @@
|
||||
---
|
||||
date: '2021-09-25'
|
||||
title: L'éco-responsabilité en informatique
|
||||
---
|
||||
|
||||
Derrière le terme très politique de "éco-responsabilité" se cachent de
|
||||
nombreuses ramifications, et je vais m'intéresser aujourd'hui à celles qui
|
||||
concernent spécifiquement l'informatique, et en particulier du point de vue
|
||||
applicatif.
|
||||
|
||||
## Le coût énergétique du code
|
||||
|
||||
Le code informatique a un coût énergétique. On a tendance à l'oublier. Le
|
||||
matériel le plus récent tend vers une efficacité énergétique accrue : un
|
||||
processeur moderne, comparé à un processeur plus ancien doté du même nombre de
|
||||
coeurs et d'une même fréquence, exécutera les instructions qu'on lui donne plus
|
||||
rapidement, mais aussi de façon plus efficiente, en consommant moins d'énergie.
|
||||
Quand on achète du matériel moderne, on fait un geste éco-responsable[^1], mais
|
||||
on peut mieux faire. C'est facile de faire des économies d'énergie en achetant
|
||||
du matériel récent, mais il est possible d'aller beaucoup plus loin avec des
|
||||
_logiciels_ et des _comportements_ éco-responsables. Cela prend tout son sens
|
||||
lorsque l'on est soi-même développeur.
|
||||
|
||||
[^1]: À charge logicielle équivalente. En réalité, il faut tenir compte d'autres facteurs pour que ce geste soit réellement éco-responsable, comme l'âge du matériel remplacé, les matériaux employés (recyclables ou non), etc.
|
||||
|
||||
Il est possible de chiffrer ce coût énergétique. Ce n'est peut-être pas à la
|
||||
portée de tout le monde, mais avec
|
||||
[le matériel adéquat](https://duckduckgo.com/?q=prise+wattmetre&t=osx&iar=shopping&iax=shopping&ia=shopping),
|
||||
on peut facilement l'évaluer. Il suffit de mesurer la consommation de la machine
|
||||
sur laquelle on fait le test, avec et sans l'application qu'on veut tester, et
|
||||
faire la différence. C'est ainsi que j'ai appris que MariaDB consomme plus
|
||||
d'énergie que PostgreSQL, que nginx consomme plus que Caddy, etc.
|
||||
|
||||
Du coup, puisqu'il existe une différence substantielle et mesurable, entre
|
||||
différentes applications qui effectuent le même type de tâches, on peut pousser
|
||||
l'idée un peu plus loin en tant que développeur, et se demander : "Combien
|
||||
d'énergie consomme le code que je produis ?"
|
||||
|
||||
On peut avoir des surprises, et pas que des bonnes... surtout que cette
|
||||
consommation dépend de facteurs divers.
|
||||
|
||||
## Le coût énergétique du réseau
|
||||
|
||||
Car, pour peu que l'application considérée effectue des opérations sur le
|
||||
réseau, la consommation indirecte de cette application peut rapidement grimper
|
||||
en flèche. Une consommation qui ne se verra pas en consultant la consommation
|
||||
immédiate de la machine sur laquelle tourne l'application, puisqu'il faut aussi
|
||||
prendre en considération l'activité du point d'accès sans-fil, du switch, du
|
||||
routeur, du modem, bref, de _toute_ l'infrastructure réseau, non seulement du
|
||||
point de vue du client (qui initie la connexion) mais aussi du point de vue du
|
||||
serveur (qui reçoit la requête).
|
||||
|
||||
C'est un exemple très personnel et peut-être pas représentatif de la majorité
|
||||
des cas d'usage, mais lors d'accès réseaux intensifs, la consommation électrique
|
||||
de mon réseau informatique dans sa globalité peut facilement passer du simple au
|
||||
double. C'est notamment le cas pendant les mises à jour des images docker
|
||||
employées sur mes serveurs : je passe d'une consommation globale de 36W en
|
||||
moyenne à parfois près de 80W[^2].
|
||||
|
||||
[^2]: Dans ces 36 à 80W, je compte la consommation de mes trois serveurs, d'un point d'accès sans-fil, et d'un switch 16 ports en rack. La Freebox Revolution n'est pas comptée dans cette mesure, mais je sais qu'elle consomme à elle-seule près de 40W, notamment à cause de son disque dur mécanique.
|
||||
|
||||
## Développer éco-responsable
|
||||
|
||||
Si vous êtes développeur et que :
|
||||
|
||||
- vous vous souciez de l'optimisation extrême de votre code,
|
||||
- vous n'implémentez que les fonctionnalités nécessaires et évitez de réinventer la roue,
|
||||
- vous vous assurez de suivre les bonnes pratiques de réutilisation du code, sa simplification, sa compartimentation,
|
||||
- vous surveillez régulièrement les ressources systèmes consommées par votre application,
|
||||
|
||||
vous êtes déjà éco-responsable ! Dans le cas contraire, il va falloir reprendre
|
||||
les bases. Dans tous les cas, il y a quelques pistes à explorer, quelques
|
||||
situations à prévoir.
|
||||
|
||||
Par exemple, il est possible qu'à l'avenir, les applications se voient
|
||||
catégorisées par une
|
||||
[étiquette-énergie](https://fr.wikipedia.org/wiki/Étiquette-énergie), exactement
|
||||
comme tout matériel électrique actuellement vendu en Europe. Être capable de
|
||||
développer des applications efficientes devrait déjà être un critère de choix
|
||||
pour les entreprises, si elles veulent être prêtes le jour où cela arrivera :
|
||||
dans une société dont la demande énergétique est en constante hausse et où la
|
||||
production peine à suivre à cause de la raréfaction du nucléaire, se présenter
|
||||
comme une entreprise dont les logiciels sont efficients sera aussi important
|
||||
pour les clients et prospects que d'annoncer vendre des produits issus de
|
||||
matériaux recyclables.
|
||||
|
||||
<details class="update"><summary>Mise à jour du 24 décembre 2021</summary>
|
||||
|
||||
Un pas vers une telle catégorisation a été fait hier :
|
||||
|
||||
* [Mesurer le CO2 selon les gigaoctets consommés : l’idée qui consterne le secteur du numérique](https://www.numerama.com/tech/803201-mesurer-le-co2-selon-les-gigaoctets-consommes-lidee-qui-consterne-le-secteur-du-numerique.html)
|
||||
|
||||
Je ne m'exprimerai par sur la forme, apparemment les geeks ont l'air de dire que
|
||||
c'est mal branlé, personnellement j'estime que c'est un pas en avant, une étape
|
||||
avant l'imposition de cette information par application, plus compliquée à
|
||||
mettre en place sur le plan juridique.
|
||||
|
||||
</details>
|
||||
|
||||
Dans l'absolu, on a amélioré les technologies pour pouvoir faire plus de choses.
|
||||
Le débit des connexions Internet a explosé grâce à la fibre optique et la 4/5G,
|
||||
les processeurs sont de plus en plus puissants tout en étant plus économes en
|
||||
énergie, le cloud permet de déplacer l'exécution de code à l'extérieur du
|
||||
réseau, etc. En somme, on a amélioré la qualité de vie des faignants et des
|
||||
producteurs de spam. Tant de technologies déployés pour afficher des publicités
|
||||
plus vite qu'avant ? Pour être pistés plus rapidement qu'avant ?
|
||||
L'éco-responsabilité passera forcément par l'abandon de ces pratiques, dont le
|
||||
coût énergétique n'est jamais pris en charge par leur producteur et toujours par
|
||||
le client. Une pratique commerciale abominable du début à la fin, à laquelle de
|
||||
nombreux développeurs ont participé. Une pratique qui doit cesser. Si on dispose
|
||||
de meilleures technologies, il faut aussi en faire un meilleur usage.
|
||||
|
||||
## Des usages éco-irresponsables
|
||||
|
||||
Malheureusement, les applications les plus populaires sont loin d'être des
|
||||
références en matière de consommation énergétique. Pas forcément parce qu'elles
|
||||
sont mal conçues, ou parce qu'elles intègrent des algorithmes complexes pour
|
||||
déterminer quelles publicités vous afficher à vous spécifiquement (...), mais
|
||||
aussi parce qu'elles n'optimisent pas ce qu'elles font. Je pense en particulier
|
||||
aux applications de vidéo-conférence, propulsées sur le devant de la scène par
|
||||
la série de confinements connue entre 2019 et 2021. Le coût énergétique de la
|
||||
vidéo-conférence est [prohibitif](https://www.forbes.com/sites/petersuciu/2021/04/16/do-we-need-to-worry-that-zoom-calls-use-too-much-energy/),
|
||||
et totalement inconnu ou ignoré des participants qui n'ont qu'un seul objectif :
|
||||
communiquer. Il y a pourtant de nombreux paramètres à prendre en compte :
|
||||
|
||||
- l'équipement informatique requis pour faire de la vidéo-conférence : ordinateurs, écrans, webcams, micros, et bien sûr, l'infrastructure réseau entre les différentes machines
|
||||
- les logiciels employés et leur paramétrage, y compris le système d'exploitation (un mode sombre consomme moins d'énergie qu'un mode clair), les réglages du matériel (baisser la luminosité des écrans permet de gagner quelques watts)
|
||||
- la distance entre les différents ordinateurs
|
||||
- etc.
|
||||
|
||||
Le matériel est de plus en plus efficient en énergie. Mais ce n'est pas encore
|
||||
le cas des applications où il reste beaucoup de travail à faire. Et ce n'est pas
|
||||
encore suffisant : comme certains gestes ont dû être appris au cours de ces
|
||||
dernières décennies, comme le tri sélectif, éteindre le robinet pendant qu'on se
|
||||
brosse les dents, etc., il faudra apprendre à mieux utiliser son informatique.
|
||||
Est-ce qu'une vidéo-conférence est réellement nécessaire ? Cette réunion ne
|
||||
peut-elle pas être réalisée uniquement en audio ? Et du point de vue du
|
||||
développeur : est-ce que j'ai réellement besoin d'un accès réseau pour effectuer
|
||||
telle ou telle opération ?
|
||||
|
||||
## Les travers du cloud
|
||||
|
||||
Le cloud, comme dirait la [FSF](https://www.fsf.org/), c'est stocker ses données sur un ordinateur qui
|
||||
ne nous appartient pas. Quand vous installez une application sur votre téléphone
|
||||
portable, posez-vous la question : est-ce que cette application m'apporte une
|
||||
plus-value par rapport à visiter directement le site depuis mon navigateur ? En
|
||||
général, la réponse est soit "non", soit une mauvais réponse, telle que : "oui
|
||||
parce que c'est mieux intégré à mon téléphone". En réalité, cela dépend de ce
|
||||
que fait l'application par rapport au site, et surtout _comment_ elle le fait.
|
||||
Si l'essentiel du travail est effectué sur votre téléphone, tant mieux, mais si
|
||||
de multiples échanges avec le serveur sont nécessaires, c'est là que la
|
||||
consommation explose.
|
||||
|
||||
Comment le vérifier ? Par aucun moyen simple à l'heure actuelle. Soit
|
||||
l'application est sous licence libre, auquel cas vous pouvez consulter le code
|
||||
source pour voir si l'application est bien écrite, soit elle est sous licence
|
||||
propriétaire et il faut utiliser des outils appropriés pour évaluer la quantité
|
||||
et la qualité de ses accès réseau. Une tâche impossible pour le commun des
|
||||
mortels, et fastidieuse à réaliser quand on maitrise le sujet, considérant la
|
||||
quantité d'applications à tester. J'aimerais bien voir, sur mon téléphone, en
|
||||
plus de la consommation en "_data_" d'une application donnée, sa consommation
|
||||
électrique estimée. On aurait sans doute des informations intéressantes, et cela
|
||||
inciterait sûrement à la production d'applications de meilleure qualité...
|
||||
|
||||
En outre, stocker ses documents dans le cloud est très consommateur d'énergie,
|
||||
puisqu'on parle souvent de fichiers de plusieurs méga-octets. Une photo de bonne
|
||||
résolution, prise avec votre téléphone portable, pèse en moyenne 5Mo à 10Mo. Mes
|
||||
photos prises avec mon APN en RAW peuvent peser 50Mo. Les fonds d'écrans,
|
||||
sonneries, pièces jointes d'email, musiques, vidéos, etc. vont transiter sur le
|
||||
réseau, et utiliser de l'énergie. L'énergie de votre téléphone, de l'antenne du
|
||||
réseau mobile, du datacenter où seront stockées ces données, etc.
|
||||
|
||||
Auto-héberger tout cela **est éco-responsable**, en limitant cette consommation
|
||||
d'énergie à votre propre infrastructure. Si vous êtes une entreprise, et du seul
|
||||
point de vue de l'énergie, cela vous reviendra moins cher que payer un
|
||||
intermédiaire qui répercutera ces coûts sur votre facture, avec une marge.
|
||||
|
||||
Avec le cloud, on multiplie le coût énergétique de chaque opération réseau.
|
||||
Donc, en tant que développeur, demandez-vous, à chaque ligne de code créée qui
|
||||
envoie une requête à un serveur distant, si cette ligne est parfaitement
|
||||
optimisée et ne surchargera pas le serveur en question. Exemple tout bête :
|
||||
arrêtez de faire des pages HTML où vous déclarez 50 fichiers javascript et 50
|
||||
feuilles de styles : concaténez. Ce n'est pas parce que HTTP/2 permet de faire
|
||||
des requêtes en parallèle qu'il faut en abuser...
|
||||
|
||||
## Les bénéfices de l'éco-responsabilité
|
||||
|
||||
Évidemment, il y a le gain environnemental. Moins de consommation d'énergie
|
||||
signifie moins d'émissions de CO2. Il y a également le coût financier :
|
||||
l'énergie est chère, et le sera de plus en plus si on continue à scier la
|
||||
branche sur laquelle on est assis en "sortant du nucléaire".
|
||||
|
||||
Mais de façon plus pragmatique, être éco-responsable en informatique signifie
|
||||
aussi augmenter le délais entre deux charges de batterie de téléphone ou
|
||||
d'ordinateur portable, réduire la charge système et donc disposer d'un
|
||||
périphérique plus agréable à utiliser, peut-être au point de devoir le remplacer
|
||||
moins souvent, d'où encore plus d'économies et... une meilleure
|
||||
éco-responsabilité.
|
||||
|
||||
Les gains côté développeur ne sont pas moins intéressants : être éco-responsable
|
||||
signifie moins de code à maintenir, un code plus efficace, plus facile à
|
||||
analyser, à relire, donc plus de temps pour créer de nouvelles fonctionnalités
|
||||
et moins de temps à débugguer, donc moins de bugs et plus vite corrigés, donc
|
||||
clients satisfaits, employeur satisfait, meilleure qualité de vie au travail,
|
||||
licornes et arcs-en-ciel.
|
||||
@@ -0,0 +1,100 @@
|
||||
---
|
||||
date: '2021-10-09'
|
||||
title: Stocker ses fichiers dans des dépôts git
|
||||
---
|
||||
|
||||
> En résumé : j'utilise [_git-lfs_](https://git-lfs.github.com) pour stocker
|
||||
> tous mes documents personnels, administratifs, photos, musiques, vidéos, et
|
||||
> ça convient bien **à mon usage**.
|
||||
|
||||
## Contexte
|
||||
|
||||
J'aimerais bien me passer de [Syncthing](https://syncthing.net/), et depuis que
|
||||
j'ai abandonné mon NAS Synology, je ne trouve aucune solution de synchronisation
|
||||
de fichiers équivalente à [Synology Drive](https://www.synology.com/en-us/dsm/feature/drive).
|
||||
|
||||
- [Nextcloud](https://nextcloud.com/) : franchement, je ne sais pas comment ce truc tourne. Encore une monstruosité PHP que [je range aux côtés de Wordpress et Prestashop](/interets/informatique/2021/03/14/ecommerce-et-auto-hebergement/). Ça me désespère en tant que développeur PHP... La synchronisation des fichiers est lente (Webdav...) et foireuse (il n'aime pas les fichiers préfixés par un point, trop longs, etc.), sans parler de la lourdeur du truc côté serveur (autant niveau base de données qu'espace disque), les mises à jour où il faut faire une offrande aux dieux pour qu'elles passent (et que les plugins suivent). Le client est probablement le pire que j'ai testé.
|
||||
- [Seafile](https://www.seafile.com/en/home/) : je suis à peu près certain que c'est ce qui sert de base à Synology Drive, donc théoriquement ça aurait pu me convenir, mais le système de stockage en backend n'est pas portable ; il faut passer à la version "Pro" pour stocker les fichiers dans un backend S3, et le montage de volumes via _fuse_ semble compliqué/lourd. En plus, j'ai trouvé que les performances de synchronisation n'étaient pas folichonnes (mais pas catastrophiques non plus).
|
||||
- Syncthing : options par défaut qui ne me conviennent pas, re-synchro chiante à cause des ID de machine qui changent dès qu'on fait un pet de travers, essaye un peu trop de communiquer avec l'extérieur à mon goût. Synchro relativement rapide par contre.
|
||||
|
||||
À l'exception de mes projets de dev, qui sont de toute façon dans des dépôts
|
||||
git, mes autres documents ne changent pas fréquemment. Donc finalement, je
|
||||
réalise qu'avoir un outil qui tourne en permanence en tâche de fond ne m'est pas
|
||||
vraiment indispensable. La synchro m'intéresse pour les images ou la musique,
|
||||
mais je les modifie tellement rarement qu'une synchro en temps-réel n'est pas
|
||||
pertinente ; je peux me permettre de faire un `git pull` de temps en temps...
|
||||
|
||||
## La solution : git-lfs
|
||||
|
||||
Ça fait longtemps que je réfléchi à la question, lu quantité d'articles traitant
|
||||
du sujet, tant en provenance de partisans que de détracteurs, quoique ces
|
||||
derniers se font de plus en plus rares. De toute façon, je ne risque pas grand
|
||||
chose à essayer alors voilà : je vais désormais stocker **tous** mes documents
|
||||
dans des dépôts git.
|
||||
|
||||
En ce qui me concerne, je ne vois que des avantages :
|
||||
|
||||
- j'utilise déjà git pour mes projets de dev, j'ai donc déjà toute l'infrastructure sous la main
|
||||
- même si ce n'était pas le cas, je peux utiliser n'importe quel hébergeur de services git (mais bon, je parle de mes documents personnels que je préfère donc garder dans mon réseau local...)
|
||||
- je peux garder une trace de l'historique de modification de tous mes fichiers, plus seulement de mes projets dev
|
||||
- l'extension [_lfs_](https://git-lfs.github.com) est faite pour stocker des gros fichiers (et nativement supportée par [Gitea](https://gitea.io/en-us/)), et me semble donc adéquate pour la musique, les vidéos, les photos RAW
|
||||
- je me passe d'un processus qui tourne en arrière-plan, autant côté client que côté serveur (dans la mesure où j'ai de toute façon un serveur git qui tourne) - je peux même me passer d'une autre méthode d'accès à mes fichiers, et donc virer samba/NFS/whatever
|
||||
- si un jour je ressens à nouveau le besoin d'une synchro en temps-réel, je peux me tourner vers [SparkleShare](https://www.sparkleshare.org) **sans rien changer** à mes habitudes
|
||||
- je trouve que la sauvegarde et la restauration de mes fichiers en cas de pépin est beaucoup plus simple que les procédures habituelles, et c'est dû au fonctionnement-même de git : si j'ai un grave problème sur une des machines clientes, il existe toujours au moins une copie de mes fichiers sur le réseau (sur le serveur et/ou sur les autres clients). Et si le serveur git nécessite une restauration, j'ai les dépôts répartis sur les machines clientes, il n'y a qu'à faire des `git push`.
|
||||
- Gitea (et les autres forges logicielles) intègre nativement la prévisualisation des PDF ou des images, l'écoute des fichiers audio, la lecture des fichiers vidéos, etc. Pratique pour un accès occasionnel sans cloner tous les documents ! S'il y avait aussi des éditeurs pour les fichiers OpenDocument, je serai comblé !
|
||||
- en bonus, si j'ai envie de m'amuser, je pourrais utiliser [Drone-CI](https://www.drone.io) et là c'est tout un monde qui s'ouvre à moi : automatisation d'export de mes photos dans un format adapté au web, conversion automatique de fichiers, génération automatique de documents via pandoc, etc. ; ces exemples me concernent directement et me trottent dans la tête depuis longtemps pour mes cas d'usage, mais j'imagine qu'il y en aurait bien d'autres... rien que le fait d'écrire ça fait naitre tout un tas d'idées : tags automatique sur les musiques, suppression de certains en-têtes EXIF sur certaines photos, etc.
|
||||
|
||||
Et comme je teste ça depuis quelques jours, je peux déjà constater que ça
|
||||
fonctionne mieux que ce que j'espérais, en particulier en ce qui concerne la
|
||||
synchronisation de beaucoup de fichiers de taille réduite (typiquement, de
|
||||
vieilles photos en jpeg dans des résolutions inférieures à 1920x1080).
|
||||
Habituellement, c'est ce qui pose le plus de problèmes aux autres solutions de
|
||||
stockage que j'ai testé, y compris via samba. Le débit s'effondre assez vite
|
||||
dans un tel cas de figure. git est d'office optimisé pour gérer de nombreux
|
||||
petits fichiers, et heureusement lfs ne vient pas plomber ces optimisations.
|
||||
|
||||
Dans l'exemple d'environ 5000 fichiers de moins de 5Mo, j'ai un débit constant
|
||||
de 85Mo/s au minimum sur une connexion gigabit (dont le maximum théorique est
|
||||
donc de 125Mo/s). De fait, la synchro est _très_ rapide, beaucoup plus que via
|
||||
webdav par exemple... Je peux donc rajouter la **rapidité** à ma liste
|
||||
d'avantages.
|
||||
|
||||
Enfin, dernier avantage et non des moindres, c'est que c'est **très simple** à
|
||||
mettre en place. Il n'y a qu'à informer lfs des types de fichiers qu'il doit
|
||||
gérer :
|
||||
|
||||
```shell {linenos=false,class=not-prose}
|
||||
git lfs track "*.pdf" # Pour stocker les PDF dans lfs...
|
||||
```
|
||||
|
||||
Cette commande aura pour effet de créer un fichier _.gitattributes_ (qu'il est
|
||||
aussi possible de modifier manuellement), et c'est ce fichier que git va
|
||||
utiliser pour déterminer les fichiers à stocker dans lfs. Tout le reste se fait
|
||||
via les commandes git classiques.
|
||||
|
||||
## Inconvénients
|
||||
|
||||
Si ça vous gonfle de faire un `git commit` et `git push` à chaque fois que vous
|
||||
modifiez un fichier et de faire un `git pull` sur les autres machines sur
|
||||
lesquelles vous voulez synchroniser vos fichiers, c'est sûr que cette solution
|
||||
ne vous conviendra pas, mais n'oubliez pas que SparkleShare peut faire tout ça
|
||||
pour vous.
|
||||
|
||||
Je pense que l'utilisation de git pour stocker ses documents personnels
|
||||
nécessite une bonne organisation pour être optimale. J'ai créé un certain nombre
|
||||
de dépôts, pour les musiques, pour les vidéos, pour les photos, pour les fonds
|
||||
d'écran, pour les documents administratifs, pour les documents professionnels,
|
||||
etc. Si on n'est pas habitué à git, ça peut être intimidant de jongler avec tout
|
||||
ça. On peut très bien fonctionner avec un seul dépôt ceci-dit, peut être que
|
||||
j'ai fait de l'[_overengineering_](https://en.wikipedia.org/wiki/Overengineering)...
|
||||
|
||||
Une "limitation" de lfs qui ne me concerne pas mais dont il faut être conscient :
|
||||
|
||||
> Why doesn’t Git LFS handle files larger than 4 GiB on Windows?
|
||||
>
|
||||
> Git LFS itself handles these files just fine. However, Git LFS is usually invoked by Git, and Git itself on Windows doesn’t handle files using smudge and clean filters (like Git LFS) that are larger than 4 GiB. As soon as Git handles this, Git LFS will work with it automatically.
|
||||
>
|
||||
> In the mean time, you can set the environment variable GIT_LFS_SKIP_SMUDGE to 1 and run git lfs pull to pull down the LFS files. This bypasses Git’s smudging functionality and therefore avoids its limitations.
|
||||
|
||||
De manière générale, lisez la [FAQ](https://github.com/git-lfs/git-lfs/wiki/FAQ)
|
||||
et le reste du [wiki](https://github.com/git-lfs/git-lfs/wiki) de lfs.
|
||||
@@ -0,0 +1,200 @@
|
||||
---
|
||||
date: '2021-10-20'
|
||||
title: 'Réflexion : Dead-man switch'
|
||||
---
|
||||
|
||||
## Définition
|
||||
|
||||
Un _dead-man switch_ est une procédure exécutée à la mort d'une personne. Dans
|
||||
la culture populaire, il s'agit généralement d'un capteur biométrique : si son
|
||||
porteur décède, ce capteur déclenche un évènement particulier (généralement,
|
||||
l'explosion d'une bombe ou l'effacement de données dont le monde dépend...).
|
||||
|
||||
Historiquement, il s'agit d'un dispositif utilisé dans le domaine ferroviaire
|
||||
permettant de s'assurer de l'état de conscience du conducteur du train ou du
|
||||
métro, puis étendu à d'autres domaines. On trouve un tel dispositif dans les
|
||||
véhicules modernes.
|
||||
|
||||
## Application numérique au "commun des mortels"
|
||||
|
||||
La question de l'advenir des données personnelles lors du décès d'un individu a
|
||||
notamment été posée dans le cadre de l'usage de facebook ou de twitter. Quand le
|
||||
propriétaire d'un compte de réseau social décède, qui peut réclamer le contenu
|
||||
publié ? Le sujet est d'autant plus intéressant que de nombreux domaines sont
|
||||
concernés, pas seulement les données personnelles : comment attester de la
|
||||
légitimité de la demande d'accès au compte, comment attester du décès réel du
|
||||
porteur initial, que se passe-t'il si le prétend défunt ne l'est pas, quel est
|
||||
le motif de la demande d'"héritage", etc. Les problématiques sont nombreuses, et
|
||||
je pense que les "plateformes" seules ne peuvent pas les résoudre. Je pense
|
||||
qu'il appartient à chaque individu de prendre ses dispositions s'il souhaite que
|
||||
ses données lui survive, et pas seulement sur les réseaux sociaux, au même titre
|
||||
que l'on organise "matériellement" sa fin de vie - lorsque c'est possible.
|
||||
|
||||
Malheureusement, organiser sa fin de vie numérique s'oppose à la technicité de
|
||||
l'outil informatique. Même pour un geek avisé, la tâche est colossale, à cause
|
||||
de la quantité de choses auxquelles il faut penser. Non pas qu'organiser sa fin
|
||||
de vie soit facile _IRL_, mais le regroupement de l'ensemble des informations
|
||||
publiées sur Internet au cours de la vie d'un individu n'est pas aussi facile
|
||||
qu'on pourrait le penser.
|
||||
|
||||
Nous arriverons à plus ou moins courte échéance au moment où Internet verra une
|
||||
génération complète à la fois commencer et terminer sa vie en ligne. Ce n'est
|
||||
pas encore le cas, et même si de temps en temps on nous propose une piqûre de
|
||||
rappel, on est tous encore loins de planifier notre fin de vie numérique.
|
||||
|
||||
## Pourquoi planifier sa fin de vie numérique ?
|
||||
|
||||
Permettez-moi de vous poser la question autrement : pourquoi planifions-nous
|
||||
généralement notre fin de vie ? Il n'y a pas qu'une seule réponse, mais on peut
|
||||
raisonnablement penser que deux raisons au moins parmi d'autres nous y pousse :
|
||||
|
||||
- la pérennisation des richesses familiales
|
||||
- les croyances individuelles
|
||||
|
||||
Il y a de nombreux autres cas de figure évidemment, que l'on ait des héritiers
|
||||
ou non, des richesses ou non, des croyances ou non.
|
||||
|
||||
Mon point de vue est que l'on ne pose pas la question aux gens "pourquoi
|
||||
planifiez-vous votre fin de vie ?" ; on ne s'intéresse qu'aux dispositions
|
||||
pratiques. On part même du principe que tout le monde, par défaut, veut
|
||||
organiser sa fin de vie, ultime contrôle sur nos existences. Alors pourquoi
|
||||
poser la question de la planification de la fin de vie numérique, et ne pas,
|
||||
tout simplement, partir du principe que toute personne doit pouvoir disposer de
|
||||
toute donnée numérique qu'elle a pu produire au cours de sa vie ?
|
||||
|
||||
## De fortes contraintes techniques
|
||||
|
||||
De par la volatilité d'une donnée numérique, il est presqu'impossible d'en
|
||||
garantir l'existence pour une durée prolongée. J'ai fait mes débuts sur Internet
|
||||
sur MSN Communities, et MSN Chat. Je suis aussi intervenu sur Caramail, fut un
|
||||
temps. Un jour, sites parmi les plus visités du monde. Aujourd'hui, complètement
|
||||
tombés dans l'oubli. Pas que leurs noms : leurs données aussi, y compris celles
|
||||
que j'y ai mises. Impossible pour moi de prouver que j'ai obtenu une marque de
|
||||
reconnaissance de la part de Microsoft pour la qualité des communautés que j'ai
|
||||
créé sur MSN Communities. Impossible de retrouver des informations que j'ai pu y
|
||||
publier, et même la [Wayback Machine](https://archive.org/web/) n'y peut rien, à
|
||||
plus forte raison lorsque le contenu a été publié dans un espace qui demande une
|
||||
authentification.
|
||||
|
||||
Malgré tous les efforts que je peux y mettre, (et je me considère techniquement
|
||||
avancé) il m'est impossible de rassembler tout ce que j'ai produis au cours de
|
||||
ma vie numérique. Et croyez bien que je le regrette. Et ce n'est pas
|
||||
nécessairement parce que j'ai consciemment supprimé ces données : disparition du
|
||||
domaine, voire du site complet, sur lequel les données ont été publiées,
|
||||
utilisation d'un pseudonyme oublié, commentaire isolé sur un site de niche,
|
||||
redirections infructueuses, les raisons pour lesquelles on peut ne pas remettre
|
||||
la main sur ses données sont nombreuses, et souvent indépendantes de notre
|
||||
volonté.
|
||||
|
||||
## _Dead-man switch_ moderne ?
|
||||
|
||||
Si la technologie existe pour surveiller l'état de santé d'un individu (via les
|
||||
bracelets ou montres connectés, les téléphones portables, ou les dispositifs à
|
||||
destination des personnes âgées), elle se contente de prévenir quelqu'un, qu'il
|
||||
s'agisse des secours ou d'un proche, mais elle est encore bien incapable de
|
||||
s'occuper de sa vie numérique.
|
||||
|
||||
Comme je le disais plus haut, pour le moment, seul l'individu peut choisir ce
|
||||
qu'il veut faire de ses données lors de son trépas. Certaines plateformes ont
|
||||
mis en place diverses actions à ce titre, mais chaque individu doit bien penser
|
||||
à activer ces options, sachant qu'elles ne peuvent pas toujours être déclenchées
|
||||
automatiquement.
|
||||
|
||||
Il y a tellement de plateformes différentes sur lesquelles on publie du contenu
|
||||
au cours de sa vie numérique qu'il est impossible de s'en souvenir en
|
||||
intégralité. De plus, il est impossible de relier avec certitude une donnée
|
||||
particulière avec un auteur particulier. Des protocoles tels qu'ActivityPub, et
|
||||
les solutions auto-hébergés restent la meilleure option à l'heure actuelle pour
|
||||
conserver la main sur ses données, et le sujet a été amplement abordé par mes
|
||||
pairs. Mais même en mettant en oeuvre de telles solutions, il n'existe pas
|
||||
d'architecture commune, de protocoles, d'interfaces permettant des actions
|
||||
universelles en cas de fin de vie numérique. Rien, en tout cas, d'uniformisé,
|
||||
documenté. Les plus geeks d'entre nous auront bien quelques idées, mais elles
|
||||
sont loin, très loin d'être accessibles au commun des mortels.
|
||||
|
||||
## Que doit faire un _dead-man switch_ ?
|
||||
|
||||
Dans l'absolu, un _DMS_ devrait être informé en temps réel de l'intégralité des
|
||||
données produites par un individu : aussi bien le contenu que les méta-données
|
||||
et leur emplacement numérique (l'URL pour y accéder), avec un horodatage. Cela
|
||||
ressemble à s'y méprendre à ce que fait _git_... qui représente justement, selon
|
||||
moi, le meilleur outil pouvant servir à la réalisation d'un _DMS_.
|
||||
|
||||
En admettant que le _DMS_ dispose de ces informations, il doit pouvoir les
|
||||
stocker de façon fiable pendant au moins la durée de vie de l'individu. Si vous
|
||||
êtes un geek, vous disposez sûrement de sauvegardes datant de plusieurs années.
|
||||
Peut-être même, une ou deux dizaines. Si vous n'êtes pas geek, il est peut
|
||||
probable que la donnée la plus ancienne que vous ayez jamais produite vous soit
|
||||
encore accessible.
|
||||
|
||||
Même si l'on se considère geek, certaines données sont de toute façon perdues à
|
||||
jamais. Comment pourrais-je transférer sur un ordinateur moderne les programmes
|
||||
que j'ai écrits en BASIC dans les années 80, stockés sur des disquettes dont le
|
||||
format n'a jamais été créé pour autre chose qu'un Amstrad CPC 464 ou 6128 ? Je
|
||||
devrais déployer des trésors d'ingéniérie pour y parvenir, si tant est que je
|
||||
pouvais remettre la main sur une telle machine en état de marche, et surtout,
|
||||
sur les disquettes dont il est question...
|
||||
|
||||
En outre se pose aussi la question des formats de données : des formats binaires
|
||||
qui existaient dans les années 80 ne sont probablement plus lisibles
|
||||
aujourd'hui, sauf, encore une fois, pour les plus opiniâtres des geeks.
|
||||
|
||||
Un bon _DMS_ doit stocker ses données dans un format reproductible et pérenne,
|
||||
et doit donc trouver un compromis entre l'espace nécessaire au stockage de la
|
||||
donnée et son interopérabilité. On doit pouvoir _lire_ la donnée même si son
|
||||
format initial n'est plus supporté. Là encore, c'est un sujet que la philosophie
|
||||
de l'informatique a abordé assez souvent, sans pour autant trouver de réelle
|
||||
solution. Dans l'absolu, l'intégration d'émulateurs pourrait permettre la
|
||||
reproduction de données trop anciennes, mais aurait sans doute un coût matériel
|
||||
prohibitif.
|
||||
|
||||
Si l'on dispose des informations de base et d'un moyen de stockage fiable, il
|
||||
faut décider ensuite quoi faire de ces données. Un _DMS_ doit offrir le moyen
|
||||
de définir des règles précises, des tâches particulières à effectuer lors du
|
||||
déclenchement de la procédure de fin de vie. Telles données doivent être rendues
|
||||
disponibles à telle ou telle personne uniquement, telles données doivent être
|
||||
rendue publiques à tel endroit, tel message doit être envoyé à telle personne,
|
||||
etc. Là encore, la complexité de la gestion de ces données pourrait
|
||||
littéralement occuper une vie entière.
|
||||
|
||||
Enfin, il faut disposer d'un moyen de déclencher ces procédures, au moment
|
||||
"opportun". Les technologies de surveillance individuelle de santé peuvent y
|
||||
aider, mais la criticité d'une telle procédure recquiert un comportement sans
|
||||
faille. En outre, il faut que le _DMS_ soit disponible au moment où se produit
|
||||
le décès, c'est-à-dire que toute la chaîne logicielle soit fonctionnelle. Et ce
|
||||
n'est pas toujours selon le bon vouloir de l'individu...
|
||||
|
||||
## Impossible à réaliser ?
|
||||
|
||||
Je récapitule :
|
||||
|
||||
- [x] Surveillance de l'état de santé d'un individu
|
||||
- [ ] Déclenchement sécurisé d'une action auprès du _DMS_
|
||||
- [ ] Le _DMS_ doit avoir accès à toutes les données de l'individu
|
||||
- [ ] Le _DMS_ doit lire et appliquer les règles qu'a défini l'individu de son vivant concernant chaque donnée enregistrée
|
||||
- [ ] Dans l'absolu, le _DMS_ devrait répliquer toutes les données sur un système de stockage spécifique et fournir une interface de navigation pour que les proches du défunt puisse les visualiser d'une façon ou d'une autre
|
||||
- [ ] Le _DMS_ doit pouvoir stocker ces données pendant une durée indéterminée
|
||||
- [ ] Il doit fournir les moyens de visualiser n'importe quelle donnée, même trop vieille pour des machines modernes
|
||||
- [ ] Il doit aussi embarquer des moyens modernes de visualisation de ces données qu'il sera possible d'utiliser avec des ordinateurs construits à moyen ou long terme
|
||||
|
||||
Il y a encore de nombreuses problématiques à résoudre, comme la sécurité des
|
||||
données stockées localement, la sécurité des accès aux données distantes,
|
||||
acquérir la certitude que le défunt a bien déclenché la procédure et non qu'elle
|
||||
l'ait été par une action malveillante visant spécifiquement à y accéder, la
|
||||
notarisation des règles définies par le défunt de son vivant afin de s'assurer
|
||||
du respect juridique de la transmission des données, il faudra probablement
|
||||
tenir compte des licences sous lesquelles l'individu a publié, voire appliquer
|
||||
une licence par défaut, etc.
|
||||
|
||||
Je pense que pour l'heure, on ne disposera pas d'un tel système utilisé à grande
|
||||
échelle avant un moment, et lorsqu'il le sera, il sera aux mains d'une grande
|
||||
entreprise privée. Probablement facebook, peut-être qu'Apple offrira un service
|
||||
similaire. Google sans aucun doute, considérant sa volonté de [tuer la mort](https://en.wikipedia.org/wiki/Calico_(company))
|
||||
et son omnipotence légendaire. Mais, si on est sur toutes ces plateformes, on
|
||||
va multiplier les _DMS_, rendant la procédure encore plus compliquée.
|
||||
Alors on verra peut-être naitre des services hybrides, interconnectés, et puis
|
||||
enfin, quelques années plus tard, des solutions Libres et auto-hébergeables.
|
||||
|
||||
On verra bien. J'aimerais bien disposer de tels services Libres et
|
||||
auto-hébergables dès aujourd'hui, parce que leur prise en main va prendre un
|
||||
temps considérable.
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
date: '2021-10-26T17:54:56+01:00'
|
||||
title: Pour le bien de vos écrans, investissez dans vos câbles
|
||||
---
|
||||
|
||||
Très heureux détenteur de deux écrans Alienware AW2518HF et AW2521HF, que j'ai
|
||||
choisi principalement pour leur fréquence d'affichage de 240Hz, je me retrouvais
|
||||
frustré quand, passant au Mac mini depuis le laptop du travail ou depuis le PC
|
||||
dédié au jeu, j'étais dans l'incapacité de monter au-delà de 120/144Hz. Pour
|
||||
moi, la cause était à chercher soit dans la connectique, dans le sens où "là je
|
||||
suis en HDMI, c'est le HDMI qui me bride à 120Hz, là je passe par un adaptateur
|
||||
USB-C, c'est l'adaptateur qui me bride", soit le Mac mini M1 qui était incapable
|
||||
de piloter les deux écrans en 240Hz. À l'époque où j'ai fait mon installation,
|
||||
on ne disposait pas encore d'informations précises à ce sujet.
|
||||
|
||||
En pratique, ma connectique se présentait de la façon suivante :
|
||||
|
||||
- Mac mini :
|
||||
- HDMI vers HDMI sur le 2518, bridé à 120Hz (câble Amazon Basic estampillé 4K/60Hz)
|
||||
- USB-C vers HDMI sur le 2521, bridé à 144Hz (câble d'entrée de gamme Choetech 4K/60Hz)
|
||||
- Laptop du travail :
|
||||
- HDMI vers HDMI sur le 2518, 240Hz (câble Amazon Basic estampillé 4K/60Hz)
|
||||
- PC de jeu :
|
||||
- DisplayPort vers DisplayPort sur le 2518, 240Hz (câble haut de gamme 4K/60Hz)
|
||||
|
||||
En outre, sur le Mac mini (et seulement sur le Mac mini), je trouvais que le
|
||||
2521 était comme délavé, et surtout, de temps en temps, l'image "brûlait"
|
||||
l'écran, c'est-à-dire que si je changeais d'image, l'image précédente restait
|
||||
comme "incrustée". Je pensais que c'était un défaut de fabrication, ou que
|
||||
c'était un bug logiciel ou matériel du Mac mini M1, et comme le soucis n'était
|
||||
ni fréquent ni permanent, je ne voyais pas de raison de m'inquiéter plus que ça.
|
||||
|
||||
Il faut également préciser que j'étais quelque peu "formaté" par tous ces
|
||||
articles vus sur le web, clamant que finalement, il n'y avait pas de raison de
|
||||
dépenser des fortunes pour les câbles HDMI ou DisplayPort, que les câbles
|
||||
d'entrée de gamme étaient tout aussi efficaces.
|
||||
|
||||
Mais à l'occasion de mon anniversaire, j'ai souhaité monter en gamme sur la
|
||||
connectique vidéo du Mac mini. J'ai donc découvert que mes problèmes étaient à
|
||||
100% dus à la qualité médiocre des câbles que j'utilisais jusqu'alors. Je
|
||||
n'avais pas vraiment de raisons de douter des câbles Amazon Basics : celui du
|
||||
laptop, acheté en même temps que celui du Mac mini, ne me bride en aucune façon.
|
||||
Pas plus que d'autres câbles de la marque que j'utilise ailleurs.
|
||||
|
||||
Non seulement j'ai maintenant du 240Hz sur mes deux écrans, peu importe
|
||||
l'ordinateur sur lequel je me trouve, mais en plus j'ai une meilleure
|
||||
colorimétrie et je n'ai plus ce problème d'image "brûlée". Ma connectique se
|
||||
présente désormais ainsi :
|
||||
|
||||
- Mac Mini :
|
||||
- HDMI vers HDMI sur le 2521, 240Hz (câble haut de gamme **8K**/60Hz)
|
||||
- USB-C vers HDMI sur le 2518, 240Hz (câble haut de gamme 4K/60Hz)
|
||||
- Laptop du travail :
|
||||
- HDMI vers HDMI sur le 2518, 240Hz (câble haut de gamme **8K**/60Hz)
|
||||
- USB-C vers DisplayPort sur le 2521, 240Hz (câble haut de gamme **8K**/60Hz)
|
||||
- PC de jeu :
|
||||
- DisplayPort vers DisplayPort sur le 2518, 240Hz (câble haut de gamme 4K/60Hz)
|
||||
|
||||
Si le 8K est plus commercial qu'autre chose, au moins je m'assure d'avoir de la
|
||||
marge. Si un câble est certifié 8K/60Hz, je pourrais envisager plus tard
|
||||
d'acheter un écran 4K/144Hz, et je suis certain d'avoir du 240Hz en 1920x1080.
|
||||
|
||||
Je pense désormais que si j'avais continué à utiliser le câble Choetech, j'aurai
|
||||
fini par définitivement cramer mon 2521.
|
||||
|
||||
En conclusion : n'hésitez pas à prendre le haut du panier en matière de câbles,
|
||||
vous dépenserez peut-être 20 ou 30 euros de plus que si vous choisissez de
|
||||
l'entrée de gamme, mais vous éviterez de cramer un écran à 400 euros... sans
|
||||
compter les autres avantages : pouvoir monter en fréquence, meilleure
|
||||
colorimétrie, meilleure qualité d'image.
|
||||
@@ -0,0 +1,34 @@
|
||||
---
|
||||
date: '2021-10-26T02:52:56+01:00'
|
||||
title: Récupération d'articles d'archives
|
||||
---
|
||||
|
||||
En fouillant un peu le net et la [Wayback Machine](https://web.archive.org/),
|
||||
j'ai pu extraire quelques billets que j'avais écris en 2016. Comme ce sont les
|
||||
miens, je les ai rapatriés ici-même.
|
||||
|
||||
- 27/07/2016 - [Alphabet, une entreprise pas comme les autres](/interets/informatique/2016/07/27/alphabet-une-entreprise-pas-comme-les-autres/)
|
||||
- 02/08/2016 - [Protection de la vie privée et conspirationnisme](/interets/informatique/2016/08/02/protection-de-la-vie-privee-et-conspirationnisme/)
|
||||
- 10/08/2016 - [De l'inutilité et de l'hypocrisie d'AdBlock Plus](/interets/informatique/2016/08/10/de-l-inutilite-et-de-l-hypocrisie-d-adblock-plus/)
|
||||
|
||||
J'ai également trouvé un vieux site
|
||||
que j'avais fait en PHP avec la platforme e107, pour présenter quelques outils
|
||||
que j'avais développé en 2004. Il est intéressant de noter la mention d'une
|
||||
application appelée "Bookmarks Manager", qui deviendra
|
||||
"[Cyca](https://git.dern.ovh/richard/cyca)" quelques années plus tard...
|
||||
|
||||
En remontant le temps encore plus loin, je suis arrivé sur la
|
||||
[communauté MSN](https://web.archive.org/web/20080405051026/http://groups.msn.com/LeparadisInformatique/chronologieduparadis.msnw)
|
||||
dont [je vous ai déjà parlé](/interets/informatique/2021/10/20/reflexion-dead-man-switch/#de-fortes-contraintes-techniques).
|
||||
Et là mon coeur s'est emballé au rappel de cette esthétique si particulière,
|
||||
cette interface, ces gens que j'ai connu, avec qui j'ai vécu des moments forts,
|
||||
parfois. Et qui ensuite ont disparu sans garder contact, lors de la dissolution
|
||||
de MSN Communities. Une des meilleures des pays francophones, qui m'a valu un
|
||||
papillon MSN, marque de reconnaissance sans valeur financière mais tellement
|
||||
importante quand on est un geek de 19 ans... Le "Paradis Informatique" sur MSN,
|
||||
c'était moi... J'ai du mal à croire que ce n'était qu'il n'y a que 20 ans !
|
||||
|
||||
Si je trouve d'autres de mes vieux articles, je les importerai. Mais comme il
|
||||
est difficile de trouver le squelette complet d'un dinosaure, il risque d'être
|
||||
compliqué de retrouver l'intégralité de mes publications faites après
|
||||
MSN Communities.
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
date: '2021-10-27'
|
||||
title: 'Aphorisme #1'
|
||||
---
|
||||
|
||||
Les assistants vocaux tels que Siri font une aide quotidienne formidable. Ils
|
||||
présentent néanmoins un grave inconvénient : ils n'attendent pas de politesses,
|
||||
et répondront toujours, même si on ne leur dit jamais "Merci".
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
date: '2021-10-29'
|
||||
title: Déployer Hugo via Gitea et Drone-CI avec Caddy et MinIO
|
||||
---
|
||||
|
||||
Si le titre de cet article vous est familié : MERCI ! cela signifie que vous me
|
||||
lisez 😄 Dans le cas contraire, cet article fait suite à un autre article publié
|
||||
le mois dernier : [Déployer Hugo via Gitea et Drone-CI](/interets/informatique/2021/09/12/deployer-hugo-via-gitea-et-drone-ci/).
|
||||
Vous aurez donc compris que je vais rendre la procédure encore plus complexe.
|
||||
|
||||
<details class="read-more"><summary>Voir aussi</summary>
|
||||
|
||||
- [/interets/informatique/2021/09/12/deployer-hugo-via-gitea-et-drone-ci/](/interets/informatique/2021/09/12/deployer-hugo-via-gitea-et-drone-ci/)
|
||||
|
||||
</details>
|
||||
|
||||
## Contexte et motivation
|
||||
|
||||
Je suis très satisfait de ma stack de publication actuelle : j'écris mes
|
||||
articles "localement" sur mon Mac mini, quand je suis satisfait je commit mes
|
||||
modifications sur mon serveur Gitea, Drone-CI se déclenche, compile le site,
|
||||
et le copie sur le serveur web via SSH. Pour servir le site, j'utilise Caddy,
|
||||
qui doit alors disposer d'un accès au système de fichiers du serveur.
|
||||
|
||||
J'aimerais supprimer cette dépendance, pour m'éviter de monter un volume docker
|
||||
rien que pour faire ça. Il y a d'autres raisons plus techniques : cela pourrait
|
||||
me simplifier les sauvegardes, rendre possible la réplication des données, ce
|
||||
qui pourrait amèner à de la haute-disponibilité. Et puis, je suis très satisfait
|
||||
des performances de mon serveur MinIO mais qui, pour l'instant, reste
|
||||
sous-exploité. En outre, je pourrai supprimer le lien SSH entre la CI et le
|
||||
serveur Web, et l'utilisateur créé à cet unique effet.
|
||||
|
||||
Le but est donc que Drone-CI stocke le résultat de la compilation (c'est-à-dire,
|
||||
l'arborescence complète du site statique) dans MinIO, plutôt que de l'envoyer au
|
||||
serveur via SSH. Trois choses sont donc à modifier : MinIO pour créer un bucket
|
||||
destiné à mon site, Caddy pour lui dire comment accèder et servir ces données,
|
||||
et Drone-CI pour lui dire comment stocker les données dans le bucket.
|
||||
|
||||
Tout cela a l'air bien compliqué, je vous l'accorde, mais on peut voir les
|
||||
choses sous un autre angle :
|
||||
|
||||
- Je ne rajoute finalement qu'une application au processus (MinIO)
|
||||
- C'est une application extrêmement simple, populaire, légère, rapide (en upload, je sature ma liaison gigabit, peu importe la taille des fichiers envoyés, ce qui n'est pas le cas avec SSH par exemple)
|
||||
- Je supprime un accès SSH et un utilisateur, donc - petit - gain de sécurité
|
||||
- Je découple Caddy et Drone-CI du stockage disque pour les coupler à un système de stockage distant, distribué et répliqué
|
||||
|
||||
Donc au final, ajouter une étape au processus me permet de simplifier la gestion
|
||||
de toute la stack, de mes serveurs, et de pérenniser mes données. Le tout avec
|
||||
des outils simples, puissants, légers et performants. Que demander de plus ?
|
||||
|
||||
## MinIO
|
||||
|
||||
Avec un MinIO déjà opérationnel, il suffit de créer un nouvel utilisateur, un
|
||||
nouveau bucket (avec l'attribut `public`, sinon Caddy ne pourra pas y accéder),
|
||||
et donner les permissions `readwrite` au nouvel utilisateur sur ce bucket.
|
||||
C'est extrêmement simple via l'interface web.
|
||||
|
||||
J'ai nommé mon bucket _richard-dern.fr_.
|
||||
|
||||
## Drone-CI
|
||||
|
||||
Dans Drone-CI, il faut créer deux nouveaux secrets, dans lesquels on va mettre
|
||||
l'*access_key* du nouvel utilisateur dans MinIO, et la *secret_key*
|
||||
correspondante. J'ai tout simplement nommé ces secrets respectivement
|
||||
*s3_access_key* et *s3_secret_key*.
|
||||
|
||||
Dans le fichier _.drone.yml_ de mon projet, j'ai remplacé la partie concernant
|
||||
SCP par le plugin S3 :
|
||||
|
||||
```yaml {class=not-prose}
|
||||
- name: upload
|
||||
image: plugins/s3
|
||||
settings:
|
||||
bucket: richard-dern.fr # Remplacez par le nom de votre propre bucket
|
||||
source: public/**/*
|
||||
target: /
|
||||
strip_prefix: public/ # On supprime public/ sinon c'est chiant
|
||||
path_style: true # Obligatoire pour MinIO, déprécié chez AWS
|
||||
access_key:
|
||||
from_secret: s3_access_key # Le nom de votre nouvel utilisateur MinIO
|
||||
secret_key:
|
||||
from_secret: s3_secret_key # La secret_key correspondante
|
||||
endpoint: http://10.0.2.1:9000 # Remplacez par l'URL de votre MinIO
|
||||
```
|
||||
|
||||
## Caddy
|
||||
|
||||
Caddy a nécessité un peu plus de recherche, mais j'ai fini par trouver une façon
|
||||
de faire, sans avoir recours au moindre plugin. Remplacez, dans les lignes
|
||||
suivantes (2 à 7), _richard-dern.fr_ par le nom de votre bucket, et la dernière
|
||||
ligne par l'adresse de votre serveur MinIO.
|
||||
|
||||
``` {class=not-prose}
|
||||
www.richard-dern.fr {
|
||||
# Site statique, donc on bloque tout ce qui n'est pas GET
|
||||
# On évite ainsi les requêtes à l'API MinIO
|
||||
@@method not method GET
|
||||
error @@method "Method not allowed" 405
|
||||
|
||||
@@dirregex {
|
||||
path_regexp static ^(.*)/$
|
||||
}
|
||||
|
||||
rewrite @@dirregex /richard-dern.fr{re.static.1}/index.html
|
||||
rewrite * /richard-dern.fr{path}
|
||||
reverse_proxy http://10.0.2.1:9000
|
||||
}
|
||||
```
|
||||
|
||||
Le problème avec Caddy dans ce contexte, c'est qu'il ignore `try_files` et
|
||||
`index`, et que MinIO renvoit la liste des fichiers contenus dans le répertoire
|
||||
demandé en XML (API oblige). En outre, la directive *reverse_proxy* ne peut pas
|
||||
contenir de chemin. Pour résoudre ce problème, on utilise les lignes 7 et 8, ce
|
||||
qui nous permet au moins de ne pas être redirigés vers la page de connexion de
|
||||
MinIO.
|
||||
|
||||
Pour le problème des dossiers, on défini un
|
||||
[_matcher_](https://caddyserver.com/docs/caddyfile/matchers#syntax) dans le
|
||||
jargon de Caddy, en l'ocurrence un
|
||||
[*path_regexp*](https://caddyserver.com/docs/caddyfile/matchers#path-regexp). On
|
||||
peut ainsi matcher toute URL qui se termine par un `/`. On créé ensuite la règle
|
||||
de réécriture à la ligne 6, pour ajouter `/index.html` à la fin. De fait, on
|
||||
peut conserver des URLs courtes, et, normalement, l'accès aux autres ressources
|
||||
n'est pas cassé...
|
||||
|
||||
## Conclusion
|
||||
|
||||
Et voilà ! On peut démonter le volume utilisé jusq'à présent, et supprimer les
|
||||
fichiers du disque : Caddy n'utilisera plus que MinIO pour servir mon site. Le
|
||||
gain en performances me semble très intéressant, bien qu'il soit difficilement
|
||||
mesurable pour vous, chers visiteurs, compte tenu de mon upload limité. Mais de
|
||||
mon point de vue, tout me semble aller beaucoup plus vite, en particulier quand
|
||||
il y a des images dans un article.
|
||||
|
||||
Prochaine étape : haute-disponibilité ?
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
date: '2021-10-30'
|
||||
title: Drone-CI et htmltest pour traquer les liens morts dans Hugo
|
||||
---
|
||||
|
||||
Voilà un excellent exemple de ce pourquoi j'ai une stack de publication qui peut
|
||||
sembler compliquée au premier abord mais qui, au final, permet de faire plein de
|
||||
choses sympathiques. Si vous voulez en savoir plus, je vous invite à lire les
|
||||
autres articles que j'ai écrit à ce sujet :
|
||||
|
||||
<details class="read-more"><summary>Voir aussi</summary>
|
||||
|
||||
- [/interets/informatique/2021/09/12/deployer-hugo-via-gitea-et-drone-ci/](/interets/informatique/2021/09/12/deployer-hugo-via-gitea-et-drone-ci/)
|
||||
- [/interets/informatique/2021/10/29/deployer-hugo-via-gitea-et-drone-ci-avec-caddy-et-minio/](/interets/informatique/2021/10/29/deployer-hugo-via-gitea-et-drone-ci-avec-caddy-et-minio/)
|
||||
|
||||
</details>
|
||||
|
||||
Rapidement : j'ai Drone-CI qui s'occupe de compiler et publier un site statique
|
||||
réalisé avec Hugo (le site que vous êtes en train de visiter). Je vais lui
|
||||
demander d'en faire un peu plus : parcourir le site à la recherche de liens
|
||||
morts et bloquer la mise en production tant que je ne les ai pas corrigés.
|
||||
|
||||
Il suffit de rajouter les quelques lignes suivantes dans le fichier _.drone.yml_
|
||||
du projet, dans la section _steps_ :
|
||||
|
||||
```yaml {class=not-prose}
|
||||
- name: test_links # Nom de l'étape de la CI
|
||||
image: wjdp/htmltest # Image docker utilisée
|
||||
commands:
|
||||
- htmltest public/ # Dans Drone-CI, le site Hugo compilé se trouve dans public/
|
||||
```
|
||||
|
||||
En plus de vérifier la disponibilité des URLs, [htmltest](https://github.com/wjdp/htmltest)
|
||||
peut (et va) effectuer d'autres tests utiles et pertinents. Il est possible de
|
||||
[configurer l'application](https://github.com/wjdp/htmltest#wrench-configuration)
|
||||
plus en détails, mais le comportement de base de `htmltest` me convient bien.
|
||||
|
||||
Un petit "soucis" à noter : cette étape doit survenir **après** le déploiement
|
||||
en production, faute de quoi les liens vers une page nouvellement créée mais pas
|
||||
encore déployée seront considérés comme morts. On n'empêchera donc pas les liens
|
||||
morts d'arriver en production, mais au moins la CI pourra nous alerter de leur
|
||||
présence.
|
||||
|
||||
Évidemment, ça augmente quelque peu le temps de mise en production (je passe de
|
||||
35 secondes à 3 minutes), mais au moins, plus de liens morts, en seulement
|
||||
quatre lignes de conf... Simple, pour une fois !
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
date: '2021-11-06'
|
||||
title: 'Aphorisme #2'
|
||||
---
|
||||
|
||||
L'adage "Il ne faut pas confondre Libre et Éthique" prend désagréablement sens
|
||||
quand on voit ce que des entreprises manifestement non-éthiques font aux
|
||||
Logiciels Libres depuis 10-15 ans, et ce sous les applaudissements des Libristes
|
||||
eux-mêmes.
|
||||
@@ -0,0 +1,134 @@
|
||||
---
|
||||
date: '2021-11-07'
|
||||
title: 'Deux semaines sous NixOS : je divorce de debian'
|
||||
---
|
||||
|
||||
Voilà deux semaines que je fais tourner ma machine de jeu et le laptop du
|
||||
travail sous [NixOS](https://nixos.org/). J'en suis tellement satisfait que j'ai
|
||||
la ferme intention d'en faire mon OS par défaut pour toutes mes machines sous
|
||||
GNU-Linux, et en particulier mes trois serveurs.
|
||||
|
||||
> Attention, cet article n'est pas un guide pour NixOS, juste un retour
|
||||
> d'expérience.
|
||||
|
||||
## Présentation de NixOS
|
||||
|
||||
Comme toujours, c'est la [Wikipédia](https://fr.wikipedia.org/wiki/NixOS) qui
|
||||
vous en parlera le mieux (et, évidemment, le site officiel), alors pour vous
|
||||
présenter rapidement NixOS : c'est une distribution GNU-Linux qui présente la
|
||||
caractéristique de disposer d'une configuration dite "déclarative". Grosso-modo,
|
||||
vous définissez l'état logiciel d'une machine dans des fichiers de configuration
|
||||
et NixOS s'occupe du reste. Un peu comme ansible ou les _docker-compose_. Pour
|
||||
être exact, NixOS est une distribution Linux qui repose sur le gestionnaire de
|
||||
paquets nix.
|
||||
|
||||
La première version date de 2003, c'est donc une distro ancienne, mais
|
||||
activement maintenue.
|
||||
|
||||
## Du déclaratif, jusqu'à faire du _stateless_
|
||||
|
||||
En ce qui me concerne, l'aspect le plus marquant de NixOS est sa configuration
|
||||
déclarative, qui permet d'aller très loin dans la configuration du système
|
||||
jusqu'à permettre de construire un environnement _stateless_, c'est-à-dire
|
||||
qu'une fois la configuration appliquée, plus rien ne peut changer, à moins
|
||||
d'appliquer manuellement une nouvelle configuration, un peu comme un commit git.
|
||||
|
||||
On bénéficie donc de la reproductibilité logicielle : si un jeu de paramètres
|
||||
fonctionne chez moi, il fonctionnera aussi ailleurs (hors spécificités
|
||||
matérielles, évidemment). Et si on s'est bien débrouillé, on peut même arriver à
|
||||
générer des ISO spécifiques pour une machine dédiée : à nous le PXE sans prise
|
||||
de tête, le déploiement continu à l'échelle du système d'exploitation, la
|
||||
reprise d'activité en un instant, le versionning local de l'OS, etc. Les
|
||||
possibilités sont multiples.
|
||||
|
||||
## Une courbe d'apprentissage importante
|
||||
|
||||
Avant d'en arriver-là, il faudra toutefois passer par une courbe d'apprentissage
|
||||
assez prononcée. C'est assez facile de bricoler des trucs une fois qu'on a
|
||||
compris le principe du fichier _configuration.nix_, mais faire des trucs
|
||||
**vraiment** sympas prend du temps. À titre informatif, j'en suis à un peu plus
|
||||
de 150 générations, mais mes fichiers de configuration
|
||||
ne ressemblent toujours à rien 😄 J'ai réussi à éclater la configuration dans
|
||||
plusieurs fichiers, mais je ne suis pas certain que l'organisation pour laquelle
|
||||
j'ai opté est la meilleure, ni que je respecte les bonnes pratiques.
|
||||
|
||||
Mais c'est comme ça que j'apprends, que je m'imprègne de la philosophie de
|
||||
NixOS. Et, même si je ne suis pas encore satisfait de mes fichiers de conf, j'ai
|
||||
un système fonctionnel, y compris pour jouer.
|
||||
|
||||
## Ready for Steam, presque out-of-the-box
|
||||
|
||||
Ma machine de jeu est basée sur un Core i7 7700K et une GTX 1070 8G. Je ne joue
|
||||
qu'à des jeux sur Steam, et si [mes jeux préférés](https://steamcommunity.com/id/richarddern/games/?tab=all&sort=playtime)
|
||||
ne sont pas exigeants, moi je le suis. Je veux un max de FPS partout, une
|
||||
fluidité sans faille, sans déroger sur la qualité d'image, surtout que mon
|
||||
moniteur est en 240Hz.
|
||||
|
||||
Peu importe la distribution Linux, les pilotes graphiques sont toujours plus ou
|
||||
moins compliqués à installer - et surtout, configurer. Sous NixOS, c'est plutôt
|
||||
facile :
|
||||
|
||||
```nix {linenos=false,class=not-prose}
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
```
|
||||
|
||||
Quant à Steam, c'est tout aussi simple :
|
||||
|
||||
```nix {linenos=false,class=not-prose}
|
||||
programs.steam.enable = true;
|
||||
```
|
||||
|
||||
Et avec ces deux lignes (plus quelques autres pour i3, fish, firefox et deux ou
|
||||
trois options de personnalisation), mon PC fait tourner Steam, proton et tous
|
||||
mes jeux sans aucun soucis, y compris certains que je ne parvenais pas à faire
|
||||
tourner la veille de la première installation de NixOS, du genre
|
||||
_Age of Empires III_.
|
||||
|
||||
## Easy-peasy
|
||||
|
||||
Vu qu'il ne m'a fallut qu'une journée pour faire tourner mon PC de jeu sous
|
||||
NixOS et que maintenant c'est juste de l'optimisation/amélioration, je me sens
|
||||
en totale confiance pour l'installer sur mes serveurs. Je pourrais peut-être
|
||||
même me passer de docker pour la plupart des applications que j'utilise (oui,
|
||||
c'est un objectif à plus ou moins long terme : je ne veux plus de docker sur mes
|
||||
machines).
|
||||
|
||||
Un sentiment d'autant plus fort que j'ai aussi installé NixOS sur mon laptop
|
||||
professionnel, où disposer d'un environnement stable est tout de même très
|
||||
important. Et ce sentiment de stabilité est très concret : une fois qu'on a fait
|
||||
un `nixos-rebuild switch`, on a vraiment la sensation d'être aux commandes d'un
|
||||
système indestructible. Si ça marche une fois, ça marche toujours, à chaque
|
||||
reboot. On a le sentiment d'avoir un système fraîchement installé _à chaque
|
||||
redémarrage_. C'est grisant. Et en cas de pépin, même majeur, il suffit de
|
||||
démarrer la génération précédente via un menu créé automatiquement dans grub
|
||||
pour reprendre les rênes du système.
|
||||
|
||||
## Quelques problèmes quand même
|
||||
|
||||
J'ai relevé quelques soucis
|
||||
mineurs (qui ne sont pas forcément liés à NixOS ceci-dit), dont un qui m'embête
|
||||
en particulier parce que je suis incapable d'en identifier la cause. Si je
|
||||
démarre une application réseau en même temps que l'environnement graphique (par
|
||||
exemple, via une commande `exec` dans la configuration d'i3), ces applications
|
||||
sont incapables de se connecter au réseau. Je me vois dans l'obligation de
|
||||
`kill` leurs processus respectifs pour les relancer à la main. Aucun problème,
|
||||
par contre, quand je temporise leur démarrage de quelques secondes via `sleep`
|
||||
par exemple. Un problème que j'ai constaté autant sur le PC de jeu que sur le
|
||||
laptop pro, aussi bien en filaire qu'en Wifi. peu importe la configuration des
|
||||
DNS (_dnsmasq_ en cache local, mon serveur DNS du réseau ou même un DNS
|
||||
externe).
|
||||
|
||||
Autre problème que je ne parviens pas à résoudre : le rendu des fontes me semble
|
||||
assez moche par défaut, mais j'ignore encore comment l'améliorer.
|
||||
|
||||
Ces deux problèmes sont typiquement côté desktop, et ne m'inquiètent pas du tout
|
||||
pour l'usage serveur que je prévois de faire de NixOS.
|
||||
|
||||
## Ma feuille de route
|
||||
|
||||
J'ai donc l'intention de remplacer debian par NixOS sur toutes mes machines : le
|
||||
serveur DNS, le serveur web, le serveur de stockage, et, éventuellement, si
|
||||
NixOS me le permet, sur la tablette Asus T100-TA qui me sert de panneau de
|
||||
contrôle domotique, la principale contrainte de cette tablette étant de disposer
|
||||
d'un EFI 32bits qui démarre un OS 64bits. debian m'a posé beaucoup de problèmes
|
||||
avec ça.
|
||||
@@ -0,0 +1,150 @@
|
||||
---
|
||||
date: '2021-11-08'
|
||||
title: 'Test : SteelSeries 3 Wireless'
|
||||
---
|
||||
|
||||
## Une 3...
|
||||
|
||||
Je déclare que la 3 était la meilleure souris qui soit passée sous mes
|
||||
mains. Allez-y, traitez-moi d'ignorant, je m'en fout. Je n'ai aimé ni les souris
|
||||
Microsoft, ni les Logitech, ni les Razer, ni les ROCCAT, ni les Mad Catz, etc.
|
||||
Les seules souris ayant reçu mes éloges sont toutes des SteelSeries, à commencer
|
||||
par la Sensei (mais dont la peinture ne tenait pas) et la 3, qui les
|
||||
surpasse toutes.
|
||||
|
||||
Une déclaration étonnante, n'est-ce pas ? Comment est-il possible, pour une
|
||||
souris à moins de 50 euros, d'être considérée comme la meilleure souris du monde
|
||||
(et de l'histoire, je ne mâche pas mes mots) ? En vérité, c'est sa simplicité
|
||||
qui lui vaut mes égards :
|
||||
|
||||
- son éclairage est soft, réparti en trois zones (une LED sous la molette, une sous le logo SteelSeries et de part et d'autre du corps)
|
||||
- elle est légère
|
||||
- sa molette n'est pas débrayable (je m'en fout et en plus ça réduit [les problèmes mécaniques](https://www.lesnumeriques.com/souris/molettes-instables-resultats-sondage-reponse-logitech-n60523.html))
|
||||
- elle n'a que deux boutons sous le pouce, les boutons gauche/droite, le clic molette et un bouton de réglage de la sensibilité et aucun autre (je ne **supporte pas** les boutons sur la tranche droite, un reproche que je faisais à la Sensei)
|
||||
- pas de revêtement anti-dérapant ou de matériaux "respirants" qui accrochent les saletés (mais qui a inventé ces souris avec des coques trouées...)
|
||||
- le plastique employé est d'excellente qualité, n'a pas de peinture qui s'écaille, est assez texturé pour être confortable mais ne l'est pas trop pour ne pas retenir la poussière
|
||||
|
||||
Le seul reproche que j'ai à formuler concerne la piètre qualité du câble : trop
|
||||
fin, impossible de lui donner une forme, ou plus exactement, de lui faire
|
||||
oublier ses plis d'origine.
|
||||
|
||||
## ...sans-fil
|
||||
|
||||
Du coup, si je peux avoir la même souris, mais sans le fil, je suis preneur !
|
||||
Surtout que je l'ai eu pour 44.90€ avec réduction. C'est clairement une 3,
|
||||
mais pas tout à fait. Elle est encore mieux...
|
||||
|
||||
Pour commencer, elle n'a pas de batterie intégrée : elle fonctionne avec deux
|
||||
piles ou accus AAA (deux piles - donc non rechargeables - sont fournies). Je ne
|
||||
suis pas fan des batteries intégrées. Deux accus AAA me semblent être un
|
||||
excellent choix : le format est universel, elles sont donc facilement
|
||||
remplaçables en fin de vie, je peux utiliser un chargeur externe de haute
|
||||
qualité, je peux utiliser une paire d'accus pendant que je charge l'autre, et
|
||||
l'autonomie est conséquente : 2000mAh avec deux accus de 1000mAh, quand les
|
||||
batteries intégrées plafonnent à 500mAh...
|
||||
|
||||
On pourrait croire que cela aurait pour conséquence de lui faire prendre du
|
||||
poids, et si elle est en effet plus lourde que la version filaire, elle ne pèse
|
||||
que 106 grammes une fois équipée de deux accus, quand une G502 approche les 140
|
||||
grammes. Et si c'est trop lourd pour vous, elle se paye le luxe de pouvoir
|
||||
fonctionner avec un seul accu.
|
||||
|
||||
Pour continuer sur l'autonomie, la souris s'éteint toute seule au bout de
|
||||
quelques minutes d'inactivité. Il suffit de cliquer pour la réactiver. Je m'y
|
||||
suis fait, c'est un maigre prix à payer pour ne pas dépenser de l'énergie
|
||||
inutilement et ne pas la recharger tous les quarts d'heure. D'ailleurs, à titre
|
||||
informatif, j'utilise la souris de façon intensive depuis une semaine (polling à
|
||||
1000Hz en 2.4GHz, éclairage molette, 10 à 12 heures d'utilisation quotidienne),
|
||||
et il me reste 2/3 de l'autonomie initiale. À ce train-là, les 400 heures
|
||||
d'autonomie promises par SteelSeries seront respectées (à une vache près, je ne
|
||||
vais pas les accuser de publicité mensongère si elle ne tient que 3 semaines au
|
||||
lieu de 400/12=33.33 jours...), mais je me dois de dire que j'ai vu plusieurs
|
||||
reviews qui se plaignent que les 400 heures annoncées ne peuvent être atteintes
|
||||
qu'en mode "Haute efficacité" à paramétrer dans le logiciel, ce qui a pour
|
||||
conséquence de forcer le polling à 125Hz et éteindre les LEDs. Mais je le
|
||||
répète : je n'ai pas activé ce mode, mon polling est à 1000Hz, la LED de la
|
||||
molette est allumée et sur la couleur #010101, et les piles d'origine devraient
|
||||
me procurer 3 semaines d'autonomie à raison de 10 à 12 heures d'utilisation par
|
||||
jour. Je précise quand même qu'à la base, je pensais naïvement que je devrais
|
||||
recharger les batteries tous les deux ou trois jours, alors même si elles ne
|
||||
tiennent que deux semaines, je ne vais pas me plaindre...
|
||||
|
||||
Ensuite, elle perd deux de ses zones d'éclairage pour se contenter de la LED de
|
||||
la molette. J'éteignais de toute façon les zones latérales sur la 3, et la
|
||||
lumière que la souris produit me permet essentiellement de la retrouver dans le
|
||||
noir. Du coup, le seul éclairage de la molette (réglé sur #010101 pour utiliser
|
||||
le moins d'énergie possible) me suffit amplement.
|
||||
|
||||
Enfin, la liaison sans-fil est assurée par, au choix via un interrupteur sous la
|
||||
souris, une connexion radio 2.4GHz ou le bluetooth. Pratique pour travailler à
|
||||
la fois sur PC et sur Mac, ou avec une tablette tactile. Je n'ai pas encore
|
||||
testé le bluetooth dans ses moindres retranchements, mais la liaison 2.4GHz est
|
||||
réactive, et ne m'a jamais fait défaut, même entourée de périphériques Wifi et
|
||||
d'une manette sans-fil.
|
||||
|
||||
## Où est l'arnaque ?
|
||||
|
||||
SteelSeries a réduit la souris au strict nécessaire, ce qui me convient
|
||||
**parfaitement**, mais je peux comprendre que certaines fonctionnalités manquent
|
||||
à certains usages.
|
||||
|
||||
Je citerai par exemple l'absence de port USB pour éventuellemment l'utiliser en
|
||||
filaire. Ça ne faisait absolument pas partie de mon cahier des charges, donc ça
|
||||
m'est complètement égal. Tout comme la possibilité de monter dans les DPI : 3200
|
||||
est une valeur confortable pour moi en toutes circonstances, pouvoir pousser
|
||||
jusqu'à 18000 n'est que gage de confort (si un jour je passe sur des moniteurs
|
||||
4k ou plus, je pourrais passer à 6400 DPI, mais cela fait depuis des lustres que
|
||||
les souris les plus basiques supportent une telle résolution de toute façon...).
|
||||
|
||||
Les crans de la molette sont assez marqués, plus que sur sa soeur filaire.
|
||||
Encore une fois, moi, ça me convient bien : j'aime bien les molettes franches
|
||||
(comment peut-on utiliser une molette débrayable... 😋). Il est certain que la
|
||||
molette de cette 3 Wireless est techniquement inférieure à des solutions
|
||||
proposées sur des souris beaucoup plus chères, mais je pense que dans sa
|
||||
catégorie elle s'en sort bien.
|
||||
|
||||
Je ne déplore pas l'absence de support de charge : ça me gonflerait de devoir
|
||||
penser à poser ma souris sur un socle quand j'ai fini de m'en servir, et de ne
|
||||
pas pouvoir me servir de la souris pendant qu'elle charge. Sans compter que le
|
||||
prix d'une souris avec socle de charge grimpe assez vite. Totalement inutile
|
||||
selon moi.
|
||||
|
||||
Véritable regret en revanche sur l'absence d'indicateur de l'état des accus.
|
||||
J'aurai apprécié un petit bouton sous la souris qui affiche pendant x secondes
|
||||
le niveau de charge, même approximatif. Une LED verte/jaune/rouge m'aurait
|
||||
suffit, quitte à payer 5 euros de plus (même si je sais que le coût réel de
|
||||
l'électronique nécessaire pour le faire n'est que de quelques dizaines de
|
||||
centimes).
|
||||
|
||||
Côté logiciel, elle fonctionne _out-of-the-box_ sous macOS et sous GNU-Linux,
|
||||
mais l'installation du SteelSeries Engine est nécessaire pour la régler, en
|
||||
particulier sa sensibilité, beaucoup trop faible sortie d'usine. Un logiciel
|
||||
compatible uniquement Windows et macOS, donc heureusement que je peux la régler
|
||||
depuis le mac et que ces réglages sont conservés en passant à GNU-Linux.
|
||||
J'aurais évidemment préféré un outil beaucoup, beaucoup plus léger (environ
|
||||
400Mo d'espace occupé sous macOS quand même... le prix à payer pour un logiciel
|
||||
unifié entre tous les périphériques SteelSeries je suppose), et Libre[^1], mais
|
||||
même si une solution Libre existe, je ne l'utiliserais que si je peux
|
||||
l'installer à la fois sur macOS et sur GNU-Linux, et si je ne crains pas de
|
||||
bricker la souris...
|
||||
|
||||
[^1]: J'ai connaissance de [rivalcfg](https://github.com/flozz/rivalcfg), mais la 3 Wireless [ne semble pas encore supportée à 100%](https://github.com/flozz/rivalcfg/issues/146)
|
||||
|
||||
## Je confirme : la meilleure souris du monde
|
||||
|
||||
Donc au final, pas d'arnaque :
|
||||
|
||||
- autonomie exemplaire, conforme aux promesses du constructeur
|
||||
- un plastique, une électronique et une mécanique de qualité à un prix attractif
|
||||
- une durabilité et une longévité excellentes
|
||||
- pas de chichis, pas de fancy : elle est brute de décoffrage et ça me convient parfaitement
|
||||
|
||||
Bon, je sais, c'est un peu osé de dire qu'une souris à moins de 50 euros est la
|
||||
meilleure du monde. Mais je suis un utilisateur exigeant, en quête du mulot
|
||||
parfait depuis près de 30 ans, et même des modèles filaires à plus de 100 euros
|
||||
n'ont pas été en mesure de me satisfaire. SteelSeries ne m'a jamais déçu, et
|
||||
signe une vraie réussite avec la 3 Wireless.
|
||||
|
||||
## Quoi de neuf après trois mois ?
|
||||
|
||||
Parfaitement satisfait. J'ai eu quelques difficultés à passer sur des accumulateurs rechargeables plutôt que de simples piles, parce que la plupart des accus au format AAA sortent du 1.2V. Jamais compris pourquoi et je n'ai pas envie de savoir. Toujours est-il que j'ai finalement trouvé de vrais accus rechargeables AAA en 1.5V qui tiennent la route (environ trois semaines d'usage normal sur une seule charge) (lien supprimé parce que la page produit n'existe plus sur Amazon).
|
||||
@@ -0,0 +1,171 @@
|
||||
---
|
||||
date: '2021-11-17'
|
||||
title: Installer NixOS sur une tablette Asus T100TA
|
||||
---
|
||||
|
||||
Je dispose d'une honorable tablette
|
||||
[Asus T100TA](https://www.asus.com/fr/Commercial-Laptops/ASUS_Transformer_Book_T100TA/)
|
||||
que j'utilise depuis deux ans maintenant comme tableau de bord pour ma domotique
|
||||
via [Home Assistant](https://www.home-assistant.io/). C'est simplement un
|
||||
navigateur (en substance, [qutebrowser](https://qutebrowser.org/)) en mode
|
||||
kiosk, qui tournait jusqu'à présent sous debian. Le remplacement par
|
||||
[NixOS](https://nixos.org/) fait partie de
|
||||
mon plan pour divorcer de debian,
|
||||
mais certaines spécificités de la tablette rendent la tâche plus complexe que ce
|
||||
qu'il faudrait.
|
||||
|
||||
<details class="read-more"><summary>Voir aussi</summary>
|
||||
|
||||
- [/interets/informatique/2021/11/07/deux-semaines-sous-nixos-je-divorce-de-debian/](/interets/informatique/2021/11/07/deux-semaines-sous-nixos-je-divorce-de-debian/)
|
||||
|
||||
</details>
|
||||
|
||||
Principalement, son EFI est en 32bits alors que le système tourne en 64bits. Je
|
||||
me suis naïvement dit que, qu'à cela ne tienne, j'installe un système 100%
|
||||
32bits. Sauf que ce faisant, NixOS ne fournit pas de paquets pré-compilés
|
||||
32bits. Obligé, donc, de faire des manips, mais franchement, je ne regrette pas.
|
||||
|
||||
À moins que compiler l'ensemble des paquets ne vous fasse pas peur, si vous
|
||||
maitrisez assez NixOS pour faire du cross-compiling, ce qui n'est pas - encore -
|
||||
mon cas.
|
||||
|
||||
## Téléchargements
|
||||
|
||||
Il faut commencer par télécharger les versions 32bits et 64bits de NixOS :
|
||||
|
||||
- https://channels.nixos.org/nixos-21.05/latest-nixos-minimal-x86_64-linux.iso
|
||||
- https://channels.nixos.org/nixos-21.05/latest-nixos-minimal-i686-linux.iso
|
||||
|
||||
## Système 32bits
|
||||
|
||||
Flashez l'ISO 32bits sur une clé USB, et démarrez-la. Procédez à l'installation
|
||||
du système comme indiqué dans la
|
||||
[documentation officielle](https://nixos.org/manual/nixos/stable/), en
|
||||
n'oubliant pas d'activer *wpa_supplicant*. Arrêtez-vous à la modification du
|
||||
fichier _configuration.nix_.
|
||||
|
||||
Par défaut, NixOS utilise _systemd-boot_ à la place de grub, ce qui nous empêche
|
||||
de modifier la commande de démarrage. Il faut modifier le fichier
|
||||
_configuration.nix_ pour pouvoir utiliser grub. En outre, cette installation
|
||||
n'est que temporaire, on ne va donc pas modifier les variables EFI pour le
|
||||
moment.
|
||||
|
||||
```nix
|
||||
boot.loader = {
|
||||
systemd-boot.enable = false;
|
||||
efi = {
|
||||
canTouchEfiVariables = false;
|
||||
};
|
||||
grub = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
efiInstallAsRemovable = true;
|
||||
device = "nodev";
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
Enregistrez puis continuez l'installation en suivant à nouveau la documentation
|
||||
officielle. Après un redémarrage, vous devez disposer d'un système 32bits
|
||||
minimal mais fonctionnel. Ne modifiez encore rien dans votre configuration, tout
|
||||
va être remplacé sous peu (pas besoin non plus d'installer quoi que ce soit).
|
||||
|
||||
Si tout fonctionne bien (si vous avez pu démarrer et aller jusqu'au prompt),
|
||||
il est temps de passer au système 64bits.
|
||||
|
||||
## Système 64bits
|
||||
|
||||
Flashez ensuite la clé USB avec l'ISO 64bits, mais ne démarrez pas dessus : il
|
||||
faut démarrer le grub qu'on vient d'installer en 32bits. La clé USB doit
|
||||
toutefois être branchée quand vous démarrez. Une fois sur l'écran de grub,
|
||||
appuyez sur la touche `c` pour entrer dans le shell de grub.
|
||||
|
||||
Lancez la commande suivante :
|
||||
|
||||
```
|
||||
cat (hd0)/isolinux/isolinux.cfg
|
||||
```
|
||||
|
||||
Vous verrez alors les options de démarrage disponibles. Ce qui nous intéresse,
|
||||
c'est la partie suivante :
|
||||
|
||||
```
|
||||
init=/nix/store/qf8blw6g07xi9248m83ngn6h1rfwkn69-nixos-system-asus-t100ta-21.05.4114.195d5816cdd/init
|
||||
```
|
||||
|
||||
À recopier dans une nouvelle commande à lancer :
|
||||
|
||||
```
|
||||
linux (hd0)/boot/bzImage init=/nix/store/qf8blw6g07xi9248m83ngn6h1rfwkn69-nixos-system-asus-t100ta-21.05.4114.195d5816cdd/init intel_idle.max_cstate=1
|
||||
```
|
||||
|
||||
> Vous ne pouvez pas recopier telle quelle cette commande : vous devez l'ajuster
|
||||
> en fonction de la sortie de `cat (hd0)/isolinux/isolinux.cfg`. Le chemin
|
||||
> d'_init_ peut changer. Par contre, vous pouvez/devez rajouter
|
||||
> `intel_idle.max_cstate=1` à la fin de la ligne : cela désactivera la mise en
|
||||
> veille du CPU quand il idle, et évitera certain freezes connus sur cette
|
||||
> plateforme.
|
||||
|
||||
Charger ensuite l'initrd :
|
||||
|
||||
```
|
||||
initrd (hd0)/boot/initrd
|
||||
```
|
||||
|
||||
Et démarrer :
|
||||
|
||||
```
|
||||
boot
|
||||
```
|
||||
|
||||
Vous devriez alors pouvoir démarrer sur la version 64bits de NixOS depuis votre
|
||||
clé USB. Reste encore à procéder à l'installation : là encore suivez la
|
||||
procédure officielle jusqu'à la modification du fichier _configuration.nix_, où
|
||||
l'on va préciser qu'on veut forcer le mode 32bits du bootloader :
|
||||
|
||||
```nix
|
||||
boot.loader = {
|
||||
systemd-boot.enable = false;
|
||||
efi.canTouchEfiVariables = false;
|
||||
|
||||
grub = {
|
||||
enable = true;
|
||||
efiSupport = true;
|
||||
efiInstallAsRemovable = true;
|
||||
device = "nodev";
|
||||
forcei686 = true;
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
On peut enfin terminer l'installation et redémarrer sans clé USB.
|
||||
|
||||
## Problèmes
|
||||
|
||||
Les dernières mises à jour de debian me permettaient de régler le
|
||||
rétro-éclairage de l'écran via _sysfs_ (dans _/sys/class/backlight/_).
|
||||
Malheureusement, je n'ai pas encore trouvé comment procéder sous NixOS. J'ignore
|
||||
s'il me manque un module noyau. J'ai essayé quelques trucs, sans succès pour le
|
||||
moment.
|
||||
|
||||
Autre soucis déjà rencontré sous debian : le module réseau pour le wifi provoque
|
||||
quotidiennement la déconnexion de la tablette, sans que quoique ce soit puisse y
|
||||
remédier, à l'exception d'un reboot complet. Ce n'est pas un problème spécifique
|
||||
à NixOS, c'est le module noyau _brcmcfm_ qui semble incriminé, et il y a peu de
|
||||
chances que ce problème soit corrigé un jour...
|
||||
|
||||
Mis à part ça, le système tourne très bien, bien mieux que sous debian. La
|
||||
charge CPU est inférieure à 1, quand elle pouvait atteindre 2 voire 3 dans les
|
||||
mêmes conditions.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Pas simple. Pas à cause de NixOS, mais à cause d'Asus, intel, broadcom, et
|
||||
Microsoft évidemment (la tablette était livrée avec Windows 8). Mais j'ai la
|
||||
certitude, maintenant que le système est installé, qu'il ne bougera plus, à
|
||||
moins que je bidouille (et il y a des chances que je le fasse, ne serait-ce que
|
||||
pour le rétro-éclairage que j'aimerais vraiment corriger). Je la remplacerai
|
||||
sans doute pour une tablette plus adaptée à GNU-Linux (pour ne plus avoir les
|
||||
problèmes avec le module wifi), mais pour l'instant, elle me convient bien, et
|
||||
encore plus depuis que je l'ai passés sous NixOS. Un pas de plus vers le divorce
|
||||
complet de debian...
|
||||
@@ -0,0 +1,435 @@
|
||||
---
|
||||
date: "2021-12-30"
|
||||
title: Bonne année 2022 !
|
||||
---
|
||||
|
||||
> Attention, article très long !
|
||||
|
||||
## Rétrospective de 2021
|
||||
|
||||
### Autour du blog, Cyca et mon premier livre
|
||||
|
||||
J'ai créé ce blog le 1er janvier 2021. J'avais l'intention de me focaliser sur
|
||||
mon neuro-atypisme, mais j'ai finalement opté pour un autre "contenu éditorial".
|
||||
J'ai [publié Cyca](/interets/informatique/2021/01/03/presentation-de-cyca/), mon application
|
||||
"laboratoire", et j'ai surtout publié mon premier livre le 29 janvier :
|
||||
[_L'humain, cette espèce primitive_](/interets/philosophie/2023/05/18/lhumain-cette-espece-primitive-lhumain-cette-espece-primitive/).
|
||||
|
||||
J'ai proposé certains de mes articles au [Journal du Hacker](https://www.journalduhacker.net/),
|
||||
et certains de ces articles se sont même retrouvés dans la rubrique des "Liens
|
||||
intéressants", un post qui récapitule les soumissions les plus populaires de la
|
||||
semaine. J'en fais peut-être grand cas, mais c'est un accomplissement pour moi !
|
||||
Surtout qu'occasionnellement, j'ai pu échanger un peu avec la communauté - des
|
||||
échanges positifs pour une fois - et ça fait du bien.
|
||||
|
||||
À titre de curiosité (et historique), les quatre articles qui m'ont valus le
|
||||
plus de votes positifs sont les suivants :
|
||||
|
||||
- [Mon réseau](/interets/informatique/2021/03/09/mon-reseau/) (publié le 9 mars, avec une note de [7](https://www.journalduhacker.net/s/rsveeh/mon_r_seau))
|
||||
- [E-commerce et auto-hébergement](/interets/informatique/2021/03/14/ecommerce-et-auto-hebergement/) (publié le 14 mars, avec une note de [7](https://www.journalduhacker.net/s/ijrnnq/e_commerce_et_auto_h_bergement))
|
||||
- [Deux semaines sous NixOS : je divorce de debian](/interets/informatique/2021/11/07/deux-semaines-sous-nixos-je-divorce-de-debian/) (publié le 7 novembre, avec une note de [7](https://www.journalduhacker.net/s/cnmgcu/deux_semaines_sous_nixos_je_divorce_de))
|
||||
- [L'éco-responsabilité en informatique](/interets/informatique/2021/09/25/l-eco-responsabilite-en-informatique/) (publié le 25 septembre, avec une note de [6](https://www.journalduhacker.net/s/gvlelh/l_co_responsabilit_en_informatique))
|
||||
|
||||
J'ai essentiellement écrit des articles techniques, mais j'ai aussi écrit sur
|
||||
[le Covid-19](/interets/informatique/2021/04/01/covid-19-vous-avez-tous-tort/), et je m'essaye
|
||||
occasionnellement à l'art de l'aphorisme.
|
||||
|
||||
À peu près en même temps que le blog, je me suis mis au [Fediverse](https://fr.wikipedia.org/wiki/Fediverse),
|
||||
successivement avec [Pleroma](https://pleroma.social/) puis
|
||||
[MissKey](https://github.com/misskey-dev/misskey). Bien que certains profils
|
||||
soit réellement intéressants, plusieurs éléments m'ont confirmé ce que je savais
|
||||
déjà (que les réseaux sociaux ne m'intéressent pas _du tout_) :
|
||||
|
||||
- si on y cherche de l'information, c'est redondant avec les flux RSS "directs" ou via les sites de veille
|
||||
- si on y cherche des gens avec qui parler, c'est mille fois plus agréable de le faire par mail, à l'écart du "bruit"
|
||||
- il y a eu la vague de migration depuis twitter vers [Mastodon](https://mastodon.social/about), qui a ramené beaucoup de gens inintéressants, causant beaucoup de bruit pour rien
|
||||
- les discussions tournent un peu en rond, et peu importe le sujet recherché initialement, on finit toujours par se faire noyer dans le bruit
|
||||
- le "bruit" que je mentionne ici est constitué de :
|
||||
- contenu à caractère sexuel
|
||||
- militantisme LGBTQ+
|
||||
- débats politiques stériles
|
||||
|
||||
Considérant que je croyais suivre des profils "techniques" en informatique et
|
||||
dans les sciences dures, c'est franchement gonflant d'avoir un fil public saturé
|
||||
de tous ces messages pour lesquels je n'ai aucun intérêt. C'est simplement dû au
|
||||
fonctionnement du réseau (je suis untel qui suis untel qui a un intérêt pour ces
|
||||
sujets), et c'est un fonctionnement que je n'apprécie pas, et qui me donne le
|
||||
sentiment d'être spamé à longueur de journée. J'appelle ça du bruit dans la
|
||||
mesure où ça ne m'intéresse pas et que ça occupait à peu près 95% du contenu qui
|
||||
m'était donné à voir.
|
||||
|
||||
Au final, j'ai opté pour une solution que je qualifierai d'intermédiaire, entre
|
||||
l'austérité du vénérable IRC et l'usine à gaz qu'est XMPP :
|
||||
[Matrix](https://matrix.org/). Je ne suis pas forcément fédéré, c'est du chat
|
||||
presque "à l'ancienne", même si on peut faire du chat vocal et vidéo, c'est
|
||||
raisonnable en termes de consommation de ressources. Techniquement, ça me
|
||||
convient bien depuis quelques mois, même si pour le moment, je m'en sers surtout
|
||||
pour communiquer avec Olivier (dont je vous reparle
|
||||
plus bas).
|
||||
|
||||
En ce qui concerne le blog, Cyca et _L'Humain, cette espèce primitive_, je
|
||||
concluerai en disant qu'en dehors des quelques pics d'audience dûs à la
|
||||
publication de mes articles techniques sur le _Journal du Hacker_, je n'arrive
|
||||
toujours pas à décoller. Cyca n'intéresse personne, j'ai vendu quelques livres
|
||||
jusqu'en avril mais depuis plus rien.
|
||||
|
||||
J'explique la faible popularité du livre assez facilement. D'une part, le titre,
|
||||
volontairement provocateur, freine sans doute la plupart des gens. Ensuite, sa
|
||||
mise à disposition uniquement via Amazon, qui a justifié que je cherche une
|
||||
solution pour [auto-héberger ma plateforme de vente](/interets/informatique/2021/03/14/ecommerce-et-auto-hebergement/)
|
||||
sans toutefois trouver un compromis. Il y a aussi la faible popularité de ce
|
||||
genre d'essais, le fait que ce soit mon premier livre, que je ne sois pas issu
|
||||
d'un parcours académique, que je n'ai pas fait de campagne de promotion
|
||||
"professionnelle", etc. J'ai bien conscience de tout ça, et c'est la raison
|
||||
pour laquelle je ne suis pas plus triste que ça.
|
||||
|
||||
Par contre, tout ce qui a été nécessaire pour publier ce livre m'a énormément
|
||||
appris pour le prochain. Du point de vue rédactionnel pour commencer : j'ai été
|
||||
très rapide, j'ai parlé d'énormément de choses, sans trop rentrer dans les
|
||||
détails. Il en a résulté un livre assez court (une grosse centaine de pages). Le
|
||||
prochain sera beaucoup, beaucoup plus long et détaillé. Ensuite, du point de vue
|
||||
de la publication : le prochain livre aura son ISBN, ce qui m'ouvrira certaines
|
||||
portes (en particulier, la publication via de "vraies" plateformes d'édition).
|
||||
Ces observations me motivent, justifient presque à elles seules l'écriture d'un
|
||||
second livre. Ça, et la quantité de choses que j'ai à dire de mon vivant...
|
||||
|
||||
En ce qui concerne Cyca, je suis un peu déçu de son manque de popularité. Je
|
||||
l'utilise au quotidien depuis des années, il m'est difficile de croire que ça ne
|
||||
concerne que moi. Mais au fond, c'est surtout mon projet "laboratoire", celui
|
||||
grâce auquel j'expérimente des choses, je me tiens à jour pour mon métier de
|
||||
développeur, et qui m'est utile. Alors je continuerai de l'améliorer et de
|
||||
proposer de nouvelles fonctionnalités, au moins parce que _moi_ je l'utilise et
|
||||
c'est tout ce qui compte. Si, un jour, des gens s'y intéressent, c'est du bonus.
|
||||
|
||||
Enfin, en ce qui concerne spécifiquement le blog, je ne relève aucune
|
||||
statistique. Principalement par éthique, et puis parce que ça ne change rien à
|
||||
mon envie (et besoin) d'écrire. Si, occasionnellement, quand je diffuse un
|
||||
article un peu plus loin que simplement sur mon blog, et que ça intéresse
|
||||
quelqu'un, tant mieux. Mais l'essentiel pour moi est de me faire plaisir. Et ce
|
||||
blog y contribue.
|
||||
|
||||
### Dans ma vie personnelle
|
||||
|
||||
J'ai toujours été passionné par la paléontologie (certains diront que c'est un
|
||||
terme masturbatoire pour dire qu'on aime les dinosaures, je dirai que c'est bien
|
||||
la même chose quand on se dit "fan de sport" et qu'on regarde 22 gus courir
|
||||
après une baballe à la télé...). Du coup, c'est logique que la plupart de mes
|
||||
"critiques" de [séries TV](/critiques/series/), [films](/critiques/films/) et [jeux-vidéo](/critiques/jeux-video/)
|
||||
concernent [_Jurassic Park_](/critiques/films/jurassic-park/) et tout ce qui orbite
|
||||
autour. En particulier les dinosaures. Du coup, j'ai commencé (et déjà bien
|
||||
entamé) une [collection de figurines Schleich](/collections/schleich/).
|
||||
|
||||
Je me suis abonné à la collection [_Apprendre à philosopher_](https://www.apprendreaphilosopher.fr).
|
||||
Chaque livre aborde un philosophe en particulier et nous détaille sa vie et son
|
||||
oeuvre en une centaine de pages. J'ai beaucoup aimé les premiers numéros parce
|
||||
que les philosophes concernés m'intéressent particulièrement. Mais cet intérêt a
|
||||
décru à cause de plusieurs facteurs :
|
||||
|
||||
- le coût : une quarantaine d'euros toutes les six semaines, considérant que :
|
||||
- beaucoup de philosophes ne m'intéressent pas du tout
|
||||
- la qualité, globalement bonne mais occasionnellement assez faible (un des premiers livres semble avoir été écrit à la va-vite et sans relecture, avec des tournures de phrases assez peu convenables pour des livres traitant de philosophie, et bourré de fautes)
|
||||
|
||||
J'ai donc les douze premiers numéros, et j'achèterai probablement les numéros ultérieurs dédiés aux philosophes que je valorise réellement.
|
||||
|
||||
Il me semble important de préciser que l'abonnement à cette collection s'est
|
||||
fait bien après la publication de _L'Humain, cette espèce primitive_, et bien
|
||||
après mon souhait d'entrer en license de philosophie. "Malheureusement", cette
|
||||
reprise des études ne s'est pas faite, principalement parce que j'ai repris une
|
||||
activité salariée.
|
||||
|
||||
Autre abonnement, dont je suis pleinement satisfait cette fois, au magazine
|
||||
[_La Recherche_](https://www.sciencesetavenir.fr). Je reçois le mensuel,
|
||||
les numéros "doubles" et les trimestriels, en papier et numérique. J'apprécie
|
||||
fortement que les auteurs ne présument pas d'un niveau quelconque : ce n'est pas
|
||||
de la vulgarisation à proprement parler, et ils n'hésitent pas à employer le
|
||||
véritable vocabulaire des disciplines abordées. Si on veut en savoir plus, il
|
||||
faut aller chercher.
|
||||
|
||||
Mes lectures de l'année ont toutefois inclus quelques ouvrages de vulgarisation,
|
||||
mais que j'ai tout de même pris beaucoup de plaisir à lire (tous en anglais - je
|
||||
me la raconte si vous voulez, mais j'estime que les livres, comme les séries,
|
||||
films et jeux-vidéos ne méritent d'être lus qu'en version originale ; en plus de
|
||||
ça, c'est important pour moi de parvenir à le faire).
|
||||
|
||||
- [_Until the end of time_](https://books.apple.com/fr/book/until-the-end-of-time/id1478202295) de Brian Greene, (part un peu de travers dans le troisième tiers malheureusement)
|
||||
- [_Astrophysics for people in a hurry_](https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewBook?id=1165518487) de Neil deGrasse Tyson, (frustrant, trop court, j'en veux encore !)
|
||||
- et surtout, [_Sapiens, A Brief History of Mankind_](https://www.amazon.fr/dp/B07125HP8C),
|
||||
- [_Homo Deus, A Brief History of Tomorrow_](https://www.amazon.fr/dp/B07CVJ9WFC),
|
||||
- et [_21 lessons for the 21th Century_](https://www.amazon.fr/dp/B07JR9DKWW) de Yuval Noah Harari, trois livres qui ont confirmé que ma philosophie scientifique et générale allaient dans la bonne direction, même sans bagage académique
|
||||
|
||||
Côté jeux-vidéo, cette année j'ai joué à :
|
||||
|
||||
- [Factorio](https://steamcommunity.com/app/427520),
|
||||
- [Jurassic World: Evolution](/critiques/jeux-video/jurassic-world-evolution/) et [sa suite](/critiques/jeux-video/jurassic-world-evolution-2/)
|
||||
- [Starbound](https://store.steampowered.com/app/211820)
|
||||
- Je me suis refait une partie de [Spore](https://store.steampowered.com/app/24720)
|
||||
- Je me suis payé [Command & Conquer Remastered Collection](https://store.steampowered.com/app/1213210) en tant que grand fan des premières heures de la saga
|
||||
- La saga _The Room_, excellente anthologie de résolution de casse-têtes à ambiance
|
||||
|
||||
Comme déjà dit, l'essentiel de l'année a été phagocytée pour mon plus grand
|
||||
plaisir par tout ce qui est disponible concernant _Jurassic Park_.
|
||||
Je me refait l'intégrale une fois par mois, à peu près... Neuro-atypique, hein.
|
||||
Attendez quand l'été viendra et que je me referais LOST, vous allez en déguster
|
||||
de la critique 😇
|
||||
|
||||
J'ai aussi beaucoup écrit, et pas que ce que je mentionne dans cet article. Je
|
||||
tiens aussi un "journal intime", écrit à la plume, que je dédie depuis décembre
|
||||
2019 à mes prédictions relatives au Covid-19 ainsi que les observations
|
||||
ultérieures. Ce journal m'a toujours donné raison depuis la crise sanitaire et
|
||||
me conforte donc à continuer. Un jour, peut-être en sortie de crise, je le
|
||||
publierai...
|
||||
|
||||
### Dans ma vie professionnelle
|
||||
|
||||
Au chômage jusqu'en avril, j'ai ensuite trouvé un emploi de développeur Laravel
|
||||
où je me suis lié d'amitié avec Olivier, neuro-atypique comme moi.
|
||||
Anecdotiquement, je savais dès les premières réunions d'équipes qu'on allait
|
||||
bien s'entendre, et l'avenir m'a donné raison ! De quoi donner du grain à moudre
|
||||
à tous ceux qui me disaient que l'espace professionnel était un terreau fertile
|
||||
pour les relations sociales, mais je maintiens que ce genre de rencontres,
|
||||
qu'elles aient lieu au travail ou ailleurs, reste rare.
|
||||
|
||||
Cette rencontre m'a d'ailleurs donné l'occasion de voir à quel point on peut me
|
||||
supporter (ou pas). Je m'amuse quelque peu de voir qu'une fois qu'on a passé un
|
||||
cap, on accepte plus facilement mon franc-parler, qu'il n'y a plus lieu de se
|
||||
formaliser. Non pas que mon opiniâtreté s'adoucisse avec le temps (au contraire)
|
||||
mais elle devient plus tolérable quand on comprend pourquoi elle existe. C'est
|
||||
moins marrant pour la personne en face, c'est certain... Mais c'est le prix à
|
||||
payer pour une amitié avec moi. La plupart refuse ce prix ; certains, dont
|
||||
Olivier, l'acceptent, et de là naît une amitié sincère, mutuelle et durable.
|
||||
|
||||
## Mes attentes pour 2022
|
||||
|
||||
### Mes résolutions
|
||||
|
||||
3440x1440.
|
||||
|
||||
Désolé, vieille blague de geek modernisée, je n'ai pas pu m'en empêcher. J'aurai
|
||||
pu dire "4K" ou toute autre variante, mais 3440x1440 présente l'avantage d'être
|
||||
ma vraie résolution 😁
|
||||
|
||||
### Attentes personnelles
|
||||
|
||||
- **Garder mon blog un an de plus**
|
||||
|
||||
C'était [ma résolution au 1er janvier 2021](/interets/informatique/2021/01/01/introduction/) : je
|
||||
voulais garder mon blog en vie pendant au moins un an. On y est ! Il y a eu
|
||||
[une pause](/interets/informatique/2021/08/28/de-retour/) due à mon retour à l'emploi depuis
|
||||
avril, mais mon blog est toujours là, et j'aimerais que ça soit toujours le cas
|
||||
en 2022, surtout que je viens tout juste d'inaugurer
|
||||
mon webring et une nouvelle page pour
|
||||
[me contacter](/contact/).
|
||||
|
||||
- **Publier une nouvelle version de Cyca**
|
||||
|
||||
J'ai commencé à y travailler il y a un peu plus d'une semaine, et j'expérimente
|
||||
un certain nombre de "nouveaux" paradigmes. Étrangement, ces paradigmes
|
||||
ressemblent à s'y méprendre à ce qu'on je faisais déjà il y a quelques années,
|
||||
avant que ça tombe en désuétude et qu'on s'y remette en les enrobant de culture
|
||||
de startups...
|
||||
|
||||
Grosso modo, pour ceux que ça intéresse, je travaille avec le framework CSS
|
||||
[Tailwind](https://tailwindcss.com/). Jusqu'à présent, je mettais mes classes en
|
||||
dur dans le HTML pour débugger, et une fois satisfait, je crée des classes CSS
|
||||
qui utilisent le mot-clé `apply`. Sauf qu'en progressant dans la documentation,
|
||||
je me rends compte que ce n'est pas du tout ce qui est préconisé par les devs.
|
||||
Il faudrait laisser toutes les classes du framework dans le code HTML et créer
|
||||
des composants. Un paradigme typique en Javascript, mais auquel je ne suis pas
|
||||
trop habitué avec Laravel.
|
||||
|
||||
J'ai un avis mitigé sur la question. On a toujours dit que les classes CSS dans
|
||||
le HTML c'est le mal, et qu'il fallait styler les balises HTML plutôt que créer
|
||||
des ids et des classes dans tous les sens, ce qui permet de garder à la fois un
|
||||
code HTML propre et un CSS maintenable.
|
||||
|
||||
Pour Tailwind, c'est tout le contraire. Il faut mettre les classes CSS "brutes"
|
||||
(celles fournies par Tailwind) dans le code HTML, et s'il y a répétition, il
|
||||
faut créer des composants. Du coup, on se retrouve assez rapidement avec des
|
||||
lignes HTML très longues et difficilement lisibles (en particuliers quand on
|
||||
utilise les `modifiers` de Tailwind). Franchement, je trouve que c'est pas
|
||||
propre. Il va falloir que je trouve un consensus.
|
||||
|
||||
Coté backend, je suis toujours enthousiasmé par les possibilités de Laravel qui
|
||||
évoluent constamment, et surtout, qui rendent simples les choses qui me
|
||||
semblaient auparavent compliquées. De quoi ajouter plein de nouvelles
|
||||
fonctionnalités à Cyca...
|
||||
|
||||
- **Travailler sur mon deuxième livre**
|
||||
|
||||
J'ai l'intention d'écrire au moins deux autres livres après
|
||||
_L'Humain, cette espèce primitive_. La rédaction de chacun de ces livres prendra
|
||||
sûrement plus d'une année chacun, partant du principe que je ne fais pas ça à
|
||||
temps plein, que j'ai beaucoup d'autres occupations, et qu'il faut bien payer
|
||||
les factures. Néanmoins, j'espère avancer un peu sur le deuxième des trois
|
||||
livres, dont le titre - au moins provisoire - est
|
||||
_Définition Universelle de l'Intelligence_.
|
||||
|
||||
Je dispose "déjà" d'un "genre de structure",
|
||||
mais l'idée derrière ce nouveau livre est bien plus vaste, et devrait amener à
|
||||
l'écriture du troisième livre, _La Théorie du Tout_.
|
||||
|
||||
La _Définition Universelle de l'Intelligence_ s'intéressera à l'_Intelligence_
|
||||
sous toutes ses formes et son lien avec la Vie, et comment pourrions-nous
|
||||
formuler une définition réellemment universelle, englobant _toutes_ les formes
|
||||
d'_Intelligences_, passées, présentes et à venir, mais aussi celles qu'on ne
|
||||
connait pas encore. Une question difficile à laquelle nous n'avons pas encore
|
||||
de réponse, alors qu'il me semble essentiel de disposer d'une telle définition
|
||||
pour assurer l'avenir de notre espèce et de toutes les autres. Une _DUI_ nous
|
||||
permettrait de préciser la place occupée par l'humain dans l'univers, d'une
|
||||
façon beaucoup plus détaillée et spécifique que je ne l'ai fait dans
|
||||
_L'Humain, cette espèce primitive_.
|
||||
|
||||
Le troisième livre, _La Théorie du Tout_, est plus difficile à présenter. J'y
|
||||
détaillerai ce qui, pour moi, relie _tout_, de l'infiniment grand à l'infiniment
|
||||
petit, du relatif et de l'absolu, des choses les plus lointaines aux plus
|
||||
proches, l'existence, le but de la Vie, etc. J'aurai pu, ironiquement,
|
||||
l'intituler "42"[^1], mais mon approche sera pragmatique, scientifique, et
|
||||
philosophique. Mais bien que cette théorie soit déjà parfaitement claire dans
|
||||
mon esprit, la mettre par écrit va constituer mon plus grand défi pour les
|
||||
années à venir, et la _DUI_ en est un autre à relever en premier. Ainsi, si je
|
||||
sais que je ne la publierai pas en 2022, j'espère au moins avoir bien avancer
|
||||
cette année.
|
||||
|
||||
[^1]: En référence au [Guide du Voyageur Galactique](https://fr.wikipedia.org/wiki/Le_Guide_du_voyageur_galactique)
|
||||
|
||||
- **Pouvoir partir aux États-Unis**
|
||||
|
||||
Un projet qui tient particulièrement à coeur à mon épouse, tant elle aime les
|
||||
États-Unis, leur histoire, leur peuple, certains de leurs dirigeants (et leur
|
||||
épouse, les Obama pour ne pas les nommer 😛). Et qui _me_ tient aussi
|
||||
particulièrement à coeur pour au moins trois raisons :
|
||||
|
||||
- voyager avec mon épouse, parce qu'on peut le faire parce que j'ai retrouvé une activité salariée
|
||||
- on y retourne une deuxième fois ; après la Californie en 2016 et un remariage à Vegas, on va visiter le Colorado, fief de la famille de mon autre ami, Christopher
|
||||
- on va sur les sites de fouilles paléontologiques, et je passerai un après-midi à apprendre des chercheurs eux-même, j'aurai mes outils de fouilles, et je pourrai éventuellement "déterrer un dinosaure" (que je devrais naturellement restituer au parc)
|
||||
|
||||
Il va sans dire que l'inquiétude persiste à la vue de la situation sanitaire,
|
||||
mais le voyage n'est prévu qu'en septembre. Il n'est pas déraisonnable de penser
|
||||
que ce voyage pourra se faire d'ici-là.
|
||||
|
||||
- **Continuer ma collection de dinosaures Schleich**
|
||||
|
||||
Il me reste à ce jour à peu près un tiers des figurines à trouver, parmis les
|
||||
plus rares (en particulier le [_Mosasaurus_](https://www.schleich-s.com/fr/FR/dinosaurs/produits/mosasaurus-15026.html)
|
||||
et le [_Carnotaurus_](https://www.schleich-s.com/fr/FR/dinosaurs/produits/carnotaurus-14586.html),
|
||||
respectivement les stars de [_Jurassic World_](/critiques/films/jurassic-world/) et de
|
||||
[_Camp Cretaceous_](/critiques/series/jurassic-world-camp-cretaceous/).
|
||||
|
||||
Ensuite, j'aimerai me mettre à leur créer des dioramas. Mais j'attends le
|
||||
printemps pour pouvoir ranger et nettoyer la cave et reconstituer mon atelier.
|
||||
|
||||
- **Divers**
|
||||
|
||||
J'aimerais une saison 5 à _Camp Cretaceous_ et _Castelvania_, une saison 3 à
|
||||
_The Witcher_, la mise à disposition de
|
||||
_Who's the boss?_ et _Step by Step_ sur les plateformes de vidéos à la demande.
|
||||
Peut-être aussi de nouvelles saisons à _Love Death + Robots_ et _Black Mirror_.
|
||||
Et plus d'épisodes à _The Movies/Games/Toys that made us_.
|
||||
|
||||
J'aimerais quelques addons pour _Jurassic World: Evolution 2_.
|
||||
|
||||
J'aimerais que Free se positionne sur la fibre optique dans mon village, si déjà
|
||||
on a l'infrastructure, parce qu'il est absolument hors de question que je passe
|
||||
chez Orange ou SFR.
|
||||
|
||||
J'ai envie d'assister à une conférence Apple avec Christopher _et_ Olivier (par
|
||||
messagerie instantanée).
|
||||
|
||||
Et, évidemment, si je pouvais voir _Jurassic World: Dominion_ dans une salle
|
||||
américaine, je serai comblé, mais je me contenterai de la mise à disposition
|
||||
rapide d'un blu-ray ou d'un coffret collector de ouf réunissant toute la saga.
|
||||
|
||||
### Attentes pour le monde
|
||||
|
||||
- **Ne plus entendre les gens se plaindre du Covid-19 et de ses conséquences sociales**
|
||||
|
||||
Pendant les fêtes, les gens sont déprimés en cette année 2021. Comme ils
|
||||
l'étaient en 2020, en 2019, en 2018, et chaque année avant cela. La déprime des
|
||||
fêtes de fin d'année n'a rien à voir avec le Covid, et j'aimerais bien que tout
|
||||
le monde en prenne conscience. Les fêtes de fin d'année ne prouvent qu'une
|
||||
chose : que la "magie de Noël", c'était quand on était gosse et pour les films
|
||||
sentimentaux. C'est de la science fiction dans le monde des adultes. Ce qui se
|
||||
passe réellement est similaire à la découverte par un enfant que le Père Noël
|
||||
n'existe pas. La déprime des fêtes, c'est la découverte par les adultes que leur
|
||||
famille est trop dysfonctionnelle pour passer les réveillons ensemble. En outre,
|
||||
on persiste à fêter un non-évènement, religieux de surcroit, dans un pays qui se
|
||||
veut laïque ; c'est à n'y rien comprendre.
|
||||
|
||||
Du coup, j'aimerais bien (dans le sens : "ça me ferait plaisir") que les gens
|
||||
ne dépriment pas pendant les "festivités" en décembre 2022. Tout simplement
|
||||
parce que ça voudrait dire qu'ils ont enfin compris que "le Père Noël n'existe"
|
||||
pas, mais aussi que le Covid n'y est pour rien.
|
||||
|
||||
Dans un tout autre registre (et je rappelle, à ce titre, que j'ai déjà écrit
|
||||
[un article sur la question en avril](/interets/informatique/2021/04/01/covid-19-vous-avez-tous-tort/))
|
||||
ça ne sert à rien de pester contre les prises de décision du gouvernement si, de
|
||||
son côté, le peuple fait de la merde. Si le peuple continue de se rassembler,
|
||||
d'ignorer les règles d'hygiène les plus élémentaires, sous des prétextes
|
||||
dangereusement fallacieux du genre "on me prive de mes libertés" ou "la vie
|
||||
c'est de la merde si on s'amuse pas", il ne faut pas s'étonner que les mesures
|
||||
légales se renforcent (et surtout, que le virus continue de se répandre).
|
||||
|
||||
Internet nous offre des interactions sociales compatibles avec l'existence d'une
|
||||
menace virale globale, pourquoi ne s'en servir que pour communiquer notre haine
|
||||
des autres, surtout si on prétend être une espèce sociale et "intelligente" ?
|
||||
|
||||
Non, on ne reprendra pas "notre vie d'avant". Il n'y a pas de "vie d'avant", et
|
||||
la "vie d'avant" n'était pas franchement mieux. Mais il n'y aura pas de "vie
|
||||
d'après" non plus tant que les gens continueront d'être aussi égoïstes. On est
|
||||
censés être une espèce qui s'est adpatée à toutes les conditions de vie, nous
|
||||
avons survécu à d'autres pandémies (et à d'autres catastrophes), on a juste
|
||||
oublié le prix qui a été payé pour y parvenir.
|
||||
|
||||
## Mes prédictions pour 2022
|
||||
|
||||
- [ ] 😤 La pénurie de composants électroniques, associée aux taxes sur l'importation du matériel électronique depuis la Chine, va encore m'empêcher de mettre à jour mon PC de jeu
|
||||
- [ ] 😤 Le Covid-19 et ses variants vont toujours être là, mais de nouveaux médicaments vont permettre de s'affranchir des injections trimestrielles ; les gens vont rester sales et vont toujours vouloir se rassembler, par contre...
|
||||
- [ ] 🥲 James Webb va nous fournir les meilleures images de l'espace jamais vues jusque là
|
||||
- [ ] 🤔 Les téléphones pliables vont faire un flop à cause de la fragilité des écrans
|
||||
- [ ] 🥵 L'été 2022 va être très chaud, l'hiver très froid 🥶 - de nouveaux records de température vont être établis, et les phénomènes météorologiques vont s'intensifier
|
||||
- [ ] 🤔 Quelqu'un, peut-être Microsoft, va racheter la fondation Raspberry Pi
|
||||
- [ ] 😓 Encore des fuites de données massives de la part d'entreprises qu'on pense être à l'abri
|
||||
- [ ] 😻 L'arrivée d'un nouveau chaton dans la famille, et peut-être de nouvelles poulettes 🐓
|
||||
|
||||
## Conclusion
|
||||
|
||||
Gardez le moral en 2022. Embrassez l'inéluctable. Protégez-vous et protégez les
|
||||
autres, et si vous êtes trop égoïstes pour ça, protégez au moins vos proches,
|
||||
ceux que vous aimez. Vous êtes tous des clusters potentiels, et si vous ne
|
||||
voulez pas que ça dégénère - plus que ce que vous pensez à l'heure actuelle -
|
||||
gardez ça à l'esprit. Allez sur la Wikipédia, regardez les articles concernant
|
||||
les anciennes pandémies ([Peste noire](https://fr.wikipedia.org/wiki/Peste_noire),
|
||||
[Grippe espagnole](https://fr.wikipedia.org/wiki/Grippe_espagnole),
|
||||
[Grippe asiatique](https://fr.wikipedia.org/wiki/Grippe_asiatique) et
|
||||
[Grippe de Hong Kong](https://fr.wikipedia.org/wiki/Grippe_de_Hong_Kong), et
|
||||
en particulier, intéressez-vous aux conditions de vie et aux mesures politiques).
|
||||
Ça devrait vous aider à relativer vos pertes de liberté, et remettre en
|
||||
perspective la gravité réelle du Covid avec ces autres pandémies.
|
||||
|
||||
Au-delà de ça, prenez les choses en main avec vos familles. Si elles sont
|
||||
réellement dysfonctionnelles, ce n'est pas un repas de famille à Noël qui va
|
||||
résoudre le problème. Soit vous acceptez que la famille n'est pas ce qu'il y de
|
||||
plus important, soit vous faites quelque chose pour y remédier. Personne ne le
|
||||
fera pour vous. Quand on a un problème, on le résoud.
|
||||
|
||||
Attendez-vous à plus de catastrophes naturelles. Plus de chaud, plus de froid,
|
||||
plus d'humidité, pour les plus chanceux. C'est pas faute d'avoir prévenu depuis
|
||||
longtemps, encore une fois. Et arrêtez de vous en plaindre, c'est de votre faute,
|
||||
vous qui utilisez une voiture pour faire 500 mètres, vous qui jetez vos masques
|
||||
dans la rue, vous qui ne recyclez pas, etc.
|
||||
|
||||
C'est déprimant ? La vie ne vaut d'être vécue que si c'est fun ? À vous de voir,
|
||||
votre vie est bien triste si vous n'êtes capables de rien faire sans risquer
|
||||
votre vie ou celles des autres. Tout ce qui se passe en ce moment peut être une
|
||||
opportunité, un foisonnement d'opportunités. Libre à vous de ne considérer tout
|
||||
cela que comme un accident de parcours, mais ça serait un beau gâchis.
|
||||
|
||||
Vous faites partie de l'espèce humaine. Pendant 45 000 ans, nous avons été
|
||||
l'espèce qui s'est le mieux adapté, qui a colonisé tous les environnements, qui
|
||||
a envoyé ses membres sur la lune, qui a acquis des connaissances qu'aucun autre
|
||||
animal ne pourra jamais posséder. Nous sommes aussi l'espèce responsable de la
|
||||
sixième grande extinction. Mais vous pourriez faire de l'Humain, en 2022,
|
||||
l'espèce qui a corrigé ses erreurs, qui a recitifé le tir, qui a évité le pire.
|
||||
2022 peut vous fournir cette opportunité. C'est ça la bonne nouvelle, c'est le
|
||||
meilleur que je nous souhaite à tous pour cette nouvelle année. Même si ça
|
||||
aussi, c'est un non-évènement en soi...
|
||||
Reference in New Issue
Block a user