Category: Développement

Pirater votre horloge pour vous concentrer : un simple script bash pour une meilleure concentration

2025-05-12
Pirater votre horloge pour vous concentrer : un simple script bash pour une meilleure concentration

Frustré par les distractions constantes, l'auteur a créé un hack intelligent utilisant l'extension "Format de date du panneau" de GNOME et un simple script bash sous Ubuntu. Cela transforme l'horloge de l'ordinateur en un rappel de concentration persistant. Le script permet de définir une tâche de concentration actuelle, qui s'affiche à côté de l'heure. Cette méthode ne nécessite aucune force de volonté, tirant parti de la tendance naturelle à regarder l'horloge fréquemment pour une amélioration subtile mais efficace de la concentration sans interrompre le flux de travail.

Développement extension GNOME

Construire un ramasse-miettes à partir de zéro : un voyage de 20 ans

2025-05-12

Un programmeur ayant 20 ans d'expérience, après avoir étudié l'algorithme de ramassage-miettes Immix, a décidé d'implémenter un nouveau ramasse-miettes pour Guile Scheme. Son objectif initial était de créer une interface de gestion de la mémoire générique, mais il a fini par développer un nouveau ramasse-miettes appelé Nofl, qui utilise une table auxiliaire d'un ramasse-miettes mark-sweep pour l'allocation de pointeur bump. L'auteur partage également son expérience de soumission de ses recherches à une conférence académique et ses réflexions sur la recherche académique et l'industrie.

Développement Ramasse-miettes

toyDB : Une base de données SQL distribuée en Rust à des fins éducatives

2025-05-11
toyDB : Une base de données SQL distribuée en Rust à des fins éducatives

toyDB est une base de données SQL distribuée créée de toutes pièces en Rust dans le cadre d'un projet éducatif. Elle vise à illustrer l'architecture et les concepts sous-jacents aux bases de données SQL distribuées de manière simple et compréhensible, en prenant en charge la plupart des fonctionnalités SQL courantes, notamment les jointures, les agrégats et les transactions. Bien que les performances et l'évolutivité ne soient pas des objectifs principaux, un outil de benchmark est inclus pour évaluer les performances sous différentes charges de travail. toyDB utilise Raft pour le consensus afin de gérer un magasin clé/valeur transactionnel, avec un moteur de requête SQL construit par-dessus.

Résolution de l'équation d'Eikonal avec la méthode de balayage rapide dans JAX

2025-05-11

Cet article de blog explore la résolution de l'équation d'Eikonal, cruciale dans l'évolution des interfaces et le traitement d'images, en utilisant la méthode de balayage rapide implémentée dans JAX. Il commence par expliquer les méthodes d'ensembles de niveaux et l'équation d'Eikonal elle-même. Le cœur de l'article détaille l'algorithme de balayage rapide, couvrant la configuration de la grille, les mises à jour itératives et le schéma de différence amont de Godunov. Des implémentations de code NumPy et JAX sont fournies, avec des benchmarks démontrant l'avantage de vitesse significatif de JAX. L'auteur discute également des tentatives de parallélisation de l'algorithme et des défis rencontrés.

Scraperr : Extraction précise de données web avec XPath

2025-05-11
Scraperr : Extraction précise de données web avec XPath

Scraperr est une application d'extraction de données web auto-hébergée qui utilise les sélecteurs XPath pour une extraction précise des données. Elle offre une interface claire pour gérer les tâches d'extraction, visualiser les résultats et exporter les données dans divers formats. Les fonctionnalités incluent la gestion des files d'attente, le spidering de domaine, les en-têtes personnalisés, les téléchargements multimédias, la visualisation des résultats et les canaux de notification. N'oubliez pas de respecter robots.txt, les conditions d'utilisation et de mettre en œuvre la limitation de vitesse. Utilisez-la uniquement sur les sites web qui autorisent explicitement le scraping.

Sandbox de bibliothèques : un chemin épineux vers la sécurité

2025-05-11
Sandbox de bibliothèques : un chemin épineux vers la sécurité

Cet article explore les défis importants liés à la création de bibliothèques en sandbox. L’auteur examine la modélisation des menaces, la falsification de la mémoire, l’interopérabilité entre langages et la réutilisation du code. Même des langages comme Java ont du mal à assurer un sandboxage complet en raison de fonctionnalités telles que la réflexion, les méthodes globales et les méthodes natives. Joe-E, un langage de programmation basé sur les capacités, bien qu’il restreigne fortement les fonctionnalités de Java, offre des informations précieuses. Cependant, cette approche introduit le problème de « l’objet Dieu », qui nécessite un seul objet pour contrôler toutes les autorisations, ce qui contredit les bons principes de la POO. Le système Mojo de Chrome propose une solution de sandbox basée sur les processus, mais il est confronté à des défis tels que des API instables, des difficultés de réutilisation du code et une surcharge de performances. En fin de compte, la création de bibliothèques sécurisées en sandbox reste un problème complexe et non résolu.

Développement

Client LSP en Clojure : 200 lignes de code, interaction minimaliste avec un serveur de langage

2025-05-11

Cet article de blog détaille comment l’auteur a implémenté un client LSP minimal en moins de 200 lignes de code Clojure et l’a utilisé pour créer un linter de code en ligne de commande. Il explique l’implémentation de la couche de communication de base, de la couche JSON-RPC et de l’API client pour le protocole LSP. L’auteur discute ensuite des défis de l’utilisation de LSP en pratique, notamment la dépendance de la plupart des serveurs de langage aux notifications plutôt qu’aux requêtes pour les diagnostics, ce qui rend une simple outil en ligne de commande plus complexe que prévu. Enfin, l’auteur résume les avantages et les inconvénients de LSP et spécule sur l’avenir des serveurs de langage basés sur WASM.

Développement Serveur de langage

Les développeurs Rust pensent que nous sommes désespérés : prouvons-leur le contraire (avec des fuites de mémoire C++) !

2025-05-11
Les développeurs Rust pensent que nous sommes désespérés : prouvons-leur le contraire (avec des fuites de mémoire C++) !

Ce tutoriel vidéo remet en question de manière ludique la perception des développeurs C++ comme étant constamment aux prises avec des fuites de mémoire. Il montre, à travers un programme C++ simple, comment créer intentionnellement et ensuite suivre efficacement ces fuites à l'aide d'outils de débogage tels que `_CrtDumpMemoryLeaks`. L'auteur présente la chasse aux fuites de mémoire comme une aventure amusante, presque téméraire, fournissant finalement un guide pratique pour identifier et corriger les problèmes de mémoire en C++.

Développement

Fuites de mémoire en C++ : Montrez aux développeurs Rust qui commande !

2025-05-11
Fuites de mémoire en C++ : Montrez aux développeurs Rust qui commande !

Ce tutoriel vidéo montre comment créer et traquer intentionnellement des fuites de mémoire en C++. Alors que les développeurs Rust se moquent souvent de la gestion de la mémoire en C++, ce tutoriel explique comment utiliser _CrtDumpMemoryLeaks et la macro DEBUG_NEW pour détecter et identifier les fuites de mémoire, prouvant que les développeurs C++ peuvent gérer efficacement les problèmes de mémoire sans avoir besoin d'un vérificateur d'emprunt ou de durées de vie. En commençant par un exemple simple, le tutoriel enseigne progressivement comment utiliser les outils de débogage pour traquer les fuites de mémoire, même dans les programmes complexes.

Développement Fuites de mémoire

Application de tâches Windows native en C pur

2025-05-11
Application de tâches Windows native en C pur

Une application de tâches Windows moderne et native, construite avec C et l'API Win32. Elle permet de créer, éditer, supprimer et marquer les tâches comme terminées, avec un stockage persistant dans AppData. L'intégration à la zone de notification et l'apparence native Windows sont incluses. L'application prend en charge jusqu'à 100 tâches. Le code source est open-source et inclut des instructions de compilation.

Développement Application de Tâches

Développement Web sans Framework : Guide du JavaScript Vanilla

2025-05-11

Ce site propose un guide complet pour construire des sites web et des applications web en utilisant uniquement un éditeur, un navigateur et les standards web, sans outils de build ni frameworks. Il explore l'utilisation des Web Components comme blocs de construction fondamentaux, en tirant parti des capacités du CSS moderne et en créant des projets web et des applications monopages sans outils de build, frameworks ou logique côté serveur. Destiné aux développeurs déjà familiers avec HTML, CSS et JavaScript, ce tutoriel préconise une approche plus simple et plus facile à maintenir pour le développement web, en abordant la complexité et la surcharge de maintenance souvent associées aux frameworks modernes.

Visualisation des preuves mathématiques : informations de Lean Blueprints

2025-05-11

Lean Blueprints, un outil de planification de projet inspiré de la méthode de plans des mathématiciens pour formaliser les preuves, offre des informations uniques sur le processus de preuve. Il utilise un graphique où les nœuds représentent les définitions, les lemmes et les théorèmes, avec des couleurs indiquant leur statut (vert : prouvé, bleu : énoncé mais non prouvé, noir : non écrit). En suivant le contrôle de version des projets Lean (par exemple, la formalisation de Terrence Tao de la conjecture PFR), nous pouvons visualiser l'évolution des preuves, révélant comment les mathématiciens travaillent et fournissant des données pour la construction d'outils pour les aider. Cette visualisation offre des informations précédemment cachées sur la manière dont les preuves mathématiques sont construites.

Développement Preuve formelle

Développement d'applications iOS sur des appareils non Apple : un champ de mines juridique

2025-05-11
Développement d'applications iOS sur des appareils non Apple : un champ de mines juridique

La possibilité de créer des applications iOS sur des appareils non Apple a toujours fait débat. Cet article souligne que le principal défi est juridique et lié aux licences, et non technique. Le Contrat de licence du programme pour développeurs Apple interdit explicitement l'installation, l'utilisation ou l'exécution des SDK iOS ou d'autres logiciels Apple sur des appareils non Apple. Bien que l'affaire Oracle c. Google ait modifié le paysage des droits d'auteur concernant la rétro-ingénierie pour la compatibilité, l'auteur soutient que le déploiement d'applications créées sur des appareils non Apple directement sur l'App Store comporte des risques juridiques importants, Apple conservant le droit de résilier les comptes des développeurs contrevenants.

Démarrage Java plus rapide grâce aux améliorations du profil du cache AOT

2025-05-11

Cette amélioration réduit considérablement le temps de préchauffage des applications Java en collectant les profils d'exécution des méthodes pendant les exécutions d'entraînement de l'application et en les stockant dans le cache AOT. Au démarrage en production, le compilateur JIT peut immédiatement utiliser ces profils pour générer du code natif, éliminant ainsi l'attente de la collecte des profils et permettant un démarrage et des performances de pointe plus rapides. Cette technique ne nécessite aucune modification du code et est compatible avec les commandes de création de cache AOT existantes. Des expériences montrent une réduction de 19 % du temps de préchauffage pour un programme d'exemple simple.

Développement

GlassFlow : ETL en streaming temps réel pour ClickHouse

2025-05-11
GlassFlow : ETL en streaming temps réel pour ClickHouse

GlassFlow est un processeur de flux en temps réel conçu pour les ingénieurs de données afin de simplifier la création et la gestion des pipelines de données entre Kafka et ClickHouse. Il dispose d'une interface conviviale pour construire et gérer des pipelines de données en temps réel, avec des fonctionnalités de déduplication et de jointures temporelles intégrées. Il gère les événements en retard, assure un traitement exactement une fois, et s'adapte aux données à haut débit, offrant des résultats précis et à faible latence sans compromettre la simplicité ou les performances. L'interface web intuitive simplifie la configuration et la surveillance du pipeline, tandis que son architecture robuste garantit un traitement fiable des données. Il prend en charge le développement local et le déploiement Docker, et inclut une configuration de démonstration complète pour une prise en main rapide.

Développement traitement en temps réel

Revue de la qualité de la documentation de l'écosystème Rust : réussites et ratés

2025-05-11
Revue de la qualité de la documentation de l'écosystème Rust : réussites et ratés

Cet article fournit une évaluation approfondie de la qualité de la documentation de nombreux crates populaires de l'écosystème Rust. Il couvre divers domaines, notamment la génération de nombres aléatoires, la gestion du temps, les frameworks web, les moteurs de jeu et la gestion des erreurs. L'auteur évalue la documentation de chaque crate en fonction de quatre quadrants (explications, guides pratiques, tutoriels, référence) et met en évidence d'excellents exemples (comme la documentation complète et la justification du design de `jiff`) et les points à améliorer (documentation incomplète ou manque d'orientation pratique dans certains crates). Cette revue offre des informations précieuses aux développeurs Rust et indique les pistes d'amélioration de la documentation de l'écosystème Rust.

Développement

Roame recrute : Ingénieur Full-Stack senior pour révolutionner la réservation de voyages avec l'IA

2025-05-11
Roame recrute : Ingénieur Full-Stack senior pour révolutionner la réservation de voyages avec l'IA

Roame, un moteur de recherche de vols utilisant les points et les miles de cartes de crédit, recherche un ingénieur Full-Stack senior. Soutenu par des investisseurs de premier plan, Roame permet à des millions d'utilisateurs de maximiser la valeur de leurs points. Le candidat idéal possède 4 ans d'expérience minimum, maîtrise Next.js, Firebase et Go, et possède une solide compréhension des pipelines d'IA. Le poste, basé à San Francisco, nécessite un travail en présentiel. Roame offre un salaire compétitif, des actions, des avantages sociaux et une culture qui met l'accent sur la collaboration et l'itération rapide.

Développement Réservation de Voyages

Solid Queue de Rails 8 : Plongeon au cœur du nouveau processeur de tâches en arrière-plan (Partie 1)

2025-05-11
Solid Queue de Rails 8 : Plongeon au cœur du nouveau processeur de tâches en arrière-plan (Partie 1)

Rails 8 introduit Solid Queue, une nouvelle bibliothèque pour le traitement des tâches en arrière-plan qui élimine le besoin de services externes tels que Redis. Cet article explore en profondeur l'architecture de Solid Queue, expliquant l'interaction entre les Jobs et les Workers et comment les tables de la base de données (solid_queue_jobs, solid_queue_ready_executions, solid_queue_claimed_executions, solid_queue_processes) gèrent l'enqueuement, l'exécution et la surveillance des tâches. Solid Queue atteint des performances élevées et une fiabilité accrue grâce à une conception intelligente de la base de données et à l'utilisation des instructions FOR UPDATE SKIP LOCKED, en utilisant un processus superviseur pour éviter la perte de tâches. L'article souligne également les limitations de SQLite et les capacités de surveillance des performances d'AppSignal, promettant une exploration plus approfondie dans la deuxième partie.

Développement Tâches en arrière-plan

arXivLabs : Projets expérimentaux avec des collaborateurs de la communauté

2025-05-11
arXivLabs : Projets expérimentaux avec des collaborateurs de la communauté

arXivLabs est un cadre qui permet aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur notre site web. Les individus et les organisations qui travaillent avec arXivLabs ont adopté et accepté nos valeurs d'ouverture, de communauté, d'excellence et de confidentialité des données utilisateur. arXiv s'engage à respecter ces valeurs et ne travaille qu'avec des partenaires qui les partagent. Vous avez une idée de projet qui ajoutera de la valeur à la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

Sortie de Lazarus IDE 4.0 !

2025-05-11

L'équipe Lazarus est ravie d'annoncer la sortie de Lazarus 4.0 ! Construite avec FPC 3.2.2, cette version inclut de nombreuses améliorations et corrections de bogues. Les téléchargements sont disponibles sur SourceForge (et miroirs) pour Windows, Linux et macOS. La configuration minimale requise a été mise à jour ; consultez le site Web officiel pour plus de détails. Le code source est également disponible sur Gitlab pour les contributions de la communauté.

Développement

Exécuter NetBSD sur un ancien i486SX : un émulateur FPU logiciel voit le jour

2025-05-11
Exécuter NetBSD sur un ancien i486SX : un émulateur FPU logiciel voit le jour

Un développeur a réussi à émuler une unité de traitement arithmétique en virgule flottante (FPU) manquante sur un ancien ordinateur portable i486SX. Après des mois de travail, il a réussi à implémenter un émulateur FPU logiciel sur NetBSD 10 et a rendu le projet open source. Ce projet redonne vie aux anciennes machines i486SX et offre de nouvelles possibilités aux passionnés de rétro-informatique. Il a été testé avec succès sur la machine virtuelle 86Box.

Développement

Écrire un pilote ASUS ACPI WMI pour le contrôle du ventilateur sous OpenBSD

2025-05-11

L'auteur détaille son expérience en écrivant un pilote ASUS ACPI WMI pour OpenBSD afin de contrôler la vitesse du ventilateur de son ordinateur portable. Le processus a impliqué de surmonter les défis liés à l'ordre des octets ACPI et WMI, en utilisant acpidump et iasl pour analyser le code ACPI du système, et finalement en réussissant à contrôler la vitesse du ventilateur. L'auteur compare les approches de développement de pilotes sous Linux et FreeBSD, soulignant l'organisation pratique du code d'OpenBSD.

Développement Développement de Pilotes

Un ingénieur Google de longue date quitte l'entreprise après 19 ans, réfléchissant sur l'évolution de Go

2025-05-11

Un ingénieur senior qui a passé 19 ans chez Google, fortement impliqué dans le développement du langage de programmation Go, a quitté l'entreprise. L'article retrace son parcours de 14 ans avec Go, de sa contribution au front-end du compilateur à la conception de fonctionnalités du langage telles que les génériques, et son influence sur l'orientation générale du projet. L'auteur estime que Go a encore une marge de progression importante et espère contribuer à son développement futur.

Développement

Hachage adaptatif dans SBCL : rendre les tables de hachage plus rapides et plus robustes

2025-05-11

Une présentation à l'ELS 2024 a porté sur le hachage adaptatif, visant à rendre les tables de hachage à usage général plus rapides et plus robustes. La théorie traditionnelle des tables de hachage se préoccupe principalement des coûts asymptotiques du pire des cas, négligeant l'impact des facteurs constants sur les performances réelles. Cette recherche introduit une approche adaptative en ligne, ajustant la fonction de hachage en fonction de la distribution réelle des clés pour réduire les collisions et améliorer l'utilisation du cache. Des expériences montrent des améliorations significatives en réduisant les comparaisons attendues et en accélérant les opérations PUT, en particulier avec des distributions de clés spécifiques. Les tables de hachage intégrées de SBCL utilisent désormais cette technique, commutant dynamiquement les fonctions de hachage (y compris la recherche linéaire, le hachage par décalage de bits et MurmurHash) en fonction des nombres de collisions et de la taille de la table de hachage. Pour les clés composées telles que les chaînes et les listes, une stratégie de troncature est utilisée, ajustant dynamiquement la longueur de troncature lorsque trop de collisions se produisent. Cette amélioration améliore la vitesse des tables de hachage SBCL dans les cas courants et la robustesse dans d'autres.

Développement hachage adaptatif

L'essor et la chute (et l'essor ?) de Visual Basic

2025-05-11
L'essor et la chute (et l'essor ?) de Visual Basic

En 1988, Alan Cooper présenta à Bill Gates Tripod, une boîte à outils révolutionnaire pour la création d'interfaces graphiques sous Windows. Son interface intuitive de glisser-déposer permettait aux utilisateurs de créer des shells personnalisés sans connaissance approfondie du système d'exploitation. Ceci a évolué vers Visual Basic, un langage de programmation visuel révolutionnaire qui a permis à d'innombrables développeurs, en particulier ceux qui passaient des mainframes, de créer facilement des applications. La simplicité d'utilisation de VB a démocratisé la programmation, la rendant accessible à des millions de personnes. Cependant, le passage de Microsoft à .NET et VB.NET, bien qu'ajoutant des fonctionnalités, a sacrifié la simplicité qui a fait le succès de VB, conduisant de nombreux développeurs à l'abandonner. Cette histoire souligne la tension entre l'innovation et les décisions commerciales, et l'impact durable d'un outil apparemment simple.

Développement

Catastrophe de performance d'OpenSSL 3.0 et l'avenir de l'écosystème des bibliothèques SSL

2025-05-11
Catastrophe de performance d'OpenSSL 3.0 et l'avenir de l'écosystème des bibliothèques SSL

L'équipe HAProxy se penche sur le désastre de performance causé par OpenSSL 3.0 et son impact sur l'écosystème des bibliothèques SSL. La sortie d'OpenSSL 3.0 a entraîné une dégradation significative des performances dans les environnements multithreadés, posant des défis à de nombreux projets qui dépendent d'OpenSSL. L'article compare des solutions alternatives telles que BoringSSL, LibreSSL, WolfSSL et AWS-LC, en analysant leurs compromis en termes de fonctionnalité, de performance et de maintenance. Les tests de performance révèlent qu'OpenSSL 3.0 est significativement moins performant que les autres bibliothèques dans les scénarios multithreadés, obligeant les organisations à provisionner plus de matériel pour maintenir le débit. L'article explore également le protocole QUIC et sa relation avec les bibliothèques SSL, ainsi que la gestion de l'API QUIC par l'équipe OpenSSL. En fin de compte, l'article recommande aux utilisateurs de HAProxy de choisir des bibliothèques SSL appropriées en fonction de leurs besoins, telles que AWS-LC ou WolfSSL, et appelle la communauté à collaborer pour résoudre les problèmes de performance d'OpenSSL 3.0.

Développement Bibliothèques SSL

Les origines mal comprises de la POO : éclaircissements

2025-05-10

Cet article réfute l’idée reçue selon laquelle Alan Kay aurait inventé la programmation orientée objet (POO) et le concept d’objet. En réalité, le langage Simula a été un précurseur important de la POO, un fait reconnu par l’équipe Smalltalk. Bien que Kay ait inventé le terme « objets », il l’a regretté par la suite, soulignant que la transmission de messages était l’idée centrale de la POO. L’article explore plus avant les contributions uniques de Smalltalk à la POO, notamment son principe de conception consistant à traiter tout comme un objet et son mécanisme innovant de gestion des messages. L’auteur soutient que l’évolution de la POO n’a pas été un événement unique, mais une confluence d’idées et de besoins, différents développeurs comprenant et appliquant la POO de différentes manières dans divers contextes.

Développement

LoopMix128 : PRNG rapide et robuste avec une période de 2^128

2025-05-10
LoopMix128 : PRNG rapide et robuste avec une période de 2^128

LoopMix128 est un générateur de nombres pseudo-aléatoires (PRNG) extrêmement rapide avec une période garantie de 2^128, une injectivité prouvée et des passages réussis dans BigCrush et PractRand (32 To). Conçu pour les applications non cryptographiques où la vitesse et la qualité statistique sont importantes, il surpasse largement les générateurs de bibliothèques standard et rivalise ou dépasse les PRNG modernes à haute vitesse comme wyrand et xoroshiro128++. Ses performances sont soutenues par des tests rigoureux, réussissant les tests BigCrush et PractRand sans anomalie, et disposant d'un état injectif prouvé de 192 bits permettant des flux parallèles.

Dessiner le triangle de Sierpiński avec des opérations bit à bit : un hack époustouflant de manipulation de bits

2025-05-10
Dessiner le triangle de Sierpiński avec des opérations bit à bit : un hack époustouflant de manipulation de bits

Cet article dévoile une astuce époustouflante de manipulation de bits : générer le célèbre fractal du triangle de Sierpiński en utilisant uniquement une simple opération bit à bit ET (&). L’auteur décompose méticuleusement l’opération bit à bit, révélant les principes mathématiques sous-jacents. Il montre comment la nature fractale inhérente du comptage binaire et la suppression itérative de blocs, obtenue par la manipulation de bits, génèrent le triangle de Sierpiński classique. Cette technique exploite intelligemment les capacités d’opération binaire des ordinateurs, simplifiant le processus apparemment complexe de génération d’images en un code concis, résultant en une solution étonnamment élégante.

Développement

arXivLabs : Expérimentation et collaboration communautaire pour de nouvelles fonctionnalités

2025-05-10
arXivLabs : Expérimentation et collaboration communautaire pour de nouvelles fonctionnalités

arXivLabs est un cadre permettant aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur notre site web. Les individus et les organisations qui travaillent avec arXivLabs ont adopté et accepté nos valeurs d'ouverture, de communauté, d'excellence et de confidentialité des données utilisateur. arXiv s'engage à respecter ces valeurs et ne travaille qu'avec des partenaires qui y adhèrent. Vous avez une idée de projet qui ajoutera de la valeur à la communauté arXiv ? En savoir plus sur arXivLabs.

Développement
1 2 91 92 93 95 97 98 99 214 215