Category: Développement

Bonjour le monde ! : Réduit à 167 octets

2025-01-02
Bonjour le monde ! : Réduit à 167 octets

Cet article documente le parcours de l'auteur pour créer le plus petit programme « Bonjour le monde » possible. Initialement en utilisant Rust, l'auteur a découvert que minimiser la taille du binaire nécessitait une plongée profonde dans la programmation de bas niveau. Finalement, le langage assembleur a été choisi, et grâce à des techniques astucieuses telles que la suppression des symboles de débogage et la création manuelle de l'en-tête ELF, un programme « Bonjour le monde » 64 bits pour Linux a été réduit à 167 octets impressionnants ! L'article examine en détail l'expansion de la taille du fichier pendant le processus de liaison et les détails du format de fichier ELF, ce qui en fait une ressource extrêmement précieuse pour les développeurs de systèmes de bas niveau.

Développement programme minimal

Règles pour Rédiger des Tutoriels Logiciels Exceptionnels

2025-01-02
Règles pour Rédiger des Tutoriels Logiciels Exceptionnels

Cet article de blog décrit les règles pour créer des tutoriels logiciels exceptionnels. Il souligne l’importance d’éviter le jargon, d’énoncer clairement les objectifs, de fournir des extraits de code copiables et collables, de maintenir un état de code fonctionnel et de minimiser les dépendances. L’auteur utilise des exemples contrastés pour illustrer les différences entre les bons et les mauvais tutoriels, en proposant des améliorations pratiques telles que l’utilisation d’indicateurs de ligne de commande longs, la séparation des valeurs définies par l’utilisateur de la logique réutilisable et l’utilisation de titres cohérents et descriptifs. Le but ultime est de créer des tutoriels faciles à comprendre et à suivre, conviviaux pour les débutants.

Développement tutoriels logiciels

Notion : Votre espace de travail tout-en-un

2025-01-02
Notion : Votre espace de travail tout-en-un

Notion est un espace de travail tout-en-un qui combine notes, gestion de tâches, wikis et bases de données sur une seule plateforme. Reconnu pour sa flexibilité et sa personnalisation, Notion permet aux utilisateurs de créer des workflows et des bases de connaissances personnalisées. Que vous soyez étudiant, freelance ou membre d'une équipe, Notion vous aide à organiser vos informations et à augmenter votre productivité. Ses puissantes fonctionnalités de base de données vous permettent de gérer tout, des simples listes de tâches à la gestion de projets complexes.

Développement

Essai de 7 jours : Calendrier IA personnalisé avec intégration ChatGPT

2025-01-02

Un calendrier IA personnalisé intégrant ChatGPT recherche 20 testeurs pour un essai de 7 jours (minimum 3 jours). Cet outil aide à planifier les tâches à l’avance, en fournissant des réponses personnalisées basées sur l’IA le jour prévu pour stimuler la créativité et surmonter les obstacles. Les utilisateurs peuvent affiner les réponses de l’IA via une fonction « Démarrer le chat ». L’essai est limité à 10 messages par session et 100 mots par message utilisateur. Ajoutez le lien à vos favoris ; l’invitation Discord est à usage unique. Les commentaires sur les fonctionnalités et l’interface utilisateur sont les bienvenus. Les faux e-mails sont acceptés.

Développement Calendrier IA

Internes de commutation de contexte Linux : état du processus et mémoire

2025-01-02
Internes de commutation de contexte Linux : état du processus et mémoire

Cet article explore en détail la manière dont le noyau Linux représente les processus et leurs états, en se concentrant sur les structures de données clés : task_struct et mm_struct. task_struct gère l’état d’exécution, notamment l’état du processus, le suivi du temps CPU et les informations d’ordonnancement. mm_struct gère l’état de la mémoire, comprenant les tables de pages, les limites des segments mémoire et les détails spécifiques à l’architecture. L’article explique minutieusement les champs de ces structures et leurs rôles dans la commutation de contexte, offrant une compréhension approfondie du fonctionnement interne du noyau Linux.

Connet : Un proxy inverse P2P avec traversal NAT

2025-01-02
Connet : Un proxy inverse P2P avec traversal NAT

Connet est un proxy inverse peer-to-peer pour le traversal NAT, inspiré par ngrok, frp et rathole. Il permet d'exposer des services locaux à d'autres appareils sur internet sans avoir besoin d'une adresse IP publique. Contrairement à ses prédécesseurs, les clients Connet s'exécutent à la fois sur le fournisseur de service (destination) et sur le demandeur de service (source), garantissant une communication privée et efficace. Actuellement en version alpha, Connet prend en charge les connexions directes et les connexions via un serveur relais, en chiffrant toutes les communications avec TLS.

Développement proxy inverse traversal NAT

Des pics de latence Wifi mystérieux résolus : c’était Qt5 !

2025-01-02

Pendant huit mois, l’auteur a lutté contre des pics de latence Wifi intermittents de plus de 2000 ms, rendant les jeux et les appels vidéo impossibles. Nouveaux adaptateurs réseau, réinstallations du système d’exploitation : rien n’a fonctionné. Le coupable ? MediBang Paint Pro, utilisant Qt5 (<5.14). Son QNetworkAccessManager vérifie constamment les modifications de l’interface Wifi, provoquant une latence massive. La solution ? Définir la variable d’environnement QT_BEARER_POLL_TIMEOUT sur -1.

Postgres 18 intégrera la prise en charge d'UUIDv7 : fin des problèmes de tri des ID dans les tests

2025-01-02

PostgreSQL intégrera la prise en charge d'UUIDv7 dans la version 18. Cette méthode améliorée de génération d'UUID conserve les avantages aléatoires d'UUIDv4 tout en garantissant des ID croissant de manière monotone au sein d'un seul backend Postgres. Ceci est réalisé en incorporant un horodatage et un compteur de 12 bits sub-millisecondes. Les tests sont simplifiés, car les données de test sont automatiquement triées, éliminant le besoin de tri manuel et améliorant l'efficacité et la fiabilité des tests. Bien que la monotonicité ne soit pas garantie entre les backends, elle est suffisante pour la plupart des scénarios de test. Cette amélioration devrait être lancée fin 2025 avec PostgreSQL 18.

Développement

HtmlSlice : Fragments HTML réutilisables pour Ruby

2025-01-02
HtmlSlice : Fragments HTML réutilisables pour Ruby

HtmlSlice est une gemme Ruby permettant aux classes Ruby de générer dynamiquement des fragments HTML réutilisables. Elle résout les limitations des générateurs HTML existants, tels que les problèmes d'étendue d'instance de Markaby. HtmlSlice prend en charge un large éventail de balises HTML, y compris les balises vides, et échappe en toute sécurité le contenu HTML pour éviter les vulnérabilités XSS. Elle est légère et facile à utiliser, adaptée à la génération de HTML d'applications complètes ou simplement de parties HTML. L'intégration avec Rails est également démontrée.

Développement gemme

Outil de build Mill JVM : fichiers JAR d’assemblage directement exécutables

2025-01-02

L’outil de build Mill JVM crée des fichiers JAR d’assemblage directement exécutables, éliminant ainsi le besoin de la commande `java -jar`. Ceci est réalisé en préfixant un script shell au fichier JAR, qui appelle ensuite l’environnement d’exécution Java. Ce script est intelligemment conçu pour être compatible avec les systèmes Unix et Windows, permettant une exécution multiplateforme. L’article détaille le fonctionnement, en tirant parti de la nature des fichiers ZIP pour concaténer un script de lancement avec le contenu du JAR afin d’obtenir une exécution transparente. Cela améliore considérablement l’intégration des programmes Java dans les flux de travail en ligne de commande.

Développement outil de build

FineCodeX : Une application nécessitant JavaScript

2025-01-02

FineCodeX est une application qui nécessite l'activation de JavaScript pour fonctionner correctement. Si JavaScript est désactivé dans votre navigateur ou si votre appareil ne le prend pas en charge, vous ne pourrez pas utiliser FineCodeX. Assurez-vous que JavaScript est activé dans votre navigateur pour une expérience optimale.

Développement

Ray Tracing en un week-end : du zéro à des images époustouflantes

2025-01-02

Ce tutoriel vous apprend à écrire un traceur de rayons en un week-end en utilisant C++. En commençant par la sortie d’images PPM de base, il introduit progressivement des concepts tels que les rayons, les caméras, les sphères et les matériaux, aboutissant à un rendu capable de produire des images anti-crénelées avec des matériaux diffus et métalliques. Le tutoriel couvre les mathématiques vectorielles, l’intersection rayon-sphère, les calculs de normales de surface, l’abstraction des matériaux et la profondeur de champ, en fournissant des exemples de code clairs et de beaux rendus. Même sans expérience préalable en programmation, vous pouvez suivre les étapes et construire votre propre traceur de rayons.

Développement

Émulation de l'instruction FMAdd : Plongeon en profondeur dans les flottants 32 bits

2025-01-02

Cet article explore l’émulation de l’instruction FMAdd (fused multiply-add) sur un matériel ne la supportant pas nativement, en se concentrant plus particulièrement sur une implémentation SIMD de flottants 32 bits. Il explique le fonctionnement de FMAdd et comment éviter les erreurs de double arrondissement inhérentes aux calculs intermédiaires en virgule flottante. L’auteur détaille une technique astucieuse utilisant l’« arrondi à l’impair » et la précision supplémentaire des flottants double précision pour éliminer les erreurs d’arrondi, obtenant ainsi des résultats FMAdd précis. L’article aborde également brièvement le calcul de résultats d’addition précis et des termes d’erreur, et promet un suivi sur la gestion des flottants 64 bits.

Cadre de carrière d'ingénierie de Dropbox : une plongée en profondeur

2025-01-02

Dropbox a dévoilé son cadre de carrière d'ingénierie, un guide conçu non pas comme une liste de contrôle de promotion, mais comme un outil pour aider les ingénieurs à comprendre les responsabilités et l'impact à chaque niveau (par exemple, ingénieur logiciel IC1 à IC7). Il définit les responsabilités principales et les compétences techniques, en mettant l'accent sur l'impact commercial comme métrique principale. Chaque niveau décrit les comportements attendus pour les piliers Résultats, Orientation, Talents et Culture. Les ingénieurs travaillent avec leurs managers pour définir des objectifs trimestriels, en utilisant le cadre pour guider leur développement et créer un impact durable.

Développement cadre de carrière

mitmproxy2swagger : Ingénierie inverse automatique des API REST

2025-01-02
mitmproxy2swagger : Ingénierie inverse automatique des API REST

mitmproxy2swagger est un outil puissant qui convertit automatiquement le trafic capturé par mitmproxy en spécifications OpenAPI 3.0. Cela vous permet de réaliser une ingénierie inverse automatique des API REST en exécutant simplement vos applications et en capturant le trafic. Il prend en charge les fichiers de flux mitmproxy et les fichiers HAR exportés depuis les outils de développement du navigateur. Pour l'utiliser, capturez le trafic avec mitmproxy, enregistrez-le sous forme de fichier, puis exécutez mitmproxy2swagger en spécifiant le fichier d'entrée, le fichier de sortie et le préfixe de l'API. La première exécution génère un schéma initial qui nécessite une édition manuelle pour supprimer les chemins indésirables. Une deuxième exécution génère la spécification OpenAPI complète basée sur le schéma édité, en incluant éventuellement des données d'exemple.

Développement ingénierie inverse d'API

Zasper : Un IDE surpuissant pour la science des données

2025-01-02
Zasper : Un IDE surpuissant pour la science des données

Zasper est un nouvel IDE conçu pour la science des données, offrant une grande concurrence, une empreinte mémoire minimale et une vitesse exceptionnelle. Il est parfaitement adapté aux applications de données de type REPL, les notebooks Jupyter en étant un exemple. Actuellement, Zasper est entièrement compatible avec Mac et dispose d'un support limité sous Linux. Les benchmarks montrent qu'il utilise 75 % moins de RAM et de CPU que JupyterLab. Créé par Prasun Anand, il vise à être une solution gratuite et open source fonctionnant en local, maximisant la puissance des ordinateurs modernes.

Développement

Autodesk supprime les anciens messages de son forum : Révolte des développeurs

2025-01-02

L'annonce d'Autodesk d'archiver (et de supprimer de fait) le contenu de son forum datant de plus de 10 ans a suscité l'indignation au sein de sa communauté de développeurs. De précieux exemples de code, des solutions et des années d'expertise partagée sont sur le point de disparaître, laissant les développeurs qui dépendent de cette ressource face à des pertes considérables. Si Autodesk invoque l'amélioration de la recherche et de l'expérience utilisateur, les développeurs dénoncent cette décision comme « monumentalement stupide », accusant l'entreprise de détruire le savoir communautaire et de nuire à ses relations à long terme. Beaucoup migrent vers des plateformes alternatives telles que TheSwamp et GitHub.

Kotaemon : Outil RAG open source pour discuter avec vos documents

2025-01-02
Kotaemon : Outil RAG open source pour discuter avec vos documents

Kotaemon est un outil open source basé sur la génération augmentée par la récupération (RAG) qui vous permet de discuter avec vos propres documents. Il dispose d'une interface propre et conviviale, prenant en charge divers grands modèles de langage (LLM) tels qu'OpenAI, Azure OpenAI et les LLM locaux. Que vous soyez un utilisateur final effectuant des QA de documents ou un développeur construisant votre propre pipeline RAG, Kotaemon fournit des outils pratiques et une interface utilisateur personnalisable. Il prend en charge plusieurs types de fichiers et offre des fonctionnalités avancées telles que la QA multimodale, le raisonnement complexe et des paramètres configurables.

Développement

Mercure : Une solution de communication en temps réel rapide et fiable

2025-01-02
Mercure : Une solution de communication en temps réel rapide et fiable

Mercure est une solution ouverte, facile, rapide, fiable et économe en énergie pour pousser les mises à jour de données vers les navigateurs Web et autres clients HTTP. Elle est idéale pour publier des mises à jour asynchrones et en temps réel des ressources servies via des API Web, alimentant les applications Web et mobiles réactives. Le protocole et une implémentation Go prête pour la production, ainsi que des bibliothèques et une image Docker, sont disponibles sur GitHub. Une version gérée et hautement évolutive est également proposée sur Mercure.rocks.

Développement API Web

Les blogs pourrissent, les wikis attendent : Le voyage de migration d'un développeur

2025-01-02

Un développeur a écrit sur son site web que les blogs sont comme des produits obsolètes, destinés à pourrir ; tandis que les wikis sont comme un abîme sans fin, attendant d'être exploré et écrit. Il migre son site vers un nouveau système wiki, partageant ses réflexions sur les blogs versus les wikis et son parcours de construction d'un nouveau site. Il soutient que les wikis reflètent mieux la nature dynamique et communautaire du contenu, tandis que les blogs ressemblent à une vitrine statique. Il invite tout le monde à rejoindre son nouveau wiki, créant collaborativement un espace en ligne vibrant et en constante évolution.

(j3s.sh)
Développement migration de site web

AROS OS 2024 : Une année de progrès significatifs vers le 64 bits

2025-01-02
AROS OS 2024 : Une année de progrès significatifs vers le 64 bits

2024 a été une année exceptionnelle pour le système d'exploitation AROS. Le système principal Deadwood a reçu des mises à jour majeures sur ses branches 32 bits et 64 bits, y compris un émulateur 64 bits pour la compatibilité 32 bits. Les distributions principales telles que AROS One et Tiny AROS ont été mises à jour, offrant une meilleure prise en charge des logiciels et des jeux. Les recommandations matérielles ont été étendues, avec l'ajout de l'A600GS. Les points forts du logiciel incluent le navigateur Odyssey mis à jour avec un moteur WebKit plus récent, une nouvelle version de l'éditeur de texte Final Writer et des ports de jeux classiques tels que Wipeout Rewrite et Doom 3. Globalement, AROS a fait des progrès significatifs en 2024, préparant le terrain pour un avenir 64 bits.

Développement

SvarDOS : DR-DOS renaît en tant que système d'exploitation open source

2025-01-02
SvarDOS : DR-DOS renaît en tant que système d'exploitation open source

SvarDOS, un système d'exploitation open source basé sur DR-DOS, est récemment passé d'une distribution FreeDOS à un système disposant de son propre noyau EDRDOS. Il peut fonctionner sur des PC 8086 ou 8088 et possède un gestionnaire de paquets compatible réseau. Bien que l'installation par défaut soit incroyablement petite, son dépôt robuste contient plus de 400 paquets, notamment des pilotes réseau, des éditeurs et des jeux. SvarDOS nécessite plus de configuration manuelle que FreeDOS, mais ses fonctionnalités puissantes et son mécanisme de mise à jour en ligne en font un système d'exploitation rétro remarquable.

Le travail de colle est considéré comme préjudiciable : un guide de survie pour les ingénieurs efficaces

2025-01-02

Cet article explore le concept de « travail de colle » dans l'ingénierie logicielle. S'il est crucial pour l'efficacité de l'équipe (par exemple, mise à jour de la documentation, traitement de la dette technique), ce travail peu glamour n'est souvent pas récompensé, désavantagant les ingénieurs qui le privilégient. L'auteur soutient que les entreprises ne récompensent pas le travail de colle parce qu'elles veulent que les ingénieurs se concentrent sur la livraison de fonctionnalités, et non sur l'amélioration de l'efficacité globale. La stratégie efficace consiste à appliquer le travail de colle de manière tactique aux projets dont vous êtes responsable, en garantissant leur succès, plutôt que de disperser les efforts de manière inefficace. Il ne s'agit pas d'une approche cynique de la politique de bureau ; elle repose sur la réalité de la faible efficacité des grandes entreprises et sur la priorité donnée à la croissance par rapport aux gains d'efficacité à court terme.

Développement efficacité de l'équipe

Rails 8 : étonnamment performant pour les projets individuels

2025-01-01

Après avoir construit et déployé une nouvelle application Rails 8, il est clair : Rails est excellent, surtout pour les petits projets à développeur unique. Le nouveau guide de démarrage est excellent, vous guidant de zéro à une application prête pour la production avec authentification, mise en cache, texte enrichi, CI et une base de données, le tout sans trop de difficultés. Rails 8 simplifie la configuration de la base de données, rendant SQLite prêt pour la production. La configuration CI intégrée et les minutes gratuites de Github Actions rendent l'intégration continue très facile. Un nouveau générateur d'authentification facile à utiliser et un déploiement simplifié améliorent encore l'expérience. Rails 8 rend le développement efficace et accessible, même pour les développeurs solo.

Développement

ClearSpace : Votre cure de désintoxication numérique pour réduire le temps d'écran

2025-01-01
ClearSpace : Votre cure de désintoxication numérique pour réduire le temps d'écran

ClearSpace est une application conçue pour aider les utilisateurs à réduire leur temps d'écran. Elle lutte contre la dépendance au téléphone en proposant des fonctionnalités telles que des limites de temps pour les applications, des bloqueurs de distractions, des outils de gestion de la concentration et un système de formation des habitudes basé sur des défis. L'application inclut également des rapports sur le temps d'écran, des partenaires de responsabilisation et des exercices de respiration conscients pour favoriser des habitudes numériques plus saines et améliorer le bien-être numérique.

Optimisation non intuitive : accélération des unions de chemins dans Skia

2025-01-01
Optimisation non intuitive : accélération des unions de chemins dans Skia

L'auteur a rencontré des goulots d'étranglement de performances lors de l'exécution d'opérations d'union de chemins sur un grand nombre de chemins de graphiques vectoriels à l'aide de Skia. L'approche initiale naïve consistant à unir les chemins de manière itérative était lente, et bien que le générateur de chemins de Skia offrait une optimisation, il n'était pas suffisamment rapide. En approfondissant les détails internes des opérations de chemins de Skia, il a été découvert que le nombre de courbes dans chaque chemin affectait considérablement les performances. En divisant l'union des chemins en intervalles plus petits et en appliquant de manière récursive une stratégie de diviser pour régner, l'auteur a obtenu une accélération significative, surpassant finalement la méthode par défaut de Skia. Étonnamment, l'augmentation du nombre d'opérations d'union via cette méthode a entraîné un traitement plus rapide.

Développement en bac à sable : un an dans une VM

2025-01-01

Pour éviter les inconvénients d’un environnement de développement encombré, l’auteur est passé à une configuration de machine virtuelle. Exécutant Ubuntu 24.04 sous VMware Fusion Pro sur macOS, tous les outils et extensions de développement résident dans la VM, offrant un espace de travail sécurisé et isolé. Bien que certaines commodités, comme le partage transparent du presse-papiers, soient perdues, l’expérience globale est fluide, avec un impact minimal sur les performances de la machine hôte. L’auteur considère que cette approche offre des avantages de stabilité et de sécurité à long terme, qui compensent les inconvénients mineurs.

Glean de Meta : Indexation de code à grande échelle

2025-01-01
Glean de Meta : Indexation de code à grande échelle

Meta a publié Glean, un système d'indexation de code open source conçu pour l'efficacité et l'évolutivité. Glean collecte et traite les informations du code source, les fournissant aux outils de développement via un langage de requête flexible appelé Angle. Son indexation incrémentale innovante répond aux défis des bases de code massives, permettant des fonctionnalités telles que la navigation de code, la recherche et la génération de documentation. La polyvalence de Glean prend en charge divers langages et schémas de données personnalisés, ce qui en fait un atout précieux pour les développeurs.

Développement indexation de code

La conception de logiciels est la construction de connaissances : une étude de cas

2025-01-01
La conception de logiciels est la construction de connaissances : une étude de cas

Une entreprise a externalisé son service d’intégration auprès d’un fournisseur SaaS, puis a décidé de créer un remplacement interne, SVC, en raison de préoccupations de coûts. Une ingénieure hautement qualifiée, X10, a terminé le développement de SVC de manière indépendante. Cependant, les équipes suivantes ont eu du mal à maintenir et à modifier le système, affichant une efficacité extrêmement faible. L’article analyse la raison : le résultat du développement de logiciels n’est pas le code, mais la compréhension du système et de sa logique métier par les ingénieurs — une « théorie ». Après le départ de X10, l’équipe manquait de cette « théorie », ce qui a entraîné des difficultés de maintenance du système, le rendant similaire à une « maison hantée ». L’auteur soutient que la conception de logiciels doit se concentrer sur la construction de connaissances afin de faciliter la compréhension et la maintenance par les équipes suivantes, évitant ainsi la création de « systèmes hérités ».

De Next.js à React pur : l’accélération de ComfyDeploy

2025-01-01

L’équipe de ComfyDeploy a migré son tableau de bord de Next.js vers React pur, réduisant le temps de build de 3 minutes à 18 secondes et le temps de rechargement à chaud à moins de 200 ms. Cela a été motivé par des problèmes de lenteur des builds Next.js, de difficulté à tester les API et de coûts API élevés de Vercel à mesure que leur projet grandissait. Le passage à React avec TanStack Router et Rspack a considérablement amélioré l’efficacité du développement et les a contraints à optimiser la conception de leur API et la structure de leur code. Bien qu’ils aient perdu certaines fonctionnalités de Next.js, ils ont estimé que les compromis valaient la peine, ce qui a donné lieu à des builds plus rapides, une expérience de développement plus agréable et une architecture plus optimisée.

Développement
1 2 195 196 197 199 201 202 203 214 215