Category: Développement

L'astuce malicieuse : correction dynamique du code source d'une fonction Python en cours d'exécution

2025-08-24

Cet article détaille une technique fascinante mais dangereuse : modifier dynamiquement le code source d'une fonction Python en cours d'exécution. En manipulant l'attribut `.__code__`, en recompilant et en injectant dans un espace de noms, l'auteur démontre le remplacement dynamique de fonctions. Cela alimente le ToolBot de LlamaBot, qui se concentre sur la sélection des outils, et non sur leur exécution. Le code généré est compilé et exécuté dans le même environnement Python, accédant aux variables d'exécution pour des capacités d'IA améliorées. Bien qu'il existe des risques de sécurité, cela montre la flexibilité de Python et l'importance de séparer la sélection des outils de l'exécution dans les agents LLM.

Développement Code dynamique

Du chaos à la collaboration : utiliser Claude Code pour une conception logicielle améliorée

2025-08-24

Initialement, l'auteur a utilisé Claude Code avec une approche naïve, basée sur des instructions directes, ce qui a entraîné des inefficacités et des erreurs. Au fur et à mesure que les tâches devenaient plus complexes, des limitations sont apparues : les conversations perdaient des informations cruciales et les limites de contexte affectaient la qualité du code. L'auteur est passé à une approche basée sur un plan, utilisant Claude Code pour créer un document de plan servant de source unique de vérité. Chaque phase de développement commence par une nouvelle conversation, le document de plan fournissant tout le contexte nécessaire. Cette approche de « document vivant » permet à Claude Code de mettre à jour le plan pendant l'implémentation, en résolvant les problèmes de limites de contexte et en améliorant la fiabilité du code. Le résultat est une efficacité accrue et des compétences de conception améliorées pour l'auteur.

Programmation en Mob: Comment la Collaboration Résout les Problèmes Persistants du Développement Logiciel

2025-08-24

Cet article explore comment la programmation en mob résout les problèmes persistants du développement logiciel. L'auteur observe que de nombreux problèmes, tels que les goulots d'étranglement de la communication, la paralysie de la prise de décision et la dette technique, disparaissent simplement avec cette approche. La programmation en mob encourage les méthodologies agiles, favorisant la collaboration en face à face et une attention continue à la qualité et à la simplicité du code. Cela conduit à une résolution rapide des problèmes, à une réduction des temps d'attente et à une augmentation de l'efficacité. Elle minimise la dépendance au courrier électronique et à une documentation exhaustive, favorisant le travail d'équipe étroit et le partage des connaissances, améliorant ainsi l'efficacité et la qualité globales du développement logiciel.

Abonnements de codage IA vs. CPU haut de gamme : un duel de productivité

2025-08-24

Alors que les abonnements de codage IA comme Cursor sont très populaires, avec un coût supérieur à 500 $ par an, l’auteur soutient qu’investir dans un processeur haute performance offre un meilleur retour sur investissement. Un processeur haut de gamme comme l’AMD Ryzen 9 9950X coûte à peu près le même prix, mais offre une amélioration spectaculaire des performances, souvent supérieure à un facteur 10 en termes de temps de compilation. Les benchmarks comparant les CPU de différentes générations mettent en évidence les gains de productivité significatifs apportés par un matériel supérieur. L’auteur conclut que les entreprises devraient privilégier le matériel haute performance plutôt que de se fier uniquement aux outils d’IA pour améliorer la productivité.

Une décennie d'exploits de désérialisation Ruby Marshal : historique et perspectives

2025-08-24
Une décennie d'exploits de désérialisation Ruby Marshal : historique et perspectives

Cet article explore l'histoire de dix ans des vulnérabilités de désérialisation du module Ruby Marshal. Il retrace l'évolution, des premiers rapports de bogues en 2013 aux techniques d'exploitation les plus récentes en 2024, révélant un jeu du chat et de la souris incessant entre chercheurs en sécurité et attaquants. L'auteur souligne les limites d'une approche purement basée sur les correctifs et préconise la suppression progressive du module Marshal au profit d'alternatives plus sûres, afin d'éliminer cette menace de sécurité récurrente.

Seed : Un environnement de programmation interactif dans votre navigateur

2025-08-24
Seed : Un environnement de programmation interactif dans votre navigateur

Seed est un environnement logiciel interactif basé sur Common Lisp qui s'exécute dans un navigateur web. Il vous permet de créer et d'utiliser des programmes informatiques de diverses manières, en les visualisant sous forme de grille arborescente avec des glyphes représentant les fonctions et les types de données. Seed vise à transcender les limites de la programmation traditionnelle basée sur du texte, en offrant une représentation orthogonale à la structure du langage. Il intègre le système de construction ASDF et fournit des instructions complètes d'installation et d'utilisation.

Développement Programmation interactive

Concours photo FSF40 : 40 ans de logiciel libre à célébrer !

2025-08-24

Pour célébrer son 40e anniversaire, la Free Software Foundation (FSF) organise un concours photographique. Les participants sont invités à partager comment ils utilisent le logiciel libre au quotidien. À gagner : un t-shirt FSF40 (1er prix), un sac « Défendez vos droits d’utilisateur » (2e prix), et un pack d’autocollants de logiciel libre (3e prix). Date limite des inscriptions : 31 août 2025. Les photos gagnantes seront exposées lors de la célébration du 40e anniversaire à Boston (MA) le 4 octobre 2025. Plus qu’un concours, un hommage à la communauté du logiciel libre !

Développement

Jouer à des jeux pour tester des logiciels : comment une entreprise a conquis Metroid et Mario

2025-08-24
Jouer à des jeux pour tester des logiciels : comment une entreprise a conquis Metroid et Mario

Une entreprise a utilisé des jeux Nintendo, plus précisément Metroid et Super Mario Bros., pour tester sa plateforme logicielle, Antithesis. Au départ, son système de test IA s’est retrouvé bloqué devant une porte rouge dans Metroid, car il priorisait l’élimination des ennemis, épuisant ainsi ses missiles. Cela l’a conduite à développer une nouvelle technique de « test en essaim » qui optimise les objectifs tout en explorant l’espace d’états, comme privilégier le fait d’avoir plus de missiles. Cela a non seulement résolu le problème de la porte rouge, mais a également permis à Antithesis d’explorer le monde du jeu plus efficacement, de découvrir des bogues et même d’exploiter les mécanismes du jeu pour des speedruns. Cette technique ne se limite pas aux tests de jeux ; elle est applicable à divers scénarios de tests logiciels, comme la recherche de fuites de mémoire ou d’anomalies de performances.

Développement Test logiciel

ThinkMesh : Raisonnement parallèle pour les LLM

2025-08-24
ThinkMesh : Raisonnement parallèle pour les LLM

ThinkMesh est une bibliothèque Python permettant d'exécuter plusieurs chemins de raisonnement en parallèle, de les noter à l'aide de signaux de confiance internes, de redistribuer les ressources de calcul aux branches prometteuses et de fusionner les résultats avec des vérificateurs et des réducteurs. Elle prend en charge les Transformers Hugging Face hors ligne et vLLM/TGI, ainsi que les API hébergées. ThinkMesh propose diverses stratégies telles que DeepConf, Self-Consistency et Tree of Thoughts, et inclut des fonctionnalités telles que la mise en cache, les métriques et le traçage JSON pour une efficacité et une fiabilité accrues dans le raisonnement des grands modèles de langage.

Développement raisonnement parallèle

La Genèse de Kafka : Une Saga d'Intégration de Données

2025-08-24
La Genèse de Kafka : Une Saga d'Intégration de Données

En 2012, LinkedIn a été confronté à un énorme défi d'intégration de données. Ses pipelines de données existants étaient inefficaces, non évolutifs et souffraient de silos de données. Pour résoudre ce problème, ils ont créé Apache Kafka. Cet article explore les origines de Kafka, révélant que sa conception a été motivée par le besoin de robustesse, d'évolutivité, de capacités en temps réel et d'intégration de données transparente. Il examine comment LinkedIn a intelligemment utilisé les schémas Avro et un registre de schémas pour garantir la cohérence et la compatibilité des données, aboutissant à une gestion efficace des données. L'article réfléchit également sur le manque de prise en charge des schémas de première classe dans Kafka et le compare à des approches plus récentes, comme la philosophie axée sur les schémas de Buf.

Mises à jour Delta de Debian pour des mises à niveau de paquets efficaces

2025-08-24

Debian utilise les mises à jour delta pour améliorer l'efficacité des mises à niveau des paquets. L'archive principale de Debian fournit des mises à jour delta pour les distributions stables, de test, instables et expérimentales. Les mises à jour de sécurité et les mises à jour backports sont également distribuées via des mises à jour delta, ce qui permet d'économiser de la bande passante et du temps.

Acronis True Image provoque une forte utilisation du processeur par Explorer.exe

2025-08-24
Acronis True Image provoque une forte utilisation du processeur par Explorer.exe

L'auteur a découvert qu'après l'installation d'Acronis True Image, le branchement ou le débranchement d'un moniteur externe entraînait une consommation importante de ressources CPU par Explorer.exe, ce qui ralentissait le système. Grâce à la traçabilité ETW et au débogage, le coupable a été identifié comme une extension shell au sein d'Acronis True Image. Cette extension appelle à plusieurs reprises CreateToolhelp32Snapshot pour récupérer une liste des processus en cours d'exécution, ce qui provoque des problèmes de performances. Acronis est conscient du problème et prévoit de le résoudre. Une solution de contournement temporaire consiste à supprimer une clé de registre ou à désinstaller le logiciel.

Développement problème de performance

Sites statiques avec Python, uv, Caddy et Docker : un workflow optimisé

2025-08-24
Sites statiques avec Python, uv, Caddy et Docker : un workflow optimisé

Cet article détaille un workflow optimisé pour construire et déployer des sites web statiques à l’aide de Python, uv, Caddy et Docker. L’auteur présente un Dockerfile utilisant uv pour la gestion des dépendances Python et Caddy pour servir les fichiers statiques. Une configuration détaillée du Caddyfile est fournie, démontrant la gestion de plusieurs domaines, des pages d’erreur personnalisées et la spécification du type de contenu. L’auteur souligne l’efficacité de cette stack et exprime des projets de simplification future.

Outil macOS : suppression en un clic des processus sur les ports 2000-6000

2025-08-24
Outil macOS : suppression en un clic des processus sur les ports 2000-6000

Cette application légère pour la barre d’état macOS surveille et gère les processus de développement s’exécutant sur les ports 2000-6000. Elle offre une détection des processus en temps réel et permet de supprimer des processus individuels ou tous à la fois. À l’aide de la commande `lsof`, elle analyse les ports toutes les 5 secondes, affichant le nombre de processus via une icône de barre d’état à code couleur (vert : 0, rouge : 1-9, orange : 10 +). Un clic sur l’icône ouvre un menu contextuel permettant de supprimer tous les processus ou des processus spécifiques. Elle utilise une stratégie de terminaison SIGTERM → SIGKILL pour un arrêt sécurisé des processus.

Développement gestion des processus

Claude Code : Simplicité et plaisir dans un agent de codage IA

2025-08-24
Claude Code : Simplicité et plaisir dans un agent de codage IA

Cet article explore Claude Code, un assistant de codage IA basé sur le modèle Claude 4, en soulignant sa remarquable simplicité et sa facilité de débogage. En analysant le fonctionnement interne de Claude Code, l’auteur révèle le secret de son succès : une architecture monofilaire, des invites et des outils simples, et l’évitement d’algorithmes complexes de recherche RAG. Claude Code réalise une édition et une génération de code efficaces et fiables grâce à une ingénierie d’invites soigneusement conçue, incluant de nombreux exemples et heuristiques, et un contrôle strict du comportement du modèle. L’article souligne également l’importance de maintenir la simplicité du code et de tirer parti de modèles plus petits et moins coûteux, fournissant des informations et des conseils précieux pour la création d’assistants de codage IA similaires.

Développement

WiX Toolset : Simplifier la création d'installateurs Windows

2025-08-24
WiX Toolset : Simplifier la création d'installateurs Windows

WiX Toolset est un outil open-source puissant pour créer des packages Windows Installer. Il utilise des concepts de build familiers, compilant et liant le code source en paquets d'installation .exe, installateurs .msi, modules de fusion .msm et correctifs .msp. WiX fonctionne avec divers systèmes de build, y compris MSBuild, et offre des extensions pour des tâches telles que l'installation de sites web IIS, la création de bases de données SQL Server et l'enregistrement d'exceptions dans le pare-feu Windows. Le bootstrapper de WiX, Burn, gère l'installation des prérequis tels que .NET Framework. Le SDK inclut des bibliothèques managées et natives pour une interaction plus facile avec Windows Installer. Notez que WiX Toolset nécessite des frais de maintenance open-source pour une fonctionnalité complète, bien que des options de support communautaire et commercial existent.

Développement

Fonction random() de CSS : dites adieu à JavaScript pour les animations aléatoires

2025-08-24
Fonction random() de CSS : dites adieu à JavaScript pour les animations aléatoires

CSS se dote d’une fonction `random()`, une révolution pour la conception web ! Générez des nombres aléatoires directement en CSS sans JavaScript pour des éléments tels que les retards d’animation, les mises en page aléatoires et les couleurs aléatoires. La fonction prend des arguments min, max et step, offrant plusieurs manières de partager l’aléatoire : en utilisant des propriétés personnalisées ou le mot clé `element-shared` pour un partage au niveau de l’élément ou global. L’article utilise des exemples tels que la création d’un champ d’étoiles, de rectangles placés aléatoirement et de piles de photos pour illustrer la puissance de `random()`, invitant les développeurs à fournir des commentaires pour façonner l’avenir de la fonctionnalité.

Développement fonction random

Construisez votre propre agent de codage : 300 lignes de code pour maîtriser l’IA

2025-08-24
Construisez votre propre agent de codage : 300 lignes de code pour maîtriser l’IA

Dans le paysage technologique en constante évolution de 2025, la construction de votre propre agent de codage est devenue une compétence essentielle pour les développeurs souhaitant obtenir un avantage concurrentiel. Geoffrey Huntley, ancien responsable technique de la productivité des développeurs chez Canva et actuel ingénieur chez Sourcegraph, montre comment construire un agent de codage basique lors d’un atelier pratique utilisant seulement 300 lignes de code. En tirant parti des jetons LLM et d’une boucle simple, l’agent interagit avec des outils tels que des lecteurs de fichiers et des exécuteurs de commandes bash pour automatiser les tâches de codage. Huntley souligne l’importance de choisir le bon modèle LLM agentique (comme Claude Sonnet) et de gérer efficacement la fenêtre de contexte afin d’éviter les goulots d’étranglement de performances. La maîtrise de cette compétence vous transforme d’un consommateur d’IA en un créateur, vous plaçant en position de réussir dans le monde technologique exigeant d’aujourd’hui.

Développement

Aventures dans l'implémentation de Flash Attention en CUDA C++

2025-08-23

Cet article détaille le parcours de l'auteur dans l'implémentation et l'optimisation de Flash Attention en CUDA C++. En commençant par une implémentation de base, l'auteur affine progressivement le noyau en utilisant des techniques telles que l'échange de mémoire partagée, le pipeline à deux étages et l'utilisation plus efficace de ldmatrix. Grâce à un profilage itératif et à l'optimisation, l'implémentation finale atteint des performances proches de la limite théorique du matériel. L'article approfondit également les subtilités de l'implémentation du softmax en ligne et de la résolution des conflits de banques de mémoire partagée, fournissant des informations précieuses aux développeurs CUDA C++.

Développement

Un jeu de société en ligne sans JavaScript : étude de cas sur l’amélioration progressive

2025-08-23

Cet article explique comment un site web de jeux de société en ligne a réussi à rendre JavaScript totalement facultatif en utilisant le rendu côté serveur, les éléments HTML standard et les paramètres d’URL. L’auteur a remplacé les mises à jour en temps réel par une actualisation automatique de la page et a utilisé des éléments HTML natifs pour les menus déroulants et les modales. Bien que cela ait augmenté la charge du serveur et la complexité du code, cette approche a amélioré la vitesse de chargement initiale de la page et la robustesse du site, offrant des avantages inattendus, comme un HTML plus sémantiquement correct. Cependant, l’auteur conclut que l’effort supplémentaire ne vaut pas la peine à moins de cibler un public très réticent à JavaScript, et prévoit de supprimer le code supplémentaire à terme.

L'application de concentration la plus difficile : aucune pitié, aucune excuse

2025-08-23
L'application de concentration la plus difficile : aucune pitié, aucune excuse

Oubliez les jolies applications de concentration ; celle-ci est brutale. Il n’y a pas de bouton de démarrage : la seule façon de l’utiliser est de ranger votre téléphone. Si vous le prenez, une sirène assourdissante retentira, effaçant tous les progrès. C’est une application payante, sans fonctionnalités gratuites, et les développeurs soutiennent que si vous ne pouvez pas vous la permettre, vous n’êtes pas leur public cible. Cette application est conçue pour être la plus difficile et la plus efficace, un système de défense contre l’économie de l’attention, forçant la discipline par des sanctions sévères en cas de distraction.

Développement application payante

Base de données Readyset : Optimisation des performances des requêtes de chemin froid avec ICP

2025-08-23
Base de données Readyset : Optimisation des performances des requêtes de chemin froid avec ICP

La base de données Readyset a réalisé une avancée significative en matière de performances des requêtes en cas de manque de cache (chemin froid), notamment pour les jointures avec des prédicats filtrant les deux côtés de la jointure. L'ancien algorithme de jointure de hachage s'est avéré inefficace en raison de la lecture excessive de données non pertinentes. En introduisant Index Condition Pushdown (ICP), Readyset combine les résultats des prédicats du côté gauche avec les prédicats du côté droit, permettant une récupération précise des données au niveau du moteur de stockage, évitant ainsi les analyses complètes de la table. Les benchmarks montrent une amélioration du débit >450x et une réduction de la latence >450x, résolvant efficacement le goulot d'étranglement des performances des requêtes de chemin froid.

Développement requêtes de jointure

ArduinoOS : Un système d'exploitation temps réel léger pour Arduino

2025-08-23
ArduinoOS : Un système d'exploitation temps réel léger pour Arduino

ArduinoOS est un système d'exploitation temps réel (RTOS) léger pour Arduino. Il offre des mécanismes de sécurité des threads utilisant des verrous pour prévenir les conflits, une gestion des exceptions avec try-catch-clearException prenant en charge l'héritage des exceptions et les types personnalisés, une gestion des pannes du noyau avec la fonction OnKernelPanic, des fonctions de gestion de la mémoire (freeMemory, freeStack), des tailles de pile de threads configurables (InitTaskWithStackSize) et le passage d'arguments (InitTaskWithArgument), ainsi qu'une période de tick du noyau configurable. Il fournit également des classes abstraites pour divers matériels, simplifiant ainsi l'interaction avec le matériel.

Développement

RFC 9839 : Naviguer dans les périls des caractères Unicode problématiques

2025-08-23
RFC 9839 : Naviguer dans les périls des caractères Unicode problématiques

Cet article technique traite des dangers cachés dans l'ensemble de caractères Unicode, en se concentrant sur le RFC 9839. Ce RFC identifie les caractères Unicode problématiques qui peuvent causer des problèmes dans les logiciels et les protocoles réseau, proposant trois sous-ensembles plus sûrs. Un exemple de nom d'utilisateur JSON illustre les problèmes potentiels que ces caractères créent. L'auteur compare le RFC 9839 à la norme PRECIS plus complète et recommande une bibliothèque Go pour la validation.

Informatique confidentielle dans la pile cloud Linux : un exercice d’équilibre

2025-08-23

Le cloud public limite intrinsèquement la confidentialité des VM. L’informatique confidentielle protège la mémoire des invités, même des hyperviseurs, ce qui répond aux préoccupations en matière de confidentialité. Cependant, la prise en charge des VM confidentielles nécessite de repenser la pile cloud Linux, en trouvant un équilibre entre performances et sécurité. Cet article explore comment l’isolation matérielle, les mécanismes de sécurité logiciels et l’informatique confidentielle impactent le processus de démarrage de la pile cloud Linux, le démarrage sécurisé, l’attestation à distance, etc. Il analyse les défis en matière d’évolutivité et de performances, tels que le chiffrement/déchiffrement DRAM, l’acceptation des pages mémoire et les limitations ASID. Bien que l’informatique confidentielle améliore la sécurité, elle augmente la dépendance au firmware et au matériel, soulignant la valeur de sécurité des architectures ouvertes comme RISC-V pour réduire la dépendance à la confiance des tiers. L’article remet en question la rentabilité de l’investissement dans l’adaptation du noyau Linux pour la communauté.

Exécution symbolique améliorée d'Echidna : une nouvelle ère pour les tests de sécurité des contrats intelligents

2025-08-23

L'équipe Echidna a intégré une exécution symbolique améliorée dans son outil de fuzzing, améliorant considérablement les capacités de test de sécurité des contrats intelligents. La nouvelle fonctionnalité comprend deux modes : le mode de vérification, utilisé pour prouver l'exactitude des tests sans état ; et le mode d'exploration, qui combine le fuzzing pour identifier les échecs d'assertion dans les scénarios impliquant des changements d'état. Cette fonctionnalité ne nécessite aucun code supplémentaire et fournit des garanties de sécurité plus robustes par rapport au fuzzing existant, montrant déjà des promesses dans les tests réels. Des défis persistent, tels que la gestion des boucles et des structures de données dynamiques, mais le potentiel est important.

Le Web Client Négligé : Pourquoi Personne ne se Soucie des Temps de Chargement Lents ?

2025-08-23

Cet article aborde la question souvent négligée des mauvaises expériences web côté client. Si les problèmes côté serveur dominent souvent les débats, l’auteur souligne la négligence constante des temps de chargement lents, des interfaces utilisateur peu ergonomiques et autres frustrations côté client. Prenant l’exemple de la récente mise à jour de Github, de nombreux utilisateurs signalent de faibles performances, mais les opérateurs de sites web privilégient les préoccupations côté serveur. L’auteur soutient que les sites web détiennent un pouvoir significatif, ne laissant aux utilisateurs que le boycott comme recours, lequel est largement inefficace. Les sites web manquent souvent de mesure efficace du taux de rebond des utilisateurs, contribuant à leur apathie envers les expériences côté client. Enfin, l’auteur admet avoir pris des décisions éditoriales susceptibles de nuire aux utilisateurs, mais les présente comme un compromis nécessaire.

Développement côté client

WebR : Exécutez R dans votre navigateur

2025-08-23

Le projet WebR compile le langage statistique R en WebAssembly, lui permettant de s'exécuter directement dans les navigateurs et Node.js sans nécessiter de serveur R. Cela permet aux utilisateurs d'exécuter du code R localement, avec la prise en charge de plusieurs packages R portés. Bien que l'API soit en développement actif et que les navigateurs mobiles puissent imposer des limitations de mémoire, WebR offre un moyen pratique d'effectuer des analyses de données directement dans le navigateur.

Développement

LibreOffice 25.8 met fin à la prise en charge de Windows 7/8 et des systèmes 32 bits

2025-08-23
LibreOffice 25.8 met fin à la prise en charge de Windows 7/8 et des systèmes 32 bits

LibreOffice 25.8 est arrivé, avec des améliorations de performances et de nouvelles fonctionnalités. Cependant, cette version marque la fin de la prise en charge de Windows 7, Windows 8/8.1 et de Windows 32 bits. Les utilisateurs de ces anciens systèmes doivent effectuer une mise à niveau pour continuer à utiliser LibreOffice. La mise à jour apporte des améliorations significatives à la suite, notamment une césure améliorée dans Writer, de nouvelles fonctions de type Excel dans Calc et des capacités d'exportation PDF améliorées.

Développement Compatibilité système

Blocage du développeur : stratégies pratiques pour surmonter les impasses de codage

2025-08-23

Les développeurs rencontrent souvent un « blocage du développeur », une incapacité frustrante à coder. Cet article explore deux scénarios courants : la paralysie de la création d’un nouveau projet parfait et la stagnation du travail sur des projets existants. Le perfectionnisme dans les nouveaux projets conduit à une sur-ingénierie, tandis que les projets existants peuvent souffrir d’un manque de compréhension, d’épuisement ou de manque de motivation. L’article propose des solutions pratiques, telles que l’apprentissage incrémental, la reconnaissance de la fatigue et les pauses, le développement incrémental, la création de prototypes, la rédaction de la documentation en premier, l’évitement de l’optimisation prématurée et les lancements fréquents et précoces. Ces stratégies aident les développeurs à surmonter les blocages de codage et à augmenter leur productivité.

Développement
1 2 18 19 20 22 24 25 26 214 215