Category: Développement

Hyperbola GNU/Linux-libre : Un système d'exploitation léger axé sur la liberté et le support à long terme

2024-12-15

Hyperbola GNU/Linux-libre est un projet de système d'exploitation communautaire visant à fournir une distribution à support long terme entièrement libre, stable, sécurisée, simple et légère. Il utilise la gestion des paquets d'Arch Linux et les correctifs de sécurité de Debian, conformément aux directives de distribution de systèmes libres GNU. Il prend en charge les architectures i686 et x86_64 et prévoit de sortir un système basé sur BSD, HyperbolaBSD. Les dernières nouvelles incluent la poursuite du support des systèmes 32 bits, l'arrêt de l'utilisation des correctifs de Debian au-delà de la version 12 et des inquiétudes exprimées concernant la déclaration de la Free Software Foundation sur l'apprentissage automatique.

Carte des projets GitHub : Visualisation de plus de 400 000 projets

2024-12-15

Le développeur Anvaka a créé une carte interactive visualisant plus de 400 000 projets GitHub à l'aide de données publiques. Le projet utilise la similarité de Jaccard pour calculer les relations entre les projets et l'algorithme de Leiden pour le clustering. Le résultat est une représentation visuellement impressionnante de l'écosystème GitHub, permettant aux utilisateurs de rechercher et d'explorer les connexions entre les projets, révélant ainsi leur complexité et leur richesse.

Développement relations entre projets

Vercel lance ƒun : un environnement d'exécution local pour les fonctions Serverless

2024-12-15

Vercel a lancé ƒun, un environnement d'exécution local pour le développement de fonctions serverless, permettant aux développeurs d'émuler l'environnement AWS Lambda localement. ƒun prend en charge plusieurs environnements d'exécution, notamment Node.js et Python, permettant des tests et un débogage rapides des fonctions serverless sans déploiement dans le cloud. Bien que ƒun s'efforce de se rapprocher de l'environnement Lambda réel, il existe quelques différences clés, notamment en matière de sandbox de processus et de permissions utilisateur.

Glisser-déposer des images dans Bevy 0.15 sur le Web

2024-12-15

Cet article explique comment intégrer les API natives du web via WASM avec Bevy 0.15 pour permettre le glisser-déposer d'images dans un navigateur web. Il détaille l'utilisation de wasm-bindgen, gloo et bevy_channel_trigger pour gérer les événements DOM en Rust, extraire les données des fichiers et les transmettre au moteur Bevy pour le chargement et le rendu des images. Le processus est similaire à l'implémentation JavaScript, mais utilise les capacités de Rust, en gérant les erreurs et les fuites de mémoire des écouteurs d'événements. Le résultat est une application web Bevy capable de charger et d'afficher des images PNG déposées.

Développement Développement Web

Indicateur de concentration pour programmeurs : Naissance de FlowLight

2024-12-15

Inspiré par un article de recherche sur l’impact des interruptions au travail, le programmeur Shae Erisson a créé un système DIY appelé FlowLight pour indiquer si un programmeur est dans un état de concentration « flux ». Le système surveille le temps d’inactivité dans l’éditeur Emacs ; lorsque le programmeur est inactif pendant une période, la LED d’une carte Adafruit MagTag change de couleur (vert pour inactif, rouge pour occupé). Erisson a également écrit un serveur HTTP en CircuitPython pour contrôler à distance la couleur de la LED et afficher l’état. Bien que le système puisse être amélioré, notamment avec un suivi plus précis du temps d’inactivité et un affichage plus attrayant, il aide efficacement les programmeurs à éviter les interruptions et à améliorer leur productivité.

Développement programmeur concentration flux

Programme WASM contourne le sandbox du système de fichiers node:wasi

2024-12-15

Ce projet présente une preuve de concept montrant comment un programme WASM peut contourner la restriction du répertoire preopens dans node:wasi pour accéder à des fichiers en dehors du sandbox. Normalement, les programmes WASM sont limités à l'accès aux répertoires préouverts. Cependant, en utilisant des liens symboliques pour remplacer des fichiers à un moment précis et en exécutant un processus externe, cette limitation peut être contournée. Ce n'est pas une vulnérabilité de sécurité pratique dans node:wasi, mais plutôt un cas limite potentiel. Le projet souligne qu'il ne faut pas compter sur node:wasi pour empêcher complètement un code malveillant d'accéder à des fichiers externes.

Développement

Optimisation du GPU MacOS : gaspillage de ressources pour la vitesse

2024-12-15

Le développeur d'Anukari a rencontré un goulot d'étranglement lors de l'optimisation des performances du GPU sous MacOS. En raison du contrôle limité du système sur les performances du GPU, le mécanisme de régulation des performances du GPU d'Apple a affiché de mauvaises performances dans le cas d'utilisation d'Anukari, entraînant des problèmes audio. Le développeur a mis en œuvre une solution de contournement : consacrer un warp de threadgroup du GPU à des calculs inutiles pour « tromper » le système et augmenter la fréquence d'horloge du GPU, réduisant ainsi considérablement la latence audio et améliorant les performances. Bien que grossière, cette méthode s'est avérée efficace pour résoudre les problèmes de performances sous MacOS. Cependant, les améliorations de performances ont varié considérablement entre les différents DAW (Ableton et GarageBand), nécessitant une optimisation supplémentaire.

Les grands modèles de langage mettront-ils fin à la programmation ?

2024-12-15

Les progrès récents des grands modèles de langage (LLM) ont suscité un débat sur l'obsolescence de la programmation. Cet article plaide contre cette vision trop optimiste. En se concentrant sur la complexité computationnelle de la synthèse de programmes, l'auteur démontre que la génération de code correct est un problème PSPACE-complet, ce qui signifie que même des entrées de taille modérée peuvent nécessiter un temps exponentiel. Bien que les LLM puissent assister les programmeurs et améliorer l'efficacité, leurs limitations inhérentes les empêchent de remplacer complètement les programmeurs humains. Le cœur de la programmation reste la résolution de problèmes et la conception de systèmes, ce qui exige l'ingéniosité et la créativité humaines.

L'informatique optimiste : une voie vers un meilleur logiciel

2024-12-15

Cet essai explore le concept d'« informatique optimiste », non pas comme un optimisme aveugle, mais comme une convergence de plusieurs idées puissantes : simplicité et facilité d'utilisation (« boot to kill »), principes local-first et autonomisation de l'utilisateur. L'auteur soutient qu'en limitant les dépendances, en simplifiant les flux de travail, en créant une expérience transparente de « ça fonctionne » et en donnant aux utilisateurs plus de contrôle, nous pouvons construire un logiciel plus fiable, plus sûr et plus durable. Cette philosophie s'applique aussi bien aux utilisateurs individuels qu'au développement de logiciels d'entreprise, visant en fin de compte un monde numérique qui respecte la vie privée et la propriété des données de l'utilisateur.

Développement informatique optimiste

Spark contre DuckDB contre Polars : comparaison des performances pour les charges de travail petites et moyennes

2024-12-15

Cet article compare les moteurs de traitement de données Spark, DuckDB et Polars, en évaluant leurs performances, leur coût et leur facilité de développement sur des ensembles de données de 10 Go et 100 Go. Les résultats montrent que pour les ensembles de données volumineux et les tâches ETL, Spark reste dominant grâce à ses capacités de calcul distribué et à son écosystème mature. DuckDB et Polars excellent dans les requêtes interactives et l'exploration de données sur des ensembles de données plus petits. L'auteur recommande une approche stratégique de mix-and-match, utilisant Spark pour les ETL, DuckDB pour les requêtes interactives et Polars pour les scénarios de niche, en adaptant le choix du moteur aux besoins spécifiques.

Moteur d'inférence LLM rapide construit à partir de zéro

2024-12-15

Cet article détaille le parcours de l'auteur dans la construction d'un moteur d'inférence LLM à partir de zéro en utilisant C++ et CUDA, sans recourir à aucune bibliothèque. Ce processus a permis une plongée profonde dans la pile complète de l'inférence LLM, des noyaux CUDA à l'architecture du modèle, montrant comment les optimisations affectent la vitesse d'inférence. L'objectif était de créer un programme capable de charger les poids de modèles open-source courants et d'effectuer une inférence mono-lot sur un seul serveur CPU+GPU, en améliorant itérativement le débit de jetons pour surpasser llama.cpp. L'article décrit méticuleusement les étapes d'optimisation sur la CPU et le GPU, notamment le multithreading, la quantification des poids, le SIMD, la fusion des noyaux et la quantification du cache KV, tout en analysant les goulots d'étranglement et les défis. Le résultat final atteint des performances proches de l'état de l'art pour l'inférence LLM locale.

Développement inférence LLM

Privilégier le code jetable aux documents de conception : une approche de développement logiciel plus efficace

2024-12-15

En développement logiciel, la méthode traditionnelle consistant à utiliser un document de conception suivi d'un développement incrémental n'est pas toujours efficace. L'auteur Doug Turnbull propose une approche de "binge coding" : implémenter rapidement un prototype à l'aide d'une PR temporaire, obtenir rapidement des retours de l'équipe, affiner la conception, puis la décomposer progressivement en PRs déployables. Cette méthode encourage l'itération rapide, la détection précoce des problèmes et considère le code lui-même comme la meilleure documentation. Même si les documents de conception restent utiles dans certaines situations, l'auteur préconise de "montrer plutôt que de raconter", en utilisant des prototypes de code pour une validation et une itération rapides afin d'obtenir un développement logiciel plus efficace.

Développement prototype de code

Le Secret des Équipes Performantes : Les Systèmes de Mémoire Transactive

2024-12-15

Cet article explore la pierre angulaire des équipes performantes : les systèmes de mémoire transactive (SMT). Il ne s’agit pas de la force de mémoire individuelle, mais de la manière dont les équipes partagent et utilisent efficacement les connaissances et les compétences de leurs membres. Trois types de mémoire d’équipe sont présentés : la mémoire de travail, la mémoire à long terme et la mémoire transactive, en mettant l’accent sur la façon dont le SMT améliore les performances de l’équipe. Le SMT comprend deux éléments : les schémas de collaboration et l’expertise individuelle. En construisant un SMT, les équipes libèrent l’intelligence collective et surmontent l’impact des changements de membres. L’article recommande des méthodes telles que le Capability Comb, le Manuel d’équipe et la pratique délibérée pour aider les équipes à établir et à améliorer rapidement leur SMT.

Composants Web Isomorphiques : Rendu Côté Serveur Simplifié

2024-12-15

La croyance de longue date selon laquelle le rendu côté serveur des composants web est difficile a été remise en question. Cet article montre comment réaliser le rendu côté serveur de composants web existants en utilisant intelligemment Happy DOM pour émuler un environnement de navigateur. Deux méthodes sont détaillées : l’utilisation de la balise `` pour un rendu direct et l’émulation du DOM pour exécuter le code du composant et générer du HTML. L’auteur souligne les avantages de cette approche : compatibilité avec tous les composants web, robustesse en cas de défaillance de JavaScript et absence de dépendance à des frameworks spécifiques. Cela résout le problème du rendu côté serveur pour les composants web, en offrant une solution flexible et robuste.

SVC16 : L'ordinateur virtuel le plus simple défie les programmeurs

2024-12-15

SVC16 est un ordinateur virtuel minimaliste 16 bits conçu pour une simplicité maximale. Il ne possède pas de registres CPU, effectuant toutes les opérations dans un seul bloc de mémoire. L'ensemble d'instructions est extrêmement simplifié, sans fonctionnalités sophistiquées comme le son ou la taille d'écran variable. Les programmeurs sont mis au défi d'écrire eux-mêmes du code machine et des compilateurs, créant des prouesses incroyables avec les outils les plus simples. Le projet fournit un émulateur pour exécuter des programmes créés par l'utilisateur et même des jeux. C'est un projet parfait pour apprendre les principes de bas niveau de l'informatique et améliorer ses compétences en programmation.

Railgun Labs dévoile Unicorn : une bibliothèque d'algorithmes Unicode haute performance

2024-12-15

Railgun Labs a publié Unicorn, une bibliothèque d'algorithmes Unicode à haute vitesse, reconnue pour sa rapidité, son intégrabilité, sa compatibilité multiplateforme et sa sécurité. Unicorn prend en charge de nombreux algorithmes Unicode, notamment la normalisation, la conversion de casse, le classement et la segmentation, et fournit des décodeurs, des encodeurs et des validateurs pour les encodages UTF-8, UTF-16 et UTF-32. La bibliothèque est entièrement personnalisable et a été testée de manière exhaustive pour garantir sa précision et sa fiabilité. Elle est conforme à la norme MISRA C :2012 et est principalement thread-safe.

Faille de sécurité dans l'accès Internet de Home Assistant

2024-12-15

Frederik Braun a tenté d'utiliser Home Assistant pour le contrôle à distance de sa maison intelligente, mais a découvert une faille de sécurité importante. Bien que Home Assistant propose l'authentification par nom d'utilisateur/mot de passe et l'authentification à deux facteurs, son incapacité à gérer les URL avec des identifiants intégrés et son obligation d'être déployé sur le chemin racine empêchent l'ajout de couches de sécurité supplémentaires, telles que l'authentification du serveur web ou des chemins obscurs. Cela laisse la sécurité de Home Assistant entièrement dépendante de ses mécanismes internes, ce qui crée un risque de sécurité. L'auteur appelle la communauté Home Assistant à améliorer la flexibilité de sa configuration de sécurité.

Développement Sécurité Accès distant

XFCE 4.20 disponible : prise en charge expérimentale de Wayland et nombreuses améliorations

2024-12-15

Après près de deux ans de développement, XFCE 4.20 est officiellement sorti ! Cette version se concentre sur la préparation de la base de code pour Wayland, offrant désormais une prise en charge expérimentale de Wayland pour la plupart des composants, bien qu'elle en soit encore à ses débuts et soit recommandée aux utilisateurs expérimentés. XFCE 4.20 propose également de nombreuses nouvelles fonctionnalités, corrections de bogues et améliorations, notamment un meilleur scaling des icônes, une vue d'icônes plus performante et un gestionnaire de fichiers Thunar amélioré. Il est important de noter que la prise en charge de Wayland est encore incomplète, certains composants et fonctionnalités n'étant pas encore portés.

Développement Environnement de bureau

Implémentation d'un système d'objets simple à partir de zéro en Ruby

2024-12-15

Cet article explique comment construire un système d'objets simple en Ruby sans utiliser de classes. L'auteur utilise intelligemment des fonctions anonymes et des tables de hachage pour implémenter des concepts clés de la POO, tels que la recherche de méthodes, l'héritage prototypal, les mixins et la métaprogrammation. En commençant par une fonction constructrice, l'article montre comment simuler des variables privées et des interfaces publiques, recréant efficacement un comportement similaire aux classes et à l'héritage. Grâce à des exemples de code clairs, les lecteurs apprennent à créer des objets, définir des méthodes, implémenter l'héritage et les mixins, et même construire une fonctionnalité de métaprogrammation rudimentaire semblable à `attr_accessor` de Ruby. C'est un guide pratique pour comprendre les fondamentaux des systèmes d'objets.

TeaVM 0.11.0 publié : nouveau backend WebAssembly

2024-12-15

TeaVM 0.11.0 est sorti, avec un nouveau backend WebAssembly comme fonctionnalité principale. L’ancien backend WebAssembly, bien que fonctionnel, a été peu adopté en raison de gains de performances insignifiants et d’une mauvaise expérience développeur. Le nouveau backend, tirant parti de la proposition WebAssembly GC, résout ces problèmes, améliorant l’interaction avec les API JS du navigateur et réduisant la taille du fichier binaire. Bien qu’il soit actuellement un peu moins riche en fonctionnalités que le backend JS, il prend déjà en charge JSO (API d’interaction Java-to-JS), dans le but d’atteindre la parité dans la prochaine version. Cette version inclut également des corrections de bogues dans l’implémentation de BitSet et ajoute la prise en charge de diverses API JS, telles que la lecture de fichiers, les événements tactiles, l’API Popover et Navigator.sendBeacon.

Développement

Adieu aux réunions infinies : une nouvelle approche du développement logiciel à haute vitesse

2024-12-15

Fatigué des réunions sans fin et des planifications interminables ? Cet article présente une méthode de développement logiciel hautement efficace : centrée sur le code, itérative et rapide. L’auteur utilise la pâtisserie comme exemple pour illustrer le concept d’obtention de la solution optimale grâce à l’expérimentation rapide, aux tests fréquents et à l’amélioration continue. Cette méthode met l’accent sur la réduction de la documentation, l’expression des idées directement dans le code, l’utilisation de données simulées et d’outils de rechargement à chaud pour accélérer le développement, et l’amélioration de la lisibilité du code grâce à un style de code concis et à des conventions de nommage. L’auteur préconise de diviser les projets en fichiers exécutables indépendamment, de minimiser les temps de redémarrage et d’utiliser les outils de langage par défaut pour le débogage. Bien que cette méthode puisse ressembler à un « laboratoire chaotique », elle permet de mener à bien des projets efficacement et d’éviter la redondance et l’inefficacité des méthodes traditionnelles.

Vim : Un langage de programmation au-delà d’un éditeur

2024-12-15

Vim est plus qu’un simple éditeur de texte ; c’est un langage pour interagir avec votre ordinateur. Sa structure de commandes concise et efficace est facile à apprendre et à retenir, et aussi facile à interpréter pour un ordinateur. Bien que Vim soit puissant en lui-même, sa force principale réside dans le fait que son mode a été intégré à presque tous les éditeurs de code courants, permettant aux développeurs de choisir flexiblement l’interface de l’éditeur de leur choix, tout en conservant le langage de commande efficace de Vim. Par conséquent, NeoVim, en tant qu’implémentation la plus complète et cohérente du langage Vim, est précieux pour fournir ce langage d’édition efficace, et pas seulement l’éditeur lui-même.

Développement éditeur

Langages de programmation : équilibre entre sécurité et puissance

2024-12-15

Cet article explore le compromis entre sécurité et puissance dans les langages de programmation. La vision traditionnelle est que les langages puissants, comme C avec sa gestion manuelle de la mémoire, sont intrinsèquement dangereux. Cependant, l'auteur soutient que cette idée est dépassée. La recherche moderne en langages de programmation montre qu'une plus grande expressivité permet à la fois la sécurité et la puissance. L'évolution des macros en Lisp, Scheme et Racket illustre cela, en démontrant comment une meilleure conception peut améliorer les capacités des macros tout en maintenant la sécurité. Le système de macros de Racket est présenté comme une meilleure pratique, combinant un code hygiénique avec des capacités de manipulation puissantes. L'article conclut que des systèmes sûrs et fiables permettent de construire des logiciels plus performants et plus fiables, et recommande des ressources pour approfondir l'apprentissage des macros Racket.

Gestion des dépendances Python : un incendie dévastateur

2024-12-15

Cet article explore en profondeur la complexité de la gestion des dépendances Python, la comparant à l'allumage d'un feu de joie dans une forêt sèche. L'auteur soutient que les dépendances Python ne se limitent pas à une simple commande `pip install` ; elles englobent les paquets de projet, les paquets système, le système d'exploitation, le matériel et l'environnement lui-même. Une bonne gestion des dépendances est essentielle pour la reproductibilité, garantissant des résultats cohérents dans différents environnements. L'article détaille le contrôle de version, l'isolation de l'environnement, les fichiers de définition, les fichiers de verrouillage et d'autres concepts clés. Il propose ensuite une comparaison exhaustive de nombreux outils, notamment pip, venv, virtualenv, pip-tools, Pipenv, Poetry, PDM, pyenv, pipx, uv, Conda, Mamba, conda-lock et Pixi, en analysant leurs forces, faiblesses et cas d'utilisation. Enfin, l'auteur fournit des recommandations d'outils en fonction de différents scénarios (privilèges administratifs, types de dépendances, systèmes d'exploitation, etc.) et envisage les tendances futures de la gestion des dépendances Python.

La bibliothèque C LLVM accélère les GPU : exécution de code C sur les GPU

2024-12-14

Le projet LLVM a publié une bibliothèque C pour GPU permettant aux développeurs d'exécuter des fonctions libc et libm directement sur le GPU dans du code C/C++. La bibliothèque prend en charge deux modes principaux : comme bibliothèque supplémentaire pour les langages de déchargement tels qu'OpenMP, CUDA ou HIP ; et en compilant directement du code C/C++ pour la cible GPU. L'article détaille l'utilisation des deux modes, y compris les options de compilation, la liaison et les builds spécifiques aux GPU AMD et NVIDIA. Cette bibliothèque permet aux développeurs de tirer parti de la puissance de traitement parallèle des GPU, améliorant ainsi considérablement les performances sans nécessiter une connaissance approfondie des modèles de programmation GPU complexes.

Buzee : Application de recherche de texte intégral open source lancée

2024-12-14

Buzee est une application de recherche de texte intégral multiplateforme construite avec Rust et Svelte. Elle permet une recherche rapide des fichiers locaux, des dossiers, de l'historique du navigateur et plus encore, en extrayant même du texte des PDF et des images à l'aide de l'OCR. Développé sur deux ans, ce projet présente une architecture robuste utilisant Tauri pour les performances, SQLite et Tantivy pour l'indexation et un front-end Svelte propre. Bien que riche en fonctionnalités, il reste encore des domaines à développer à l'avenir, et l'auteur le lance en open source pour que d'autres puissent contribuer.

Routeurs de sous-réseau Tailscale : une solution simple pour des connexions réseau complexes

2024-12-14

Tailscale nécessite généralement l'installation d'un client sur chaque appareil, mais cela n'est pas toujours possible pour les appareils intégrés ou les VPC existants. C'est là qu'interviennent les routeurs de sous-réseau. Ils permettent aux appareils de communiquer en utilisant la puissante technologie de traversée NAT de Tailscale, qu'ils exécutent Tailscale ou non. Cet article explique le fonctionnement des routeurs de sous-réseau Tailscale, notamment l'installation et la configuration sous Windows et Linux. Pour les migrations de réseaux de grande envergure ou la connexion de VPC AWS, les routeurs de sous-réseau offrent un moyen rapide et facile de commencer. L'utilisation personnelle est gratuite et ne compte pas pour les limites d'appareils.

Attaque de la chaîne d'approvisionnement affectant Ultralytics : Analyse d'un incident de sécurité PyPI

2024-12-14

Le projet Python Ultralytics a récemment subi une attaque de la chaîne d'approvisionnement. Les attaquants ont compromis les workflows GitHub Actions du projet et volé un jeton d'API PyPI, entraînant des versions contaminées : 8.3.41, 8.3.42, 8.3.45 et 8.3.46. L'attaque n'a pas exploité de faille de sécurité dans PyPI, mais ciblé le cache GitHub Actions. PyPI, utilisant la publication de confiance et les journaux de transparence Sigstore, a rapidement identifié et supprimé les logiciels malveillants. L'incident a mis en évidence des lacunes dans les configurations des jetons d'API et des environnements GitHub. L'article souligne l'importance de sécuriser les forges de logiciels et les workflows de build/publication, fournissant aux développeurs des recommandations de sécurité : utiliser des éditeurs de confiance, verrouiller les dépendances, éviter les modèles non sécurisés et activer l'authentification multifactorielle.

Rust asynchrone sur microcontrôleurs Cortex-M : une plongée en profondeur

2024-12-14

Cet article explore en détail la programmation asynchrone Rust sur les microcontrôleurs Cortex-M. Il explique le fonctionnement des Futures, de l'ordonnancement coopératif et des exécuteurs asynchrones Rust, en soulignant leur efficacité dans la gestion des ressources. Le framework innovant Embassy, conçu pour faciliter la programmation asynchrone sur les microcontrôleurs, est présenté. À travers des exemples pratiques comme un programme Blinky et un programme de bouton, l'article illustre l'application de Rust asynchrone dans les systèmes embarqués, en comparant ses avantages et ses inconvénients par rapport aux approches RTOS traditionnelles. La conclusion met en évidence les avantages significatifs de Rust asynchrone en termes d'utilisation des ressources et de concurrence.

1 2 3 4 6 8