Category: Développement

Échapper à l'enfer de YAML : KSON, un langage de configuration conçu pour les humains

2025-09-18
Échapper à l'enfer de YAML : KSON, un langage de configuration conçu pour les humains

Fatigué des maux de tête incessants liés aux fichiers de configuration YAML ? Cet article raconte l'histoire de la chute d'un programmeur du piège alléchant de YAML dans un abîme douloureux, et présente KSON, un projet open source visant à améliorer l'expérience de configuration. KSON est compatible avec JSON et YAML, et ajoute de nombreuses fonctionnalités conviviales, telles que la tolérance aux erreurs d'indentation et une prise en charge robuste des éditeurs de code, dans le but de faire de la configuration une joie, et non un cauchemar.

Développement

Geizhals fait un don de 10 000 USD pour assurer l'avenir de Perl 5

2025-09-18
Geizhals fait un don de 10 000 USD pour assurer l'avenir de Perl 5

Geizhals Preisvergleich, un site web allemand de comparaison de prix fondé en 1997, a fait un don de 10 000 USD à la Fondation Perl et Raku pour soutenir le fonds de maintenance du cœur de Perl 5. Construit sur Perl depuis sa création, le don de Geizhals souligne son engagement envers l'open source et la stabilité à long terme de Perl. Le fonds est destiné aux corrections critiques de bogues, garantissant que Perl reste stable et sécurisé pour d'innombrables utilisateurs et organisations. Cette contribution généreuse met en évidence le rôle vital du soutien de la communauté dans le maintien de l'infrastructure open source essentielle.

Développement Don

Codage assisté par l'IA : Maîtriser l'unité de travail

2025-09-18

Un codage efficace assisté par l'IA ne repose pas seulement sur des modèles intelligents ; il s’agit de gérer méticuleusement les unités de travail. L’auteur soutient que le découpage des tâches en unités de taille appropriée est crucial. Trop petites, l’efficacité en pâtit ; trop grandes, la perte de contexte entraîne une accumulation d’erreurs. L’unité idéale doit avoir une valeur commerciale claire, comme les user stories, permettant la relecture humaine et la correction d’erreurs, minimisant ainsi l’accumulation des erreurs de l’IA. Le projet StoryMachine vise à définir des unités de travail plus efficaces pour améliorer l’efficacité et la précision du codage assisté par l’IA, rendant, en fin de compte, le développement de l’IA moins risqué et plus simple.

Développement gestion du contexte

KDE Plasma : une expérience de bureau Linux étonnamment agréable

2025-09-18

L'auteur a récemment changé l'environnement de bureau de sa machine de jeu pour KDE Plasma, initialement pour faciliter son utilisation par sa femme. Cependant, il a été agréablement surpris par ses fonctionnalités complètes et sa vitesse impressionnante. L'applet réseau de KDE Plasma fournit des informations réseau étendues ; son outil de capture d'écran intégré est puissant ; et ses règles de fenêtre dans les paramètres système permettent une personnalisation étendue des fenêtres d'application. De plus, KDE Plasma possède de nombreux outils préintégrés, tels que la configuration des autorisations Flatpak, l'affichage des informations matérielles et la prévention de la mise en veille – des fonctionnalités qui nécessitent généralement des installations de logiciels séparées sous Windows et macOS. Bien qu'il ait rencontré des problèmes mineurs au début, l'auteur a considéré KDE Plasma comme une expérience très satisfaisante, le qualifiant de meilleur environnement de bureau Linux qu'il ait utilisé depuis des années.

Empêcher la mise en veille du bureau distant : une astuce simple avec systemd-inhibit

2025-09-18
Empêcher la mise en veille du bureau distant : une astuce simple avec systemd-inhibit

Fatigué des sessions de bureau à distance interrompues par la mise en veille de votre ordinateur ? Cet article présente une solution astucieuse utilisant la commande `systemd-inhibit` et des alias bash. Deux commandes simples, `block` et `unblock`, sont créées. `block` lance un processus en arrière-plan empêchant la mise en veille, tandis que `unblock` tue ce processus, permettant au système de se mettre en veille. Aucune configuration complexe n’est nécessaire ; il suffit d’ajouter deux lignes à votre fichier `.bashrc` ou `.zshrc` pour résoudre ce problème courant et améliorer votre flux de travail.

Développement bureau distant

Transformées de Fourier Rapides (FFT) Expliquées : L’algorithme de Cooley-Tukey

2025-09-18

Cet article explore les algorithmes de transformée de Fourier rapide (FFT), en se concentrant sur l’algorithme de Cooley-Tukey. Il commence par définir la transformée de Fourier discrète (DFT) et souligne sa complexité temporelle naïve O(n^2). L’auteur dérive ensuite méticuleusement l’algorithme de Cooley-Tukey, qui réduit la complexité en décomposant la DFT en DFT plus petites, atteignant O(n log n) pour des entrées de longueur 2^n. Une visualisation interactive montre le fonctionnement de l’algorithme. L’article corrige également l’utilisation incorrecte courante de « FFT » comme synonyme de « DFT », en précisant que FFT fait référence à l’algorithme, et non à la transformation elle-même.

Développement

Pratiques de programmation C : pureté, vitesse et exactitude

2025-09-18

Ce document présente des notes sur les pratiques de programmation C, couvrant le style de codage, les conventions de nommage des fonctions et des variables, la mise en forme, les commentaires et des astuces intelligentes en C, telles que le comptage de bits et le déroulement des boucles. L’auteur souligne la recherche de la pureté, de la vitesse et de l’exactitude du code, en offrant des informations sur l’utilisation efficace des fichiers d’en-tête, des compilateurs et la révision des paradigmes de programmation courants, tels que l’utilisation des instructions GOTO. L’objectif est d’améliorer la qualité et l’efficacité de la programmation C.

Développement

Adieu aux classes CSS : création d’un site web sans classes

2025-09-18
Adieu aux classes CSS : création d’un site web sans classes

Suite à un article précédent plaidant pour l’utilisation d’éléments intégrés au navigateur, l’auteur a mis cette philosophie en pratique en supprimant complètement toutes les classes CSS de son site web personnel. Il a expérimenté des styles par défaut plus granulaires, des sélecteurs imbriqués, des fonctionnalités CSS modernes comme `:where()` et `:has()`, et des éléments et attributs personnalisés en guise de remplacement. Bien que cela nécessite une planification plus minutieuse et ne convienne pas à tous les projets, l’expérience a amené l’auteur à remettre en question la nécessité des classes CSS et a eu une influence durable sur son travail futur. Une petite concession a été faite pour un plugin de mise en surbrillance de la syntaxe qui utilise des classes.

Développement Éléments personnalisés

Débogage de programmes Chez Scheme : un guide complet

2025-09-18

Ce guide de R. Kent Dybvig propose une approche complète du débogage des programmes Chez Scheme. Il commence par des techniques fondamentales telles que la compréhension des messages d'erreur, la simplification du code et des entrées, et le placement stratégique d'instructions d'impression. Le guide aborde ensuite des méthodes avancées, notamment l'utilisation des outils de trace et du débogueur de Chez Scheme pour inspecter l'état du programme et identifier les bogues insaisissables. Que vous soyez un programmeur débutant ou expérimenté, ce guide offre des informations précieuses pour un débogage efficace.

Développement

Mise à jour de pnpm : mises à jour différées des dépendances et recherche avancée des dépendances

2025-09-18
Mise à jour de pnpm : mises à jour différées des dépendances et recherche avancée des dépendances

La dernière version de pnpm introduit deux fonctionnalités importantes : premièrement, un nouveau paramètre `minimumReleaseAge` qui retarde l’installation des dépendances nouvellement publiées afin d’atténuer les risques de sécurité ; deuxièmement, elle ajoute la prise en charge des fonctions de recherche dans `.pnpmfile.cjs`, permettant des règles de recherche personnalisées via `pnpm list` ou `pnpm why` avec l’indicateur `--find-by`, ce qui permet des recherches de dépendances plus granulaires ; par exemple, trouver des paquets avec une version spécifique de React dans leurs `peerDependencies`. Les corrections de bogues incluent la résolution des avertissements d’obsolescence dans Node.js 24 et la garantie d’un code de sortie différent de zéro lorsqu’un processus est annulé avec Ctrl+C.

Développement

Explication de la politique de cookies du site Web

2025-09-18
Explication de la politique de cookies du site Web

Ce site Web utilise deux types de cookies : des cookies essentiels pour les fonctions de base du site Web et des cookies de commentaires pour suivre l'activité des utilisateurs sur plusieurs sessions, y compris le nom d'utilisateur, l'adresse e-mail et l'URL. Les cookies essentiels stockent les préférences de consentement des cookies des utilisateurs pendant 30 jours ; les cookies de commentaires sont des cookies de session qui expirent à la fin de la session.

Décodage manuel de GZIP : Plongeon au cœur de l’algorithme Deflate

2025-09-18

L'auteur tente de décoder manuellement la chaîne de caractères « TOBEORNOTTOBEORTOBEORNOT » compressée avec GZIP, offrant ainsi une plongée profonde dans l'algorithme Deflate. L'article détaille la structure des données GZIP, notamment les nombres magiques, les méthodes de compression, les horodatages et autres champs. Il se concentre sur le cœur de la compression Deflate : l'algorithme LZ77. LZ77 utilise des caractères et des commandes de copie (longueur et distance) pour le codage, réduisant ainsi efficacement la taille des données. En analysant manuellement les données compressées, l'auteur reconstitue la chaîne d'origine pas à pas. Conclusion : le codage binaire est plus efficace que le codage octet pour la compression de données, mais le décodage manuel est complexe.

Développement

Packages npm malveillants publiés via un workflow GitHub Actions compromis

2025-09-18
Packages npm malveillants publiés via un workflow GitHub Actions compromis

Un workflow GitHub Actions malveillant a exfiltré un jeton npm avec des droits de publication étendus à partir d'un référentiel partagé, conduisant à la publication de versions malveillantes de 20 packages, dont le populaire @ctrl/tinycolor. Bien que le compte et le référentiel GitHub de l'auteur n'aient pas été directement compromis, un collaborateur ayant un accès administrateur à un référentiel partagé a permis la réussite de l'attaque. Les attaquants ont exploité un secret GitHub Actions contenant le jeton npm. Les équipes de sécurité GitHub et npm ont réagi rapidement, dépubliant les packages malveillants. L'auteur a publié des versions propres pour effacer les caches. L'incident met en évidence les risques liés aux référentiels partagés et aux jetons statiques, ce qui encourage un passage à la publication approuvée (OIDC) de npm pour une sécurité accrue.

Développement packages malveillants

Ton Roosendaal quitte son poste de PDG de Blender

2025-09-18

Ton Roosendaal, fondateur et PDG du logiciel 3D open source Blender, a annoncé qu'il quitterait ses fonctions le 1er janvier 2026. Il rejoindra le conseil de surveillance nouvellement créé de la Blender Foundation. L'actuel directeur des opérations, Francesco Siddi, lui succèdera en tant que PDG, rejoint par de nouveaux membres du conseil : Sergey Sharybin (responsable du développement), Dalai Felinto (responsable du produit) et Fiona Cohen (responsable des opérations). Roosendaal a déclaré qu'ils se préparaient à cela depuis 2019 et qu'il a confiance en l'équipe pour diriger Blender dans la prochaine décennie.

Développement Transition de PDG

Hashing de Rendez-vous : un algorithme de hachage distribué avec un excellent équilibrage de charge

2025-09-18

Le hachage de rendez-vous résout le problème de la table de hachage distribuée en générant une liste de serveurs prioritaires pour chaque clé et en sélectionnant le premier serveur. Contrairement au hachage cohérent, il offre un meilleur équilibrage de charge, mais a un temps de recherche de O(N). C'est un bon choix pour les caches distribuées de petite à moyenne taille, mais l'ajout de serveurs dans les systèmes plus importants nécessite une gestion minutieuse pour maintenir l'invariant de « premier choix ». Sa popularité a été inférieure à celle du hachage cohérent, probablement en raison de l'absence d'un moment « application phare », malgré son invention antérieure et ses avantages inhérents.

Le mainteneur principal de libxml2 démissionne

2025-09-18
Le mainteneur principal de libxml2 démissionne

Nick Wellnhofer, le mainteneur principal de libxml2, a annoncé sa démission, laissant le projet largement sans maintenance. Il corrigera les régressions de la version 2.15 jusqu'à la fin 2025. L'annonce a suscité une grande reconnaissance et de l'inquiétude au sein de la communauté. De nombreux développeurs ont exprimé leur gratitude pour la maintenance à long terme de libxml2, et l'un d'eux s'est proposé de prendre le relais, bien qu'avec quelques questions techniques nécessitant des éclaircissements de la part de l'ancien mainteneur.

Développement

arXivLabs : Développement de nouvelles fonctionnalités arXiv avec des collaborateurs communautaires

2025-09-18
arXivLabs : Développement de nouvelles fonctionnalités arXiv avec des collaborateurs communautaires

arXivLabs est une plateforme permettant aux développeurs et chercheurs de créer et de partager de nouvelles fonctionnalités arXiv directement sur le site web d'arXiv. Cette initiative promeut les valeurs d'ouverture, de communauté, d'excellence et de confidentialité des données utilisateur, visant à améliorer l'expérience arXiv pour tous. Vous avez une idée pour améliorer arXiv ? Rejoignez arXivLabs !

Développement

Internes d'hyperviseur et fuzzing hautes performances en une journée

2025-09-18

Ce cours d'une journée propose un cours intensif sur le fonctionnement interne des hyperviseurs et les techniques pour les écrire pour un fuzzing hautes performances. Il couvre les bases des technologies de virtualisation assistées par matériel, telles que VMCS/VMCB, les commutations de mondes invité-hôte, EPT/NPT, et des fonctionnalités utiles telles que l'interception d'exceptions pour l'introspection de machines virtuelles lors du fuzzing. Le cours combine des conférences avec des exercices pratiques utilisant les documents fournis et le code source dans le répertoire Hypervisor-101-in-Rust/hypervisor.

Développement hyperviseur

Sortie de Wasm 3.0 : GC, adresses 64 bits et plus

2025-09-18
Sortie de Wasm 3.0 : GC, adresses 64 bits et plus

Après trois ans de développement, la norme WebAssembly (Wasm) 3.0 est enfin disponible ! Cette mise à jour importante offre des fonctionnalités significatives, notamment des espaces d’adressage 64 bits, étendant la mémoire adressable à 16 exabytes ; la prise en charge de plusieurs instances de mémoire, améliorant la gestion des applications et des ensembles de données volumineux ; un mécanisme de garbage collection (GC), simplifiant grandement le processus de compilation des langages de haut niveau vers Wasm ; des références typées pour une meilleure sécurité des types et une meilleure efficacité ; ainsi que des appels de queue, la gestion des exceptions et des instructions vectorielles améliorées. Ces améliorations rendent Wasm beaucoup plus adapté à la compilation de langages de haut niveau tels que Java et OCaml, élargissant ainsi ses applications.

Développement

L'opérateur d'affectation conditionnelle nulle de C# 14 : Adieu aux instructions if redondantes

2025-09-18
L'opérateur d'affectation conditionnelle nulle de C# 14 : Adieu aux instructions if redondantes

C# 14 introduit une fonctionnalité révolutionnaire : l’opérateur d’affectation conditionnelle nulle. Il résout élégamment le problème récurrent des NullReferenceExceptions en C#. Auparavant, plusieurs instructions if étaient nécessaires pour vérifier les valeurs nulles ; désormais, les affectations sont simplifiées en une seule ligne, améliorant considérablement la lisibilité du code et réduisant la verbosité. Par exemple, `config?.Settings?.RetryPolicy = new ExponentialBackoffRetryPolicy();` remplace les vérifications if complexes. Bien que l’opérateur ne prenne pas en charge les opérateurs d’incrémentation/décrémentation et qu’une utilisation excessive soit à éviter, il s’agit d’une amélioration précieuse dans C# 14, qui mérite d’être explorée après la sortie de .NET 10.

Optimisation des performances de ClickHouse sur les processeurs Intel Xeon à très grand nombre de cœurs

2025-09-17
Optimisation des performances de ClickHouse sur les processeurs Intel Xeon à très grand nombre de cœurs

Les derniers processeurs Intel disposent de centaines de cœurs, offrant à la fois des opportunités considérables et des défis importants pour les bases de données analytiques telles que ClickHouse. Les ingénieurs d'Intel Shanghai ont analysé systématiquement les performances de ClickHouse sur des serveurs à très grand nombre de cœurs, identifiant et optimisant cinq goulots d'étranglement clés : la contention de verrouillage, l'optimisation de la mémoire, le parallélisme insuffisant, l'utilisation des instructions SIMD et le faux partage. En réduisant les temps de maintien des verrous, en améliorant l'allocateur de mémoire, en parallélisant les phases série, en utilisant des algorithmes SIMD plus intelligents et en optimisant la disposition de la mémoire, ils ont considérablement amélioré l'évolutivité de ClickHouse sur les systèmes à très grand nombre de cœurs, obtenant jusqu'à 10 fois plus de vitesse pour des requêtes individuelles et une amélioration de 10 % de la moyenne géométrique globale. Ce travail souligne la nécessité d'une optimisation multiforme des bases de données à l'ère des systèmes à très grand nombre de cœurs, en tenant compte des aspects algorithmiques et de la disposition de la mémoire.

UUIDv47 : UUID compatibles avec la base de données, ordonnable et compatible avec l’API

2025-09-17
UUIDv47 : UUID compatibles avec la base de données, ordonnable et compatible avec l’API

UUIDv47 est une solution ingénieuse qui stocke des UUIDv7 ordonnable dans les bases de données tout en présentant une façade UUIDv4 aux API. Cela est réalisé en masquant par XOR l’horodatage UUIDv7 avec un flux SipHash-2-4 avec clé, lié aux bits aléatoires de l’UUID. Cela offre une efficacité de la base de données et une compatibilité de l’API. La bibliothèque C est facile à intégrer, avec une résistance à la récupération de la clé pour une sécurité accrue.

Développement

Les Types Algébriques Ne Sont Pas Intimidants : Une Explication Simple à l’Aide de la Théorie des Ensembles

2025-09-17

Cet article fournit une explication claire et accessible des types algébriques, en utilisant la perspective de la théorie des ensembles, où les types sont considérés comme des ensembles de valeurs. Il explore les types produit (similaires aux structs ou aux classes) et les types somme (comme les types Option ou Result), en comparant leur implémentation dans un interpréteur utilisant des types algébriques par rapport aux approches orientées objet (héritage ou motif Visitor). L’auteur soutient que les types algébriques offrent une concision, une lisibilité et une maintenabilité supérieures, évitant ainsi une complexité inutile. La conclusion souligne que les types produit et somme sont des manières fondamentales de combiner des types, suffisantes pour la plupart des tâches de programmation.

Microsoft : un « mau acteur » dans la chaîne d’approvisionnement logicielle ?

2025-09-17
Microsoft : un « mau acteur » dans la chaîne d’approvisionnement logicielle ?

Cet article revient sur les problèmes de sécurité de la chaîne d’approvisionnement logicielle, d’Internet Explorer à npm, en arguant que les efforts insuffisants de Microsoft pour sécuriser npm ont conduit à une prolifération de logiciels malveillants, menaçant les entreprises de développement de logiciels. L’auteur souligne les vulnérabilités de sécurité critiques dans les scripts d’installation de npm, facilement exploitables pour des attaques, tandis que Microsoft, propriétaire de npm, n’a pris que peu de mesures. Cela rend le développement de logiciels moins amusant et plus une corvée. L’article appelle à des efforts à l’échelle de l’industrie pour construire une chaîne d’approvisionnement logicielle sécurisée.

DataTables.net subit une panne majeure due à un piratage de domaine

2025-09-17

Le site web DataTables.net a subi une panne importante suite à une attaque de piratage de domaine. L'attaquant, utilisant une campagne d'hameçonnage sophistiquée et de faux documents d'identité, a réussi à transférer le domaine. Bien que le serveur et le code soient restés intacts, l'interruption du CDN a gravement impacté les utilisateurs. L'auteur a depuis restauré les services et encourage les utilisateurs à adopter des mesures de sécurité telles que l'intégrité des sous-ressources (SRI).

Développement piratage de domaine

Stategraph : Repenser la gestion de l’état de Terraform comme un problème de systèmes distribués

2025-09-17
Stategraph : Repenser la gestion de l’état de Terraform comme un problème de systèmes distribués

Terraform utilise depuis longtemps la sémantique du système de fichiers pour résoudre un problème de systèmes distribués, ce qui entraîne une gestion d’état inefficace. Stategraph s’attaque à ce problème en traitant l’état de Terraform comme un graphe acyclique orienté, en tirant parti des caractéristiques des bases de données de graphes pour l’isolation des sous-graphes, le verrouillage précis et la mise à jour incrémentale. Cela améliore considérablement le débit concurrentiel, résolvant les problèmes de contention de verrouillage et les temps de rafraîchissement lents, permettant aux grandes équipes de collaborer efficacement. Stategraph utilise PostgreSQL comme backend et est compatible avec les flux de travail existants de Terraform, sans nécessiter de modifications de configuration pour la migration.

Développement Gestion d’état

Tabby : un puissant émulateur de terminal et client SSH

2025-09-17
Tabby : un puissant émulateur de terminal et client SSH

Tabby (anciennement Terminus) est un émulateur de terminal hautement configurable, client SSH, Telnet et série pour Windows, macOS et Linux. Il possède des fonctionnalités telles que des thèmes, des raccourcis personnalisables, des panneaux divisés, la persistance des onglets et prend en charge plusieurs shells, notamment PowerShell, WSL et Git-Bash. De plus, Tabby offre une prise en charge étendue des plugins, notamment l'intégration Docker, l'envoi rapide de commandes, l'enregistrement de la sortie et même l'intégration d'assistants IA pour une productivité accrue. Une alternative polyvalente aux applications de terminal existantes, Tabby est idéal pour les développeurs et les administrateurs système.

Développement client SSH

Fedora 43 Beta : Une mise à jour élégante avec de nouveaux langages et outils

2025-09-17
Fedora 43 Beta : Une mise à jour élégante avec de nouveaux langages et outils

Fedora 43 Beta est arrivé, avec des améliorations notables. L'installeur a été entièrement revu avec Anaconda WebUI par défaut, le passage à DNF5 et la suppression des paquets modulaires pour une expérience simplifiée. Les outils de développement principaux ont été mis à jour, notamment GCC 15.2, glibc 2.42 et LLVM 21. Python 3.14, Go 1.25, Idris 2 et même le langage expérimental Hare sont désormais compatibles. Les mises à jour des bases de données incluent PostgreSQL 18 et MySQL 8.4 par défaut. GNOME passe entièrement à Wayland et le rendu des polices a été amélioré. Plusieurs composants obsolètes ont été supprimés, ouvrant la voie à une expérience Fedora plus propre et plus moderne.

Développement

Construire un conteneur Docker à partir de zéro : révéler les secrets des espaces de noms de montage

2025-09-17
Construire un conteneur Docker à partir de zéro : révéler les secrets des espaces de noms de montage

Cet article explique clairement et concisement comment construire un conteneur de type Docker en utilisant uniquement des outils Linux standard : unshare, mount et pivot_root. Il met l’accent sur le rôle crucial de l’espace de noms de montage dans l’isolement des conteneurs, ainsi que sur les rôles complémentaires des autres espaces de noms (PID, cgroup, UTS, réseau). Grâce à des exercices pratiques pas à pas, les lecteurs comprendront comment les espaces de noms de montage isolent les tables de montage et comment la propagation de montage affecte les interactions entre les espaces de noms. En fin de compte, les lecteurs pourront créer des conteneurs de type Docker dotés de toutes les fonctionnalités en utilisant uniquement des commandes Linux standard.

Développement Espaces de noms Linux

Bêta-évaluateur de style direct d'ordre normal avec règles de syntaxe et applications répétées de call/cc

2025-09-17

Cet article explore des applications moins fréquentes de call/cc dans les macros Scheme hygiéniques, notamment son utilisation pour faciliter les calculs lambda fastidieux. L'auteur présente un bêta-normalisateur de style direct d'ordre normal combinant intelligemment les règles de syntaxe et les applications répétées de call/cc, prouvant sa correction via la transformation CPS et un ingénieux lambda-calculateur de style direct. L'article approfondit également les continuations délimitées, montrant comment des macros simples peuvent implémenter divers opérateurs de continuation délimitée, tels que prompt et control. Une implémentation de fonction factorielle basée sur call/cc et une discussion sur les continuations délimitées mettent en évidence l'élégance et l'aspect pratique de l'approche.

Développement
1 2 3 4 6 8 9 10 214 215