SPIP

SPIP un jour, SPIP toujours ... Une part de manuel, une part de totomatique sur ce compte de short-blogging.

  • GitHub - ovh/venom : 🐍 Manage and run your integration tests with efficiency - Venom run executors (script, HTTP Request, web, imap, etc... ) and assertions
    https://github.com/ovh/venom

    Un outil CLI qui permet de faire des « tests utilisateurs » pour une application web avec gestion des retours selon différents protocoles (http, imap, readfile...), de les enchaîner en récupérant les résultats d’une étape pour les utiliser comme input de l’étape suivante...
    Les tests sont écrits sous forme de fichiers yaml, peuvent être lancés en parallèles.
    Open source (langage principal : GO) : binaire fourni pour Linux / Windows / Mac + Docker

    Qui n’a pas eu le besoin d’exécuter un VRAI test d’intégration ?
    1 - Inscription sur une application
    2 - Vérifier le mail envoyé par l’application
    3 - Le mail contient une URL, ouvrir cette URL pour valider l’inscription
    4 - S’authentifier avec le nouveau compte créé
    5 - Naviguer sur l’application Web
    6 - Vérifier en DB, ou sur votre API que les données sont cohérentes

    Venom répond à 5 problématiques :
    – lisibilité des scénarios de tests
    – multi-protocoles
    – résultats xUnit compréhensibles
    – « as-code », les tests sont sur vos dépôts git
    – extensibilité via les exécuteurs (mail, rest, web, kafka, redis, ...)

    Voir la présentation (simple mais bluffante !) sur https://www.youtube.com/watch?v=RGy-xbTs8_s

    #venom #test_utilisateur #unit_test #SPIP #yaml

  • Performance #web : l’intégrateur, ce héros

    J’ai envie de pousser un concept absolument nouveau : l’amélioration progressive (ah pardon on me dit que ça date de 2003). Au minimum c’est la clé d’un premier affichage éclair car on peut se passer de #JavaScript quelques secondes.
    Puis abordons le gros sujet des images : comment les charger rapidement, sans toucher aux fichiers eux-même ? Il y a eu quelques nouveautés ces deux dernières années, mais on va voir que même sur des choses que l’on peut croire acquises comme le lazy loading, il y a quelques pièges qui peuvent être contre-productifs.
    Enfin terminons avec un petit résumé sur les polices : elles tapent dans l’œil mais il faut en garder le contrôle si l’on veut un bon CLS (une des métriques Google dont on va reparler).

    Article intéressant sur les optimisations au moment de l’#intégration web. Ça parle (un peu) performance mais surtout #UX, #ergonomie, #HTML, #CSS, #javascript...

    https://www.24joursdeweb.fr/2021/performance-web-lintegrateur-ce-heros

    • Ya des gens qui trouvent ça enthousiasmant, comme plein de techniciens qui sont à fond dans leur petite spécialité technique, mais moi ça me terrifie, ça devrait pas exister du temps à passer sur ça :D

      Et surtout encore moins devoir s’en préoccuper à chaque intégration (plutôt que ce soit les gens qui font le CMS, langage de template, plugins de lazy, etc, et qu’ensuite pour un site précis à intégrer on n’y pense presque plus).

    • Oui, l’article est intéressant en tant que ressources, pour choisir les plugins qu’on utilise (par ex Adaptive images qui gère le WebP et le lazy loading nativement), faire ses boilerplates persos (préchargement des polices et font-display: swap;), les optimisations côté CMS (chargement JS en asynchrone)... etc, évidemment dans l’idée d’automatiser au maximum.

      Et aussi, se rendre compte que #SPIP gère une bonne partie de tout ça <3

  • voilà plus d’un an que je n’ai pas écrit sur @seenthis
    Alors que plein de gens migrent de twitter à Mastodon, je me demande quelle a été la dynamique de cet autre site de microblogging, pionnier, qui a un moment donné jouait pour moi un rôle de source d’information très utile. Et que d’une certaine manière on peut bien comparer à Mastodon, sf que c’est moins gros.
    Mais beaucoup moins maintenant, puisque je ne reçois plus de notification à part de @gonzo signe que les comptes que je suivais doivent être tombés en léthargie. Le fait est que twitter est devenu pour moi un espace plus riche, beaucoup plus que FB d’ailleurs.
    Quant au stockage/partage de mes signets ou articles repérés, ce que Seenthis faisait très bien, en fait aujourd’hui je le gère directement dans zotero.
    Donc, d’un côté, des flux moins importants et moins riches, de l’autre une fonction de partage que je gère ailleurs.
    Je me demande si d’autres usagers ont le même sentiment que moi ? Est-ce que @Seenthis a des stats sur l’évolution des usages ?

    • Sur les sujets qui t’intéressent plus particulièrement, je te suggère de suivre :
      @loutre, qui est particulièrement active sur la Palestine,
      @kassem, plus « multisujets », mais avec une expertise naturelle sur la Palestine et le Liban notamment,
      @simplicissimus sur tous les sujets, et qui s’intéresse et documente avec précision les questions internationales…

      Avec ces trois-là, via leurs messages propres et leurs re-partages, tu retrouveras une activité riche, et toujours qualitative, sur Seenthis.

    • Sur la question de pourquoi Seenthis plutôt qu’un autre réseau :

      – d’abord la qualité des participants, et la (quasi) absence de tarés racistes, masculinistes, etc. Sur Mastodon je ne sais pas, par contre sur Twitter, l’omniprésence des tarés sur absolument tous les sujets, leur façon de balancer des shitposts sur absolument tous les threads progressistes, c’est insupportable.

      – la qualité/possibilité de construire des savoirs collectivement. Pour moi c’est le cœur de Seenthis, et ça reste une caractéristique qui existe. Sur Twitter c’est proprement impossible, parce que les « threads » ne sont intéressants que sur les messages du posteur d’origine, dès qu’on passe aux « réponses » c’est totalement mort. Sur Seenthis, les réponses des autres participant·es enrichissent toujours le message initial, avec plus d’infos, une contribution à la thématisation…

      – dans la logique du premier : encore une certaine capacité à la contradiction et à la discussion. C’est forcément imparfait, on a perdu pas mal de monde qui ont mal pris la contradiction, mais en général on arrive à échanger assez longuement avant de se foutre sur la gueule (sur le Covid, on a commencé à sérieusement bloquer, mais je pense que ça n’a pas été immédiat, on a tenu un assez long moment à échanger de manière constructive).

      – la possibilité de poster des messages sans limite de longueur. Sur Mastodon je ne sais pas comment ça se passe, mais sur Twitter on est obligés de passer par un service externe à chaque fois qu’on veut lire un truc intéressant, c’est un non-sens total.

      – la modération qui est chez nous. Et comme on a un nombre d’actifs limité, c’est assez cosy comme ambiance. Sur Twitter c’était déjà totalement merdique bien avant l’arrivée de Musk. Sur Mastodon, j’ai lu ce matin le fait que le système décentralisé posait de grosses difficultés, rendant la question de la modération problématique et peu lisible pour les auteur·ices.

    • Je n’y ai pas pensé parce qu’initialement ce n’est pas directement ton sujet de prédilection, mais puisque tu t’intéresses à une question concernant la vie sociale des réseaux, tu peux aussi suivre @hlc, dont c’est ici l’activité centrale.

      Sur les questions migratoires et les réfugiés, @cdb_77 fait une veille invraisembable (attention : avec elle tu vas avoir énormément à lire…).

      Si tu veux avoir une sorte de « best of » chaque matin des posts qui ont bien été partagés, il faut suivre le compte de notre automate @7h36.

    • Retour à ce jour, de mon côté aussi, à SeenThis, avec les mêmes interrogations, mais l’envie de revenir sur ce microblogging que j’ai trouvé très riche dans sa forme, mais pour lequel les partages de ressources pédagogiques m’avaient semblé moins prendre.

      Pour l’heure, la migration de Twitter à Mastodon ne réussit pas à me convaincre totalement, si ce n’est la différence entre « accueil », « fil public local » et « fil public global », qui peut apporter un réel plus, à condition d’être sur une instance qui regroupe réellement des gens au même centre d’intérêt que celui qu’on suit. La crainte que si réellement migration il y a, le bruit reste très important. Ce qui me semble être le « plus » de SeenThis, car les posts à créer étant plus chronophages, le bruit est très réduit.

    • Je vois que ça discute beaucoup sur moi et mes posts :-)
      Eh oui, désolée si c’est beaucoup pour certain·es, mais je continue à utiliser (et c’est peut-être un peu la réponse à la question de @rumor à laquelle je réponds ici) :
      – twitter plutôt pour prendre et ce qui m’intéresse et je veux archiver, je balance sur seenthis —> mais bientôt Mastodon, je n’ai pas encore fait le pas...
      – seenthis = mon archive personnel, mais public d’articles de presse ou autres sources disons non forcément académiques. J’utilise pour partager des fois des fils de discussion avec des personnes qui me demandent des infos, pour moi même et notamment pour préparer mes cours et/ou conférences. Je sais, souvent indirectement, que des personnes savent qu’il y a des ressources (notamment sur migrations/frontières, en effet @arno) qui peuvent consulter
      – zotero surtout pour des articles et autres documents plutôt académiques (pour la petite histoire, ma base de données « migrations/frontières » sur zotero a 4355 entrées (à bon entendeur...)

      Et super le retour de @ville_en sur seenthis !! Tu m’avais manqué :-)

    • J’ai crée mon compte sur Seenthis en 2021 après avoir testé différents réseaux. C’est celui qui me correspond le mieux par sa facilité d’utilisation, la possibilité de partager très aisément ses lectures est très agréable.
      C’est un outil qui m’est devenu indispensable pour la veille documentaire, le flux rss me permet de proposer à mes collègues de me suivre sans pour autant avoir un compte eux-mêmes et c’est un atout considérable.

      Je reconnais que je néglige un peu l’aspect « social » en ne commentant que très peu les publications que je lis mais j’apprécie la richesse et la qualité des échanges.

      En tant que professeur documentaliste, le système de recherche par mots-clés est très naturel, c’est assez formidable de pouvoir suivre des thèmes et des sites aussi facilement.

      C’est aussi un moyen d’éviter la surcharge informationnelle que peuvent générer d’autres types de réseaux.

      C’est l’occasion pour moi de remercier tous ceux et celles qui gèrent cette plateforme qui mérite d’être davantage connue et reconnue !

    • (voilà plusieurs jours que je me pose la question de créer une instance mastodon, mais Swami m’a rappelé opportunément la seconde raison pour laquelle je n’avais pas sauté le pas il y a quelques années ; de plus, je me dis qu’il serait sans doute préférable d’améliorer SeenThis... mais j’avoue avoir pris goût à la lecture de Twitter... alors pourquoi ne pas essayer Mastodon... mais... bref... à suivre... dans l’immédiat je continue sur la piste de « comment mieux publier nos images d’accompagnement sur SeenThis »...)

    • Il y a quelques comptes problématiques sur seenthis aussi, comme en atteste la mésaventure qu’a récemment connue @7h36, cf. https://seenthis.net/messages/977427. Certes, il y en a peu, mais c’est uniquement parce que seenthis est petit. Pas parce qu’il faut écrire long et argumenter ; ça, ils savent faire.

      En tout cas, ne faisons pas comme si seenthis avait une solution.

      (Pas plus que mastodon… pour l’anecdote, j’ai supprimé mon petit compte mastodon perso il y a quelques années, quand une instance sur laquelle je me trouvais a décidé de bloquer une autre instance sur laquelle j’avais des contacts, pour une raison tout à fait étrangère à la fois à mon activité et à celle de mes contacts.)

    • Un aspect qui me semble important : je vois beaucoup de gens qui prétendent que « ce que veulent les gens » sur Twitter et Mastodon, c’est de l’horizontalité. Et que ce que ferait Musk, justement, c’est de ne pas comprendre cette demande d’horizontalité.

      Or je pense que c’est faux : les gens vont sur Twitter parce que c’est là que tout le monde est. Ils n’iront sur Mastodon que s’il s’y trouve suffisamment de monde. Or à partir du moment où l’on a un réseau hyper-fréquenté, on a forcément les tarés qui débarquent en nombre suffisant pour pouvoir poster un shitpost dans chaque message, et interdire ainsi toute possibilité de discussion. De ce fait, Twitter n’est pas du tout un réseau horizontal, au sens où il n’y a pas de discussions : il y a des gens qui postent des threads tout à fait passionnants, et c’est suivi de « forums » insupportables à lire. La seule chance d’avoir une visibilité en répondant à un thread, c’est que l’auteur initial décide de repartager cette réponse à son propre thread.

      C’est comme les forums sur les sites Web : j’ai toujours été partisan de ces forums sous les articles, dès qu’on a conçu SPIP pour uZine, la présence de forums publics sous tous les articles était une des fonctionnalités « de base ». Et on a eu de très beaux échanges dans ces forums. Par contre, dès que les forums passent sur des sites qui atteignent un public conséquent, c’est mort : c’est shitpost sur shitpost, des macronards et des fachos qui viennent pourrir absolument tout, partout et tout le temps, ou des braves abrutis qui ont appris que « discuter » en public, c’était reproduire la merdasse à la Hanouna. Je suis toujours admiratif de voir Plenel défendre non seulement les blogs adhérents, mais aussi les forums sous les articles, avec les mêmes arguments que nous avions à l’époque pour uZine et pour SPIP, tout en reconnaissant que c’est très problématique.

      J’ai lu récemment un thread de quelqu’un qui faisait remarquer que les fachos étaient sur Twitter non pas pour la « liberté d’expression », mais parce que c’est le principal endroit où ils peuvent aller pourrir les gens de gauche. Des réseaux de fachos fréquentés par les fachos, il y en a déjà, c’est pas un problème. Ce qui les attire sur Twitter, c’est pas d’y être lu par d’autres fachos, c’est avant tout qu’ils vont pouvoir aller poster des shitpost pour faire chier les progressistes (« to own the libs »).

      De fait, je sais bien que Seenthis est avant tout protégé par sa faible participation (même s’il a, aussi quelques caractéristiques intéressantes, comme le fait que les réponses sont présentées au même niveau que le message d’origine, ou encore que le système de « petits triangles » avant les URL favorise l’agrégation des discussions, et tente de décourager l’auto-promo qui pique les référencements des autres…). La faible participation, l’audience limitée (mais pas nulle), font qu’on n’est pas une cible intéressante pour les fafs et les macronards, puisque ce n’est pas le bon endroit pour aller « faire chier du gaucho ».

      Et à l’inverse : les gens qui veulent aller sur un réseau avec pour critère qu’il y ait un maximum de monde, se condamnent à renoncer à toute forme d’horizontalité dans les échanges, parce que la seule façon de rendre la lecture de ces trucs supportables, c’est de cacher les forums sous le tapis (ce que fait Twitter) en rendant les « réponses » extrêmement moins visibles que le post d’origine (c’est-à-dire en réduisant les possibilités de construction d’intelligence collective).

      C’est contre-intuitif, mais : plus la fréquentation sera importante, et moins un réseau social sera « horizontal ». Plus il sera nécessaire de planquer les shitposts en planquant les forums. Et plus il sera nécessaire d’avoir des algorithmes pour hiérarchiser les messages.

      (Une autre façon de dire la même chose, c’est de constater que les gens vont sur des gros réseaux pour prétendre échapper aux bulles de filtre, dénoncent ces bulles de filtres, alors que justement plus un réseau est gros et plus il y a besoin de créer des bulles de filtre. Les gens qui dénoncent les bulles de filtre, si réellement ils étaient sur Twitter et Youtube sans ces bulles de filtres, ils seraient horrifiés et n’y retourneraient pas.)

    • @cdb_77 du coup j’ai une question « méthodologiqie » puisque tu utilises twitter comme outil de repérage de ressources avant de les signaler ici pour mémoire. Tu travailles sur téléphone pour twitter ou tu es sur ordi dès tes repérages ? Perso, qd j’identifie des ressources intéressantes je me les partage vers mon email avant de les intégrer dans zotero (où je mets tout, académiques et autres ressources doc). Mais s’il y avait un moyen de faire ces signalements directement dans @seenthis Seenthis via le téléphone, comme le permet la petite extension qui existe pour les navigateurs, ce serait génial.
      Parce que le matin je lis twitter comme l’autre lisait le journal, c’est ma prière du petit déjeuner qui ne peut s’encombrer d’un ordinateur...

    • Vous devez aussi l’avoir lu/vu :

      Le Mastodon(te) et l’oiseau bleu. – affordance.info
      https://affordance.framasoft.org/2022/11/le-mastodonte-et-loiseau-bleu

      Je crois qu’aujourd’hui la valeur d’un réseau social est non seulement définie par celles et ceux qui sont dedans, par celles et ceux qui en sont exclus … mais aussi et par toutes celles et ceux qui refusent d’y être et disposent des ressources pour s’efforcer de socialiser ailleurs et ce faisant, d’espérer amorcer quelque chose de neuf avec la responsabilité leur incombant d’au moins montrer que cela est … possible.

    • @rumor : j’utilise twitter sur ordi et tél et je fais comme toi : je me partage les ressources que j’identifie vers mon email et je mets sur seenthis et/ou zotero (mais la majorité du temps sur seenthis ce que je trouve sur twitter quand même)

    • Salut Salut,

      je me permets de ramener ma fraise sur la base d’observations que j’ai fait sur plusieurs réseaux.

      De mon expérience :
      Facebook/linkedin (et je crois insta, tik tok...mais pas sur j’ai pas vraiment essayé, c’est juste une opinion vu de loin) : la majorité des posts c’est matte mon style de vie comme il est ouf. Il n’y a pas vraiment de débat d’idées, un post, même pas forcément sérieux fait très vite (sur facebook, moins sur linkedin) l’objet de commentaires haineux, sexistes, fascistes...bref les gens se lâchent à coup de « bon sens » façon cnews...c’est délicieux (bon ok linkedin c’est différent c’est moins du bon sens que des posts de motivation à 2 balles...mais basé sur ton style de vie de ouf...et les commentaires sont généralement plus softs).

      Twitter : Beaucoup de débats. L’énorme majorité sont finalement peu documentés et/ou fouillés. En plus les règles sont bafouées (enfin je trouve). Sur l’autel du débat d’idées tu te dois d’accepter la pure liberté d’expression de l’autre...et effectivement les promoteurs d’extrême droite (mais pas que) en profite un max pour tirer la fenêtre d’overtom hyper à droite pour mieux imposer leurs idées dans la sphère journalistique et politique (qui adorent ce réseau).
      Les experts sont malheureusement noyés dans la masse...quand ils ne sont pas harcelés de commentaires dégueulassent également.

      Mastodon : Je pense aussi que tu peux vite te retrouver comme dans twitter si les utilisateurs augmentent. Cela dit la fenetre d’overtom actuelle est très anar, anticapitaliste, antinuke, et féministe (en tout cas si tu es sur une instance comme mamot et que tu te limites à quelques comptes bien choisis comme https://mamot.fr/web/@Khrys). L’avantage c’est que t’as pas de suggestions...donc tu peux rester dans ta bulle...mais j’ai déjà eu quelques interactions qui m’ont rappelé twitter mais c’est très rare...et tu peux les bloquer facilement (et j’espère que ça va pas augmenter avec l’arrivée massive de fugueurs d’Elon).

      Seenthis : Pendant longtemps je n’ai suivi que @rezo et @7h36 et rien qu’avec ces 2 comptes...tu prends cher en infos de qualité. Je me suis mis à suivre d’autres comptes au fil des échanges mais j’atteins mes limites de temps disponible pour tout consulter. L’énorme différence avec Masto c’est la qualité des échanges de débats...qui sont effectivement sans concessions et beaucoup plus fournis. Sans parler de l’archivage des dossiers etc...

      Je crains beaucoup l’arrivée de flopées de vénères trop à droite qui viendraient dégueuler des commentaires inintéressants pour tirer les fenêtres d’overtom de ces 2 derniers réseaux.

    • A vrai dire aucun 😉

      Mais si ta question est un tant soit peu sérieuse...😁 (suspense...)
      La pépite du net français pour les films de Kung Fu (mais pas que), se trouve ici :
      http://hkcinemagic.com/fr/main.asp ?
      et un forum
      http://forum.hkcinemagic.com/index.php ?
       !!!
      (que j’ai découvert que trop tard pour participer) (d’ailleurs ça compte comme réseau social un forum ?)

      Ce qui est un peu nul c’est que les gars ont plus vraiment le temps ni l’envie d’animer...

      Une grande perte pour cette passion 😔

  • Concepts de base des propriétés et valeurs logiques - CSS : Feuilles de style en cascade | MDN
    https://developer.mozilla.org/fr/docs/Web/CSS/CSS_Logical_Properties/Basic_concepts

    CSS Logical Properties (les propriétés logiques CSS) est un module CSS qui définit une correspondance logique vers les propriétés physiques de contrôle de la mise en page selon le sens de lecture et l’orientation du texte.

    Historiquement, CSS permettait de dimensionner des objets selon les dimensions physiques de l’écran. On pouvait alors décrire des boîtes avec une certaine largeur (width) et une certaine hauteur (height), positionner les éléments à partir du haut (top) et de la gauche (left), faire flotter les objets, créer des bordures, des marges, du remplissage (padding) en haut, à droite, en bas et à gauche (resp. top, right, bottom, left, etc.). La spécification sur les propriétés et valeurs logiques définit des correspondances entres ces valeurs physiques et des valeurs logiques, relatives au flux : start et end plutôt que left et right ou top et bottom.

    Voir aussi :
    – la page de la propriété writing-mode qui définit si les lignes d’un texte sont écrites horizontalement ou verticalement et la direction selon laquelle le bloc grandit
    – la page de référence des propriétés et valeurs : https://developer.mozilla.org/fr/docs/Web/CSS/CSS_Logical_Properties

    #CSS #logical_properties #rtl #sens_ecriture #propriétés_logiques_CSS #SPIP #multilinguisme

  • Ça va “brancher” chez Leaflet...

    Leaflet 1.9 released - Leaflet - a JavaScript library for interactive maps

    The v1.9 release is setting the stage for the first major version bump of Leaflet since 2016! A lot has changed since then, and it’s time for Leaflet to grow together with the web platform.

    After this release, we are branching off the 1.x code and putting it in maintenance mode — reserving potential 1.x releases only for critical bugfixes. Although version 2.0 is still far away and will take some time to take shape, we plan to make the following changes:

    – Dropping support for Internet Explorer.
    – Embracing modern JavaScript.
    – Standardized modules
    – Removing the Leaflet global

    https://leafletjs.com/2022/09/21/leaflet-1.9.0.html

    #leaflet #map

  • Commits Conventionnels
    https://www.conventionalcommits.org

    « Normer » le contenu des commits pour faciliter la relecture de l’historique d’un dev

    Le commit contient les éléments structurels suivants, permettant de communiquer à l’intention des utilisateurs de votre bibliothèque :
    fix: un commit de type fix corrige un bogue dans le code (cela est en corrélation avec PATCH en versioning sémantique).
    feat: un commit de type feat introduit une nouvelle fonctionnalité dans le code (cela est en corrélation avec MINOR en versioning sémantique).
    BREAKING CHANGE: un commit qui a dans le pied de page le mot clef BREAKING CHANGE :, ou ajoute un ! après le type/scope, introduit un changement cassant l’API (cela est en corrélation avec MAJOR en versioning sémantique). Un BREAKING CHANGE peut faire partie des commits de n’importe quel type.
    – Les types autre que fix: et feat: sont autorisés, par exemple @commitlint/config-conventional recommande build:, chore:, ci:, docs:, style:, refactor:, perf:, test:

    #git #commit #semver #feat #fix

  • Je viens de livrer un mini-site dont je suis super-content : 1622, Montpellier assiégé - Les 50 jours qui ont changé l’histoire de la ville
    https://musee.info/1622-Montpellier-assiege

    Je l’ai réalisé à la demande des Archives municipales de Montpellier, pour commémorer les 400 ans du siège de Montpellier par les troupes de Louis XIII. Sujet drôlement intéressant, et le mini-site regorge d’informations et des documents. (Tu peux y aller, c’est moult instructif.)

    Pour répondre à cette demande, j’ai donc proposé de réaliser cela avec ma propre plateforme « musee.info », initialement développée pour le site Fabre dans mon canapé du musée Fabre, le tout sous #SPIP :
    https://musee.info/Musee-Fabre
    et que j’ai désormais transformé en plateforme ouverte à d’autres clients.

    Le mini-site 1622, Montpellier assiégé est découpé en 7 séquences, largement constituées de formes longues. Parmi les formats plus originaux, il y a :
    – une visite guidée dans Montpellier vers 1550 au travers d’une gravure d’époque :
    https://musee.info/Montpellier-vers-1550
    – une carte animée des campagnes de Louis XIII contre les insurrections protestantes :
    https://musee.info/Les-campagnes-de-Louis-XIII-619
    – un plan interactif de Montpellier pendant le siège :
    https://musee.info/Plan-au-vray-de-la-ville-de-Montpellier
    – un plan interactif des armées en présence :
    https://musee.info/La-vraye-representation-du-siege
    – une chronologie du siège (jusqu’à 1100 coups de canon en une seule journée) :
    https://musee.info/Les-50-jours-du-siege

    Il y a aussi quelques gravures animées dans les formes longues. Le Harlan ou pourquoi on a de si belles places pour les terrasses des restaus dans le centre-ville. Et des gens avec leur tête dans un rond qui tourne sur lui-même, parce que pourquoi pas :
    https://musee.info/Les-acteurs-du-siege

    #shameless_autopromo #protestantisme #histoire #Montpellier

    • Y-a deux hébergeurs que j’ai réussi à éviter jusqu’alors, c’est AWS et AZURE. Et j’avoue que j’en suis bêtement fier.
      Ça héberge du Linux à priori, même si « quelle drôle d’idée ». Donc ça héberge aussi du SPIP.
      Mais à ma connaissance, ça coûte plus cher que chez les autres.
      (note que je suis tellement obtus, si ça s’trouve, il y a des appliances toutes prêtes pour héberger du LAMP administré sans s’enquiquiner avec la couche système... et je ne le sais pas... mais... j’ai même pas envie d’aller voir comment ils auraient pu concevoir ça...)

  • Ah, je sens que dans les prochains appels d’offre pour réaliser le moindre petit site Web ou table tactile, on va me demander de détailler le « plan de sobriété énergétique » de mon entreprise. (J’éteins le ventilateur quand je sors de mon bureau.)

    Note qu’il y a déjà régulièrement besoin de faire un petit topo sur comment que tu vas t’y prendre pour faire la chasse au gaspi, avec une tournure bien floue et vaguement foireuse (ce à quoi mon argument premier c’est que c’est du SPIP alors tu peux y aller ça y va les économies d’énergie à chaque hit). Mais le coup du « plan de sobriété énergétique » complet certifié sur contrat, je le sens bien, là.

    • Note 2 : dans le genre « demande à la mode mais en vrai on s’en cogne », il y a aussi déjà un paragraphe où tu dois expliquer comment tu vas respecter le RGPD (tout en posant un Google Tag Manager réclamé par la comm’), et un autre comme quoi ton site il va être accessible à 100% des gens ayant un handicap existant ou non encore répertorié (tout en répondant positivement à toute demande de slider animé en page d’accueil, voir de vidéo plein écran dès que les gens arrivent sur le site, et évidemment le popup « Acceptez-vous qu’on refile vos données de connexion à Google, Amazon et Pepsi ? », le petit jeu rigolo « cochez toutes les cases avec des montagnes » avant de pouvoir envoyer un mail, toutes joyeusetés exigées par le service comm’ et destinées à se débarasser des aveugles).

  • En proie à une canicule inédite, la Chine craint pour ses récoltes

    AFP, 24 août 2022

    <https://www.arte.tv/fr/afp/actualites/en-proie-une-canicule-inedite-la-chine-craint-pour-ses-recoltes>

    Une « grave menace » : les températures record en Chine, qui provoquent l’assèchement des cours d’eau, mettent désormais en péril les récoltes, ont averti les autorités qui craignent pour la sécurité alimentaire du géant asiatique.

    Extraits :

    « La Chine assure plus de 95% de ses besoins en riz, blé et maïs.
    Mais de mauvaises récoltes risquent d’accroître les importations du pays plus peuplé du monde, au moment où l’offre de céréales est déjà mise à mal par la guerre en Ukraine »

    « Début août, les services météorologiques chinois ont reconnu que le pays a vu depuis 1951 ses températures augmenter deux fois plus vite que la moyenne mondiale, une tendance qui devrait se poursuivre à l’avenir »

    #Chine#agriculture#sécheresse#riz#blé#maïs#eau

  • {par_ordre_liste...} - SPIP
    https://www.spip.net/fr_article6646.html#par_ordre_liste

    le critère de tri SPIP par_ordre_liste a un gros défaut : si on l’applique sur un ensemble d’éléments qui ne sont pas tous dans la #LISTE passée en 2ème paramètre, il affiche d’abord les éléments hors de la #LISTE puis ceux qui sont dedans.
    Exemple si on a 16 sites syndiqués dans la BDD :

    <BOUCLE_t(SYNDIC){par_ordre_liste id_syndic, #LISTE{14,16,13}}{id_syndic > 10}>

    retourne les sites dans l’ordre suivant : 11, 12, 15, 14, 16, 13
    La requête SQL passée est :
    SELECT * FROM spip_syndic AS syndic
    WHERE syndic.id_rubrique > 10
    ORDER BY FIELD (syndic.id_syndic, 14,16,13);

    Pour obtenir le résultat « naturellement attendu » (i.e. d’abord ceux de la liste puis les autres) il faut utiliser la requête SQL suivante :

    SELECT * FROM spip_syndic AS syndic
    WHERE syndic.id_rubrique > 10
    ORDER BY IF (FIELD(syndic.id_syndic, 14,16,13)=0,1,0), FIELD(syndic.id_syndic,14,16,13);

    D’après https://dba.stackexchange.com/questions/109120/how-does-order-by-field-in-mysql-work-internally pour la très astucieuse utilisation du IF (FIELD ... en premier critère de la requète

    #ORDER_BY_FIELD #ORDER #SPIP #par_ordre_liste #MySQL

  • Toute ma reconnaissance à la communauté SPIP, grâce à laquelle j’ai animé mon site d’accompagnement d’activités informatiques, lilapuce.net, depuis 2005, alors que je n’ai jamais été, je ne suis pas et je ne serai jamais un geek ! Ces derniers jours, depuis que je suis en retraite et que les objectifs de ce site ne sont plus exactement les mêmes, j’ai réorganisé tout le contenu, sans trop de difficulté.

    Je viens de refaire un tuto qui me tient particulièrement à cœur, notamment parce que je garde en mémoire, au printemps dernier, le plaisir de ce groupe de gamines, que j’ai eu l’honneur d’accompagner, sur Kdenlive à bidouiller des bouts de vidéo et de musique autours de Whitey’s Lindy Hoppers/Motörhead et Sheila/Michael Jackson :

    https://www.lilapuce.net/Changer-la-piste-audio-d-une-video#lecture_video

  • Comme on vient de me poser deux fois la question dans la semaine : quelle est votre politique, du point de vue des usages, quand un client vous demande si on peut installer un « player » de fichiers PDF dans une page Web ?

    Perso je déconseille absolument, je pense que rien ne remplace l’affichage par défaut du fichier PDF lui-même dans chaque système. Du coup je n’ai jamais eu besoin d’installer un plugin dans SPIP ou quoi ou qu’est-ce pour gérer des affichages de PDF.

    Mais p’têt que j’ai tort et que vous avez des meilleures idées sur le sujet.

  • On the Dangers of Cryptocurrencies and the Uselessness of Blockchain - Schneier on Security
    https://www.schneier.com/blog/archives/2022/06/on-the-dangers-of-cryptocurrencies-and-the-uselessness-of-blockchain.html

    More specifically, I can’t find a blockchain application whose value has anything to do with the blockchain part, that wouldn’t be made safer, more secure, more reliable, and just plain better by removing the blockchain part. I postulate that no one has ever said “Here is a problem that I have. Oh look, blockchain is a good solution.” In every case, the order has been: “I have a blockchain. Oh look, there is a problem I can apply it to.” And in no cases does it actually help.

    (À lire : Schneier qui critique frontalement les cryptomonnaies et blockchain, ce n’est pas rien.)

    • Rappelle-toi que Bruce Schneier sera toujours plus fort que blockchain…
      https://www.schneierfacts.com

      Bruce Schneier can program python without indentation.

      If Bruce Schneier were a protocol, he’d be complex, but not unnecessarily so.

      The universe exists because Bruce needed a reference platform

      Bruce Schneier can reuse his printer cartridges.

      Bruce Schneier knows Chuck Norris’ private key.

      Bruce Schneier doesn’t mine bitcoins; he compresses random data into them with his bare hands

    • @ktche Je ne partage pas cet avis : je n’ai jamais été proche des néo-luddites. (C’est assez transparent d’ailleurs : je n’aurais pas contribué au Manifeste du Web indépendant et uZine, ni à SPIP, ni monté Seenthis, si je partageais une telle position.)

  • Refonte du site de la librairie Quilombo
    https://librairie-quilombo.org

    On fête les quinze ans du site SPIP de la Librairie Quilombo avec une refonte douce en profitant au passage de la dernière version SPIP4. Les changements ne vous sauteront pas aux yeux, mais les améliorations sont bien là !

    L’équipe voulait garder l’esprit de départ du site.

    Je suis contente de l’astuce pour garder cette simplicité et signaler la mise au panier puisque le bouton commander qui est rouge passe au clic en gris et permet alors d’accéder directement au panier. Il n’était pas utile de faire un gros popup pour dire que l’ouvrage avait été choisi. La boutique permet désormais de reprendre une commande en cours ou de choisir son mode de paiement même après avoir cliqué sur « payer par chèque ». Comme d’habitude, ce fut laborieux, mais tout le monde est content !

    Ah, et évidemment toutes les pages sont responsives, vous pouvez donc accéder au site avec un petit écran.

    Merci @SPIP

    Bonne visite !

    #shameless_autopromo

    • 15 ans, mais non, c’est plutôt 17 dans quelques mois !
      J’avais des doutes, le premier article daté est le bien nommé De « la joie par les livres » ...

      https://librairie-quilombo.org/de-la-joie-par-les-livres

      Publié le vendredi 4 novembre 2005

      Le Ministère de la culture a décidé de la fermeture de la Bibliothèque pour enfant, « La joie par les livres », située dans un quartier populaire de Clamart (92). Cette bibliothèque, îlot de résistance culturelle, propose par exemple des scéances de lecture au pied des tours de brique rouge de la cité ou encore réalise du porte-à-porte pour aller à la rencontre des familles. Créée en 1965, son fonds de livre de jeunesse d’une rare richesse fait le bonheur de 600 petits lecteurs. …

      Attends, 2005, on était sous Chirac2, élu suite à un « vote utile » ? Oui, déjà. Et pour fermer ensuite les lieux culturels des quartiers ? Oui, il leur fallait la guerre.

    • Ce que tu pointes là est un commentaire sur les solutions possibles, qui n’a jamais été implémenté. C’est la première méthode, qui ne vaut donc que pour les formulaires (lors d’un POST donc) qui a été faite.

      Du coup quand le contenu n’est pas un formulaire mais qu’on veut quand même pas de cache, ya pas de méthode pour l’instant.

      M’est-avis que tu devrais rouvrir le ticket en disant que c’est super que ça marche par défaut pour les cas avec formulaires, MAIS qu’il faudrait aussi le data-truc pour le désactiver explicitement quand on en veut pas.

  • La diversité de genre — Émission « Libre à vous ! » du 7 juin 2022 — Podcasts et références
    https://linuxfr.org/news/la-diversite-de-genre-emission-libre-a-vous-du-7-juin-2022-podcasts-et-refe

    146ᵉ émission « Libre à vous ! » de l’April. Podcast et programme : - sujet principal : la diversité de genre dans les projets libres avec Agnès Crepet, responsable de l’équipe informatique et de la longévité logicielle de Fairphone, Anne-lise Martenot du projet Spip et Zineb Bendhiba, ingénieure logiciel libre chez RedHat — soupçons de favoritisme dans l’attribution d’un marché de l’éducation nationale : Anticor saisit le PNF — chronique de Luk “Errare humanum est, perseverare diabolicum”

    lien nᵒ 1 : Radio Cause Communelien nᵒ 2 : Libre à vous  !lien nᵒ 3 : Podcast de la 146ᵉ émissionlien nᵒ 4 : Les références pour la 146ᵉ émission et les podcasts par sujetslien nᵒ 5 : S’abonner au podcastlien nᵒ 6 : S’abonner à la lettre d’actusRendez‐vous en direct chaque mardi de 15 h 30 à 17 h sur 93,1 MHz en Île‐de‐France. (...)

    • Un truc sympa pour l’accessibilité : tu peux désactiver le « smooth scrolling » directement dans les CSS pour les gens qui désactivent les animations dans leurs options de smartphone (en tout cas sur iOS) :

      html {
       scroll-behavior: smooth;
      }

      @media (prefers-reduced-motion: reduce) {
       html {
         scroll-behavior: auto;
       }
      }
    • 2 bémols :

      Can I use indique un peu plus de 80% : https://caniuse.com/?search=scroll-behavior
      Mais le défilement se fait dans tous les cas, donc pas grave.

      Ça évite d’ajouter du js mais, dans le cas de liens de retour en haut de page par exemple, on n’a pas forcément envie que l’url soit changée (avec une ancre #haut et même juste #) et je ne sais pas s’il y a une autre solution que du js. Mais là encore, c’est pas bien grave :)

  • GitHub - mebjas/html5-qrcode : A cross platform HTML5 QR code reader. See end to end implementation at : https://scanapp.org
    https://github.com/mebjas/html5-qrcode

    La lib de référence pour lire des QR Code en HTML 5.
    Supporte également une grande variété de codes barres (EAN_13, AZTEC, CODE_128...)

    A cross-platform HTML5 QR code & barcode reader.
    Use this lightweight library to easily / quickly integrate QR code, bar code, and other common code scanning capabilities to your web application.
    Supports easy scanning using an integrated webcam or camera in smartphones (Android / IOS).
    Supports scanning codes from files or default cameras on smartphones.
    Recently Added Supports bar code scanning in various formats.
    Supports two kinds of APIs :
    – Html5QrcodeScanner — End-to-end scanner with UI, integrate with less than ten lines of code.
    – Html5Qrcode — Powerful set of APIs you can use to build your UI without worrying about camera setup, handling permissions, reading codes, etc.
    Support for scanning local files on the device is a new addition and helpful for the web browser which does not support inline web-camera access in smartphones. Note: This doesn’t upload files to any server — everything is done locally.

    #QR_code #lib #lecteur_QR_code #saisie #SPIP

  • Voici un squelette que je viens de me bidouiller pour récupérer le contenu d’un blog #Wordpress dans #SPIP. Pas envie d’y passer ma vie, accès limités aux serveurs… bref j’ai fait ça rapidement et ça m’a suffit. Je viens de récupérer 800 billets d’un Wordpress (hébergé chez Wordpress, d’ailleurs) à partir de l’export en XML, aspiré le logo de chacun et ça fonctionne.

    Comme je n’ai rigoureusement aucune expérience de Wordpress, je ne sais pas si c’est générique, je sais que ça ne reprend aucune structure (ni mots-clés, ni « rubriques ») mais bon : #çamsuffit et je te file le code si ça peut te servir.

    Le mode d’emploi est dans le début du code. Principalement : il faut installer le plugin « sale » de SPIP :
    http://plugins.spip.net/sale.html
    dans lequel il faut modifier le fichier plugin.xml pour lui dire qu’il fonctionne avec SPIP 3. Et dans le fichier « wordpress.date.xml », il faut faire deux chercher-remplacer rudimentaires, parce que je ne sais pas comment accéder à des nœuds XML nommés avec des deux-points.

    #CACHE{0}
    [(#REM)
      # Convertir une sauvegarde Wordpress vers SPIP
      #
      # activer le plugin «sale» de SPIP (si nécessaire, modifier les limites dans plugin.xml pour l'activer)
      #
      # dans "wordpress.xml"
      # remplacer "content:encoded" par "contentencoded"
      # et "wp:post_date" par "wp_post_date"
      #
      # renseigner #SET{fichier}
      # renseigner #SET{id_rubrique} (la rubrique SPIP qui accueille les billets Wordpress)
      #
      # parcourir une première fois (via les liens de pagination)
      # ce qui provoque le chargement des images distantes
      # puis passer #SET{mysql,oui}
      # et reparcourir la pagination - cette fois tout est en base et les images sont copiées
    ]


    #SET{fichier,wordpress.2013-12-28.xml}
    #SET{id_rubrique,48}
    #SET{mysql,non}



    #SET{reg_img, src=\"(.*)(\?w=[0-9]+)?\"}
    #SET{reg_caption, caption=\"(.*)(\?w=[0-9]+)?\"}
    #SET{reg_vides,\\[\-\>.*\\]}


    <B_cite>
    #PAGINATION

    <ul>
    <BOUCLE_cite(DATA)
    {source xml, #GET{fichier}}
    {datapath channel/0}
    {cle==item}
    {pagination 50}
    >
            <li>
                    <h2>[(#VALEUR{0/title/0}|typo)]</h2>
                    <h4>[(#VALEUR{0/wp_post_date/0}|affdate)]</h4>

                    [(#SET{logo,[(#VALEUR{0/contentencoded/0}|sale|match{#GET{reg_img}, Uims, 1}|copie_locale)]})]
                    [(#SET{term,[(#GET{logo}|match{(jpg|png|gif)$, "",1}]})]
                   
                   
                    <br>
                    [(#VALEUR{0/contentencoded/0}|sale|match{#GET{reg_caption}, Uims, 1})]



                    [(#VALEUR{0/contentencoded/0}
                            |replace{"<span .*>", "", Uims}
                            |replace{"</span>", "", Uims}
                            |replace{"<(strong|em)><(strong|em)>","<\1> <\2>"}
                            |replace{"<(strong|em)><(strong|em)>","<\1> <\2>"}
                            |replace{"</(strong|em)></(strong|em)>","</\1> </\2>"}
                            |replace{"</(strong|em)></(strong|em)>","</\1> </\2>"}
                            |sale
                            |replace{"<img.*>","", Uims}|strip_tags
                            |replace{#GET{reg_vides},""}
                            |replace{\\[caption.*\\],"",Uims}
                            |replace{\\[\/caption\\],""}
                            |propre
                            )]

                    [(#GET{mysql}|=={oui}|oui)
                    <?php
                            $id_article = sql_insertq("spip_articles",
                                    array(
                                            "titre" => "[(#VALEUR{0/title/0}|replace{'"','\"'})]",
                                            "id_rubrique" => #GET{id_rubrique},
                                            "texte" => "[(#VALEUR{0/contentencoded/0}
                                                    |replace{"<span .*>", "", Uims}
                                                    |replace{"</span>", "", Uims}
                                                    |replace{"<(strong|em)><(strong|em)>","<\1> <\2>"}
                                                    |replace{"<(strong|em)><(strong|em)>","<\1> <\2>"}
                                                    |replace{"</(strong|em)></(strong|em)>","</\1> </\2>"}
                                                    |replace{"</(strong|em)></(strong|em)>","</\1> </\2>"}
                                                    |sale
                                                    |replace{"<img.*>","", Uims}|strip_tags
                                                    |replace{#GET{reg_vides},""}
                                                    |replace{\\[caption.*\\],"",Uims}
                                                    |replace{\\[\/caption\\],""}
                                                    |replace{'"','\"'}
                                                    )]",
                                    "statut" => "publie",
                                    "date" => "[(#VALEUR{0/wp_post_date/0})]"
                                    )
                            );
                           
                            copy("#GET{logo}", "IMG/arton$id_article.#GET{term}");
                           
                    ?>               
                    ]               
            </li>

    </BOUCLE_cite>
    </ul>
  • https://contrib.spip.net/http.api/ezrest/paquets?prefixe=saisies&compatible_spip=4.1

    ↑ exemple de requête sur l’API de spip-contrib/ezrest pour récupérer les infos d’un plugin (ici saisies) compatible avec une version précise de SPIP (ici 4.1)
    Le retour est un Json dans lequel on pourra trouver (entre autre !) les versions du plugin (ici : donnees > SAISIES > paquet > 4.3.6)
    Devrait permettre de pouvoir récupérer le tag correspondant (ici « v4.3.6 » si la nomenclature de création des tags a été respectée) via une commande spip dl (en mode git) de spip-cli...

    #SPIP #API #plugins #version #tag #spip-cli #compatibilité

    • Salut @cy_altern,

      De mon côté, je viens de faire un script pour lister les commandes git à faire pour cloner un site avec les même versions de plugin déjà installés par Git :

      <code>
      function generategitinstall() {
      FILE=$PWD/$1/../paquet.xml
      if [ -f “$FILE” ]; then
      origin=$(git —git-dir=$1 —work-tree=$PWD/$1/.. config —get remote.origin.url)
      prefix=$(xmllint —xpath “string(/paquet/@prefix)” $PWD/$1/../paquet.xml)
      branch=$(git —git-dir=$1 —work-tree=$PWD/$1/.. branch —show-current)
      echo “git clone $origin $prefix && cd $prefix && git checkout -b$branch && cd ..”
      fi
      }

      function findgits() {
      find ./* -type d -name “.git” -print0 | sort -z |
      while IFS= read -r -d ’’ line; do
      generategitinstall $line
      done
      }
      echo “# spip”
      branch=$(git branch —show-current)
      echo “checkout.php spip -b$branch .”

      echo “# plugins”
      cd plugins
      findgits
      cd ..
      </code>