Add: En coulisses / Juillet 2020
This commit is contained in:
parent
a9047bcec0
commit
c5af410d52
6 changed files with 400 additions and 4 deletions
|
@ -1,6 +1,6 @@
|
|||
.. post:: 2017-05-14 11:10
|
||||
:tags: nouveauté, santé, hôpital, adaptation
|
||||
:category: Humeur
|
||||
:category: En coulisses
|
||||
:author: kujiu
|
||||
:location: BLA
|
||||
:excerpt: 1
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.. post:: 2019-01-12 18:00
|
||||
:tags: nouveauté, santé, projets
|
||||
:category: Humeur
|
||||
:category: En coulisses
|
||||
:author: kujiu
|
||||
:location: BLA
|
||||
:excerpt: 1
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.. post:: 2020-01-10 22:40
|
||||
:tags: nouveauté, projets
|
||||
:category: Humeur
|
||||
:category: En coulisses
|
||||
:author: kujiu
|
||||
:location: BLA
|
||||
:excerpt: 2
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.. post:: 2020-05-23 17:50
|
||||
:tags: écriture, bilan, défi, projet
|
||||
:category: Humeur
|
||||
:category: En coulisses
|
||||
:author: kujiu
|
||||
:location: BLA
|
||||
:excerpt: 1
|
||||
|
|
395
source/2020/07/10_generation_pdf.rst
Normal file
395
source/2020/07/10_generation_pdf.rst
Normal file
|
@ -0,0 +1,395 @@
|
|||
.. post:: 2020-07-09 23:00
|
||||
:tags: néerlandais, PDF, ePub, sphinx
|
||||
:category: En coulisses
|
||||
:author: kujiu
|
||||
:location: BLA
|
||||
:excerpt: 1
|
||||
|
||||
Génération PDF et autres tribulations
|
||||
=====================================
|
||||
|
||||
.. image:: assets/10_generation_pdf.svg
|
||||
:width: 70%
|
||||
:align: center
|
||||
:alt: Un homme manipule un ordinateur devant un site web.
|
||||
:title: Image par Katerina Limpitsouni
|
||||
|
||||
Cet article est le premier d'une longue série à
|
||||
venir, à savoir le bilan de mes aventures
|
||||
mensuelles. Enfin, plus ou moins, tout dépendra
|
||||
des activités. Je souhaite vous montrer l'envers du
|
||||
décor, comment un long projet à la fois artistique
|
||||
et très technique se construit. Je vous le dis
|
||||
de suite : la lecture sera dense ! Je commencerai
|
||||
par un aperçu complet du mois écoulé avant
|
||||
d'attaquer une deuxième partie très technique.
|
||||
Enfin, je terminerai avec un dernier volet sur
|
||||
l'architecture globale en troisième partie,
|
||||
toujours réservée à un public geek.
|
||||
Donc, ceux qui ne veulent pas de détails techniques
|
||||
pourront abandonner la lecture quand je le dirai.
|
||||
Il s'agit ici d'un point de situation.
|
||||
|
||||
Les tribulations mensuelles
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Apprentissage d'une langue
|
||||
--------------------------
|
||||
|
||||
Le mois de juin n'a pas été très satisfaisant en
|
||||
terme d'efficacité sur le projet. La faute en est
|
||||
clairement au rattrapage dans ma formation. Je suis
|
||||
arrivé en Belgique il y'a quelques années déjà, et
|
||||
je ne connais toujours pas la langue la plus parlée
|
||||
du pays. Je prends donc des cours du soir de
|
||||
néerlandais depuis la rentrée scolaire 2019. J'ai
|
||||
validé le niveau A1 en fin de mois.
|
||||
|
||||
Pour ceux qui ne le savent pas, la Belgique a
|
||||
trois langues officielles : le néerlandais, le
|
||||
français et l'allemand. Chacune d'elles est parlée
|
||||
dans une zone bien précise. La Flandre parle
|
||||
néerlandais, Bruxelles - une enclave en Flandre -
|
||||
principalement français et un peu néerlandais,
|
||||
et enfin la Wallonie en français - exceptée une
|
||||
petite zone à l'Est où l'allemand est de mise.
|
||||
Et avec ça, je n'ai même pas parlé des communes à
|
||||
facilités, dans lesquelles il est possible de
|
||||
parler une autre langue que celle de la région.
|
||||
Bien sûr, chaque langue dispose de sa communauté,
|
||||
et donc de son gouvernement. Et chaque région
|
||||
(Flandre, Bruxelles et Wallonie) a également son
|
||||
gouvernement. Donc, si l'on compte tout cela, nous
|
||||
avons six gouvernements (néerlandophone,
|
||||
germanophone, francophone, flamand, wallon et
|
||||
bruxellois) auxquels il faut encore ajouter un
|
||||
gouvernement fédéral. Comment ça, c'est compliqué ?
|
||||
Non peut-être…
|
||||
|
||||
Toujours est-il que je vis à la frontière
|
||||
linguistique franco-néerlandophone et je souhaite
|
||||
ne plus être coupé de la moitié de la culture du
|
||||
pays. L'objectif est clair : niveau A2 fin septembre
|
||||
et potentiellement B1 dans un an. Et je peux vous
|
||||
dire que je m'en donne les moyens ! J'ai acquis un
|
||||
gros rythme de travail, il faut dire aussi que les
|
||||
sept premiers mois de formation ont été plutôt
|
||||
chaotiques : l'école n'avait strictement aucune
|
||||
mesure d'adaptation à ma vue. J'ai pu trouver les
|
||||
ressources pour rattraper le retard accumulé, et
|
||||
je continue avec cet élan.
|
||||
|
||||
Unifier les médias
|
||||
------------------
|
||||
|
||||
J'ai travaillé aussi sur une partie technique en
|
||||
parallèle de la formation : l'unification des
|
||||
médias. J'utilise un logiciel particulier pour
|
||||
l'écriture, dédié normalement à la rédaction de
|
||||
documentation. Il s'agit de
|
||||
`Sphinx <https://www.sphinx-doc.org>`_. Il me
|
||||
permet à la fois de créer un site web, un blog,
|
||||
une histoire, un `PDF`, un `ePub` et je compte bien
|
||||
l'utiliser aussi pour générer l'audio et préparer
|
||||
les projets vidéo. Oui, rien que ça ! J'ai donc
|
||||
passé un mois à peaufiner le thème global du
|
||||
Nerv Project, à faire en sorte que ce thème
|
||||
fonctionne quelque soit le média. Il reste quelques
|
||||
bugs, vous pouvez vous en rendre compte en tentant
|
||||
d'imprimer cette page.
|
||||
|
||||
Communication
|
||||
-------------
|
||||
|
||||
Écrire un univers entier, c'est bien. Mais c'est
|
||||
encore mieux s'il y'a des lecteurs. Je ne peux pas
|
||||
vous dire grand chose ici pour ne pas gâcher la
|
||||
surprise, mais je réfléchis à d'autres formats pour
|
||||
vous proposer du contenu exclusif et amusant.
|
||||
Je me pose aussi beaucoup de questions sur une
|
||||
éventuelle officialisation du Nerv Project. Bref,
|
||||
j'ai beaucoup de sujets en suspens sur ces questions
|
||||
et ce sera exploré dans les prochains mois. Je
|
||||
rappelle que vous pouvez rejoindre le salon IRC,
|
||||
le serveur Discord ou encore le serveur Matrix.
|
||||
Tous les liens sont sur le site du
|
||||
`Nerv Project <https://www.nerv-project.eu>`_.
|
||||
|
||||
Question de langage
|
||||
-------------------
|
||||
|
||||
J'ai eu aussi un retour plutôt désagréable d'une
|
||||
certaine personne, qui se reconnaîtra peut-être.
|
||||
Nous sommes dans une période où beaucoup de choses
|
||||
sont remises en question, tant sur les inégalités
|
||||
sociales que sur les expressions utilisées. Tous
|
||||
mes travaux sont stockés sur un système pour la
|
||||
gestion des versions, nommé `git`, et dont la
|
||||
branche principale est nommée par défaut `master`.
|
||||
Certains auront été impactés par les quelques jours
|
||||
de maintenance sur le serveur, il s'agissait de
|
||||
renommer ce terme devenu problématique par le terme
|
||||
`main` bien plus juste dans son sens et bien plus
|
||||
neutre politiquement parlant. C'est une grosse
|
||||
étape, avec beaucoup de travail. Ce terme n'est pas
|
||||
le seul remis en question, il y'a notamment les
|
||||
`whitelists` pour les éléments à laisser passer et
|
||||
les `blacklists` pour les éléments à bloquer. Il
|
||||
semblerait, dans les recherches que j'ai rapidement
|
||||
effectuées, que ce terme dérive de la couleur des
|
||||
balles utilisées lors de votes à bulletin secret.
|
||||
Une balle blanche pour l'accord, une balle noire
|
||||
pour le désaccord. Du moins, pour certaines
|
||||
sources non académiques. Si vous connaissez des sources
|
||||
fiables, vous pouvez me les donner en commentaire.
|
||||
En attendant, je ne tiens pas compte de cette
|
||||
hypothèse.
|
||||
|
||||
Cependant, le mot `black` signifiait à la fois
|
||||
quelque chose de mauvais ainsi que la punition
|
||||
et la couleur noire. Le terme `blacklist`
|
||||
est apparu en 1590, en pleine exploitation
|
||||
esclavagiste et notamment des personnes à la peau
|
||||
foncée. Ce terme est resté jusqu'à nos jours et je
|
||||
ne nie aucunement que son origine est contestable
|
||||
moralement. Je conçois parfaitement que ce terme
|
||||
est problématique. Et puis, la composition du mot
|
||||
ne donne pas une définition claire et juste du
|
||||
principe. Des termes comme `blocklist` et
|
||||
`acceptlist` seraient tellement plus élégants.
|
||||
|
||||
Malheureusement, ces concepts sont utilisés depuis
|
||||
les débuts de l'informatique et perdurent à de très
|
||||
nombreux endroits. Autant je pouvais corriger le
|
||||
terme dans le nom des versions, moyennant déjà pas
|
||||
mal de travail, autant il me paraît infaisable de
|
||||
modifier le reste. C'est pour cela que je ne le
|
||||
ferai pas. Il n'y a ni alternative convenable me
|
||||
permettant d'utiliser des logiciels exempts de ces
|
||||
termes ni solution viable pour les modifier
|
||||
moi-même. Il faudrait que je réécrive de nombreuses
|
||||
lignes de code, que je m'assure qu'elles ne soient
|
||||
pas supprimées à la moindre mise à jour, etc. Il
|
||||
ne s'agit plus de jours de travail mais d'années.
|
||||
Qui plus est, quand le logiciel répond aux termes
|
||||
utilisés dans des normes (je pense notamment au
|
||||
serveur mail). Les développeurs de certains
|
||||
logiciels se sont emparés du problème et s'occupent
|
||||
déjà de corriger.
|
||||
|
||||
Cette clarification étant faite, je ne tolèrerai
|
||||
aucune diffamation me concernant en raison d'un
|
||||
logiciel tiers sur lequel je n'ai pas la main.
|
||||
|
||||
Et puis, quitte à être dans les sujets polémiques,
|
||||
le Nerv Project n'utilisera aucunement une écriture
|
||||
mettant à l'écart une frange de la population par
|
||||
son côté inaccessible. Le point médian dit inclusif
|
||||
empêche aux personnes souffrant de dyslexie ou de
|
||||
cécité de lire. Encore une fois, je comprends le
|
||||
besoin égalitaire face à la langue mais je refuse
|
||||
d'être tout simplement interdit ou d'interdire à
|
||||
qui que ce soit la lecture pour privilégier un
|
||||
autre groupe. Une écriture inclusive doit l'être
|
||||
pour tout le monde, sans mettre des gens sur le
|
||||
bord de la route "parce qu'ils sont minoritaires"
|
||||
ou parce que les systèmes technologiques nécessaires
|
||||
ne peuvent pas être compatible. Et je vais être très
|
||||
dur sur un point : IL EST TOTALEMENT HORS DE
|
||||
QUESTION QUE J'ABANDONNE LE BRAILLE. Oui, il n'y a
|
||||
pas de caractère officiel pour le point médian en
|
||||
braille, mais ce n'est pas une raison pour
|
||||
l'interdire. Si ce que je vous dis vous semble
|
||||
aberrant, sachez que cela m'a été reproché.
|
||||
|
||||
Je vous rappelle que je fais aussi
|
||||
partie de minorités, oui au pluriel. Gay et
|
||||
légalement aveugle. Et la langue française n'est
|
||||
clairement pas sympathique non plus dans ces cas.
|
||||
Mais revenons à nos moutons. Je suis totalement
|
||||
preneur si un accord sort concernant une langue
|
||||
inclusive, simple, qui ne pose aucun problème.
|
||||
Mes textes reprennent notamment des noms de métier
|
||||
féminisés, il y'aura des personnages féminins
|
||||
construits avec autant d'attention que les autres,
|
||||
etc. Et il est absolument hors de question qu'il
|
||||
en soit autrement. Et plus encore, si vous lisez
|
||||
entre les lignes de l'univers du Nerv Project, vous
|
||||
vous rendrez compte que cette agence secrète fictive
|
||||
peut prendre tout un tas de qualificatifs peu
|
||||
glorieux. C'est fait exprès, il faut bien qu'une
|
||||
chose existe dans une fiction pour la dénoncer ou
|
||||
pour poser des questions de société. Et dans les
|
||||
futurs écrits, vous allez apprendre à détester le
|
||||
fabuleux cardiologue. Et pas qu'un peu.
|
||||
|
||||
Concrètement, j'évite au maximum d'utiliser le
|
||||
pluriel directement à un ensemble de personnes
|
||||
listées. Ainsi, je n'écrirai pas "Marc, Martine
|
||||
et Mehdi sont gentils" mais "le groupe d'amis
|
||||
faisait preuve d'une gentillesse à toute épreuve"
|
||||
(groupe est masculin singulier) ou "les
|
||||
personnes" (féminin pluriel) ou encore "les gens"
|
||||
(pluriel, genre selon la position dans la phrase).
|
||||
|
||||
Je regrette fortement le manque du neutre dans la
|
||||
langue française, et je ne serai pas contre pour
|
||||
définir, par exemple, un genre actuel comme neutre
|
||||
et l'autre comme "genré". Si on
|
||||
prend le masculin comme neutre, on dirait
|
||||
"Marc est gentille", "Martine est gentille"
|
||||
mais "Marc et Martine sont gentils". Mais on peut
|
||||
aussi choisir l'inverse. Cette approche aurait
|
||||
l'avantage de créer peu de différences dans la
|
||||
langue, d'être totalement inclusif vu que tout le
|
||||
monde a le même pronom et le même accord, et d'être
|
||||
simple pour tout le monde. C'est une proposition
|
||||
comme une autre. Je sais que certaines personnes
|
||||
proposent l'accord de proximité, mais je trouve
|
||||
la règle moins simple à appliquer. Il n'y a pas
|
||||
de consensus aujourd'hui sur ces sujets-là et je ne
|
||||
veux pas non plus perdre un public non sensibilisé
|
||||
à ces questions. C'est pour cela que je me tiendrai
|
||||
à appliquer les règles de français telles qu'elles
|
||||
existent aujourd'hui, en utilisant un mot valise
|
||||
pour parler d'un groupe plutôt que de référencer
|
||||
directement plusieurs personnes directement par un
|
||||
pronom. Et si jamais un tel cas se produirait, il
|
||||
s'agirait juste d'une faute à la relecture, vous
|
||||
pourrez directement me le signaler et je corrigerai
|
||||
le texte.
|
||||
|
||||
Ainsi se termine la partie non technique. Il n'y
|
||||
aura pas plus d'actualités dans la suite de cet
|
||||
article.
|
||||
|
||||
Les avancées techniques
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Du HTML vers le PDF
|
||||
-------------------
|
||||
|
||||
Revenons donc à ce qui m'a occupé ce mois-ci.
|
||||
`Sphinx` exporte nativement en `PDF` en utilisant
|
||||
`LaTeX`. Cette manière de faire ne me convenait
|
||||
pas pour une raison toute simple : il faut
|
||||
maintenir à la fois un thème pour `HTML` et un
|
||||
thème pour `LaTeX`. Et en plus, les spécificités
|
||||
de `Sphinx` rendent le thème `LaTeX` difficilement
|
||||
personnalisable. C'est donc beaucoup de travail
|
||||
supplémentaire, à maintenir. C'est pour cela que
|
||||
j'ai écrit deux extensions très simples pour
|
||||
`Sphinx`. Il s'agit de
|
||||
`sphinx_weasyprint_builder
|
||||
<https://procrastinator.nerv-project.eu/nerv-project/sphinx_weasyprint_builder>`_
|
||||
et de
|
||||
`sphinx_pyppeteer_builder
|
||||
<https://procrastinator.nerv-project.eu/nerv-project/sphinx_pyppeteer_builder>`_.
|
||||
Les deux font exactement la même chose, mais pas
|
||||
avec le même moteur. J'utilise donc la sortie
|
||||
`HTML` de `Sphinx`, mais en version un seul fichier
|
||||
à la sortie, puis j'applique une conversion du
|
||||
`HTML` vers le `PDF`. Dans le premier cas, j'utilise
|
||||
`WeasyPrint`, basé sur `Cairo`, qui propose une
|
||||
conversion directe. Dans le second, il s'agit d'une
|
||||
impression lancée avec le moteur de `Chromium`.
|
||||
|
||||
Tous les moteurs de rendu ont des approches
|
||||
différentes et tous ne supportent pas de la même
|
||||
manière les différents flux et les attributs CSS.
|
||||
Et malheureusement, la partie impression est
|
||||
relativement peu implémentée.
|
||||
|
||||
Un thème particulier
|
||||
--------------------
|
||||
|
||||
Le thème `HTML` du Nerv Project pour `Sphinx` est
|
||||
assez particulier pour plusieurs raisons. Il
|
||||
est prévu pour être fonctionnel pour les sorties
|
||||
`HTML`, `PDF` via `sphinx_pyppeteer_builder` et
|
||||
`ePub`. Il est disponible pour tout le monde
|
||||
`sur mon serveur gitea
|
||||
<https://procrastinator.nerv-project.eu/nerv-project/sphinx_nervproject_theme>`_.
|
||||
Je ne peux malheureusement pas le rendre compatible
|
||||
avec `WeasyPrint` en raison de certaines complexités
|
||||
du `CSS` non prises en charge. Et il me reste encore
|
||||
quelques bugs sur la taille de certains blocs,
|
||||
laissant ainsi de grands vides avec le format
|
||||
impression. À noter que j'ai dû utiliser une table
|
||||
pour de la mise en forme. Je n'aime pas ça, mais
|
||||
c'est le seul moyen de garder des entêtes et
|
||||
pieds-de-pages fixes.
|
||||
|
||||
Le thème fonctionne cependant parfaitement bien
|
||||
pour l'affichage du site web. Il dispose de ses
|
||||
quatre jeux de couleurs en mode site web uniquement
|
||||
et d'un cinquième pour l'impression. Le format
|
||||
`ePub`, quant à lui, ne permet pas de gérer des jeux
|
||||
de couleurs en fonction du thème du système. Il a
|
||||
donc fallu faire un choix sur ce point, et il
|
||||
reprend donc le mode clair, car c'est celui qui est
|
||||
généralement préféré par l'utilisateur. En plus,
|
||||
c'est celui qui est le plus logique pour des
|
||||
liseuses à encre électronique.
|
||||
|
||||
|
||||
ePub, un nouveau chantier
|
||||
-------------------------
|
||||
|
||||
Tant que nous sommes dans les problèmes liés au
|
||||
format `ePub`, le retour de mes écrits est très mauvais
|
||||
avec le programme `epubcheck`. J'ai un grand
|
||||
nombre d'erreurs. J'ai pu corriger une partie liée
|
||||
au thème. J'utilise même un module de mon cru,
|
||||
`sphinx_fasvg
|
||||
<https://procrastinator.nerv-project.eu/nerv-project/sphinx_fasvg>`_,
|
||||
pour pouvoir utiliser des icônes de
|
||||
`FontAwesome <https://fontawesome.com/>`_
|
||||
au format `SVG`, et celui-ci empêche aujourd'hui
|
||||
la génération d'un `ePub`. Il me reste donc du travail
|
||||
pour mettre tout ça au point, et voir pourquoi
|
||||
`Sphinx` lui-même me provoque des erreurs à la
|
||||
vérification.
|
||||
|
||||
Retour à Gitea
|
||||
--------------
|
||||
|
||||
Enfin, une dernière action de ce mois-ci change
|
||||
beaucoup de choses sur l'infrastructure. J'ai
|
||||
abandonné `GitLab` pour revenir à `Gitea`. Je
|
||||
perds énormément de fonctionnalités que je
|
||||
n'utilisais pas et quelques unes qui m'étaient
|
||||
utiles. Mais ce changement me libère beaucoup de
|
||||
ressources. `Gitea` consomme moins en `RAM` et en
|
||||
processeur. Ça soulage un serveur qui est déjà
|
||||
surchargé. Il me reste à me pencher sur quelle
|
||||
solution `CI/CD` je vais déployer pour remplacer
|
||||
celle que j'ai perdue.
|
||||
|
||||
Architecture du projet
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Parlons d'ailleurs architecture. Aujourd'hui,
|
||||
j'utilise un seul serveur sur lequel tout est
|
||||
installé, sans réelle séparation entre services.
|
||||
Il héberge à la fois le serveur mail, les sites
|
||||
web, mon serveur `XMPP`, et me sers de bureau
|
||||
distant en `CLI`. Bref, ce n'est pas très propre,
|
||||
surtout qu'il s'agissait à la base d'un bureau
|
||||
distant et rien d'autre. Le choix de la distribution
|
||||
Linux (Arch) n'était pas insensé à ce moment-là.
|
||||
|
||||
Une telle architecture ne va aujourd'hui plus du
|
||||
tout, les besoins grossissent. Et donc une refonte
|
||||
complète est à prévoir. Je regarde actuellement
|
||||
différentes solutions pour cela. J'ai déjà identifié
|
||||
quelques scénarios à mettre en œuvre, pour
|
||||
automatiser la maintenance, la mise à jour des sites,
|
||||
la création de nouvelles machines, l'élaboration
|
||||
d'un plan de reprise d'activité et j'en passe.
|
||||
Il va y avoir un gros travail dans les mois à venir
|
||||
sur tout cela. Je peux déjà vous dire que j'ai
|
||||
sélectionné `SaltStack` et `Zabbix`, et que je
|
||||
lorgne sur `Uyuni`, et peut-être `OpenBuildService`.
|
||||
Ce sujet sera très probablement abordé le mois
|
||||
prochain de manière bien plus détaillée.
|
1
source/2020/07/assets/10_generation_pdf.svg
Normal file
1
source/2020/07/assets/10_generation_pdf.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 9.5 KiB |
Loading…
Reference in a new issue