Files
varlog/_cache/similar/c11930c1-6eae-4c81-9d5a-98189c00791d.json
T
2026-05-15 10:37:48 +02:00

1 line
45 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[{"uuid":"e1e8a0c1-6971-4357-9aaa-7e7a748922f3","slug":"quand-systemd-remplace-cron-pourquoi-et-comment-migrer-ses-taches-planifiees","title":"Quand systemd remplace cron : pourquoi (et comment) migrer ses tâches planifiées","category":"informatique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2026-06-01 07:56","created_at":"2026-05-12 13:57:29","updated_at":"2026-05-12 13:58:58","tags":[],"plain":"Cron tourne sur Linux depuis 1975. Il a fait son temps pour beaucoup d'usages : voici ce que les timers systemd apportent, et comment basculer sans tout casser.\r\n\r\nPourquoi cron reste partout\r\n\r\n est l'un des plus anciens outils Unix encore en service. Son principe tient en deux idées : un démon qui se réveille toutes les minutes, et un fichier texte — la crontab — où chaque ligne décrit une commande et son moment d'exécution avec cinq champs (minute, heure, jour du mois, mois, jour de la semaine).\r\n\r\n\r\n\r\nCinquante ans plus tard, ça marche. C'est installé partout, c'est documenté à mort, ça tient sur une ligne, et n'importe quel administrateur sait lire . Pour beaucoup de besoins simples — « lancer ce script tous les jours à 2h du matin » — cron reste le bon choix.\r\n\r\nLe problème est que les besoins ont rarement été aussi simples depuis longtemps.\r\n\r\nLes limites de cron qu'on finit toujours par rencontrer\r\n\r\nÀ chaque administration de serveur sérieuse, on retombe sur les mêmes frustrations.\r\n\r\nLa machine était éteinte au moment du job. Cron saute purement et simplement l'occurrence ratée. Si le portable de l'utilisateur dormait à 2h, la sauvegarde quotidienne n'aura pas lieu — point. Le job s'exécutera de nouveau le lendemain à 2h, sans rattrapage, sans alerte.\r\n\r\nLes logs sont dispersés ou perdus. Par défaut, la sortie standard du job est envoyée par mail à l'utilisateur (si est défini et qu'un MTA tourne) ou simplement perdue. Le démon lui-même logue dans syslog quand il démarre un job, mais pas son contenu. Diagnostiquer pourquoi un job a échoué la semaine dernière relève souvent de l'archéologie.\r\n\r\nPas de dépendances. Un job qui doit attendre que le réseau soit monté, qu'un point de montage soit présent, qu'un autre service ait fini son démarrage : cron ne sait pas exprimer ça. La parade habituelle — un ou un suivi d'une boucle d'attente — fonctionne mais reste un bricolage.\r\n\r\nPas de recouvrement entre exécutions. Si un job de 5 minutes en prend 7 ce jour-là, cron lance la prochaine occurrence pile au moment où la précédente tourne encore. Deux instances simultanées d'un script de synchronisation, c'est rarement ce qu'on veut.\r\n\r\nPas de jitter, pas de randomisation. Quand cinquante VMs lancent leur toutes en même temps à 6h25 (l'heure d'anacron par défaut sur Debian), le pic de charge sur l'hyperviseur est garanti. Cron n'offre aucune primitive pour étaler les exécutions.\r\n\r\nPas de visibilité globale. Pour répondre à « quels jobs vont tourner aujourd'hui sur cette machine ? », il faut lire la crontab système, les crontabs utilisateur (), le contenu de , , , etc. Aucune commande ne donne la vue consolidée.\r\n\r\nPas d'isolation, pas de quota. Le job s'exécute avec les privilèges et les ressources du shell qui l'a lancé. Aucune façon native de limiter à 50 % de CPU, à 1 Go de RAM, ou de couper si ça dépasse 10 minutes.\r\n\r\nAucun de ces points ne rend cron inutilisable. Mais accumulés sur une dizaine de jobs critiques, ils transforment l'administration en travail de surveillance permanente.\r\n\r\nCe qu'apporte un timer systemd\r\n\r\nSur toute distribution Linux moderne basée sur systemd (la quasi-totalité, hors BSD, Alpine, Gentoo et quelques cas particuliers), une alternative native existe : les timers. Le principe est différent dès le départ.\r\n\r\nUn timer systemd, c'est deux fichiers au lieu d'une ligne :\r\nUn fichier qui décrit ce qu'il faut faire — exactement comme on décrit un service classique, en mode pour un job ponctuel\r\nUn fichier qui décrit quand le faire — ce sont les règles de déclenchement\r\n\r\nCette séparation entre le « quoi » et le « quand » est plus verbeuse au départ, mais elle débloque tout le reste.\r\n\r\nUne syntaxe d'horaire lisible\r\n\r\nLà où cron oblige à mentaliser , systemd écrit :\r\n\r\n\r\n\r\nEt la commande valide l'expression en montrant la prochaine exécution prévue. Une erreur de jour-de-semaine ou un décalage horaire ne plante pas en silence : on le voit avant de déployer.\r\n\r\nD'autres formes utiles que cron ne sait pas exprimer :\r\n\r\n\r\n\r\nLe support natif des fuseaux horaires est une avancée significative pour qui gère des serveurs distribués géographiquement — cron ignore tout du concept et tourne sur le fuseau du système.\r\n\r\nDu temps relatif, pas seulement du temps absolu\r\n\r\nCron raisonne uniquement en horloge murale (« tel jour, à telle heure »). systemd ajoute le temps monotone, relatif à un événement :\r\n\r\n\r\n\r\n règle proprement le problème des exécutions qui se chevauchent : la prochaine instance se déclenche 6 heures après la fin de la précédente, pas 6 heures après son démarrage. Aucune équivalence simple en cron.\r\n\r\nLe rattrapage des exécutions ratées\r\n\r\nUne seule ligne change tout :\r\n\r\n\r\n\r\nAvec cette option, systemd mémorise la dernière exécution réussie. Si la machine était éteinte au moment prévu, le job se déclenche dès le démarrage suivant (après le éventuel, voir plus bas). Pour un portable, un poste de développement, ou n'importe quelle machine qui n'est pas en service 24/7, c'est une différence majeure de fiabilité.\r\n\r\nDu jitter intégré\r\n\r\n\r\n\r\nLe déclenchement se fait à un instant aléatoire dans la fenêtre . Quand cinquante machines lancent leur mise à jour quotidienne, le pic de charge se lisse au lieu de tomber au même instant. C'est la fonctionnalité que tous les administrateurs de flottes finissent par re-bricoler en cron avec un peu élégant.\r\n\r\nLe logging gratuit dans journald\r\n\r\nTout ce que le service écrit sur stdout et stderr est capturé automatiquement par journald. Une seule commande pour tout consulter :\r\n\r\n\r\n\r\nPas de configuration, pas de redirection à la main, pas de à coller à chaque ligne de crontab. Et accessoirement, journald gère la rotation, la compression et la rétention.\r\n\r\nLes dépendances déclaratives\r\n\r\nDans le fichier , on peut dire au planificateur qu'un job nécessite que le réseau soit prêt, qu'un point de montage soit présent, qu'un autre service ait démarré :\r\n\r\n\r\n\r\nsystemd attend que ces conditions soient remplies avant de déclencher le service. Le job ne tente plus de s'exécuter sur un montage absent ou avant que la résolution DNS soit fonctionnelle.\r\n\r\nLe contrôle des ressources via cgroups\r\n\r\nPuisque chaque exécution passe par un service, on bénéficie de tout l'arsenal cgroups de systemd :\r\n\r\n\r\n\r\nUn job de sauvegarde qui pourrait saturer le disque ne sortira pas de son enveloppe. Cron n'offre rien d'équivalent — au mieux on enrobe la commande dans et , ce qui reste primitif.\r\n\r\nLa vue consolidée\r\n\r\n\r\n\r\nUne seule commande, toutes les exécutions planifiées du système, classées par prochaine échéance, avec date de dernière exécution. La question « qu'est-ce qui tourne automatiquement sur cette machine ? » trouve enfin une réponse en une ligne.\r\n\r\nUn exemple complet, pas-à-pas\r\n\r\nReprenons le job de sauvegarde initial — — et traduisons-le.\r\n\r\n :\r\n\r\n\r\n\r\n :\r\n\r\n\r\n\r\nActivation :\r\n\r\n\r\n\r\nVérifications :\r\n\r\n\r\n\r\nComparé à la ligne de crontab originale, c'est plus verbeux. Mais on a, sans rien ajouter : le rattrapage en cas d'arrêt machine, du jitter pour éviter les pics, l'attente du réseau, des limites de ressources, du logging structuré, et une commande pour tout inspecter.\r\n\r\nQuelques recettes utiles\r\n\r\nTous les jours à 3h sauf le dimanche :\r\n\r\n\r\n\r\nToutes les 15 minutes pendant les heures de bureau :\r\n\r\n\r\n\r\nLe premier lundi de chaque mois à 5h : pas faisable en une seule expression, mais combinable avec une condition qui vérifie la date et sort si ce n'est pas le bon jour. C'est l'une des rares zones où cron reste plus naturel ( + dans le script).\r\n\r\nToutes les six heures à partir du dernier passage (jamais de chevauchement) :\r\n\r\n\r\n\r\nTimer utilisateur, sans : dans , puis :\r\n\r\n\r\n\r\nQuand garder cron\r\n\r\nTout n'est pas à migrer. Cron reste le bon choix dans plusieurs cas :\r\nScripts portables vers BSD, macOS, ou des conteneurs minimaux. systemd n'existe pas dans Alpine Linux, sur les BSD, ni dans la plupart des images Docker légères.\r\nTâches utilisateur très simples sur un serveur partagé, où chaque utilisateur gère sa propre crontab sans privilèges admin.\r\nNotification par mail intégrée : si suivi d'une sortie sur stderr couvre déjà le besoin de monitoring, repasser par journald + un exporter Prometheus est de la sur-ingénierie.\r\nUn job de trente secondes à ajouter sur un serveur existant déjà couvert par cron. Mélanger les deux outils est sans risque — ils coexistent sans interférence — et créer deux fichiers pour un alias unique d'une ligne reste excessif.\r\n\r\nLa meilleure stratégie est rarement migratoire au pas de charge. Elle consiste à utiliser systemd pour toute nouvelle tâche planifiée, et à ne migrer les jobs cron existants que quand ils posent un problème concret : un job raté qu'il fallait rattraper, un log perdu qu'il fallait retrouver, un chevauchement qui a corrompu des données.\r\n\r\nEn résumé\r\n\r\nCron n'est pas obsolète, il est sous-dimensionné pour des besoins modernes. Les timers systemd ne remplacent pas la simplicité d'une ligne de crontab pour un job trivial, mais ils apportent à peu près tout ce qui manque dès qu'une tâche planifiée devient critique : rattrapage, logging, dépendances, isolation, observabilité.\r\n\r\nPour un DevOps qui construit aujourd'hui un nouveau service, le choix par défaut a basculé : commencer en systemd, et n'utiliser cron que par exception justifiée. La verbosité initiale des deux fichiers se rentabilise au premier incident de production qu'on diagnostique en au lieu de fouiller dans des logs disparates.\r\n\r\nEt même sans migrer quoi que ce soit, la commande mérite d'entrer dans le réflexe de tout audit de machine Linux. C'est là que se cache la moitié des tâches planifiées qu'on croit avoir comprises."},{"uuid":"bea327e2-9d1c-4ff6-a5a5-26748c80018b","slug":"anatomie-d-un-script-d-auto-deploiement-bash-fetch-scripts-sh","title":"Script Bash d'auto-déploiement : `fetch_scripts.sh`","category":"informatique","author":"cedric@abonnel.fr","cover":"cover.svg","published":true,"published_at":"2026-05-04 07:04","created_at":"2026-05-12 10:55:39","updated_at":"2026-05-12 11:10:51","tags":[],"plain":"Comment un simple script Bash peut télécharger, mettre à jour et synchroniser une bibliothèque de scripts distants — et pourquoi il faut le lire avec un œil critique.\r\n\r\nfetchscripts.sh\r\n📝 Note — Cet article est une autocritique. Le script analysé ici est de ma propre fabrication, déployé sur mes propres machines. L'exercice consiste à le relire avec la distance d'un reviewer extérieur, pour identifier ce qui tient la route et ce qui mériterait d'être repris.\r\n\r\nLe contexte\r\n\r\nL'idée derrière ce script est élégante : centraliser une collection de scripts utilitaires dans un dépôt Git public (ici, une instance Forgejo auto-hébergée), puis fournir un unique point d'entrée que l'on télécharge sur n'importe quelle machine. Ce point d'entrée se met à jour tout seul, propose à l'opérateur de choisir quels sous-ensembles de scripts récupérer, et maintient une synchronisation locale du dépôt distant.\r\n\r\nC'est typiquement le genre d'outil qui se déploie en une ligne :\r\n\r\n\r\n\r\nDécortiquons ce qu'il fait, étape par étape, puis voyons où il faudrait taper.\r\n--\r\n\r\nÉtape 1 — L'auto-mise à jour\r\n\r\n\r\n\r\nCe qui se passe : le script télécharge sa propre version distante dans , la compare octet-à-octet avec lui-même (), et si elle diffère, il s'écrase, se rend exécutable, et se relance via (qui remplace le processus courant — pas d'empilement de shells).\r\n\r\nPourquoi c'est malin : ça garantit qu'à chaque exécution, l'opérateur travaille avec la version canonique du dépôt. Pas besoin de mécanisme de versioning, pas de vérification de hash, pas de paquet à publier.\r\n\r\nPourquoi c'est risqué : on y reviendra dans la critique, mais en résumé — l'auto-mise à jour silencieuse depuis une URL en HTTPS sans signature est une porte d'entrée pour la chaîne d'approvisionnement.\r\n--\r\n\r\nÉtape 2 — Récupération du catalogue de dossiers\r\n\r\n\r\n\r\nLe dépôt distant contient un fichier qui liste les catégories de scripts disponibles (par exemple : , , , …). Ce fichier est la source de vérité : ajouter une catégorie côté serveur la rend immédiatement disponible côté client.\r\n\r\n (alias ) lit le fichier ligne à ligne dans un tableau Bash. Plus propre qu'une boucle .\r\n\r\nUn dossier est marqué comme obligatoire — il sera toujours téléchargé, sans demander à l'utilisateur.\r\n--\r\n\r\nÉtape 3 — Mémoire de la sélection précédente\r\n\r\n\r\n\r\nÀ chaque exécution, le script relit la sélection de la fois précédente. C'est ce qui permet à l'interface graphique (étape suivante) de pré-cocher les bons dossiers : on n'a pas à refaire son choix à chaque mise à jour.\r\n--\r\n\r\nÉtape 4 — L'interface \r\n\r\n\r\n\r\n est l'outil de dialogue ncurses standard sur Debian/Ubuntu — il affiche cette boîte bleue familière avec des cases à cocher, navigable au clavier. Idéal en SSH.\r\n\r\nLa gymnastique est un classique : écrit son interface sur stdout et sa réponse sur stderr. Il faut donc échanger les deux pour capturer la sélection dans tout en laissant l'interface s'afficher.\r\n\r\nL'expression est une astuce courante pour tester l'appartenance à un tableau Bash — on entoure d'espaces pour éviter les correspondances partielles ( qui matcherait ).\r\n--\r\n\r\nÉtape 5 — Synchronisation : ajouts et suppressions\r\n\r\n\r\n\r\nLogique de diff : tout ce qui était sélectionné avant et ne l'est plus est supprimé du disque. Ça maintient le répertoire local propre — pas de scripts orphelins qui traînent.\r\n\r\n renvoie la sélection sous forme de chaîne entre guillemets (), d'où le pour les retirer avant de constituer le tableau.\r\n--\r\n\r\nÉtape 6 — Téléchargement des fichiers de chaque dossier\r\n\r\n\r\n\r\nMême logique récursive d'un niveau plus bas : chaque dossier contient son propre listant ses fichiers. On télécharge ceux qui y figurent, on supprime ceux qui n'y figurent plus, et on rend tout exécutable.\r\n\r\nC'est une forme de artisanal, basé sur des manifestes plats. Ça fonctionne sans avoir à installer sur la machine cible — seuls et sont requis.\r\n--\r\n\r\nCritique : ce qui marche, ce qui inquiète\r\n\r\nLes bons côtés\r\n\r\nLa logique d'idempotence est solide. Le script peut tourner cent fois de suite, il convergera toujours vers le même état : les dossiers sélectionnés contiendront exactement les fichiers du manifeste, ni plus, ni moins. C'est le bon réflexe DevOps.\r\n\r\nL'auto-bootstrap est ergonomique. Une seule URL à retenir, tout le reste se télécharge tout seul. Pour une bibliothèque personnelle de scripts d'admin, c'est imbattable en simplicité.\r\n\r\nPas de dépendances exotiques. , , : tout est disponible nativement sur Debian. Le script tourne aussi bien sur un conteneur LXC fraîchement provisionné que sur une machine établie.\r\n\r\nLe manifeste séparé ( et ) découple la liste des fichiers de leur contenu. C'est plus simple qu'un parsing HTML de l'index Git, et ça reste sous contrôle éditorial.\r\n\r\nLes angles morts\r\n\r\n1. Aucune vérification d'intégrité\r\n\r\nC'est le point critique. Le script télécharge du code exécutable en HTTPS, sans vérifier :\r\nni signature GPG,\r\nni hash SHA256,\r\nni même que le serveur a bien répondu correctement.\r\n\r\n en mode silencieux n'échoue pas visiblement : si la requête renvoie une page d'erreur 404 ou une page de connexion captive Wi-Fi en HTML, elle sera écrite dans le fichier de destination. La vérification suivante () considérera ce HTML comme « différent », fera le , et au prochain le shell essaiera d'exécuter du HTML. Au mieux ça crashe, au pire ça exécute des balises interprétables.\r\n\r\nPire encore pour l'auto-update : si quelqu'un compromet l'instance Forgejo (ou interpose un proxy malveillant capable de servir un certificat valide pour ), le prochain télécharge et exécute du code arbitraire avec les privilèges de l'utilisateur courant — souvent root pour ce genre d'outils d'admin.\r\n\r\nCorrectif minimal : publier un fichier signé GPG dans le dépôt, le télécharger, vérifier sa signature avec une clé connue localement, puis valider chaque fichier téléchargé contre ce manifeste.\r\n\r\n2. sans gestion d'erreur\r\n\r\n\r\n\r\nSi échoue (réseau coupé, DNS HS, certificat expiré), sera soit vide soit absent. retournera « différent », et le script écrasera la version locale par un fichier vide. À la prochaine exécution, plus rien ne fonctionne.\r\n\r\nCorrectif : vérifier le code de retour de , vérifier que le fichier téléchargé n'est pas vide, et vérifier qu'il commence bien par avant d'écraser quoi que ce soit.\r\n\r\n\r\n\r\n3. Le perd les modifications de l'environnement\r\n\r\nSi le script a été lancé par (donc sans le bit exécutable, sans shebang utilisé), vaut . Après , on un fichier qui pourrait ne pas être dans le . En pratique ça marche parce qu'on est dans le bon répertoire, mais c'est fragile — un quelque part dans le script suffirait à le casser.\r\n\r\n4. Injection via les noms de fichiers du manifeste\r\n\r\n\r\n\r\nLe contenu de est utilisé directement dans une URL et dans un chemin de fichier local. Si quelqu'un peut écrire dans ce fichier manifeste (ce qui revient à pouvoir pousser sur le dépôt Forgejo), il peut y mettre des chemins comme et écrire en dehors du répertoire prévu.\r\n\r\n neutralise partiellement la chose côté nom local, mais l'URL côté distant accepte n'importe quoi. C'est moins critique que la première faille, mais ça mérite un filtre regex ( uniquement).\r\n\r\n5. et la sélection vide\r\n\r\nSi l'utilisateur ne coche rien et valide, est vide. Le script continue avec seulement , ce qui est probablement le comportement attendu. Mais si n'est pas installé (rare mais possible, par exemple sur Alpine ou un Debian minimal sans ), le script échoue avec une erreur peu explicite. Un test préalable éviterait la déconvenue.\r\n\r\n6. Pas de log, pas de mode dry-run\r\n\r\nPour un outil qui supprime des fichiers (), l'absence d'option qui afficherait ce qui serait fait sans rien toucher est gênante. Une frappe distraite sur la checklist, et un dossier entier disparaît sans warning.\r\n\r\n7. Le verrou manquant\r\n\r\nRien n'empêche deux instances de de tourner en parallèle (par exemple via et un opérateur en interactif). Un sur un fichier de lock éviterait des courses sur les opérations de download/delete.\r\n--\r\n\r\nVerdict\r\n\r\nC'est un script utile, lisible, et bien construit pour un usage personnel sur des machines de confiance. La logique de synchronisation est saine, l'ergonomie est appréciable, l'auto-bootstrap est élégant.\r\n\r\nMais dès qu'on franchit la frontière du « j'utilise ça sur mes propres machines avec mon propre dépôt », les manques se font sentir : pas de vérification d'intégrité, pas de gestion d'erreur réseau, pas d'option de récupération. Dans un contexte d'équipe ou de production, ces points sont bloquants.\r\n\r\nPistes d'évolution prioritaires\r\n\r\n1. Signature ou checksum : publier un signé GPG, le vérifier avant tout ou exécution.\r\n2. en tête de script pour faire échouer proprement à la première erreur.\r\n3. Vérifier : code de retour, fichier non vide, shebang présent.\r\n4. Backup avant écrasement : conserver la version précédente () pour pouvoir revenir en arrière.\r\n5. Option pour visualiser sans appliquer.\r\n6. Filtre regex sur les noms de fichiers du manifeste pour éviter les traversées de chemin.\r\n7. Lock file** via pour éviter les exécutions concurrentes.\r\n\r\nAvec ces ajouts, on passe d'un script « pratique » à un outil de déploiement digne de ce nom — sans rien perdre de sa simplicité initiale."},{"uuid":"5982deaf-f3de-4f65-9270-9849132e64f6","slug":"nos-donnees-a-l-ere-de-l-ia-l-affaire-linkedin-et-la-colere-des-utilisateurs","title":"Nos données à l’ère de lIA : laffaire LinkedIn et la colère des utilisateurs","category":"actualité","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2025-11-05 07:10:37","created_at":"2025-11-05 07:10:37","updated_at":"2025-11-05 07:10:37","tags":[],"plain":"Un matin dautomne, Léa ouvre son compte LinkedIn comme elle le fait chaque jour. Consultante indépendante, elle y partage des réflexions sur le travail à distance, y échange avec des collègues et y recrute parfois des partenaires. Rien de bien extraordinaire. Mais ce jour-là, un post attire son attention : « LinkedIn utilise vos données pour entraîner ses IA ».\r\n\r\nAu début, elle croit à une rumeur. Encore une de ces tempêtes numériques qui s’évanouissent aussi vite quelles éclatent. Puis elle lit plus attentivement : le réseau professionnel de Microsoft admet effectivement utiliser certaines données publiques — les profils, les publications, les interactions visibles — pour nourrir ses modèles dintelligence artificielle.\r\n\r\nDe la mise en relation à la collecte invisible\r\n\r\nDepuis sa création, LinkedIn se présente comme une vitrine professionnelle : un espace où chacun peut exposer son parcours, ses compétences, ses ambitions. En échange, la plateforme promet visibilité, opportunités et réseau. Mais derrière cette promesse, un autre marché sest peu à peu installé : celui des données.\r\n\r\nChaque clic, chaque mise à jour de poste, chaque mot-clé devient une pièce dun immense puzzle comportemental. Ce puzzle, jusquici utilisé pour cibler des offres demploi ou des publicités, se retrouve désormais au cœur de quelque chose de beaucoup plus vaste : lentraînement des intelligences artificielles.\r\n\r\nMicrosoft, maison mère de LinkedIn, investit des milliards dans lIA. Or, pour quune IA apprenne, il lui faut une matière première : les mots, les textes, les interactions humaines. Et LinkedIn en regorge.\r\n\r\nLa ligne floue entre le “public” et le “privé”\r\n\r\nTechniquement, LinkedIn affirme ne collecter que les informations publiques. Mais quest-ce que cela signifie vraiment ? Léa na jamais donné son accord explicite pour que ses publications servent à entraîner des algorithmes de génération de texte. Elle les a partagées pour échanger avec des pairs, pas pour devenir une donnée parmi des millions dautres.\r\n\r\nCest là que le malaise grandit.\r\nLes utilisateurs découvrent que la frontière entre ce quils publient volontairement et ce qui peut être réutilisé sestompe. Dans les conditions dutilisation, tout est mentionné — quelque part, en petits caractères. Mais rares sont ceux qui lisent jusqu’à la dernière ligne.\r\n\r\nLe choc du consentement absent\r\n\r\nLes réactions ne se font pas attendre : des posts indignés envahissent la plateforme même.\r\n« On nest pas des cobayes ! » écrit un utilisateur.\r\n« Nos profils sont devenus des datasets », dénonce une autre.\r\n\r\nCe qui choque, ce nest pas seulement lusage, mais la manière dont il a été introduit : sans consultation, sans transparence, presque à bas bruit.\r\n\r\nLes défenseurs du projet rétorquent que lIA ne “lit” pas nos données comme un humain. Quelle analyse des tendances, pas des personnes. Que tout est anonymisé.\r\nMais cette défense sonne creux pour beaucoup : anonymiser ne supprime pas la question éthique. À partir du moment où nos mots, nos idées, nos réflexions alimentent un système dont nous ne maîtrisons ni les usages ni les bénéfices, une part de notre autonomie numérique s’érode.\r\n\r\nUne affaire de confiance\r\n\r\nLinkedIn nest pas la première plateforme à faire face à cette controverse. Reddit, X (ex-Twitter) et même Meta ont adopté des politiques similaires, justifiant ces pratiques par la nécessité daméliorer leurs modèles dIA.\r\nMais LinkedIn occupe une place particulière : il sagit du réseau professionnel par excellence. Ici, les utilisateurs partagent des informations sensibles — leur parcours, leur entreprise, leurs compétences — souvent avec leur vrai nom.\r\n\r\nLa relation de confiance entre lutilisateur et la plateforme est donc essentielle. Et cest justement cette confiance qui vacille.\r\n\r\nLéa et le dilemme numérique\r\n\r\nQuelques jours plus tard, Léa se rend dans les paramètres de confidentialité.\r\nElle découvre, cachée dans une section sobrement intitulée « Utilisation des données pour lIA », une mention : « Nous pouvons utiliser vos informations publiques pour améliorer nos produits et services, y compris les technologies dintelligence artificielle. »\r\n\r\nIl existe bien une option dexclusion, mais difficile à trouver. Léa la décoche, sans savoir si cela changera vraiment quelque chose.\r\nElle ressent un mélange de soulagement et de résignation.\r\n\r\nCar au fond, la question dépasse LinkedIn. Elle touche à une réalité plus vaste : dans l’ère de lintelligence artificielle, nos données sont devenues la nouvelle énergie, le carburant invisible qui alimente des machines toujours plus puissantes.\r\n\r\nVers une prise de conscience collective\r\n\r\nLaffaire LinkedIn agit comme un électrochoc. Elle révèle à quel point le consentement numérique reste un concept fragile, souvent illusoire. Elle invite chacun à repenser ce quil partage en ligne, mais aussi à exiger des plateformes une vraie transparence.\r\n\r\nLes régulateurs européens, via le RGPD, commencent à se saisir du sujet. Certains experts appellent à créer un « droit à lexclusion des IA », un cadre légal obligeant les entreprises à obtenir un consentement explicite avant toute utilisation des données à des fins dentraînement algorithmique.\r\n\r\nMais pour linstant, la balle reste surtout dans le camp des utilisateurs — ceux qui, comme Léa, naviguent entre pragmatisme et inquiétude, entre le besoin de visibilité et la peur d’être instrumentalisés.\r\n--\r\n\r\n Entre progrès et perte de contrôle\r\n\r\nLIA promet des avancées spectaculaires. Elle transforme nos métiers, nos outils, nos manières de communiquer. Mais elle pose une question fondamentale : qui possède les données qui la nourrissent ?\r\n\r\nLinkedIn nest peut-être quun exemple parmi dautres, mais il symbolise un tournant.\r\nDans cette ère où chaque mot que nous tapons peut devenir une donnée dapprentissage, la véritable ressource nest plus la technologie, mais la confiance.\r\nEt cette confiance, aujourdhui, semble seffriter à mesure que les algorithmes se renforcent.\r\n--\r\n\r\nVoici les risques autour de lutilisation des données des utilisateurs par LinkedIn (et dautres plateformes) pour lIA\r\n\r\n1. Atteinte à la vie privée et au consentement\r\n\r\nMême si LinkedIn affirme nutiliser que des données “publiques”, cela ne signifie pas que les utilisateurs ont consenti explicitement à cet usage.\r\n\r\n Les informations partagées à des fins professionnelles (CV, publications, commentaires) peuvent être réutilisées hors contexte.\r\n Le consentement est souvent implicite, enfoui dans les conditions dutilisation.\r\n Lutilisateur perd le contrôle sur ce quil partage : il ne sait pas exactement comment ni par qui ses données seront exploitées.\r\n\r\n➡️ Exemple concret : ton texte sur la gestion d’équipe pourrait servir à entraîner une IA dentreprise sans que tu le saches, ni que ton nom y soit associé.\r\n--\r\n\r\n2. Profilage et reconstitution didentité\r\n\r\nLagrégation massive des données permet aux IA didentifier des schémas comportementaux et professionnels :\r\n\r\n Les algorithmes peuvent déduire des informations sensibles (habitudes de travail, orientation politique, situation financière, etc.) à partir de simples interactions.\r\n Ces profils peuvent être utilisés pour le ciblage commercial, le recrutement automatisé, voire l’évaluation de performance dans certains contextes.\r\n\r\n➡️ Risque : un recruteur ou un système dIA pourrait juger ton profil ou ton style d’écriture sans ton accord.\r\n--\r\n\r\n3. Appropriation intellectuelle et perte de la valeur de ton contenu\r\n\r\nLes textes, publications et commentaires des utilisateurs servent de matière première à lentraînement de modèles dintelligence artificielle.\r\n\r\n Tes contributions (même originales ou expertes) peuvent être intégrées à des IA génératives qui, ensuite, produiront du contenu similaire sans mentionner leur source.\r\n Cela pose une question d’éthique et de propriété intellectuelle : tu deviens fournisseur involontaire de savoir gratuit.\r\n\r\n➡️ Exemple : une IA générative pourrait reformuler ou réutiliser tes analyses dans un contexte commercial sans te citer.\r\n--\r\n\r\n4. Risque de réidentification\r\n\r\nMême si LinkedIn ou Microsoft annoncent que les données sont “anonymisées”, des études montrent quil est souvent possible de réidentifier des individus à partir de fragments de données combinées.\r\n\r\n Les publications, les dates demploi ou les noms dentreprises peuvent suffire à retrouver une personne réelle.\r\n Cela peut exposer à du harcèlement, du doxing (divulgation dinfos perso) ou du recrutement non sollicité.\r\n--\r\n\r\n5. Érosion de la confiance numérique\r\n\r\nChaque nouvelle utilisation non transparente des données creuse le fossé entre utilisateurs et plateformes.\r\n\r\n Les professionnels peuvent se censurer, publier moins, ou quitter la plateforme.\r\n Cela nuit à la qualité du réseau et à la diversité des échanges.\r\n\r\n➡️ Risque collectif : LinkedIn perd son rôle de réseau professionnel ouvert, et les utilisateurs deviennent méfiants ou silencieux.\r\n--\r\n\r\n6. Exploitation commerciale asymétrique\r\n\r\nLes utilisateurs fournissent la matière (leurs données), mais ne bénéficient pas des revenus générés par les IA entraînées sur ces données.\r\n\r\n Les plateformes en tirent un profit direct (via les produits IA, la publicité ou les abonnements premium).\r\n Les utilisateurs, eux, deviennent des ressources gratuites sans contrepartie.\r\n--\r\n\r\n7. Sécurité des données à long terme\r\n\r\nUne fois intégrées dans des modèles dIA, les données ne peuvent pas toujours être effacées.\r\n\r\n Même si tu supprimes ton compte, lempreinte de tes données peut subsister dans les systèmes dapprentissage.\r\n Cela entre en tension avec le droit à loubli, garanti par le RGPD.\r\n--\r\n\r\nExemples concrets et projections permettant de bien mesurer les conséquences réelles (et à venir) de cette collecte de données par LinkedIn et les IA associées.\r\nVoici une série dillustrations réalistes, plausibles et documentées, suivies de projections futures si la tendance se poursuit.\r\n\r\n💼 1. Exemple actuel : ton profil devient un “modèle” de compétence\r\n\r\nUn consultant publie régulièrement des analyses sur la transformation digitale. Ses posts sont publics, bien écrits et souvent partagés.\r\n👉 Ces textes peuvent être intégrés (sans quil le sache) dans des ensembles de données qui servent à entraîner une IA professionnelle de rédaction ou de recrutement.\r\nRésultat : une IA générative pourrait ensuite produire des articles ou des messages LinkedIn similaires au sien, imitant son ton et sa structure — sans jamais le créditer.\r\n\r\n📍 Projection 2026 : les entreprises paieront pour des outils dIA “experts en communication LinkedIn”, entraînés sur des millions de publications dutilisateurs. Ces contenus originaux deviendront des modèles commerciaux... sans rémunération pour leurs auteurs.\r\n--\r\n\r\n🔍 2. Exemple : profilage algorithmique dans le recrutement\r\n\r\nLinkedIn est déjà utilisé pour le tri automatisé des candidatures. En combinant ces données avec des modèles dIA, une entreprise pourrait prédire les “traits de personnalité” dun candidat à partir de son profil, de son vocabulaire ou de son historique de publications.\r\n\r\n➡️ Risque concret :\r\nUne IA pourrait écarter un profil jugé “instable” ou “non aligné culturellement” simplement parce quelle a repéré des posts critiques sur le management — sans intervention humaine.\r\n\r\n📍 Projection 2027 : des recruteurs utilisent des IA pour “noter” automatiquement les profils selon leur probabilité de succès dans une entreprise, créant des discriminations invisibles et difficilement contestables.\r\n--\r\n\r\n✍️ 3. Exemple : appropriation intellectuelle déguisée\r\n\r\nImaginons une chercheuse en RH qui publie des posts détaillant sa méthode d’évaluation des compétences.\r\nQuelques mois plus tard, une IA professionnelle (issue dun modèle Microsoft ou OpenAI) reprend des formulations et des idées très proches dans un produit commercial.\r\n\r\n➡️ Risque : sa méthode devient une fonctionnalité dun logiciel RH, sans reconnaissance ni rémunération.\r\n\r\n📍 Projection 2028 : les IA intègrent massivement du contenu “crowdsourcé” depuis LinkedIn, Reddit ou Medium. Les créateurs deviennent fournisseurs involontaires de savoir, pendant que les entreprises vendent des outils basés sur leurs contributions.\r\n--\r\n\r\n🧠 4. Exemple : inférences comportementales non désirées\r\n\r\nUne IA peut déduire plus que ce que lutilisateur pense partager.\r\n➡️ Par exemple :\r\n\r\n Un rythme de publication irrégulier peut être interprété comme un “manque de disponibilité”.\r\n Un enchaînement de changements de poste peut être lu comme un “instinct dinstabilité”.\r\n Le ton ou la fréquence des commentaires peut servir à classer les utilisateurs selon leur “influence sociale”.\r\n\r\n📍 Projection 2026-2030 : ces données comportementales nourrissent des scores de réputation professionnelle invisibles, que certaines entreprises ou plateformes utilisent pour classer les candidats, partenaires ou clients potentiels.\r\n--\r\n\r\n💰 5. Exemple : création de produits IA entraînés sur les utilisateurs\r\n\r\nMicrosoft développe des outils dIA intégrés à LinkedIn Learning ou à Microsoft 365 Copilot.\r\n➡️ Les modèles peuvent sinspirer des tendances, expressions et structures de pensée des utilisateurs LinkedIn pour proposer des conseils personnalisés (“Voici comment rédiger une offre demploi efficace”).\r\n\r\n📍 Projection 2030 :\r\nLes modèles dIA deviennent si performants quils proposent des stratégies RH, des analyses de marché ou des lettres de motivation entières, entraînées sur les contenus des utilisateurs — mais commercialisées sous licence Microsoft.\r\nLes utilisateurs deviennent littéralement la matière première de produits IA vendus à dautres professionnels.\r\n--\r\n\r\n🔒 6. Exemple : difficulté deffacement ou de contrôle\r\n\r\nUn utilisateur décide de supprimer son compte LinkedIn.\r\n➡️ Problème : ses anciens posts, déjà utilisés pour lentraînement de modèles, ne peuvent pas être “désappris” par ces IA.\r\nLes traces textuelles persistent dans les modèles, parfois indéfiniment.\r\n\r\n📍 Projection 2029 : même avec le droit à loubli renforcé, la récupération complète des données dans les modèles devient quasi impossible. Les régulateurs européens devront imposer des procédures d’“oubli algorithmique”, très coûteuses à mettre en œuvre.\r\n--\r\n\r\n🌍 7. Projection sociétale globale : le paradoxe de la transparence\r\n\r\nÀ long terme, la généralisation de ces pratiques pourrait produire un effet de censure douce :\r\n\r\n Les utilisateurs partagent moins danalyses authentiques, de peur d’être copiés ou profilés.\r\n Les publications deviennent plus neutres, plus polies, moins spontanées.\r\n Le réseau perd de sa valeur humaine et se transforme en vitrine aseptisée.\r\n\r\nEn parallèle, les grandes entreprises technologiques accumulent des quantités massives de données textuelles qui leur donnent un avantage compétitif durable**.\r\nLes utilisateurs, eux, deviennent invisibles dans la chaîne de valeur de lintelligence artificielle."},{"uuid":"ca8c6097-1382-485b-a9b3-eebd6917ded0","slug":"api-first-concevoir-ses-applications-autrement","title":"🚀 API-First : Concevoir ses applications autrement","category":"informatique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2025-05-16 23:16:00","created_at":"2025-05-16 23:16:00","updated_at":"2025-05-16 21:19:41","tags":[],"plain":"Et si on arrêtait de développer des applications \"comme avant\" ? Lapproche API-First propose de repenser la manière dont nous concevons nos systèmes dinformation. Fini le back-end monolithique couplé à un front rigide : place aux APIs, universelles, testables, et réutilisables.\r\n\r\nAPI-First, ce nest pas seulement exposer des endpoints REST : cest un changement de paradigme.\r\n--\r\n\r\nQuest-ce que lapproche API-First ?\r\n\r\nConcrètement, cela signifie que toute la logique métier est exposée via une API, dès la conception. Que ce soit le site web, l'application mobile, ou même un script en ligne de commande, tout passe par lAPI, sans exception.\r\n\r\nLinterface utilisateur ne fait que consommer lAPI, comme nimporte quel client.\r\n--\r\n\r\nPourquoi adopter cette approche ?\r\n\r\n1. Séparation claire des responsabilités\r\n\r\nLAPI devient la \"source de vérité\" métier. Le front peut évoluer sans impacter la logique back, et inversement. On peut même changer totalement de techno front (passer de PHP à React ou Flutter) sans toucher au cœur de l'application.\r\n\r\n2. Réutilisation multi-clients\r\n\r\nUne fois développée, lAPI peut être utilisée :\r\n\r\n par le site web,\r\n par une appli mobile,\r\n par un back-office,\r\n par des scripts automatisés,\r\n voire par des clients externes si l'API est publique.\r\n\r\n3. Testabilité et documentation\r\n\r\nEn adoptant une spec comme OpenAPI (Swagger), lAPI peut être testée indépendamment de linterface, documentée automatiquement, et même simulée dès la phase de conception.\r\n\r\n4. Sécurité centralisée\r\n\r\nEn isolant la logique serveur dans une API, on peut gérer :\r\n\r\n lauthentification (token, JWT),\r\n les droits (ACL, RBAC),\r\n les logs daccès,\r\n la limitation de débit.\r\n--\r\n\r\nQuels défis à relever ?\r\n\r\n1. Organisation du projet\r\n\r\nLAPI devient le cœur de lapplication. Cela nécessite :\r\n\r\n une couche de services bien définie,\r\n des conventions strictes de nommage, versionnage, structure des réponses.\r\n\r\n2. Gestion des sessions côté client\r\n\r\nOn passe de la session PHP classique à des tokens (Bearer, JWT) stockés dans le client (cookies sécurisés, localStorage, etc.).\r\n\r\n3. Montée en compétences\r\n\r\nLes équipes front doivent apprendre à consommer efficacement une API, à gérer les erreurs, les délais, les formats JSON.\r\n--\r\n\r\nBonnes pratiques\r\n\r\n Spécifier lAPI dès la phase de design (OpenAPI / Swagger)\r\n Documenter tous les endpoints avec exemples concrets\r\n Gérer finement les statuts HTTP, les erreurs, et les droits\r\n Tester chaque endpoint indépendamment\r\n Prévoir le versionnage de lAPI\r\n--\r\n\r\nExemple concret\r\n\r\nUn projet en PHP peut tout à fait être API-first :\r\n\r\n\r\n\r\nLe front appelle ces endpoints via ou , et les réponses sont des objets JSON formatés uniformément.\r\n--\r\n\r\nEn conclusion\r\n\r\nLapproche API-First est plus quun buzzword : cest une architecture moderne, modulaire et pérenne. Elle impose de penser son application comme une plateforme ouverte, documentée et testable, au bénéfice de toute l’équipe projet.\r\n\r\nElle favorise la qualité, la scalabilité et la maintenabilité. Et dans un monde où les interfaces se multiplient (web, mobile, IoT…), cest probablement le meilleur choix à long terme.\r\n--\r\n\r\n✉️ Pour aller plus loin :\r\n\r\n https://swagger.io\r\n https://jsonapi.org\r\nhttps://restfulapi.net"},{"uuid":"f525ce94-b1f4-459c-a1bc-25d3e0bdcc58","slug":"alias","title":"alias","category":"Informatique","author":"cedric@abonnel.fr","cover":"","published":true,"published_at":"2023-02-19 07:03:18","created_at":"2023-02-19 07:03:18","updated_at":"2023-02-19 07:03:18","tags":[],"plain":"En Bash, un alias est un raccourci ou une abréviation qui est utilisé pour remplacer une commande ou une séquence de commandes plus longue par un seul mot ou une expression. Par exemple, si vous utilisez fréquemment la commande , vous pouvez créer un alias nommé pour cette commande en utilisant la syntaxe suivante dans le terminal : Maintenant, chaque fois que vous tapez dans le terminal, Bash exécutera automatiquement la commande . Les alias peuvent être utiles pour gagner du temps et améliorer l'efficacité lorsque vous travaillez avec la ligne de commande en réduisant la quantité de texte que vous devez taper pour exécuter une commande particulière. Vous pouvez enregistrer des alias dans le fichier si ce dernier existe. Dans certains systèmes, le fichier n'existe pas par défaut, mais vous pouvez le créer manuellement dans votre répertoire d'utilisateur en utilisant la commande suivante : Ensuite, vous pouvez ajouter vos alias dans ce fichier en utilisant la même syntaxe que celle utilisée pour définir des alias dans le terminal. Par exemple : Une fois que vous avez ajouté vos alias dans le fichier , vous devez exécuter la commande suivante pour les charger dans votre session Bash en cours : Cette commande rechargera le fichier .bashrc qui charge normalement le fichier dans votre session Bash. Notez que le nom et l'emplacement des fichiers de configuration Bash peuvent varier selon le système. Par conséquent, il est possible que vous deviez ajuster les instructions ci-dessus en fonction de votre configuration spécifique. Quelques exemples\nVoici quelques exemples d'alias de commandes qui peuvent être utiles :\npour : comme expliqué précédemment, cela affichera le contenu d'un répertoire en mode long, avec les permissions et les détails de propriétaire affichés.\navec couleur : pour ajouter de la couleur à la sortie de la commande grep pour améliorer la lisibilité, vous pouvez utiliser l'alias suivant :\n: si vous créez souvent des répertoires imbriqués, vous pouvez utiliser l'option -p pour créer des répertoires parents si nécessaire. Vous pouvez également créer un alias nommé mkdirp pour simplifier l'opération.\navec tri inversé : si vous utilisez souvent la commande ps pour afficher les processus en cours d'exécution sur votre système, vous pouvez ajouter un alias nommé pss pour trier les résultats par ordre décroissant d'utilisation de la mémoire.\ntrié par taille : si vous voulez afficher les dossiers par taille décroissante, vous pouvez ajouter un alias nommé dus pour trier la sortie de la commande du par ordre décroissant de taille.\navec confirmation : pour ajouter une confirmation avant de copier des fichiers, vous pouvez créer un alias nommé cp qui inclut l'option -i pour demander une confirmation avant d'écraser les fichiers existants.\navec confirmation : de même, pour ajouter une confirmation avant de supprimer des fichiers, vous pouvez créer un alias nommé rm qui inclut l'option -i pour demander une confirmation avant de supprimer chaque fichier.\navec couleur : si vous utilisez Git pour gérer des projets de développement de logiciels, vous pouvez ajouter de la couleur à la sortie de la commande git pour améliorer la lisibilité.\navec retour rapide : pour revenir rapidement au répertoire parent, vous pouvez créer un alias nommé .. qui exécute la commande cd .. pour revenir au répertoire parent.\navec unités de mémoire lisibles : si vous utilisez souvent la commande free pour surveiller l'utilisation de la mémoire, vous pouvez ajouter l'option -h pour afficher les tailles de mémoire dans des unités lisibles pour l'homme (comme \"1.23 GiB\" au lieu de \"1289311232\").\navec numéros de ligne : pour afficher les numéros de ligne dans la sortie de la commande grep, vous pouvez ajouter l'option -n à l'alias grep.\navec tri inversé : pour afficher les fichiers et répertoires triés par ordre inverse de date de modification, vous pouvez créer un alias nommé lsr.\navec compression gzip : pour créer une archive tar compressée avec gzip, vous pouvez créer un alias nommé targz.\navec taille et espace libre en unités lisibles : pour afficher l'espace disque disponible sur les partitions de votre système dans des unités lisibles pour l'homme, vous pouvez créer un alias nommé dfh. Ces exemples montrent comment vous pouvez personnaliser vos alias de commandes pour automatiser des tâches courantes, faciliter la navigation dans les répertoires et améliorer la lisibilité de la sortie de la commande."}]