Category: Développement

Contournement des protections anti-débogage d'une application Widget iOS

2025-02-17
Contournement des protections anti-débogage d'une application Widget iOS

Cet article détaille l'expérience de l'auteur en contournant les protections anti-débogage d'une application Widget iOS. L'application utilisait plusieurs méthodes de protection, notamment le blocage de la connexion du débogueur, la sortie prématurée lors de l'injection de code et le plantage complet du téléphone lorsqu'elle est exécutée sur un appareil jailbreaké. L'auteur a analysé systématiquement ces protections, en se concentrant sur l'utilisation de la requête `PT_DENY_ATTACH` de la fonction `ptrace` pour empêcher la connexion du débogueur. L'auteur explique comment contourner `ptrace` et empêcher le plantage du téléphone, réussissant finalement à connecter le débogueur et à injecter du code.

Les modérateurs de Reddit luttent contre le spam généré par l'IA : une guerre de temps

2025-02-17
Les modérateurs de Reddit luttent contre le spam généré par l'IA : une guerre de temps

Les modérateurs de Reddit sont aux prises avec une augmentation du spam généré par l'IA générative, rempli de publications non pertinentes et d'attaques contre les utilisateurs. Si certains modérateurs reconnaissent le potentiel de l'IA pour un contenu nouveau, beaucoup trouvent la qualité médiocre et la difficulté à distinguer le contenu généré par l'IA du contenu généré par l'homme accablantes. Le plus gros problème, cependant, n'est pas le contenu lui-même, mais l'investissement de temps considérable nécessaire à la modération. Cette perte de temps, consacrée à identifier les publications générées par l'IA, à répondre aux évangélistes de l'IA et à gérer les appels, détourne les ressources d'autres activités de construction de communauté. Les modérateurs décrivent la lutte contre les enthousiastes de l'IA comme une lutte constante.

Développement Modération Reddit

Un an de débogage des blocages de suspension/réveil sur Linux avec des GPU AMD

2025-02-17

L'auteur a rencontré un problème persistant où son système Linux, équipé d'un GPU AMD RX 570, se bloquait ou plantait après avoir tenté de se mettre en veille, entraînant souvent un écran noir au réveil. Après plus d'un an de débogage intensif, impliquant l'analyse des journaux, des ajustements de configuration de systemd, un shell de débogage et même de l'ingénierie inverse avec Ghidra, la cause racine a été identifiée comme un bug du pilote amdgpu lié à la sauvegarde de la VRAM en cas d'utilisation intensive de la mémoire. La solution, enfin implémentée, utilise l'API de notification de gestion de l'alimentation pour sauvegarder préventivement la VRAM avant la suspension, évitant ainsi les erreurs d'épuisement de la mémoire. Ce correctif devrait être inclus dans la version stable du noyau Linux 6.14.

Développement pilote GPU

Exécutez Rails dans votre navigateur : la magie de WebAssembly

2025-02-17
Exécutez Rails dans votre navigateur : la magie de WebAssembly

Imaginez exécuter un blog Rails entièrement fonctionnel dans votre navigateur, frontend et backend, sans serveurs ni cloud ! WebAssembly permet d'exécuter des frameworks côté serveur localement, brouillant les frontières du développement web classique. Cet article explique comment empaqueter une application Rails dans un module WebAssembly et l'exécuter dans le navigateur, recréant la magie du célèbre tutoriel "blog en 15 minutes" de Rails, mais cette fois, votre navigateur est l'environnement d'exécution. Ce n'est pas seulement une démonstration technique ; il met en lumière les possibilités illimitées de WebAssembly, notamment les applications hors ligne et le développement d'applications locales.

Développement Applications navigateur

Les projets open source pourraient vendre des fragments SBOM

2025-02-17
Les projets open source pourraient vendre des fragments SBOM

L'analyse du code source pour obtenir des informations sur les licences est une tâche fastidieuse et souvent redondante en raison du manque de mise en commun des ressources entre les entreprises. Cet article propose une solution : les projets open source pourraient vendre des fragments SBOM (composants dans CycloneDX ou packages dans SPDX avec des détails précis sur les licences). En parrainant le projet sur GitHub, les entreprises auraient accès à des informations SBOM continuellement mises à jour, évitant ainsi un travail redondant et garantissant la précision des informations sur les licences.

hk : Un gestionnaire de hooks Git en Rust ultra-rapide

2025-02-17

hk est un gestionnaire de hooks pré-commit Git écrit en Rust, qui privilégie les performances et la facilité d'utilisation. Il résout les problèmes rencontrés avec des outils existants comme `mise` et `pre-commit`, tels que l'exécution de tâches uniquement lorsque certains fichiers sont modifiés et la gestion fastidieuse des plugins. Utilisant le format de configuration pkl et une logique d'exécution parallèle avancée, hk améliore considérablement la vitesse. Comparé à `lefthook`, hk offre une vitesse supérieure et plus de fonctionnalités intégrées, éliminant la dépendance aux plugins de `pre-commit`. Actuellement en développement, hk vise à atteindre une facilité d'utilisation comparable à celle de `lefthook` et `pre-commit`, en améliorant continuellement les performances et les fonctionnalités.

Développement

Un projet hérité : pourquoi la lutte contre le passé fait de vous un meilleur développeur

2025-02-17
Un projet hérité : pourquoi la lutte contre le passé fait de vous un meilleur développeur

Cet article détaille l’expérience de l’auteur travaillant sur un projet hérité construit avec l’outil de construction Ant obsolète et sans injection de dépendances modernes. Les défis rencontrés ont forcé une réévaluation des meilleures pratiques de développement logiciel modernes : code propre, tests automatisés, CI/CD et agile, et ont fourni une compréhension plus approfondie de leur raisonnement sous-jacent. Bien que laborieux, l’achèvement réussi du projet a offert des informations précieuses sur l’évolution des méthodologies de développement et l’importance de la collaboration d’équipe et de la propriété de bout en bout.

Hébergement Unix partagé vs. le cloud : le récit de la migration d’un blogueur chevronné

2025-02-17

Après 15 ans chez Dreamhost, un blogueur chevronné a migré son domaine oils.pub vers Mythic Beasts en raison de l’instabilité du support FastCGI de Dreamhost. L’article explore les compromis entre l’hébergement Unix partagé et les services cloud. L’auteur soutient que, si les services cloud semblent modernes, ils manquent de protocoles ouverts et de stabilité à long terme ; l’hébergement partagé, bien que limité en options, offre une meilleure programmabilité et portabilité basées sur Unix, ce qui le rend plus adapté aux scripts légers et à la maintenance à long terme. Plusieurs fournisseurs d’hébergement partagé sont comparés, et Mythic Beasts et OpalStack sont finalement recommandés pour leur solide support Unix.

Développement hébergement partagé

Problèmes de performances du stockage local de thread C++ : 0 + 0 > 0 ?

2025-02-17
Problèmes de performances du stockage local de thread C++ : 0 + 0 > 0 ?

Cet article examine en profondeur les implications en termes de performances de l’utilisation de variables thread_local en C++. En analysant le code assembleur, l’auteur révèle des écarts de performances significatifs dans différents scénarios, notamment avec les variables thread_local dotées de constructeurs et celles utilisées dans des bibliothèques partagées. Même des accès simples peuvent subir des ralentissements importants en raison des appels de constructeurs, du chargement dynamique des bibliothèques partagées et d’autres facteurs. L’article se conclut par des directives d’optimisation des performances et aborde les améliorations futures, afin d’aider les développeurs à éviter les pièges de performances de thread_local.

Développement

La crise des mainteneurs open source : épuisement, pression et avenir incertain

2025-02-17
La crise des mainteneurs open source : épuisement, pression et avenir incertain

La conférence State Of Open 2025 a mis en lumière la situation difficile des mainteneurs open source : les bénévoles consacrent d'innombrables heures à des projets avec peu de soutien, ce qui pousse beaucoup à démissionner ou à envisager de le faire. La démission d'Hector Martin, responsable du projet Asahi Linux, en raison de l'épuisement et d'utilisateurs exigeants, illustre cette crise. Les mainteneurs subissent la pression des utilisateurs, des demandes sans fin et des messages négatifs occasionnels. Même avec un parrainage d'entreprise minimal, les demandes dépassent de loin le soutien. Les enquêtes révèlent que de nombreux mainteneurs envisagent de démissionner, et de nombreux projets pourraient ne plus être maintenus. Le problème n'est pas seulement financier ; il faut également davantage de contributeurs pour partager les tâches non liées au code, telles que la gestion de la communauté et la collecte de fonds. Mais le changement nécessite un catalyseur ; peut-être qu'un effondrement majeur d'un projet convaincra enfin les gens que payer les mainteneurs open source est crucial.

L'autocomplétion de ChatGPT : un échec UX/UI ?

2025-02-17
L'autocomplétion de ChatGPT : un échec UX/UI ?

Cet article questionne le design UX/UI de la fonction d'autocomplétion de ChatGPT. L'auteur soutient que si l'autocomplétion est utile dans les barres de recherche en raison d'un espace de réponse limité et d'un taux de réussite élevé, elle est perturbatrice dans le chat. ChatGPT échoue fréquemment à prédire la saisie de l'utilisateur, interrompant son processus de pensée et causant de la frustration. L'auteur compare l'autocomplétion de ChatGPT à un collègue qui interrompt constamment les conversations, remettant en question l'utilisabilité du design et exprimant sa confusion quant à sa valeur perçue.

Développement

Modélisation du réseau social de la Communauté avec SQL

2025-02-17

Cet extrait de code montre un modèle de base de données relationnelle simple décrivant les amitiés dans l'univers du Seigneur des Anneaux de Tolkien. Utilisant des instructions SQL `INSERT`, il définit des arêtes 'friend' connectant des personnages comme Frodo, Sam, Gandalf, Aragorn, Legolas, Gimli et Bilbo, illustrant leur réseau social. Cela fournit des données fondamentales pour analyser les relations entre les personnages et construire un graphe social.

Une base de données SQLite de 6,4 To propulse la mise à niveau de Searchcode.com

2025-02-17

Searchcode.com, un moteur de recherche de code source, a migré sa base de données de MySQL vers SQLite, résultant en une énorme base de données SQLite de 6,4 To, probablement l'une des plus grandes instances publiques. Motivée par le désir d'un déploiement binaire unique et de dépendances réduites, la migration n'a pas été sans défis. Des problèmes tels que le verrouillage de la base de données et les complexités de la compilation croisée ont été surmontés en utilisant des connexions de base de données doubles, une version SQLite Go pure et une compression au niveau du système de fichiers (BTRFS avec zstd). Le résultat ? Un Searchcode.com significativement plus rapide et plus évolutif avec une vitesse de recherche améliorée et des processus back-end.

Umami : Une alternative à Google Analytics axée sur la confidentialité

2025-02-17
Umami : Une alternative à Google Analytics axée sur la confidentialité

Umami est une alternative simple, rapide et axée sur la confidentialité à Google Analytics. Il prend en charge les bases de données MariaDB, MySQL et PostgreSQL. L'installation est simple : clonez le dépôt GitHub, installez les dépendances et configurez la connexion à la base de données. Par défaut, il s'exécute sur http://localhost:3000. Des images Docker sont disponibles pour faciliter le déploiement. Des instructions de démarrage détaillées sont fournies.

Développement analyse

WinterBreak : Un nouveau jailbreak pour Kindle est disponible

2025-02-17

Un nouveau jailbreak pour Kindle, WinterBreak, a été publié le jour de l'An 2025 par HackerDude. Basé sur Mesquito, cet outil offre un processus de jailbreak simple. Les utilisateurs doivent extraire les fichiers WinterBreak sur leur Kindle, redémarrer, puis l'exécuter via la boutique Kindle. Des étapes de dépannage sont fournies pour les erreurs courantes, telles que l'erreur « Inattendue » dans la boutique Kindle, souvent résolues par une réinitialisation d'usine et la suppression du cache. Le projet reconnaît les contributions significatives de ses testeurs bêta.

Développement

Allocation des registres dans les compilateurs : une plongée en profondeur

2025-02-17
Allocation des registres dans les compilateurs : une plongée en profondeur

Cet article fournit une explication claire des complexités de l’allocation des registres dans les compilateurs. À partir d’un exemple simple de fonction, il montre comment les variables sont mappées aux registres et comment l’espace de pile (spilling) est utilisé lorsque les registres sont insuffisants. L’article détaille deux algorithmes, la recherche linéaire et la coloration de graphe, et explore les défis supplémentaires dans les architectures réelles, tels que les conventions d’appel et les limitations de l’ensemble d’instructions. Même l’allocation de registres apparemment simple est pleine de défis d’optimisation et de compromis, ce qui en fait un aspect remarquablement difficile de l’implémentation du compilateur.

Développement allocation des registres

Le double tranchant des outils de codage IA : vitesse contre compréhension

2025-02-17
Le double tranchant des outils de codage IA : vitesse contre compréhension

Une nouvelle génération de programmeurs dépend des outils de codage IA (comme Copilot) pour augmenter l'efficacité, mais au prix de la compréhension de la logique sous-jacente du code. L'auteur compare cela à l'approche d'apprentissage approfondi des programmeurs qui utilisaient auparavant Stack Overflow, soulignant que la commodité des outils IA masque un manque de connaissances fondamentales, ce qui peut amener les développeurs à manquer de capacité à résoudre des problèmes complexes. L'article suggère que les programmeurs doivent garder un esprit critique lorsqu'ils utilisent des outils IA, participer activement aux discussions techniques et essayer de construire des projets à partir de zéro pour approfondir leur compréhension.

(nmn.gl)

Développement de pilote open source : un développeur vétéran démissionne pour des raisons d'inclusion

2025-02-17

Karol Herbst, développeur de longue date du pilote Nouveau, a démissionné de son poste de mainteneur du pilote graphique Linux NVIDIA open source en raison de désaccords avec la communauté upstream du noyau Linux concernant l'inclusion et le respect. Dans sa démission, Herbst a déclaré sa conviction que la communauté open source devrait fonctionner sur des principes d'égalité et de respect, exprimant sa désapprobation des déclarations faites par d'autres mainteneurs perçues comme exclusives. Il a cité la phrase « nous sommes la fine ligne bleue » comme une préoccupation particulière, soulignant le préjudice causé par de telles déclarations. Alors que les développeurs Red Hat Lyude Paul et Danilo Krummrich continueront la maintenance de Nouveau, Red Hat développe également NOVA, un nouveau pilote de noyau NVIDIA open source basé sur Rust.

Développement pilote Nouveau

Programme d'installation de Windows 95 : l'histoire étonnamment complexe d'un mini-système d'exploitation

2025-02-17
Programme d'installation de Windows 95 : l'histoire étonnamment complexe d'un mini-système d'exploitation

Cet article révèle la complexité cachée du programme d'installation de Windows 95. Pour créer un programme d'installation apparemment simple, l'équipe a dû créer un mini-système d'exploitation à partir de zéro sous MS-DOS, comprenant des bibliothèques graphiques, un gestionnaire de fenêtres, une prise en charge multilingue et même une compatibilité avec Windows 3.1. Ils ont finalement réalisé qu'il était beaucoup plus efficace d'utiliser l'environnement d'exécution existant de Windows 3.1, évitant ainsi des efforts de développement considérables. L'histoire souligne l'importance de la réutilisation du code en génie logiciel et expose la nature étonnamment complexe du programme d'installation de Windows 95.

Développement

oklch() dans CSS Color 4 : Un changement de jeu pour les systèmes de design

2025-02-17
oklch() dans CSS Color 4 : Un changement de jeu pour les systèmes de design

Le module de couleur CSS 4 introduit oklch(), une nouvelle notation de couleur qui définit les couleurs en utilisant la luminosité perçue (L), la chroma (C) et la teinte (H), avec éventuellement une valeur alpha (a). Cela résout le problème d'incohérence de la luminosité dans hsl(), rendant la manipulation des couleurs et la génération de palettes plus prévisibles et améliorant l'accessibilité. oklch() prend en charge les couleurs P3 à large gamme, déverrouillant des possibilités de couleurs plus riches sur les écrans modernes. Bien que l'écosystème oklch() soit encore naissant, ses avantages en termes de lisibilité du code et de manipulation des couleurs en font un sérieux concurrent pour l'avenir de la couleur CSS.

Développement Spécification de couleur

Guide Ultime pour Configurer votre PATH sous Bash, Zsh et Fish

2025-02-17

Ce guide fournit un tutoriel complet sur l'ajout de répertoires à votre variable d'environnement PATH sous différentes shells comme bash, zsh et fish. Il traite des problèmes courants, tels que la localisation du fichier de configuration correct, la gestion des entrées dupliquées et la configuration de PATH dans les tâches cron. L'auteur utilise des exemples concrets pour vous guider tout au long du processus, vous permettant d'exécuter des programmes avec succès une fois la configuration de PATH maîtrisée.

Développement Variables d'environnement

Le Mythe de la Date COBOL 1875 : Structures de Données Efficaces, Pas un Défaut du Langage

2025-02-17
Le Mythe de la Date COBOL 1875 : Structures de Données Efficaces, Pas un Défaut du Langage

La rumeur répandue selon laquelle les systèmes COBOL utilisent le 20 mai 1875 comme date par défaut pour les dates manquantes est fausse. Cet article révèle que l'origine réside dans l'optimisation extrême du stockage des données dans les anciens systèmes. Pour économiser de l'espace de stockage, les programmeurs ont utilisé des structures de données intelligentes, en prenant 1875 comme année de base et en codant les dates en moins de caractères. Cette approche était efficace et raisonnable dans l'environnement à ressources limitées de l'époque, pas un défaut de COBOL, mais une utilisation intelligente des structures de données par les programmeurs.

Développement programmation historique

SuperSplat 2.0 : Mise à jour majeure de la plateforme de modélisation 3D open source

2025-02-17
SuperSplat 2.0 : Mise à jour majeure de la plateforme de modélisation 3D open source

La plateforme open source d'édition et de publication de Splats gaussiens 3D, SuperSplat, a reçu une mise à jour majeure ! Elle a déménagé vers un nouveau domaine, superspl.at, et propose désormais la publication web. Les utilisateurs peuvent facilement partager leurs créations en ligne en se connectant simplement à leur compte PlayCanvas. La version 2.0 ajoute également une timeline pour créer des animations de survol caméra, un nouveau format de fichier de projet .ssproj pour enregistrer et charger des projets, et prend en charge les expériences immersives de RA et de RV sur Meta Quest 2/3, les smartphones Android et Apple Vision Pro. SuperSplat est un projet open source sous licence MIT, et les contributions de la communauté sont les bienvenues !

Développement

Lumigo Copilot : Débogage résolu en quelques secondes, pas en heures

2025-02-16
Lumigo Copilot : Débogage résolu en quelques secondes, pas en heures

Le développeur Nadav a reçu une alerte de Lumigo : échec du traitement d’un référentiel GitHub. À l’aide de Lumigo Copilot, il a reçu un diagnostic complet en quelques secondes : une erreur 404 de l’API GitHub, indiquant que le référentiel était manquant ou que l’application GitHub avait été désinstallée. Copilot n’a pas seulement identifié la cause racine, mais a également fourni l’ID du projet affecté, les utilisateurs et les informations de la file d’attente des événements, permettant à Nadav de résoudre rapidement le problème, économisant ainsi des heures de débogage des journaux.

Développement analyse des journaux

Générateur de code 6502 surpasse GCC et LLVM

2025-02-16

Un développeur a créé un générateur de code pour l'architecture 6502 qui, étonnamment, surpasse GCC, LLVM et d'autres compilateurs. L'avantage de vitesse ne provient pas d'optimisations de haut niveau supérieures, mais de techniques innovantes de génération de code. Le compilateur utilise des instructions « illégales », une sélection d'instructions coûteuse en calcul et des optimisations qui échangent de l'espace contre du temps. L'algorithme principal combine la sélection d'instructions avec l'allocation de registres, utilisant intelligemment le style de passage de continuation. Il fonctionne avec une représentation intermédiaire DAG et SSA, générant de multiples combinaisons de code assembleur, en effectuant une élagage avec la programmation dynamique et branch-and-bound, et enfin en résolvant un problème PBQP pour une sélection optimale. Bien qu'il utilise quelques « astuces », le compilateur présente des résultats de benchmark remarquables, offrant de nouvelles perspectives sur la génération de code.

Développement

Astuce pour l'efficacité des commandes Shell : identifiez rapidement les commandes précédentes avec des icônes

2025-02-16
Astuce pour l'efficacité des commandes Shell : identifiez rapidement les commandes précédentes avec des icônes

Vous recherchez et réexécutez fréquemment des commandes dans votre historique Shell ? L'auteur partage une astuce intelligente : ajoutez des identifiants d'icônes ou de texte avant les commandes (par exemple : ✅ ; ./utils/check.sh). Ces identifiants n'affectent pas l'exécution de la commande, mais améliorent considérablement la reconnaissance visuelle, vous permettant de trouver rapidement la commande souhaitée et de réduire la frustration de devoir parcourir fréquemment l'historique. C'est une façon simple mais efficace d'améliorer l'efficacité de votre Shell.

Caddy : Le serveur web sécurisé approuvé par le monde académique

2025-02-16
Caddy : Le serveur web sécurisé approuvé par le monde académique

Le serveur web Caddy est fortement recommandé par des experts universitaires et industriels pour ses paramètres de sécurité par défaut, ses meilleures pratiques et son ensemble de fonctionnalités avancées uniques. Des articles de revues à comité de lecture mettent en évidence le déploiement presque omniprésent du HTTPS par Caddy et l'utilisation de configurations TLS modernes, surpassant d'autres serveurs populaires dans des fonctionnalités telles que la rotation des clés de ticket de session. Cela fait de Caddy un choix sécurisé, convivial et remarquable pour les serveurs web.

Développement

Crise de gouvernance d'Elm : récit d'un contributeur

2025-02-16

Un contributeur de longue date d'Elm détaille les raisons de son départ de la communauté, citant le style de leadership de l'équipe centrale d'Elm et les politiques restrictives des modules natifs. L'auteur décrit la prise de décision autocratique, le manque de transparence et d'équité, et la suppression des contributions de la communauté. Il soutient que les actions de l'équipe centrale violent l'esprit de l'open source et affectent injustement les membres de la communauté, en particulier les non-anglophones et les groupes minoritaires. Le billet soulève des préoccupations concernant la gouvernance et l'équité dans les projets open source.

Abandonnez les Getters et Setters : Adoptez l'Immutabilité et un Code Plus Clair

2025-02-16
Abandonnez les Getters et Setters : Adoptez l'Immutabilité et un Code Plus Clair

Cet article critique l'utilisation excessive des méthodes getter et setter, soulignant comment elles conduisent à une augmentation de la mutabilité du code, le rendant plus difficile à maintenir et à comprendre. L'auteur préconise l'immutabilité autant que possible et présente le motif `with` et le motif Builder pour créer des copies immuables d'objets lorsque des modifications sont nécessaires. En fin de compte, l'article souligne que si la mutabilité est inévitable, elle doit être limitée à la plus petite portée possible, et les getters et setters sans signification doivent être supprimés, ce qui conduit à un code plus propre, plus facile à comprendre et plus adapté à la concurrence.

L'effort héroïque de la communauté Vim après la disparition de Bram Moolenaar

2025-02-16
L'effort héroïque de la communauté Vim après la disparition de Bram Moolenaar

Suite au décès de Bram Moolenaar, le créateur de Vim, en août 2023, la communauté open source s'est mobilisée pour maintenir son projet en vie. Le mainteneur Christian Brabandt a raconté cette histoire inspirante à la VimConf 2024, détaillant les défis surmontés : hériter du compte GitHub, migrer l'infrastructure et intégrer de nouveaux mainteneurs. Bien que Vim soit maintenant en mode maintenance, se concentrant sur les corrections de bugs et les fonctionnalités mineures, la communauté reste active, améliorant la documentation et les processus pour assurer la pérennité de Vim. Vim 9.1, dédié à Moolenaar, a été publié en janvier 2024.

Développement
1 2 158 159 160 162 164 165 166 214 215