Mise à jour de VenC en version 3.2.2

Posté par  (site web personnel) . Édité par Benoît Sibaud. Modéré par Benoît Sibaud. Licence CC By‑SA.
18
9
juin
2024
Python

VenC

VenC, un générateur libre (GPLv3) de site statique en python qui avait déjà été présenté dans une dépêche précédente, est de retour en version 3.2.2 avec tout un tas de nouvelles fonctionnalités cool qu’on va voir ici.

Sommaire

Auto-rafraîchissement lors de la prévisualisation

Quand vous prévisualisez votre site avec venc -s vous n’avez plus besoin de tuer le processus du serveur HTTP local et de régénérer manuellement le site à chaque modification. Le mécanisme est à présent automatique et détecte lui-même un changement pour vous présenter la version à jour de votre contenu ! La cache du navigateur étant parfois capricieux, VenC vous notifie dans la sortie standard de ses actions si jamais vous avez un doute.

Assignation d’un thème par défaut

Si vous utilisez le thème par défaut concrete ou tout autre thème installé en dehors de votre projet il est possible de l’indiquer dans votre fichier de configuration. Ainsi venc -s sait comment régénérer votre site si nécessaire, et vous n’avez plus besoin d’indiquer le nom du thème installé sur votre système lorsque vous utilisez la commande venc -xb ou venc -xftp.

Amélioration des fonctionnalités FTP

Transfert en parallèle

De nombreuses améliorations ont été apportées, en voici quelques-unes !

Transfert parallèle

Vous pouvez maintenant définir un nombre arbitraire de connexions FTP simultanées pour le transfert de votre site en ligne. Pour un petit site, ça ne fait pas de grosse différence, mais quand comme moi votre site comporte plusieurs centaines de pages, ça fait gagner un temps fou !

Verbosité accrue

  • Affichage du prompt FTP
  • Affichage des commandes FTP associées à leur numéro de session

Transfert intelligent

Pour économiser de la bande passante, VenC compare les fichiers locaux avec ceux en ligne. Ce faisant, il ne réalise que les opérations d’I/O strictement nécessaires.

Configuration FTP plus fine

Vous pouvez maintenant paramétrer les options suivantes :

  • ftp_encoding : VenC affichant à présent le prompt FTP du serveur, il est maintenant possible d’avoir des informations sur celui-ci, et notamment l’encodage. Avec l’option ftp_encoding, il est donc possible de configurer l’encodage de la session pour être en phase avec le serveur distant et éviter de mauvaises surprises.
  • ftp_sessions : comme on l’a vu plus haut, c’est le nombre de connexions parallèles possibles.
  • ftp_port : avant, pour une raison obscure et injustifiable par le bon sens, le port de la connexion FTP était codé en dur… Maintenant c’est une valeur par défaut qu’il est possible de redéfinir.

Thème par défaut

Le thème par défaut a été amélioré, notamment au niveau de l’ergonomie et de la qualité visuelle du thème. Ce nouveau thème intègre par ailleurs les nouvelles fonctionnalités de la version 3.2 !

Nouvelles balises VenC

Microcode VenC

Accès amélioré à des métadonnées YAML

Une fonctionnalité ultérieurement manquante et utile dans certains cas d’usage est de pouvoir accéder à des valeurs qui sont imbriquées dans un ou plusieurs dictionnaires YAML dans le fichier de configuration principal ou dans les métadonnées d’une publication.

Pour ce faire, quatre fonctions VenC ont été ajoutés :

Pour les champs non obligatoires ou non prédéfinis par VenC, ça permet donc en conséquence une plus grande liberté dans l’organisation du contenu YAML.

Accéder à la date de la dernière publication

Utile pour la génération de flux Atom ou RSS, récupérer la date de la dernière publication d’un fil de publication permet d’indiquer la vraie date de mise à jour du flux :

GetLastEntryTimestamp

Taxonomie Avancée

Taxonomie Avancée

C’est la grosse fonctionnalité de cette mise à jour !

Avant la version 3.2 vous ne pouviez organiser vos publications “que” par catégories hiérarchisées. C’était déjà pas mal dans la mesure où ça permettait de créer des menus arborescents pour organiser votre contenu, mais parfois ça n’est pas suffisant. Par exemple, tout à fait au hasard, vous êtes un⋅e artiste et vous gérez votre portfolio avec VenC. Vous pourriez alors avoir un menu de la forme suivante pour organiser vos œuvres :

- Peintures
  - Huile
  - Acrylique
  - Aquarelle
- Dessins
  - Encre
  - Crayon
- Mediums Mixtes

Et comme vous êtes un⋅e bon⋅ne p'tit⋅e libriste auto-radicalisé⋅e sur Framasoft et LinuxFr vos œuvres sont en partie sous licence CC-By-SA. En partie seulement car oui, vous faites aussi des fanarts, des travaux dérivés d’œuvres sous licences propriétaires. Vous voulez donc séparer ce qui est véritablement libre de ce qui ne l’est pas. En générant par exemple ce type de menu :

# Mediums

- Peintures
  - Huile
  - Acrylique
  - Aquarelle
- Dessins
  - Encre
  - Crayon
- Mixtes

# Licences

- CC
  - By-NC-ND
  - By-SA
- Copyright
- Licence Art Libre

Ça tombe bien, c’est précisément ce que permet maintenant de faire VenC 3.2.

L’idée est la suivante : puisque l’arbre de toutes les catégories construit à partir de toutes les publications est un arbre hiérarchisé, il suffit de sélectionner une ou plusieurs branches de cet arbre pour créer nos menus et présenter notre contenu de la façon qu’il nous plaira.

Dans notre exemple précédent l’arbre hierarchisé de toutes les catégories aurait donc la forme suivante :

- Mediums:
  - Peintures:
    - Huile
    - Acrylique
    - Aquarelle
  - Dessins:
    - Encre
    - Crayon
  - Mixtes
- Licences:
  - CC:
    - By-NC-ND
    - By-SA
  - Copyright
  - Licence Art Libre

Nous sélectionnons donc les branches Mediums et Licences. Avec les nouvelles fonctions VenC qui vont bien :

Sur le thème par défaut concrete, vous pouvez ainsi avoir un nombre arbitraire de menu de catégories en configurant comme indiqué dans la documentation votre fichier de configuration principal.

À noter que même si ça n’est pas encore idéal, ce système ouvre la voie pour créer des blogs multilingues. Le brainstorming sur le sujet se passe ici. Pour l’heure, il est donc possible de tirer avantage de la taxonomie avancée pour créer des branches pour chaque langue que vous souhaitez utiliser. Avec un peu de JS vous pouvez aller plus loin pour rendre ça plus dynamique à votre convenance.

Le mot de la fin

Voilà pour cette nouvelle version !

La version 3.3 est déjà en cours de développement et vous pouvez suivre l’aventure ici. Un grand merci à Sidoine, Rollniak et Jérémy pour leur aide, leur confiance et leurs feedbacks !

Les sources GIMP des illustrations sont accessibles ici sous licences CC-By-SA

Toutes les contributions sont évidemment les bienvenues :

  • Corriger, relire ou améliorer la documentation.
  • Signaler des bugs ou faire des suggestions.
  • Écrire du code.
  • Me faire aumône pour me payer un p'tit shot de Baileys Irish Cream !

Aller plus loin

  • # Problème avec les illustrations

    Posté par  (site web personnel) . Évalué à 1.

    Bonjour Benoît Sibaud, les liens sont morts :(

  • # J'avais pas suivi

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    La version du paquet que je maintiens sur Alpine était resté en version 3.1.1 ! D'habitude je scrute sur repology avec un flux RSS pour savoir quand un des paquets que je maintiens a reçu une nouvelle release sur une autre distro. Or ici, nous (Alpine Linux) sommes la seule distro qui propose VenC comme paquet. Va falloir que je trouve autre chose pour me tenir au jus.

    Un gentil du net

  • # unix way

    Posté par  . Évalué à 2.

    Bravo pour ce projet

    J'ai lu les commentaires de la précédente dépêche.

    J'ai un site qui s'apparente à un blog dans lequel je publie mes notes sur divers sujets.

    Je ne voulais pas écrire les outils moi-même mais démarrer simple pour ajouter des fonctionnalités quand le besoin s'en faisait sentir.

    À date, j'utilise:

    • pandoc : markdown + front matter -> HTML
    • plantuml et drawio pour les diagrammes
    • une css maison (dans ce style)
    • de la glue en Shell
    • un scripts AWK (+ gron pour traiter du json en ligne par ligne) pour gérer les tags
    • entr pour réagir au changement de contenu sur disque
    • make pour le build incrémental
    • stork comme moteur de recherche côté client mais je passerai bientôt à pagefind car Stork n'est plus maintenu
    • live-server pour le reload automatique dans le navigateur en dev
    • helix pour l'édition

    Ce que ça fait déjà

    • chaque post en HTML dans sa propre page
      • la coloration syntaxique
      • la table des matières d'un post
      • permalink
    • une home page avec la liste de posts
    • une page de tags
    • un moteur de recherche côté client
    • le flux RSS

    J'aimerai travailler sur

    • L'intégration avec une forge logicielle, pour avoir
      • le déploiement automatique (j'uploade par script en FTP)
      • la gestion des droits
      • le versioning
    • un LSP (superset de markdown), pour faciliter la création de références croisées et aider à la rationalisation les tags
    • la publication sur le Fediverse

    je ne pense pas travailler sur

    • l'optimisation de la vitesse (et le parallélisme) : entre make (incrémental) et pandoc (très rapide), et seulement quelques centaines de contenus, je n'ai pas de soucis de lenteur
    • les catégories : je trouve difficile de définir les bonnes catégories. Je préfère quelque chose de moins rigide – search, tags, cross-reference – pour organiser le contenu
    • la navigation – next/previous, calendrier – car mon contenu n'a pas de chronologie

    Vous l'aurez deviné, rien de publiable en l'état car hautement lié à mon besoin. Mais largement reproductible.

    • [^] # Re: unix way

      Posté par  (site web personnel) . Évalué à 1.

      Salut ! Tu peux détailler ce que tu entend par référence croisé ? Également, quel serait la différence entre des tags, et des catégories non hierarchisé dans ton cas d'usage ?

      Ton approche est très unix way indeed <3

      • [^] # Re: unix way

        Posté par  . Évalué à 2.

        Tu peux détailler ce que tu entend par référence croisé ?

        Dans un contenu, le fait de pouvoir pointer un autre contenu qui aborde un sujet connexe.

        quel serait la différence entre des tags, et des catégories non hierarchisé dans ton cas d'usage ?

        Dans mon modèle mental, un contenu appartient à une et une seule catégorie mais peut avoir un nombre quelconque de tags.

        Les catégories ont tendance à être trop strictes, les tags trop lâches :/

        Ton approche est très unix way indeed <3

        Oui

        • [^] # Re: unix way

          Posté par  (site web personnel) . Évalué à 2.

          Ok je comprend mieux :)

          Pour les categories au sens de VenC, un billet peut avoir autant de categories et sous categories que tu veux. Tu peux donc t'en servir soit comme des tags, soit comme des categories plus strictes. Avec la taxonomie avancée, tu peux combiner les deux approches sans problème. C'est pour ça que dans la v3 j'ai retiré le support des tags qui était redondant. Tu peux toujours en avoir, en ajoutant la métadonnée, mais ça ne sera pas clickable et n'affectera pas la génération et l'organisation de ton contenue. C'est du legacy donc.

          Il est aussi possible avec VenC d’aplatir l'arbre de toutes les categories (à partir ou non d'une branche) pour générer ce qui peut-être assimilé à un nuage de tag clickable.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.