From 9f1a81f8f56e8fa0058d067aad596e57e0ce286a Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Sun, 7 Dec 2025 23:34:59 +0100 Subject: [PATCH] Corrections de liens morts --- .../2023/02/07/72f33e07/data/screenshot.yaml | 2 +- .../2023/02/07/72f33e07/index.md | 2 +- .../mise-a-jour-de-ma-station-meteo/index.md | 2 +- .../11/26/08-cadre-predictif-local/index.md | 2 +- tools/check_external_links.js | 33 +++++++++++++++++-- 5 files changed, 35 insertions(+), 6 deletions(-) diff --git a/content/interets/liens-interessants/2023/02/07/72f33e07/data/screenshot.yaml b/content/interets/liens-interessants/2023/02/07/72f33e07/data/screenshot.yaml index 283e434e..f5b7ca6a 100644 --- a/content/interets/liens-interessants/2023/02/07/72f33e07/data/screenshot.yaml +++ b/content/interets/liens-interessants/2023/02/07/72f33e07/data/screenshot.yaml @@ -1,4 +1,4 @@ -title: "Capture d'écran de https://www.a.team//mission/the-great-betrayal" +title: "Capture d'écran de https://www.a.team/mission/the-great-betrayal" description: "Capture effectuée le 7 février 2023 à 01:00" attribution: "Richard Dern" file: "images/screenshot.png" diff --git a/content/interets/liens-interessants/2023/02/07/72f33e07/index.md b/content/interets/liens-interessants/2023/02/07/72f33e07/index.md index bc60030a..872f382b 100644 --- a/content/interets/liens-interessants/2023/02/07/72f33e07/index.md +++ b/content/interets/liens-interessants/2023/02/07/72f33e07/index.md @@ -1,7 +1,7 @@ --- links: - name: Page d'origine - url: https://www.a.team//mission/the-great-betrayal + url: https://www.a.team/mission/the-great-betrayal lang: en title: "The Great Betrayal: After Callous Layoffs, Workers Are Done With the Full-Time Work Model" diff --git a/content/interets/meteorologie/2023/09/15/mise-a-jour-de-ma-station-meteo/index.md b/content/interets/meteorologie/2023/09/15/mise-a-jour-de-ma-station-meteo/index.md index be757f1f..e990c7a9 100644 --- a/content/interets/meteorologie/2023/09/15/mise-a-jour-de-ma-station-meteo/index.md +++ b/content/interets/meteorologie/2023/09/15/mise-a-jour-de-ma-station-meteo/index.md @@ -50,7 +50,7 @@ Alors, quitte à claquer autant d'argent, autant le faire pour une station pré- ## La station -J'ai choisi la [Bresser MeteoChamp HD Wifi 7-en-1](https://www.bresser.de/fr/Temps/BRESSER-Station-meteo-7-en-1-Wifi-HD-professionnelle-avec-differents-modes-d-affichage.html). +J'ai choisi la [Bresser MeteoChamp HD Wifi 7-en-1](https://www.bresser.fr/p/bresser-station-meteo-connectee-7-en-1-wifi-hd-professionnelle-avec-differents-modes-d-affichage-7003510). ![zUwrM0](images/zUwrM0.jpg) diff --git a/content/interets/meteorologie/2025/11/26/08-cadre-predictif-local/index.md b/content/interets/meteorologie/2025/11/26/08-cadre-predictif-local/index.md index 9269a8b6..dfc58254 100644 --- a/content/interets/meteorologie/2025/11/26/08-cadre-predictif-local/index.md +++ b/content/interets/meteorologie/2025/11/26/08-cadre-predictif-local/index.md @@ -90,7 +90,7 @@ Cela évite de « voir le futur » lors de la préparation des données, ce qui ## Modèles à introduire dans les chapitres suivants -- Modèles linéaires avec régularisation ([_Ridge_](https://en.wikipedia.org/wiki/Ridge_regression)/[_Lasso_]()) pour températures/vents : même formule que la régression linéaire classique, mais avec un terme supplémentaire qui limite l’ampleur des coefficients pour réduire le sur‑apprentissage (_Ridge_ pénalise surtout les coefficients trop grands, _Lasso_ peut en forcer certains à zéro). +- Modèles linéaires avec régularisation ([_Ridge_](https://en.wikipedia.org/wiki/Ridge_regression) / [_Lasso_]()) pour températures/vents : même formule que la régression linéaire classique, mais avec un terme supplémentaire qui limite l’ampleur des coefficients pour réduire le sur‑apprentissage (_Ridge_ pénalise surtout les coefficients trop grands, _Lasso_ peut en forcer certains à zéro). - [Régression logistique](https://fr.wikipedia.org/wiki/R%C3%A9gression_logistique) pour la pluie : produit une probabilité de pluie plutôt qu’un oui/non brut, ce qui permet ensuite de choisir un seuil de décision adapté à l’usage (plutôt prudent ou plutôt conservateur). - Si besoin de courbes plus flexibles : arbres peu profonds, [_random forest_](https://fr.wikipedia.org/wiki/For%C3%AAt_al%C3%A9atoire) ou [_gradient boosting_](https://fr.wikipedia.org/wiki/Gradient_boosting) légers pour capturer des relations non linéaires sans rendre le modèle complètement opaque . - Évaluation multi-horizons avec _time-series split_, courbes d’erreur en fonction de l’horizon pour voir à partir de quand le modèle décroche. diff --git a/tools/check_external_links.js b/tools/check_external_links.js index 034a9086..73fcdbe7 100644 --- a/tools/check_external_links.js +++ b/tools/check_external_links.js @@ -326,6 +326,34 @@ function mergeOccurrences(entries, occurrences) { return merged; } +// Liste les URLs réellement présentes dans le contenu pour supprimer les entrées obsolètes. +function buildActiveUrlSet(occurrences) { + const active = new Set(); + for (const url of occurrences.keys()) { + active.add(url); + } + return active; +} + +// Conserve uniquement les liens du rapport encore utilisés dans le contenu. +function filterReportLinks(links, activeUrls) { + if (!Array.isArray(links) || activeUrls.size === 0) { + return []; + } + + const filtered = []; + for (const link of links) { + if (!link?.url || !activeUrls.has(link.url)) { + continue; + } + filtered.push({ + ...link, + locations: Array.isArray(link.locations) ? dedupeAndSortLocations(link.locations) : [], + }); + } + return filtered; +} + function recordOccurrence(map, filePath, line, url) { if (!map.has(url)) { map.set(url, []); @@ -720,6 +748,7 @@ async function main() { return; } + const activeUrls = buildActiveUrlSet(occurrences); const state = loadState(); const mergedEntries = mergeOccurrences(state.entries, occurrences); const entriesArray = Object.values(mergedEntries); @@ -727,7 +756,7 @@ async function main() { const snapshotMeta = { generatedAt: state.generatedAt || null, - links: Array.isArray(state.links) ? state.links : [], + links: filterReportLinks(state.links, activeUrls), }; await checkEntries(pending, mergedEntries, snapshotMeta); @@ -735,7 +764,7 @@ async function main() { const deadLinks = buildDeadLinks(mergedEntries); const nextState = { generatedAt: new Date().toISOString(), - links: deadLinks, + links: filterReportLinks(deadLinks, activeUrls), entries: mergedEntries, }; saveState(nextState);