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).
|
||||
Reference in New Issue
Block a user