From c5af410d52bd2fba409b3931fc01a36264366841 Mon Sep 17 00:00:00 2001 From: "kujiu (@rincevent)" Date: Fri, 10 Jul 2020 21:28:18 +0200 Subject: [PATCH] Add: En coulisses / Juillet 2020 --- source/2017/05/14_evolution.rst | 2 +- source/2019/01/12_nouvelle_annee.rst | 2 +- source/2020/01/10_nouvelle_annee.rst | 2 +- source/2020/05/23_bilan_et_projets.rst | 2 +- source/2020/07/10_generation_pdf.rst | 395 ++++++++++++++++++++ source/2020/07/assets/10_generation_pdf.svg | 1 + 6 files changed, 400 insertions(+), 4 deletions(-) create mode 100644 source/2020/07/10_generation_pdf.rst create mode 100644 source/2020/07/assets/10_generation_pdf.svg diff --git a/source/2017/05/14_evolution.rst b/source/2017/05/14_evolution.rst index 0de2248..c5ffc30 100644 --- a/source/2017/05/14_evolution.rst +++ b/source/2017/05/14_evolution.rst @@ -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 diff --git a/source/2019/01/12_nouvelle_annee.rst b/source/2019/01/12_nouvelle_annee.rst index 55b4999..9a987ea 100644 --- a/source/2019/01/12_nouvelle_annee.rst +++ b/source/2019/01/12_nouvelle_annee.rst @@ -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 diff --git a/source/2020/01/10_nouvelle_annee.rst b/source/2020/01/10_nouvelle_annee.rst index 6200dae..5930902 100644 --- a/source/2020/01/10_nouvelle_annee.rst +++ b/source/2020/01/10_nouvelle_annee.rst @@ -1,6 +1,6 @@ .. post:: 2020-01-10 22:40 :tags: nouveauté, projets - :category: Humeur + :category: En coulisses :author: kujiu :location: BLA :excerpt: 2 diff --git a/source/2020/05/23_bilan_et_projets.rst b/source/2020/05/23_bilan_et_projets.rst index 39284ad..7cff261 100644 --- a/source/2020/05/23_bilan_et_projets.rst +++ b/source/2020/05/23_bilan_et_projets.rst @@ -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 diff --git a/source/2020/07/10_generation_pdf.rst b/source/2020/07/10_generation_pdf.rst new file mode 100644 index 0000000..36b05bb --- /dev/null +++ b/source/2020/07/10_generation_pdf.rst @@ -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 `_. 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 `_. + +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 +`_ +et de +`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 +`_. +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 +`_, +pour pouvoir utiliser des icônes de +`FontAwesome `_ +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. diff --git a/source/2020/07/assets/10_generation_pdf.svg b/source/2020/07/assets/10_generation_pdf.svg new file mode 100644 index 0000000..70383d4 --- /dev/null +++ b/source/2020/07/assets/10_generation_pdf.svg @@ -0,0 +1 @@ +web_developer \ No newline at end of file