Category: Développement

Le cauchemar non déterministe des tests d'interface utilisateur React

2025-01-31

Tester les interfaces utilisateur React présente un défi unique en raison de son mécanisme de mise à jour asynchrone. Contrairement à la manipulation directe du DOM, le moteur de rendu de React met à jour l'interface utilisateur de manière asynchrone, ce qui rend difficile pour les tests de capturer précisément le moment des mises à jour de l'état de l'interface utilisateur. Les utilitaires de test tels que `act` et `waitFor` offrent des solutions de contournement, mais se résument essentiellement à « finalement, quelque chose se produira ». De petits changements d'interface utilisateur (tels que des retards d'animation, l'ordre de mise à jour de l'état) peuvent facilement casser les tests, nécessitant des modifications importantes des suites de tests existantes. Cela entraîne des coûts de maintenance élevés pour les tests d'interface utilisateur React, un point douloureux courant pour de nombreuses équipes de développement.

Développement tests UI rendu asynchrone

Ghostty 1.1.0 publié : corrections critiques de bogues et améliorations de la qualité de vie

2025-01-31
Ghostty 1.1.0 publié : corrections critiques de bogues et améliorations de la qualité de vie

Ghostty 1.1.0, un mois de développement, intègre des contributions de 84 développeurs à travers 564 commits. Cette version se concentre sur les corrections critiques de bogues et les améliorations de la qualité de vie basées sur les retours de la version 1.0 initiale. Les améliorations clés incluent : la correction des fuites de descripteurs de fichiers ; l’ajout de décorations côté serveur (SSD) pour Linux, pour une apparence plus native dans différents environnements de bureau ; une amélioration significative de la fiabilité et de la cohérence de l’IME ; un nouveau préfixe de raccourci clavier `performable:` ; des améliorations du mélange alpha pour macOS pour des couleurs plus précises ; et des améliorations significatives du terminal rapide, avec la prise en charge des fenêtres plein écran natives. Les versions futures supprimeront l’option `gtk-adwaita` et imposeront une dépendance `libadwaita` pour une meilleure stabilité et une meilleure maintenabilité.

Développement lancement de logiciel

La Conception de Go : Un Compromis Délibéré

2025-01-31

Cet article explore la philosophie de conception du langage de programmation Go, en examinant ses forces et ses faiblesses. Né chez Google, Go visait à simplifier l'écriture et la maintenance de code de serveurs concurrents à grande échelle. L'auteur analyse les caractéristiques de Go - son API de système de fichiers simplifiée, l'absence de surcharge d'opérateurs, la gestion explicite des erreurs et l'interopérabilité avec d'autres langages - pour expliquer les compromis derrière ses choix de conception. Bien qu'il ait été critiqué pour des aspects tels que son absence passée de génériques et son support moins que stellaire pour Windows, l'auteur soutient que ce sont des compromis conscients faits pour atteindre ses objectifs de conception principaux, faisant de Go, en fin de compte, un langage efficace et facile à utiliser pour les grands projets d'ingénierie.

Hydro : Un framework de programmation distribuée haute performance en Rust

2025-01-31
Hydro : Un framework de programmation distribuée haute performance en Rust

Hydro est un framework de programmation distribuée de haut niveau pour Rust, permettant de créer des services distribués évolutifs et corrects par construction. Contrairement aux architectures traditionnelles telles que les acteurs ou les RPC, Hydro utilise des API chorégraphiques et un runtime DFIR monothread haute performance. Il simplifie le déploiement via Hydro Deploy, prenant en charge les environnements locaux et cloud. Il utilise une approche de compilation en deux étapes : il génère d'abord des plans de déploiement en local, puis compile en binaires DFIR pour chaque machine, les déployant sur le cloud en fonction du plan et des spécifications des ressources cloud. Hydro a été utilisé pour construire divers systèmes distribués haute performance, y compris des implémentations de protocoles classiques tels que le commit à deux phases et Paxos.

sixos : Un système d'exploitation basé sur Nixpkgs remplaçant systemd par s6

2025-01-31
sixos : Un système d'exploitation basé sur Nixpkgs remplaçant systemd par s6

Adam Joseph a annoncé la sortie de sixos, un nouveau système d'exploitation construit sur Nixpkgs et utilisant s6 au lieu de systemd. Rejetant la conception monolithique de systemd, sixos utilise le combinateur infuse plus simple pour la gestion des services, reflétant la gestion des paquets de Nixpkgs. Il intègre également ownerboot pour un contrôle de version complet et une gestion sécurisée du firmware, éliminant la distinction artificielle entre firmware et logiciel. Actuellement exécuté sur des postes de travail, des serveurs, des routeurs et plus encore, sixos offre une alternative légère et sécurisée.

Développement

Un gestionnaire de fenêtres X11 Ruby minimaliste : rubywm

2025-01-31
Un gestionnaire de fenêtres X11 Ruby minimaliste : rubywm

Frustré par les gestionnaires de fenêtres existants, l'auteur a créé rubywm, un gestionnaire de fenêtres minimaliste écrit en moins de 1000 lignes de code Ruby pur (incluant le pilote X11). Il prend en charge les dispositions de fenêtres en mosaïque et flottantes, mais manque de décorations de fenêtres et de fonctionnalités de glisser-déposer et de redimensionnement. Toute la gestion du clavier est déléguée à des outils externes tels que sxhkd, et la communication se fait via des événements X11 ClientMessage. Actuellement, il ne prend en charge que les écrans uniques et est expérimental, sujet aux plantages. L'objectif principal de l'auteur est l'utilisation personnelle, et non une grande base d'utilisateurs.

Développement

Déploiement local du modèle DeepSeek R1 671B paramètres

2025-01-31

Cet article décrit l'expérience de déploiement du grand modèle de langage DeepSeek R1 de 671B paramètres en local à l'aide d'Ollama. L'auteur a expérimenté deux versions quantifiées : 1,73 bit et 4 bits, nécessitant respectivement au moins 200 Go et 500 Go de mémoire. Sur une station de travail équipée de quatre RTX 4090 et de 384 Go de RAM DDR5, les résultats des tests ont montré que la version 1,73 bit offrait une vitesse de génération légèrement plus rapide, mais la version 4 bits s'est avérée plus stable et moins susceptible de générer du contenu inapproprié. L'auteur recommande d'utiliser le modèle pour des tâches plus légères, en évitant la génération de longs textes qui ralentissent considérablement la vitesse. Le déploiement a impliqué le téléchargement des fichiers du modèle, l'installation d'Ollama, la création d'un fichier de modèle et l'exécution du modèle ; il peut être nécessaire d'ajuster les paramètres du GPU et de la fenêtre de contexte pour éviter les erreurs de mémoire insuffisante.

Développement Déploiement de Modèle

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

2025-01-31
arXivLabs : Projets expérimentaux avec des collaborateurs de la communauté

arXivLabs est un framework 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 envers ces valeurs et ne travaille qu'avec des partenaires qui les respectent. Vous avez une idée de projet qui ajoutera de la valeur à la communauté arXiv ? En savoir plus sur arXivLabs.

Reaktiv : Une bibliothèque de programmation réactive pour Python

2025-01-31
Reaktiv : Une bibliothèque de programmation réactive pour Python

Reaktiv est une bibliothèque de programmation réactive pour Python, inspirée du modèle de réactivité d'Angular et offrant un support de première classe pour async/await. Elle simplifie la création et la gestion des signaux dépendants des données, en mettant à jour automatiquement les dépendances lorsque les données changent. Avec une API simple, Reaktiv prend en charge les contextes synchrones et asynchrones, dispose d'un suivi automatique des dépendances, de zéro dépendance externe et d'une gestion efficace de la mémoire, réduisant ainsi considérablement la complexité de la programmation asynchrone.

Développement programmation réactive

Le périple d'une décennie de Jane Street : de Jenga à Dune

2025-01-30
Le périple d'une décennie de Jane Street : de Jenga à Dune

Jane Street a initialement développé Jenga, un système de build OCaml, mais ses limitations ont conduit à une adoption limitée, et même à un retour en arrière sur son statut open source. Ils ont ensuite créé Jbuilder, plus simple, qui a gagné en popularité de manière inattendue grâce à sa vitesse, évoluant finalement en Dune. Après des années d'efforts, l'équipe de Jane Street a migré avec succès son système de build interne de Jenga à Dune pour ses 70 millions de lignes de code, augmentant ainsi la vitesse de build et jetant les bases du développement futur de Dune.

Développement

Distr : Simplification de la distribution de logiciels d'entreprise

2025-01-30
Distr : Simplification de la distribution de logiciels d'entreprise

Distr simplifie la distribution de logiciels d'entreprise vers des environnements contrôlés par le client ou à responsabilité partagée. Il propose une interface web intuitive pour visualiser les déploiements et les agents, un portail client à marque blanche pour le contrôle client, une API accessible via un SDK riche, et est entièrement open-source et auto-hébergeable. Le Distr Hub est distribué sous forme d'image Docker avec un exemple de déploiement Docker Compose. Une documentation complète couvre l'auto-hébergement et la construction à partir de la source, et un SDK JavaScript est disponible pour l'intégration d'applications.

Développement Distribution de logiciels

Déterrer les lignes les plus anciennes de votre dépôt Git

2025-01-30

L'auteur partage un script shell pour trouver les lignes de code les plus anciennes dans un dépôt Git. Le script utilise la commande `git blame` avec `find` et `awk` pour filtrer les fichiers non binaires et identifier les lignes avec le commit le plus ancien, révélant un aperçu de l'histoire du projet. Bien qu'actuellement limité aux commits après 2000, il offre un aperçu fascinant de l'évolution de la base de code.

Développement Historique du Code

Automatisation des workflows clients : de l’intégration à la conformité

2025-01-30

Cet article décrit trois workflows clients automatisés : l’intégration des clients (collecte de documents, vérification d’identité, configuration de compte, appels de bienvenue et supports de bienvenue automatisés), la procédure KYC (vérification de l’identité du client, évaluation des risques, collecte de documents, vérifications des antécédents et tenue de registres de conformité) et l’examen des contrats (examen du projet initial, approbation de l’équipe juridique, retours des parties prenantes, suivi des révisions, collecte de signatures électroniques et archivage des documents finaux). L’automatisation de ces processus améliore considérablement l’efficacité, réduit les risques et renforce l’expérience client.

Stats : un moniteur système macOS dans la barre de menus

2025-01-30
Stats : un moniteur système macOS dans la barre de menus

Stats est une application de surveillance système macOS résidant dans votre barre de menus. Elle fournit des informations en temps réel sur l'utilisation du CPU et du GPU, l'utilisation de la mémoire, les E/S du disque, l'activité réseau, le niveau de la batterie, et plus encore. Compatible avec macOS 10.15 (Catalina) et les versions ultérieures, Stats offre également des données de capteurs (température, tension, puissance) et la surveillance des périphériques Bluetooth. Les Mac M1 nécessitent l'activation manuelle du capteur HID pour les données des capteurs. Les Mac Intel peuvent afficher la fréquence du CPU avec Intel Power Gadget installé. Pour minimiser l'impact énergétique, les utilisateurs peuvent désactiver certains modules comme les capteurs et Bluetooth. Publié sous licence MIT, Stats accepte les contributions pour les traductions et les améliorations.

Contrôlez votre iTerm depuis les LLMs avec iterm-mcp

2025-01-30
Contrôlez votre iTerm depuis les LLMs avec iterm-mcp

iterm-mcp est un serveur de protocole de contexte de modèle (MCP) qui fournit l'accès LLM à votre session iTerm. Il offre une utilisation efficace des jetons, en ne lisant que la sortie dont le modèle a besoin ; une intégration naturelle permettant aux LLMs d'interagir avec iTerm, de répondre aux questions ou d'effectuer des tâches ; et un contrôle complet du terminal avec prise en charge REPL. Facile à installer via npx et à intégrer à des clients comme Claude Desktop, il privilégie la simplicité. Cependant, il ne possède pas de restrictions de sécurité intégrées, ce qui exige des utilisateurs qu'ils surveillent l'activité du modèle et prennent des précautions.

Développement

Audiocube : Une révolutionnaire station de travail audio numérique 3D autonome

2025-01-30
Audiocube : Une révolutionnaire station de travail audio numérique 3D autonome

Oubliez les configurations encombrées de plugins VST ! Audiocube est une station de travail audio numérique (DAW) 3D autonome, construite avec un moteur audio, physique et graphique personnalisé, offrant une profondeur et un contrôle inégalés. Elle permet la création et l'exploration audio immersives, offrant un niveau de liberté créative sans précédent par rapport à tout plugin. C'est la solution idéale pour les musiciens à la recherche d'une approche moderne de la production audio.

LibreOffice dépasse les 400 millions de téléchargements : le retour d'une suite bureautique de bureau

2025-01-30
LibreOffice dépasse les 400 millions de téléchargements : le retour d'une suite bureautique de bureau

L'histogramme des téléchargements de LibreOffice raconte une histoire fascinante. De 2011 à 2014, malgré une forte concurrence, les téléchargements ont rapidement atteint 30 millions. Une période de stagnation a suivi, les suites bureautiques de bureau semblant vouées à l'obsolescence. Cependant, une résurgence s'est produite lorsque les utilisateurs ont reconnu la valeur durable des suites bureautiques sur ordinateur, parallèlement aux options cloud. En 2019, des attaques contre le compteur de téléchargements ont provoqué une augmentation temporaire, mais la croissance s'est poursuivie. En 2024, LibreOffice a dépassé 35 millions de téléchargements, accumulant plus de 400 millions depuis 2011. Ce succès témoigne du travail des développeurs, contributeurs et utilisateurs qui ont soutenu le projet.

API Temporal : Révolutionner la gestion des dates et des heures en JavaScript

2025-01-30
API Temporal : Révolutionner la gestion des dates et des heures en JavaScript

L'API Temporal simplifie la manipulation des dates et des heures en JavaScript. Elle prend en charge différents systèmes de calendrier (comme le calendrier lunaire chinois), gère les conversions de fuseau horaire de manière transparente et offre des méthodes de comparaison intuitives. Par exemple, elle peut calculer le prochain Nouvel An chinois ou déterminer la durée jusqu'à un timestamp Unix futur. Bien que le comportement de `toLocaleString` varie légèrement selon les implémentations des navigateurs, l'API Temporal offre des opérations robustes sur les dates et les heures, ce qui en fait une aubaine pour les développeurs.

Développement Date Heure

teemoji : L'outil CLI qui ajoute des emojis à votre sortie de terminal

2025-01-30
teemoji : L'outil CLI qui ajoute des emojis à votre sortie de terminal

teemoji est un outil en ligne de commande inspiré de l'utilitaire tee classique. Il utilise un modèle Core ML pour prédire et ajouter un emoji approprié à chaque ligne de texte, ajoutant ainsi une touche amusante et contextuelle à vos workflows en ligne de commande. Les fonctionnalités incluent la prédiction d'emoji, la prise en charge des E/S standard, des options de gestion des fichiers (ajouter ou écraser) et une intégration facile dans les pipelines shell existants. L'installation est simple via Homebrew, et l'utilisation reflète la commande tee standard, avec la fonctionnalité emoji ajoutée et des options utiles.

Développement

Rust Hardcore : Un traceur de rayons sans allocation mémoire dynamique

2025-01-30

Cet article détaille une étude de cas sur la création d’une application Rust utilisant uniquement une API minimale et artificiellement contrainte (pas d’allocation mémoire dynamique). L’auteur critique le RAII (Resource Acquisition Is Initialization) pour son manque d’organisation dans la gestion des ressources et propose un « mode hardcore » : diviser le programme en un binaire `std` et une bibliothèque `#![no_std] no_alloc`, en autorisant uniquement le binaire à demander directement des ressources au système d’exploitation. En utilisant un traceur de rayons jouet comme exemple, l’auteur explique méticuleusement la gestion des tampons de pixels, la parallélisation, l’allocateur de mémoire et l’analyse de scène dans ce « mode hardcore », aboutissant finalement à un traceur de rayons sans allocation mémoire dynamique.

Développement

La résurgence de la décompilation : Retour sur 2024

2025-01-30
La résurgence de la décompilation : Retour sur 2024

2024 a marqué une résurgence significative de la recherche sur la décompilation. Les publications académiques de cette année ont représenté près de 30 % de toutes les publications de premier plan jamais réalisées dans ce domaine. Ce billet résume les progrès académiques et idéologiques de la décompilation en 2024. On a constaté une augmentation du nombre de publications académiques, dont quatre se sont concentrées sur la définition d'une « bonne » décompilation et quatre ont exploré le rôle de l'IA, notamment la prédiction de symboles et la simplification du code. Presque tous les articles comprenaient des implémentations open source, favorisant l'adoption par l'industrie. L'année a également été marquée par une tournée de la pionnière de la décompilation, le Dr Cristina Cifuentes, et un panel d'experts de renom à la conférence Recon 2024, ce qui a encore dynamisé le domaine.

Développement décompilation

Mathesar : Interface type feuille de calcul open source pour Postgres

2025-01-30
Mathesar : Interface type feuille de calcul open source pour Postgres

Mathesar est une application open source offrant une interface intuitive, semblable à un tableur, pour visualiser, éditer et interroger les données Postgres. Les utilisateurs de tous niveaux techniques peuvent collaborer directement sur leurs données. Entièrement open source et auto-hébergée, elle utilise le contrôle d'accès natif de Postgres pour la sécurité. Mathesar se caractérise par une installation facile (via Docker), une scalabilité pour gérer toutes les tailles de données et une intégration transparente avec les infrastructures existantes. Son interface conviviale simplifie les interactions avec la base de données, tandis que des fonctionnalités de sécurité robustes garantissent la protection des données.

showkey : un outil en ligne de commande Linux pour le dépannage du clavier

2025-01-30
showkey : un outil en ligne de commande Linux pour le dépannage du clavier

L'auteur a rencontré un problème étrange où sa touche "]" était pressée à répétition. Utilisant l'outil en ligne de commande Linux `showkey`, il a découvert le coupable : un deuxième clavier appuyé contre une réplique d'IMSAI 8080 sous son bureau. `showkey` affiche les codes de touche et les codes de balayage, aidant au dépannage de la saisie au clavier. L'option -a fournit les valeurs ASCII, décimales, octales et hexadécimales des touches pressées. L'article détaille l'installation, l'utilisation et les options de `showkey`, partageant l'expérience de résolution de problèmes de l'auteur.

Développement dépannage clavier

Action GitHub : Publication automatique de flux RSS sur Bluesky

2025-01-30
Action GitHub : Publication automatique de flux RSS sur Bluesky

Blueskyfeedbot est une action GitHub qui automatise la publication de flux RSS/ATOM sur Bluesky. Les utilisateurs créent un dépôt GitHub, configurent des secrets (nom d'utilisateur et mot de passe de l'application Bluesky) et configurent un fichier workflow spécifiant l'URL du flux RSS et un modèle Handlebars. Cela simplifie la syndication de contenu vers Bluesky, offrant une solution pratique pour les blogueurs et les développeurs.

Développement

Un ancien ingénieur d'EA crée Jank : un nouveau langage de programmation combinant Clojure et C++

2025-01-29
Un ancien ingénieur d'EA crée Jank : un nouveau langage de programmation combinant Clojure et C++

L'ancien ingénieur d'EA, Jeaye Wilkerson, développe Jank, un nouveau langage de programmation visant à combiner la nature interactive de Clojure avec la vitesse de compilation native et le temps d'exécution minimal de C++. Construit sur LLVM et intégrant des éléments de C++, Clojure et Rust, Jank se veut être un dialecte natif de Clojure. Le projet a suscité un intérêt important au sein de la communauté, devenant l'un des projets Clojure non publiés les plus populaires. Sa caractéristique unique est la flexibilité de basculer entre le typage dynamique et statique, en équilibrant le développement rapide et l'optimisation des performances. Jank est promis à un bel avenir comme outil puissant pour le développement de jeux, le développement d'interfaces graphiques et la science des données.

Développement

Feuille de route de l'éditeur Zed 2025 : Amélioration du mode Vim et de l'expérience utilisateur

2025-01-29
Feuille de route de l'éditeur Zed 2025 : Amélioration du mode Vim et de l'expérience utilisateur

L'équipe de l'éditeur Zed a publié sa feuille de route pour 2025, en se concentrant sur l'amélioration du mode Vim et de l'expérience utilisateur globale. Les plans incluent l'amélioration de l'expérience utilisateur en dehors de l'éditeur avec des améliorations du panneau de commandes, de la complétion des noms de fichiers et de l'historique des commandes ; l'augmentation de la compatibilité du mode Vim en résolvant les cas limites et en utilisant des tests côte à côte avec Neovim ; et l'amélioration de l'expérience multicursors pour une utilisation plus fluide et plus facile. La feuille de route vise à faire de Zed un éditeur qui combine la puissance de Vim avec une expérience utilisateur moderne.

Développement éditeur Zed

Amélioration des performances du site Web : le charme de la recherche incrémentale

2025-01-29

Un avis sur le site Web indique que JavaScript est nécessaire pour afficher le site et se vante d'une amélioration mesurable des performances du serveur grâce à la mise en œuvre de la recherche incrémentale. La mention de l'incompatibilité avec les anciens navigateurs met en évidence une mise à niveau technologique visant à améliorer l'expérience utilisateur et les performances.

1 2 173 174 175 177 179 180 181 214 215