# Veille technologique

[Source canonique](<https://sebastien.rigaux.be/veille/page/2>)

## [.NET multi-tenant : séparer les données par schéma SQL Server — partie 2/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-separer-les-donnees-par-schema-sql-server-partie-24>)

Cette partie 2/4 montre comment isoler les données de chaque tenant dans son propre schéma SQL Server, sans filtre global ni colonne `TenantId` obligatoire. Le modèle EF Core retrouve ainsi une clé primaire simple, tandis que la frontière d’isolation est portée par la structure de la base.

Le changement central tient au cache du modèle : `OnModelCreating` ne s’exécute qu’une fois par modèle. Il faut intégrer le schéma à la clé via `IModelCacheKeyFactory`, faute de quoi EF Core peut réutiliser celui du premier tenant. L’article détaille aussi le provisionnement et les migrations par schéma, ainsi que la validation stricte des noms de schéma interpolés dans le SQL.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-separer-les-donnees-par-schema-sql-server-partie-24.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/07/multi-tenant-part-2/>)

## [.NET multi-tenant : requêtes isolées et partitions SQL Server — partie 1/4](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-requetes-isolees-et-partitions-sql-server-partie-14>)

Cette première partie présente une architecture multi-tenant .NET à schéma partagé : EF Core filtre les lectures par tenant et SQL Server partitionne physiquement les lignes pour accélérer l’accès aux données. Le point essentiel : le partitionnement n’est pas une frontière de sécurité ; l’isolation repose sur le filtre global EF Core.

L’article détaille aussi la résolution du tenant par requête, l’attribution de son identifiant aux nouvelles lignes et l’ajout des partitions aux migrations avec du SQL brut. La clé primaire doit inclure `GuildId`, contrainte imposée par SQL Server pour partitionner un index unique.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-multi-tenant-requetes-isolees-et-partitions-sql-server-partie-14.md>) · [Ressource originale](<https://barretblake.dev/posts/development/2026/07/multi-tenant-part-1/>)

## [Boucles d’agents en C\# avec Microsoft Agent Framework](<https://sebastien.rigaux.be/veille/liens/boucles-dagents-en-c-avec-microsoft-agent-framework>)

Les boucles d’agents enchaînent action, observation et évaluation pour affiner une réponse ou retenter une opération jusqu’à satisfaire un critère. Jesse Liberty illustre le principe en C# avec Microsoft Agent Framework : un agent de boucle, un évaluateur et une limite d’itérations.

L’exemple distingue un marqueur déterministe comme `DONE` d’un évaluateur basé sur un modèle juge, puis détaille les garde-fous à prévoir : délais, appels idempotents, journalisation et suivi des coûts. Chaque itération ajoute en effet latence et consommation de tokens.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/boucles-dagents-en-c-avec-microsoft-agent-framework.md>) · [Ressource originale](<https://jesseliberty.com/2026/10/26/prompts-are-dead-long-live-loops/>)

## [Elephant-Goldfish Model : les skills de Google pour cadrer les specs](<https://sebastien.rigaux.be/veille/liens/elephant-goldfish-model-les-skills-de-google-pour-cadrer-les-specs>)

Elephant-Goldfish Model, un plugin open source de Google, fournit des **skills** pour explorer une idée, rédiger une spécification et la faire challenger avant l’implémentation. Un agent « Elephant » conserve le contexte du projet ; des reviewers « Goldfish » examinent le document sans l’historique de conversation afin de faire ressortir les hypothèses implicites et les risques.

Le dépôt couvre aussi la résolution des retours et la comparaison de la documentation au code. Les revues exigent des contextes de sous-agents indépendants : si l’environnement ne peut pas les créer, EGM interrompt cette étape.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/elephant-goldfish-model-les-skills-de-google-pour-cadrer-les-specs.md>) · [Ressource originale](<https://github.com/google/elephant-goldfish-model>)

## [Accessibilité web : le livre de Laura Kalbag est gratuit en ligne](<https://sebastien.rigaux.be/veille/liens/accessibilite-web-le-livre-de-laura-kalbag-est-gratuit-en-ligne>)

Laura Kalbag met *Accessibility for Everyone* en lecture gratuite sur le Web. Publié initialement en 2017 chez A Book Apart, le livre offre une ressource accessible à la communauté web pour aborder l’accessibilité.

L’autrice précise que les bonnes pratiques ont peu changé, mais que certains outils recommandés et intitulés de postes peuvent être dépassés ; les WCAG approchent par ailleurs de leur version 3.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/accessibilite-web-le-livre-de-laura-kalbag-est-gratuit-en-ligne.md>) · [Ressource originale](<https://accessibilityforeveryone.site/>)

## [Modern Web Guidance : des pratiques web actuelles pour les agents de code](<https://sebastien.rigaux.be/veille/liens/modern-web-guidance-des-pratiques-web-actuelles-pour-les-agents-de-code>)

Modern Web Guidance fournit aux agents de code des recommandations expertes sur les API du navigateur, CSS, performance et accessibilité, pour les orienter vers des solutions natives plutôt que vers des patterns legacy. Le dépôt rassemble 232 fonctionnalités et 186 cas d’usage, sous forme de skills installables dans plusieurs agents.

Le CLI recherche un guide en local, puis l’injecte dans le contexte de l’agent. Les consignes intègrent compatibilité Baseline, fallbacks ciblés et évaluation automatisée ; le projet est annoncé en preview.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/modern-web-guidance-des-pratiques-web-actuelles-pour-les-agents-de-code.md>) · [Ressource originale](<https://github.com/GoogleChrome/modern-web-guidance>)

## [emoji-picker-react : personnaliser un sélecteur d’émojis React](<https://sebastien.rigaux.be/veille/liens/emoji-picker-react-personnaliser-un-selecteur-demojis-react>)

emoji-picker-react fournit un sélecteur d’émojis pour React, utilisable avec ses styles intégrés ou adapté à l’identité visuelle du produit. Le playground interactif permet de tester les propriétés, les thèmes CSS et des exemples de personnalisation.

Le composant couvre notamment la recherche, les tons de peau, les émojis personnalisés et plusieurs langues. Son mode « réactions » affiche d’abord une sélection compacte de réactions populaires, puis donne accès à la bibliothèque complète.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/emoji-picker-react-personnaliser-un-selecteur-demojis-react.md>) · [Ressource originale](<https://ealush.com/emoji-picker-react/#playground>)

## [OpenTUI : interfaces terminal en TypeScript avec rendu natif en Zig](<https://sebastien.rigaux.be/veille/liens/opentui-interfaces-terminal-en-typescript-avec-rendu-natif-en-zig>)

OpenTUI permet de construire des interfaces utilisateur pour le terminal en TypeScript, directement ou avec React et Solid. Son moteur de rendu natif est écrit en Zig, et la mise en page s’appuie sur flexbox.

La bibliothèque prend en charge les sélecteurs, les champs de saisie et les zones de défilement pilotés au clavier ou à la souris. Elle peut aussi afficher des images, jouer des sons et rendre des graphismes 3D.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/opentui-interfaces-terminal-en-typescript-avec-rendu-natif-en-zig.md>) · [Ressource originale](<https://opentui.com/>)

## [Puck, éditeur visuel pour React : champs et canvas dans la version 0.24](<https://sebastien.rigaux.be/veille/liens/puck-editeur-visuel-pour-react-champs-et-canvas-dans-la-version-024>)

Puck, l’éditeur visuel de pages pour React, ajoute dans sa version 0.24 des groupes et des onglets pour organiser les champs, ainsi qu’un champ `checkbox` pour sélectionner plusieurs options. Des poignées de déplacement facilitent aussi le réagencement de composants dans des mises en page imbriquées.

L’API `renderFields` permet de composer ces présentations. Côté canvas, `InlineTextField` rend possible l’édition directe du texte, tandis que `fieldTransforms` transforme les valeurs au rendu sans modifier les données sous-jacentes.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/puck-editeur-visuel-pour-react-champs-et-canvas-dans-la-version-024.md>) · [Ressource originale](<https://puckeditor.com/blog/puck-024>)

## [React : préserver le progressive enhancement des Server Actions](<https://sebastien.rigaux.be/veille/liens/react-preserver-le-progressive-enhancement-des-server-actions>)

React combine `<form action>`, `useActionState` et `useOptimistic` pour gérer les retours d’attente et les mises à jour optimistes tout en conservant un envoi de formulaire avant l’exécution de JavaScript. L’article montre comment cette continuité permet d’enrichir l’interface après hydratation sans abandonner le comportement natif du navigateur.

Le point décisif est de garder l’action serveur directement dans `action` : une fonction cliente intermédiaire casse la soumission sans JavaScript. Pour l’optimisme, `useHydrated()` permet de choisir entre l’action serveur et sa version enrichie côté client.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/react-preserver-le-progressive-enhancement-des-server-actions.md>) · [Ressource originale](<https://ebey.dev/blog/3myyseusgd22h>)

## [C\# 15 : des unions exhaustives, avec un coût de boxing à surveiller](<https://sebastien.rigaux.be/veille/liens/c-15-des-unions-exhaustives-avec-un-cout-de-boxing-a-surveiller>)

C# 15 introduit le mot-clé `union` pour représenter une valeur parmi plusieurs types sans les regrouper dans une classe de base ni perdre leur typage dans `object`. Andrew Lock montre comment les `switch` expressions vérifient que chaque cas est traité, et comment déclarer des unions comme `Result<T>`.

Le détail à considérer côté performance : l’implémentation générée stocke la valeur dans un `object`, ce qui boxe les types valeur. L’article présente une implémentation personnalisée avec `TryGetValue` pour éviter ce boxing dans les `switch`.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/c-15-des-unions-exhaustives-avec-un-cout-de-boxing-a-surveiller.md>) · [Ressource originale](<https://andrewlock.net/exploring-the-dotnet-11-preview-2-dotnet-gets-union-types/>)

## [Microsoft Agent Framework : choisir où intercepter les appels](<https://sebastien.rigaux.be/veille/liens/microsoft-agent-framework-choisir-ou-intercepter-les-appels>)

Dans Microsoft Agent Framework, le middleware du `ChatClient` intercepte les messages échangés avec le LLM, tandis que le middleware d’agent agit sur l’exécution globale, notamment pour gérer session, identité ou budget de tokens. Cette distinction aide à placer la journalisation ou la modification au bon niveau.

L’exemple C# ajoute un middleware d’invocation de fonction qui journalise les appels à l’outil Tavily du seul agent Researcher, sans modifier les autres agents. La trace affiche le nom de la fonction et ses arguments.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/microsoft-agent-framework-choisir-ou-intercepter-les-appels.md>) · [Ressource originale](<https://jesseliberty.com/2026/08/08/chatclient-middleware-vs-agent-middleware/>)

## [C\# : IfItQuacks transforme le duck typing en bibliothèque](<https://sebastien.rigaux.be/veille/liens/c-ifitquacks-transforme-le-duck-typing-en-bibliotheque>)

IfItQuacks permet d’utiliser en C# des objets qui correspondent à une interface sans l’implémenter ni hériter d’une classe commune. L’attribut `[DuckTyped]` déclenche un générateur de code qui vérifie la compatibilité à la compilation et crée un adaptateur, sans réflexion ni `dynamic`.

Les types anonymes peuvent aussi servir de stubs de test : un objet `{ Name = "Steven", Age = 90 }` satisfait ainsi une interface `IPerson`. Les adaptateurs préservent par ailleurs l’identité en transférant `Equals`, `GetHashCode` et `ToString` à l’objet sous-jacent.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/c-ifitquacks-transforme-le-duck-typing-en-bibliotheque.md>) · [Ressource originale](<https://steven-giesel.com/blogPost/41599817-4457-441e-b874-1a5c67f4e7cc>)

## [.NET : modéliser les intervalles comme objets métier](<https://sebastien.rigaux.be/veille/liens/net-modeliser-les-intervalles-comme-objets-metier>)

CodoMetis.ValueRanges propose des types d’intervalle .NET pour remplacer les paires de dates et leur logique dispersée. Les cinq variantes — finie, sans borne gauche ou droite, infinie et vide — rendent explicites les formes possibles et leurs règles, tandis que les opérations comme `Contains` et `Overlaps` s’exécutent en mémoire.

Le package EF Core associé fait le pont avec PostgreSQL : les mêmes opérations dans le domaine sont traduites en opérateurs SQL via Npgsql. L’article détaille aussi le compromis de conception : des records abstraits plutôt que des structs, pour représenter les variantes par une hiérarchie de types.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-modeliser-les-intervalles-comme-objets-metier.md>) · [Ressource originale](<https://dev.to/caffeinatedcoder/the-interval-is-the-thing-modelling-range-types-as-first-class-domain-objects-in-net-3jha>)

## [WordPress : une faille RCE exploite la fenêtre des mises à jour](<https://sebastien.rigaux.be/veille/liens/wordpress-une-faille-rce-exploite-la-fenetre-des-mises-a-jour>)

Une faille RCE dans WordPress Core permet à un attaquant non authentifié d’exécuter du code pendant une mise à jour complète, si le répertoire temporaire est accessible depuis le Web. Wordfence indique avoir bloqué 62 969 tentatives en 24 heures ; le correctif est disponible dans la version 7.1.4.

Le risque tient à une course contre le nettoyage : les fichiers d’installation sont décompressés dans un chemin prévisible sous `wp-content/upgrade`, et des attaquants interrogent notamment `setup-config.php` pour tomber sur la fenêtre d’exposition, qui peut ne durer que quelques secondes. La faille concerne les versions 4.7 à 7.1.3.

2026-10-31 · [Markdown](<https://sebastien.rigaux.be/veille/liens/wordpress-une-faille-rce-exploite-la-fenetre-des-mises-a-jour.md>) · [Ressource originale](<https://thehackernews.com/2026/10/wordpress-rce-flaw-draws-nearly-63000.html?m=1&fbclid=IwVERDUAVSgZFleHRuA2FlbQIxMQBwZG9mBWZkaWQWURVldsH84Prb_V9O7MJ8RzmvQSBsuHNydGMGYXBwX2lkCjY2Mjg1NjgzNzkAAR8-ptU2QLdLnxH-DOwi8ZTpvDQvoHH5ARUtADcS_XgLJpuQ6RDMlL_aD1TW9g_aem_-NUl7MFU_kQudSHH6dvgVQ>)

## [CVEngine : relier découverte de surface d’attaque et validation des CVE](<https://sebastien.rigaux.be/veille/liens/cvengine-relier-decouverte-de-surface-dattaque-et-validation-des-cve>)

CVEngine regroupe dans une plateforme auto-hébergée la découverte continue d’actifs, les scans de vulnérabilités et le rapprochement avec les CVE exploitées. Le résultat vise à prioriser les failles réellement applicables, avec validation en lecture seule et éléments de preuve plutôt qu’une simple liste d’alertes.

La version 1.3 ajoute des Sentinels pour lancer les scans depuis des réseaux privés, ainsi qu’une intégration OpenVAS désactivée par défaut. Les résultats alimentent le même inventaire et les mêmes niveaux de sévérité ; l’outil expose aussi une API REST et une intégration MCP.

2026-10-31 · [Markdown](<https://sebastien.rigaux.be/veille/liens/cvengine-relier-decouverte-de-surface-dattaque-et-validation-des-cve.md>) · [Ressource originale](<https://github.com/hevnsnt/CVEngine>)

## [Mautic : automatiser le marketing en gardant la maîtrise des données](<https://sebastien.rigaux.be/veille/liens/mautic-automatiser-le-marketing-en-gardant-la-maitrise-des-donnees>)

Mautic est une plateforme open source d’automatisation marketing qui regroupe campagnes, emails, pages d’atterrissage et gestion des contacts. Elle peut être hébergée sur l’infrastructure de l’organisation, avec une API REST et des plugins pour l’intégrer et l’étendre.

La page met aussi en avant la création de campagnes par glisser-déposer, le scoring des leads et des fonctions orientées confidentialité. Des cas d’usage cités incluent l’envoi quotidien de plus d’un million d’emails personnalisés et multilingues dans l’e-commerce.

2026-10-31 · [Markdown](<https://sebastien.rigaux.be/veille/liens/mautic-automatiser-le-marketing-en-gardant-la-maitrise-des-donnees.md>) · [Ressource originale](<https://mautic.org/>)

## [BillionMail : héberger sa plateforme d’e-mailing et ses campagnes](<https://sebastien.rigaux.be/veille/liens/billionmail-heberger-sa-plateforme-de-mailing-et-ses-campagnes>)

BillionMail regroupe serveur mail, newsletters et marketing par e-mail dans une solution open source à auto-héberger. Le dépôt présente un parcours de configuration qui relie domaine et vérification DNS, puis création et envoi de campagnes, avec gestion de listes et de tags.

Le projet s’appuie sur Docker et propose aussi une installation via aaPanel. Il intègre RoundCube pour le webmail, des outils d’analyse des envois et une licence AGPLv3 ; l’exploitation du service reste donc à la charge de l’équipe qui l’héberge.

2026-10-31 · [Markdown](<https://sebastien.rigaux.be/veille/liens/billionmail-heberger-sa-plateforme-de-mailing-et-ses-campagnes.md>) · [Ressource originale](<https://github.com/Billionmail/BillionMail?fbclid=IwZnRzaAVSfsRleHRuA2FlbQIxMQBwZG9mBWZkaWQWURXNcp56FMhsSBMENWsMwQT7qCd6y3NydGMGYXBwX2lkCjY2Mjg1NjgzNzkAAR_MI9RcqU99pGd4uxK2p9-mnrPt77hPr6xfWTGamacb-oeBIqlbmf9PZ_hfIA_aem__boTMF88wTbUjGAZtHUMgQ>)

## [Metalama : générer des patterns C\# et faire appliquer l’architecture au build](<https://sebastien.rigaux.be/veille/liens/metalama-generer-des-patterns-c-et-faire-appliquer-larchitecture-au-build>)

Metalama automatise les patterns transverses en C# avec des aspects qui génèrent le code à la compilation, tout en vérifiant les règles d’architecture dès l’édition. L’implémentation répétitive reste ainsi hors du code métier et du dépôt, tandis qu’un même aspect peut être appliqué à une méthode ou à un ensemble de méthodes sélectionnées par code.

Un aspect peut, par exemple, envelopper une méthode dans un `try/catch` pour journaliser son entrée, son résultat et ses exceptions. Metalama permet aussi de prévisualiser le code transformé et de le déboguer, pour rendre ces transformations inspectables.

2026-10-30 · [Markdown](<https://sebastien.rigaux.be/veille/liens/metalama-generer-des-patterns-c-et-faire-appliquer-larchitecture-au-build.md>) · [Ressource originale](<https://postsharp.net/metalama>)

## [Motherload importe YAML, JSONC, CSV et Markdown typés dans TypeScript](<https://sebastien.rigaux.be/veille/liens/motherload-importe-yaml-jsonc-csv-et-markdown-types-dans-typescript>)

Motherload permet d’importer des fichiers de données comme des modules TypeScript **typés d’après leur contenu**. Le projet prend en charge TOML, YAML, JSONC, JSON5, CSV, TSV, Markdown, texte brut et `.env` ; les types sont disponibles dans l’éditeur et les erreurs de parsing remontent dans `tsc` avec leur emplacement.

Le type-checking utilise les *content mappers* de TypeScript 7.1, actuellement en bêta, et exige `--runExternalCode`. À l’exécution, un preload ou un plugin adapte les mêmes imports à Node.js et à différents bundlers.

2026-10-30 · [Markdown](<https://sebastien.rigaux.be/veille/liens/motherload-importe-yaml-jsonc-csv-et-markdown-types-dans-typescript.md>) · [Ressource originale](<https://motherload.dev/>)

Page 2 / 22

[Précédent](<https://sebastien.rigaux.be/veille>)

[Suivant](<https://sebastien.rigaux.be/veille/page/3>)
