Category: Développement

Un bug amusant dans les extensions MV3 de Chrome

2025-07-13

La transition de Google Chrome de MV2 à MV3 a supprimé la permission webRequestBlocking, cassant de nombreux bloqueurs de publicités. Cependant, l'auteur a découvert un bug curieux : en raison de l'utilisation de liaisons JavaScript dans les API d'extension Chrome, la manipulation des paramètres dans le constructeur d'événements `chrome.webRequest` a permis de contourner les vérifications d'autorisation et d'activer le blocage des publicités. Bien que ce bug ne représente pas un risque de sécurité, il a mis en évidence des problèmes potentiels cachés dans le code hérité et la possibilité d'obtenir des résultats inattendus en exploitant intelligemment des détails techniques. L'auteur a signalé le bug à Google, et il a depuis été corrigé.

Développement

BinaryRPC : Un framework RPC C++ haute performance

2025-07-12
BinaryRPC : Un framework RPC C++ haute performance

Frustré par les problèmes de performance d'un serveur Java WebSocket, un jeune ingénieur fraîchement diplômé s'est tourné vers le C++ et la bibliothèque uWebSockets pour créer BinaryRPC, un framework RPC haute performance. Inspiré par Node.js et Express.js, BinaryRPC possède un système moderne de middleware et de gestion de sessions, prenant en charge plusieurs niveaux de QoS pour des messages fiables. Désormais open source, il est bien documenté et comprend des exemples pour une adoption facile.

Développement

Chronomètre de Speedrun pour Deus Ex en D : Un voyage de piratage de jeux

2025-07-12

Frustré par le manque d'outils appropriés pour les speedruns de Deus Ex sous Linux, un speedrunner s'est lancé dans un projet pour créer un chronomètre personnalisé en D. Cet article détaille le processus, des tentatives initiales infructueuses pour trouver un drapeau de chargement, à l'apprentissage des appels système Linux (ptrace et process_vm_readv), en passant par l'ingénierie inverse pour localiser une mémoire appropriée pour l'injection de code, et enfin l'implémentation de la fonctionnalité principale du chronomètre. L'auteur partage ses expériences avec D et note les limitations telles que la gestion incomplète des exceptions et la prise en charge de l'écran de sauvegarde.

Développement

Construire un compilateur C avec "Writing a C Compiler": Un voyage pas à pas

2025-07-12
Construire un compilateur C avec

L'auteur prévoit de travailler sur le livre "Writing a C Compiler" chapitre par chapitre, en documentant sa progression dans des billets de blog. Ce livre fournit une approche étape par étape pour construire un compilateur C, aboutissant à un compilateur fonctionnel à la fin du chapitre un, avec des fonctionnalités supplémentaires ajoutées dans les chapitres suivants. Un ensemble complet de tests est inclus, permettant une vérification approfondie. L'auteur souligne l'excellente approche incrémentale du livre, la suite de tests complète et l'accent mis sur un langage du monde réel (C), le louant comme une ressource exceptionnelle pour apprendre à construire des compilateurs.

Fabrication d'une puce de qubit supraconducteur : un processus détaillé

2025-07-12
Fabrication d'une puce de qubit supraconducteur : un processus détaillé

Cet article détaille le processus de fabrication d'une puce de qubit supraconducteur, améliorant les méthodes existantes pour une meilleure reproductibilité. Le processus comprend : l'utilisation d'une tranche de silicium de 6 pouces comme substrat, le dépôt par pulvérisation cathodique d'un film de niobium de 200 nm, la lithographie optique et la gravure plasma pour la structuration du niobium, la lithographie par faisceau d'électrons pour préparer les jonctions Josephson, le dépôt par évaporation d'aluminium pour former les jonctions, et enfin le découpage et le décollage. L'article décrit également la configuration expérimentale pour la caractérisation et la mesure des qubits, incluant le système de mesure cryogénique et la chaîne de traitement du signal. Les jonctions Josephson fabriquées ont présenté des courants critiques inférieurs aux attentes, entraînant de faibles rapports EJ/EC.

Incus : Un gestionnaire de conteneurs et de machines virtuelles nouvelle génération

2025-07-12
Incus : Un gestionnaire de conteneurs et de machines virtuelles nouvelle génération

Incus est un gestionnaire de conteneurs système, de conteneurs d'applications et de machines virtuelles nouvelle génération offrant une expérience similaire à celle d'un cloud public. Mélangez et associez facilement des conteneurs et des machines virtuelles, partageant le même stockage et réseau sous-jacents. Basé sur des images, prenant en charge de nombreuses distributions Linux, Incus s'adapte aux configurations allant des ordinateurs portables aux racks de serveurs, en gérant divers types de stockage et de réseau. Gérez les instances via une ligne de commande, une API REST ou des outils tiers. Développé par bon nombre des créateurs originaux de LXD, Incus possède une conception riche en fonctionnalités, notamment la sécurité, l'évolutivité, la journalisation des événements et l'accès distant. Il prend en charge les conteneurs système, les conteneurs d'applications et les machines virtuelles.

Alerte de sécurité critique : Attaque de la chaîne d’approvisionnement sur le plugin Gravity Forms

2025-07-12
Alerte de sécurité critique : Attaque de la chaîne d’approvisionnement sur le plugin Gravity Forms

Des chercheurs en sécurité ont découvert une attaque de la chaîne d’approvisionnement ciblant le plugin Gravity Forms de WordPress, avec un code malveillant intégré à la version 2.9.12. Les attaquants ont utilisé des fonctions de porte dérobée, `update_entry_detail` et `list_sections`, pour voler des informations sur le site web, créer des comptes d’administrateur et exécuter du code arbitraire. Le code malveillant a été supprimé du téléchargement officiel et la version 2.9.13 a été publiée. Tous les utilisateurs de Gravity Forms sont invités à mettre à jour immédiatement et à vérifier leurs serveurs à la recherche de fichiers malveillants et de requêtes réseau.

Développement

Introduction aux filtres numériques avec applications audio

2025-07-12

Ce manuel complet fournit une introduction approfondie aux filtres numériques et à leurs applications dans le traitement audio. En commençant par le filtre passe-bas le plus simple, il couvre progressivement les fondements théoriques, les méthodes de conception et les techniques de mise en œuvre de différents types de filtres, notamment les filtres linéaires invariants dans le temps (LTI), les filtres à réponse impulsionnelle finie (RIF), les filtres à réponse impulsionnelle infinie (RII) et diverses structures et mises en œuvre de filtres. Le livre inclut de nombreux exemples de code Matlab et Faust, ainsi que des études de cas d'applications audio, ce qui le rend idéal pour les étudiants et les chercheurs en traitement du signal numérique et en ingénierie audio.

Développement filtres numériques

Magie noire de Python : bibliothèque de déballage de dictionnaires

2025-07-12
Magie noire de Python : bibliothèque de déballage de dictionnaires

Une bibliothèque Python nommée `dict-unpacking-at-home` fournit le déballage de dictionnaires, vous permettant de déballer les dictionnaires directement comme ceci : `{greeting, thing} = dct`. Bien que cela soit cool, l’auteur affirme qu’il ne s’agit pas d’une bibliothèque critique et que la version actuelle casse les numéros de ligne dans les traces de pile. Une correction existe, mais à quel prix… Avec près d’un million de téléchargements par mois et plus de 30 millions de téléchargements au total, de nombreuses personnes utilisent cette bibliothèque apparemment peu fiable.

Plongez au cœur du ramasse-miettes du CLR

2025-07-12
Plongez au cœur du ramasse-miettes du CLR

Cet article fournit un aperçu complet du ramasse-miettes (GC) au sein du Common Language Runtime (CLR). Le GC agit comme un gestionnaire automatique de mémoire, gérant l'allocation et la libération de mémoire pour le code managé, libérant les développeurs de la gestion manuelle de la mémoire et prévenant les problèmes tels que les fuites de mémoire. Il détaille les concepts centraux du GC, les principes de gestion de la mémoire, les processus d'allocation et de libération, les stratégies de ramassage des ordures générationnelles (Gen 0, 1, 2 et le tas d'objets volumineux), les conditions de déclenchement, les descriptions des phases et la gestion des ressources non managées. L'article explique comment le GC optimise l'utilisation de la mémoire en divisant le tas en générations en fonction de la durée de vie de l'objet, améliorant l'efficacité en se concentrant d'abord sur les objets de courte durée.

Développement Gestion de mémoire

Modulariser un monolithe avec le rechargement à chaud du code Elixir

2025-07-12

Alzo, un monolithe Elixir déployé en une instance par client, utilise le chargement à chaud du code d'Elixir et de la VM Erlang pour les fonctionnalités spécifiques aux clients. Cela évite les pannes en cascade et les tests complexes des microservices. Les applications LiveView spécifiques aux clients résident dans `/alzo/lib/clients/apps`, chargées dynamiquement au démarrage. Le code client est supprimé pendant le processus de compilation, empêchant l'application principale de dépendre des applications d'exécution. Les mises à niveau de code à chaud sont évitées pour simplifier. Cette approche fournit un développement efficace, une maintenabilité, une évolutivité et la capacité de refactoriser facilement les fonctionnalités communes des applications dynamiques vers le code base principal.

Plongeon dans le proxy inverse : défis et évolution de la gestion des connexions

2025-07-12
Plongeon dans le proxy inverse : défis et évolution de la gestion des connexions

Cet article explore en profondeur le fonctionnement interne d’un proxy inverse et les complexités de la gestion des connexions. Des architectures monofilaire aux architectures multifilaires, multiprocessus et pilotées par les événements avec le partage des sockets, les proxies inverses ont considérablement évolué pour gérer la haute concurrence. L’article détaille les avantages et les inconvénients de plusieurs techniques, telles que l’efficacité d’epoll dans le multiplexage des E/S et les défis des modèles multifilaires avec les processeurs multinœuds, et souligne les complexités supplémentaires liées à la prise en charge de TLS et à la diversité des protocoles.

Développement gestion des connexions

Jank : Interopérabilité transparente entre C++ et Clojure, réalisée par un développeur solo

2025-07-12
Jank : Interopérabilité transparente entre C++ et Clojure, réalisée par un développeur solo

Le projet Jank a fait des progrès significatifs en permettant une interopérabilité transparente entre Clojure et C++. Grâce à la gestion manuelle de la mémoire, des systèmes de types améliorés et des boîtes opaques, le développeur permet des appels directs au code C++ dans Clojure. Des exemples concrets incluent l'impression de « Bonjour le monde ! » à l'aide de flux C++ et l'analyse de fichiers JSON à l'aide de la bibliothèque JSON for Modern C++. Les travaux futurs se concentreront sur l'empaquetage, la distribution, la correction de bogues et, finalement, le lancement de la version alpha.

Développement

Contrôle Sonos simplifié pour enfant de 5 ans avec ESP32

2025-07-12
Contrôle Sonos simplifié pour enfant de 5 ans avec ESP32

Un père a créé un système de contrôle simple pour une enceinte Sonos Play:1 pour son enfant de 5 ans. Utilisant un M5Stack CardPuter v1.1 (ESP32S3) comme contrôleur et Go pour la logique back-end, l'enfant peut lire ou redémarrer sa playlist préférée en appuyant sur un bouton. Un voyant vert indique l'état de fonctionnement. Ce projet amusant et facile à utiliser met en avant la simplicité et l'interaction ludique.

Développement Projet enfant

Lutter contre les crawlers malveillants avec de faux JPEG

2025-07-12
Lutter contre les crawlers malveillants avec de faux JPEG

L'auteur a développé une petite application web appelée Spigot qui génère de fausses pages web pour confondre les crawlers malveillants. Récemment, un crawler appelé ImageSiftBot l'a attaqué agressivement à la recherche d'images, bien que Spigot n'en ait pas. Pour contrer cela, l'auteur utilise intelligemment la structure des fichiers JPEG, générant de faux JPEG remplis de données aléatoires. Cela consomme efficacement les ressources du crawler, minimisant la charge du processeur sur le serveur. L'approche est simple et efficace, nécessitant un minimum de code, et les images générées s'affichent correctement sur la plupart des navigateurs.

Développement crawlers malveillants

Un bug OpenZFS presque catastrophique met en lumière la puissance du système de types de Rust

2025-07-11
Un bug OpenZFS presque catastrophique met en lumière la puissance du système de types de Rust

Un bug subtil mais dévastateur dans la fonction d'allocation de disque principale d'OpenZFS a récemment été découvert. Ce bug, une simple erreur de type entraînant le retour d'une taille incorrecte, pouvait silencieusement écraser des données. Il a fallu près de deux jours pour le traquer. Bien que le bug n'était pas présent dans les versions publiées, cela a suscité une réflexion sur les limites de l'analyse statique en C et les avantages du système de types de Rust. La capacité de Rust à définir des types personnalisés (comme `PhysicalSize` et `AllocatedSize`) aurait empêché cela. L'auteur soutient qu'il est erroné de compter uniquement sur la perfection du programmeur ; il est essentiel de tirer parti des outils et des fonctionnalités du langage pour améliorer la qualité du code et atténuer les bugs difficiles à détecter et à fort impact.

Développement Correction de bug

Guide de style Red Hat : Plongeon en profondeur dans la terminologie

2025-07-11

Ce document décrit méticuleusement la terminologie standardisée utilisée dans la documentation technique Red Hat. Il couvre un large éventail d’aspects, des noms de logiciels (par exemple, IBM S/390, Samba) aux descriptions de sécurité (en évitant les termes vagues comme « sécurisé » et en exigeant des détails spécifiques sur les fonctionnalités de sécurité). Le guide standardise également les abréviations (par exemple, SSH, SSL), les descriptions de ligne de commande et clarifie l’utilisation appropriée de mots facilement confondus (par exemple, « since » par opposition à « because »). L’objectif général est d’assurer la cohérence et la précision, en améliorant la lisibilité et le professionnalisme.

Cactus : Framework multiplateforme pour le déploiement local de LLM

2025-07-11
Cactus : Framework multiplateforme pour le déploiement local de LLM

Cactus est un framework multiplateforme permettant le déploiement local de modèles linguistiques volumineux (LLM), de modèles linguistiques de vision (VLM) et de modèles texte-parole (TTS) dans votre application. Compatible avec Flutter et React Native, il fonctionne avec tous les modèles GGUF de Hugging Face (Qwen, Gemma, Llama, etc.), gérant les modèles de FP32 à la quantification 2 bits. Cactus fournit des appels d'outils MCP pour une fonctionnalité IA améliorée (rappels, recherche d'images, réponses aux messages), une solution de repli sur le cloud pour les tâches complexes, des modèles de chat utilisant Jinja2 et le streaming de jetons. Un code d'exemple, des benchmarks de performance sur différents appareils et un backend C++ sont fournis.

Développement

Amélioration des performances de Btrfs : Allocation de blocs avec rôles de périphériques

2025-07-11

Une amélioration significative des performances arrive pour le système de fichiers Btrfs ! Un nouveau correctif introduit une méthode d’allocation de blocs basée sur les performances utilisant des rôles de périphériques, ce qui résout le déséquilibre actuel causé par une allocation basée uniquement sur l’espace libre. En définissant cinq rôles de périphériques (metadata_only, metadata, none, data, data_only) et en priorisant les rôles ainsi que l’espace restant, le système peut intelligemment attribuer les périphériques les plus rapides aux métadonnées et les périphériques les plus lents aux données, ce qui améliore considérablement les performances de lecture/écriture. Cette amélioration évite les mesures complexes de la vitesse des périphériques, en tirant parti du format existant sur le disque pour une gestion du stockage plus intelligente et plus efficace.

Développement

diffsitter : outil de comparaison de différences de code sémantiques

2025-07-11
diffsitter : outil de comparaison de différences de code sémantiques

diffsitter est un outil de comparaison de différences de code qui génère des différences sémantiquement significatives en comparant les arbres de syntaxe abstraits (AST) des fichiers, en ignorant les différences de formatage. Il prend en charge de nombreux langages de programmation et offre des fonctionnalités telles que le filtrage de nœuds configurable, la mise en forme conviviale pour le terminal et la journalisation détaillée. Les options d'installation incluent la compilation à partir du code source, l'utilisation de binaires précompilés et les gestionnaires de paquets.

eBPF et runtimes conteneurs : connexion via CRI

2025-07-11

Cet article explore comment les projets eBPF open source se connectent aux runtimes conteneurs (CR) à l’aide de l’interface Container Runtime Interface (CRI) pour enrichir le contexte avec des informations sur les pods et les conteneurs. Il détaille le processus de connexion : localisation du fichier socket Unix, établissement d’une connexion gRPC à l’aide de l’API CRI et requête d’informations. Des exemples tirés de Tetragon, crictl et Tracee illustrent différentes approches pour se connecter au CR, notamment les chemins de socket par défaut codés en dur et les tentatives de connexion au moment de l’exécution. Enfin, il montre comment interroger les informations sur les conteneurs, telles que les chemins cgroup, à l’aide de l’API CRI, comme la méthode de Tetragon pour récupérer le chemin cgroup d’un conteneur.

Développement Runtime conteneur

Les outils d'IA ralentissent les développeurs open source expérimentés : un essai contrôlé randomisé

2025-07-11
Les outils d'IA ralentissent les développeurs open source expérimentés : un essai contrôlé randomisé

Un essai contrôlé randomisé (ECR) a étudié l'impact des outils d'IA du début 2025 sur la productivité des développeurs open source expérimentés travaillant sur leurs propres référentiels. Étonnamment, les développeurs utilisant des outils d'IA ont mis 19 % plus de temps à terminer les tâches - l'IA les a ralentis. Les chercheurs considèrent ceci comme un instantané des capacités actuelles de l'IA ; ils prévoient de poursuivre cette méthodologie pour suivre l'accélération de l'IA grâce à l'automatisation de la R&D en IA. L'étude explore les facteurs potentiels contribuant au ralentissement et examine les divergences entre cet ECR et d'autres benchmarks et données anecdotiques, soulignant la nécessité de méthodologies d'évaluation diversifiées pour évaluer de manière exhaustive les capacités de l'IA.

Développement

Nouvelle chaîne Canary d'Android : accès anticipé continu pour les développeurs

2025-07-11
Nouvelle chaîne Canary d'Android : accès anticipé continu pour les développeurs

Google remplace son programme Developer Preview par une nouvelle chaîne Canary pour Android, offrant aux développeurs des mises à jour continues tout au long de l'année. Cela permet un accès plus précoce et plus cohérent aux fonctionnalités et API expérimentales. Contrairement aux installations manuelles précédentes, les versions Canary sont distribuées par voie aérienne et fonctionnent simultanément avec le programme bêta. Bien qu'il soit destiné aux tests et non à une utilisation quotidienne, Canary fournit de précieux commentaires anticipés, permettant aux développeurs d'identifier les problèmes et de tester leurs applications en continu. La prise en charge est actuellement disponible pour les appareils Pixel et la version Canary d'Android Studio.

Popularité des bases de données sur Hacker News : ClickHouse et DuckDB en hausse

2025-07-11
Popularité des bases de données sur Hacker News : ClickHouse et DuckDB en hausse

Une analyse de 18 ans de données de Hacker News révèle la croissance fulgurante des bases de données open source ClickHouse et DuckDB, tandis que les bases de données natives du cloud voient leur popularité diminuer. PostgreSQL conserve sa forte présence, et SQLite se distingue par son fort engagement utilisateur. L'analyse utilise le nombre de titres et les mesures d'engagement (commentaires et points) pour montrer les tendances, soulignant l'essor des bases de données open source et analytiques.

Développement

Outils de codage IA : baisse de 19 % de la productivité pour les développeurs expérimentés

2025-07-11
Outils de codage IA : baisse de 19 % de la productivité pour les développeurs expérimentés

Une étude rigoureuse sur les développeurs expérimentés utilisant des outils de codage IA révèle une baisse surprenante de 19 % de la productivité, contredisant les attentes autodéclarées des développeurs d’une augmentation de 20 %. L’étude a révélé que le code généré par l’IA ne répondait souvent pas aux normes élevées des projets matures et de grande envergure, ce qui a entraîné un temps considérable consacré à la révision et à la correction de la sortie de l’IA. Cela souligne les limites des outils de codage IA actuels, suggérant que leur efficacité dépend fortement du type de projet, de l’expérience du développeur et de la maturité des outils eux-mêmes.

Développement

Blog d'algèbre linéaire graphique : une approche diagrammique de l'algèbre linéaire

2025-07-11
Blog d'algèbre linéaire graphique : une approche diagrammique de l'algèbre linéaire

Ce blog explore l'algèbre linéaire à travers une approche visuelle et diagrammique. Il explique des concepts mathématiques complexes de manière accessible, en utilisant des illustrations pour clarifier des sujets difficiles. Le contenu va des opérations de base aux concepts avancés tels que les matrices, les homomorphismes et les relations, le tout expliqué étape par étape avec des diagrammes. Le blog annonce également une école de recherche en théorie des catégories appliquée et des opportunités de recherche connexes, ce qui en fait une ressource précieuse pour les étudiants et les chercheurs intéressés par l'algèbre linéaire.

Développement mathématiques visuelles

FOKS : Accès sécurisé aux données via une hiérarchie de clés simple

2025-07-11

FOKS sécurise l'accès aux données à l'aide d'une hiérarchie de clés simple. Les clés de niveau de base incluent les clés de périphérique utilisateur, les clés de sauvegarde et les YubiKeys. Chaque utilisateur possède plusieurs clés par utilisateur (PUK) dont les secrets de graine sont chiffrés avec toutes les clés de niveau de base disponibles. La suppression d'une clé de niveau de base entraîne la rotation des PUK. Les clés d'équipe (PTK) fonctionnent de manière similaire, partagées entre les membres de l'équipe (utilisateurs ou sous-équipes) et chiffrées avec les clés des membres. Cette hiérarchie garantit que seuls les périphériques, les équipes et les utilisateurs autorisés peuvent accéder aux données.

Développement gestion des clés

Série de blogs sur les codes d'état HTTP commence par 100 Continue

2025-07-11
Série de blogs sur les codes d'état HTTP commence par 100 Continue

L'auteur prévoit d'écrire une série d'articles sur HTTP et les services web, en commençant par chaque code d'état HTTP. Le premier article sur 100 Continue a déjà été publié, avec des mises à jour hebdomadaires prévues pendant un an. C'est une façon amusante d'apprendre sur HTTP et de cultiver une habitude d'écriture régulière.

Développement Services web

Inférénce de LLM en Production : Le Guide Définitif

2025-07-11
Inférénce de LLM en Production : Le Guide Définitif

Ce manuel aborde les connaissances fragmentées concernant l'inférence de LLM en production. Il couvre les concepts clés, les métriques de performance (comme le temps jusqu'au premier jeton et les jetons par seconde), les techniques d'optimisation (batching continu, mise en cache de préfixe) et les meilleures pratiques opérationnelles. Que vous ajustiez finement un petit modèle ouvert ou que vous exécutiez des déploiements à grande échelle, ce guide vous aide à rendre l'inférence de LLM plus rapide, moins chère et plus fiable.

Développement inférence

Mode Batch pour l'API Gemini : Traitement Haut Débit

2025-07-11
Mode Batch pour l'API Gemini : Traitement Haut Débit

L'API Gemini de Google propose désormais un mode batch, un point de terminaison asynchrone idéal pour les tâches à haut débit où la latence n'est pas critique. Soumettez des tâches volumineuses, laissez le système gérer le traitement et récupérez les résultats sous 24 heures avec une réduction de 50 % par rapport aux API synchrones. Parfait pour les données préparées à l'avance ne nécessitant pas de réponse immédiate, il offre des économies de coûts, un débit accru et des appels d'API simplifiés. Reforged Labs l'utilise pour traiter d'énormes quantités de publicités vidéo, améliorant ainsi considérablement l'efficacité et réduisant les coûts. Commencez facilement avec le SDK Python Google GenAI.

Développement Traitement asynchrone
1 2 43 44 45 47 49 50 51 214 215