Category: Développement

Un créateur construit un jeu de tir au laser : D’une attraction de Legoland à l’amusement d’Halloween avec ESP32

2024-12-13
Un créateur construit un jeu de tir au laser : D’une attraction de Legoland à l’amusement d’Halloween avec ESP32

Inspiré par une attraction d’aventure égyptienne de Legoland, l’auteur a décidé de créer un jeu de tir similaire. Utilisant des microprocesseurs ESP32 peu coûteux, des pistolets laser infrarouges et des cibles faites maison, il a réussi à construire un jeu de tir sur le thème d’Halloween. Au cours de ce processus, il a appris la programmation Arduino et MicroPython, surmontant les défis liés aux connexions matérielles, à l’alimentation électrique et à la communication. Le jeu a été un succès lors d’événements scolaires et à domicile. Ses projets futurs comprennent l’amélioration de la conception des cibles, des effets lumineux et des cartes de circuits imprimés pour améliorer l’expérience de jeu.

Développement Créateur

Nouvelles fonctions de hachage Rain Hashes : vitesse et sécurité combinées

2024-12-13
Nouvelles fonctions de hachage Rain Hashes : vitesse et sécurité combinées

DOSAYGO Research a publié Rain Hashes, une nouvelle famille de fonctions de hachage comprenant les algorithmes Rainbow et Rainstorm. Rainbow se distingue par sa vitesse exceptionnelle, ce qui le rend idéal pour le hachage à usage général. Son implémentation en C++ a passé tous les tests SMHasher3 et se caractérise par son code concis et efficace. Rainstorm privilégie la sécurité ; bien qu’il n’ait pas été officiellement audité, sa conception intègre des éléments de fonctions de hachage cryptographiques et offre des tailles de sortie de 64 à 512 bits. Le projet fournit des implémentations en C++, WASM et Node.js, ainsi qu’un outil en ligne de commande et des tests de référence pour une évaluation et une utilisation faciles.

Développement fonction de hachage

Web Origami : Un nouveau langage de programmation pour simplifier la création de sites web

2024-12-13

Web Origami est un nouveau langage de programmation conçu pour simplifier la création de sites web de petite à moyenne taille. Utilisant une syntaxe concise qui complète HTML et CSS, les utilisateurs peuvent décrire la structure du site web à l'aide de formules similaires à celles des feuilles de calcul, transformant les données et les fichiers en HTML et autres ressources du site web via des programmes simples. Même sans connaissance de JavaScript, des fonctionnalités telles que la recherche plein texte et les flux RSS peuvent être créées. Web Origami fournit une interface en ligne de commande, des fonctions intégrées et une bibliothèque async-tree, avec prise en charge des extensions JavaScript. Son concept central est d'abstraire la création de sites web comme une transformation de données, rendant la création et le déploiement de sites web efficaces, peu coûteux et faciles à comprendre.

Vulnérabilités de sécurité dues au PRNG faible de Dart/Flutter

2024-12-13
Vulnérabilités de sécurité dues au PRNG faible de Dart/Flutter

La recherche de Zellic a mis au jour plusieurs vulnérabilités de sécurité causées par un générateur de nombres pseudo-aléatoires (PRNG) faible dans Dart/Flutter. Un défaut dans l'initialisation de la fonction `Random()` du SDK Dart a entraîné une entropie insuffisante dans les clés générées, les rendant vulnérables aux attaques par force brute. Cela a permis aux attaquants d'accéder facilement au Dart Tooling Daemon, leur permettant de lire ou d'écrire des fichiers d'espace de travail et même d'exécuter du code arbitraire. De plus, les projets Proton Wallet et SelfPrivacy ont également été affectés par ce PRNG faible, subissant des vulnérabilités de chiffrement et des problèmes de mots de passe prévisibles. Bien que la vulnérabilité ait été corrigée, les développeurs sont invités à faire preuve de prudence lors de l'utilisation de la fonction `Random()` et à utiliser `Random.secure()` lorsque des nombres aléatoires cryptographiquement sûrs sont nécessaires.

Idée révolutionnaire : appliquer les principes de Magit au système de contrôle de version jj

2024-12-13

L'auteur propose une approche novatrice : appliquer l'interface de contrôle de version Magit d'Emacs (qui utilise des fichiers texte comme interface utilisateur) à l'écosystème naissant de contrôle de version jj. L'article souligne que l'interface utilisateur textuelle de Magit offre efficacité et portabilité. En tirant parti du protocole LSP, une expérience similaire à Magit peut être implémentée dans divers éditeurs, évitant ainsi le développement redondant. L'auteur prévoit la génération de fichiers texte spécifiques (tels que .jj/status.jj) et l'utilisation des fonctionnalités LSP, telles que les jetons sémantiques, les plages de pliage et le « aller à la définition », pour réaliser des opérations de contrôle de version similaires à Magit. L'objectif final est de créer une interface utilisateur efficace et multiplateforme pour le contrôle de version jj.

Développement

Cohérence finale : défis et modèles dans les systèmes distribués

2024-12-13
Cohérence finale : défis et modèles dans les systèmes distribués

La cohérence finale est inévitable dans les systèmes distribués. Cet article explore quatre modèles courants pour gérer la cohérence finale : la cohérence finale basée sur les événements, la cohérence finale de synchronisation en arrière-plan, la cohérence finale basée sur les sagas et la cohérence finale basée sur CQRS. Chaque modèle présente des avantages et des inconvénients. Par exemple, le modèle basé sur les événements met l'accent sur les systèmes faiblement couplés et l'évolutivité, mais la cohérence prend du temps ; tandis que le modèle basé sur les sagas convient aux transactions complexes et de longue durée, garantissant la cohérence grâce à des transactions compensatoires. Le choix du modèle dépend des besoins et des compromis spécifiques du système.

Maîtriser le débogage Ruby : de puts aux outils professionnels

2024-12-13
Maîtriser le débogage Ruby : de puts aux outils professionnels

Cet article du blog JetBrains RubyMine explore différentes approches du débogage de code Ruby, des instructions `puts` basiques aux consoles interactives (IRB et Pry) en passant par les débogueurs puissants (byebug, debug et le débogueur RubyMine). À partir d'un exemple de bug réel, il met en lumière les forces et les faiblesses de chaque outil, guidant les développeurs dans le choix de l'outil le plus adapté pour une meilleure efficacité. L'article souligne que le débogage efficace ne consiste pas seulement à corriger les erreurs, mais aussi à comprendre le code de manière fondamentale pour écrire des applications Ruby plus robustes.

Compilateur Rust : Une architecture de compilation incrémentale basée sur les requêtes

2024-12-13

Pour résoudre les problèmes d'efficacité de la compilation traditionnelle en pipeline, le compilateur Rust utilise une architecture de compilation incrémentale basée sur les requêtes. Cette architecture décompose le processus de compilation en une série de requêtes interdépendantes, utilisant une base de données de compilation pour mettre en cache les résultats intermédiaires. Cela permet de ne recompiler que les sections de code nécessaires. Similaire à la gestion des dépendances d'un système de build, cela améliore significativement la vitesse de compilation, particulièrement bénéfique dans des scénarios tels que l'intégration avec les IDE. Bien qu'elle introduise de la complexité, cette approche offre une expérience de compilation incrémentale plus stable et efficace pour Rust par rapport aux améliorations progressives des systèmes traditionnels, et est maintenant la valeur par défaut pour les builds de développement.

Refactoring en C++ : techniques et meilleures pratiques

2024-12-13
Refactoring en C++ : techniques et meilleures pratiques

Cet article explore les techniques courantes de refactoring en C++ et les meilleures pratiques pour améliorer la qualité du code. Le refactoring, processus de restructuration du code existant sans modifier les fonctionnalités, améliore la lisibilité, l'efficacité et la maintenabilité. L'article couvre des techniques telles que le renommage des variables et des fonctions, l'extraction de fonctions, la simplification des instructions conditionnelles, l'optimisation des boucles et la suppression des doublons de code. Il souligne l'importance d'utiliser des IDE avec des capacités de refactoring automatique et met en évidence les meilleures pratiques, telles que le refactoring par petits pas, l'utilisation du contrôle de version et les tests automatisés pour minimiser la dette technique et améliorer la qualité globale du code.

Développement développement logiciel

Le projet Git bloqué sur l'intégration de Rust

2024-12-13

Le projet Git est au cœur d'un débat animé concernant l'intégration du langage de programmation Rust. Les partisans soutiennent que la sécurité mémoire et la facilité de refactorisation de Rust amélioreraient la sécurité et l'expérience des développeurs de Git. Cependant, les opposants craignent que l'intégration de Rust ne compromette le support de plateformes de niche comme NonStop, ce qui pourrait nuire à la viabilité à long terme de Git. La prévalence de NonStop dans le secteur financier, sa dépendance à Git et l'absence de compilateur Rust pour cette plateforme compliquent la situation. Le débat n'a finalement abouti à aucune conclusion, laissant le projet Git aux prises avec une décision critique entre le maintien d'un large support des plateformes et l'amélioration de la sécurité et de l'expérience des développeurs.

Développement Support de plateforme

Trinity Desktop Environment R14.1.3 publié : léger, efficace et idéal pour les anciens matériels

2024-12-13

L'équipe du projet Trinity Desktop Environment (TDE) a publié la version R14.1.3, un environnement de bureau léger et gratuit conçu pour les utilisateurs qui préfèrent une expérience épurée et efficace. Cette version est compatible avec diverses distributions Linux, BSD et DilOS, possède des exigences système faibles, ce qui la rend idéale pour les anciens matériels. R14.1.3 inclut de nombreuses améliorations, telles que l'intégration de l'API XDG Desktop Portal, un nouveau module de configuration du pavé tactile, de nouveaux thèmes et schémas de couleurs, et la prise en charge de diverses applications et langages de programmation comme Python 3.13. Le projet encourage les dons pour soutenir son développement continu.

Echange de code à chaud Elixir/Erlang : Déploiements sans temps d’arrêt

2024-12-13

Cet article explore les capacités d’échange de code à chaud d’Elixir/Erlang, permettant le chargement et le déchargement de code en temps réel sans nécessiter de redémarrage du système pour les mises à jour d’applications. Un exemple simple du module KV illustre l’échange à chaud manuel, tandis que les commandes c/1 et r/1 d’iex et l’outil Relups sont introduits pour simplifier la gestion des applications et des mises à jour de versions. L’article explique les applications Erlang, les versions, les appups et les relups, détaillant l’utilisation de l’outil Distillery pour générer des versions d’applications et des versions de mise à jour, aboutissant à des déploiements sans temps d’arrêt et évitant les interruptions de service.

Développement échange de code à chaud

Apprivoiser les LLMs : Un guide pratique pour éviter les pièges

2024-12-12

Ce livre, "Apprivoiser les LLMs", explore les limitations clés et les pièges de mise en œuvre rencontrés par les ingénieurs et les chefs de produit techniques lors de la création d'applications basées sur les LLMs. Au lieu de se concentrer uniquement sur les capacités, il aborde des défis pratiques tels que la gestion des sorties non structurées, la gestion des fenêtres de contexte et l'optimisation des coûts. Avec des exemples de code Python reproductibles et des outils open source éprouvés, il fournit un guide pratique pour naviguer ces défis, permettant aux lecteurs d'exploiter la puissance des LLMs tout en évitant leurs limitations inhérentes.

Stripe enquête sur un pic inattendu d'erreurs DNS : Une enquête sur un réseau complexe

2024-12-12
Stripe enquête sur un pic inattendu d'erreurs DNS : Une enquête sur un réseau complexe

Stripe a récemment subi un pic inattendu d'erreurs DNS. Cet article détaille comment ils ont utilisé des outils tels qu'Unbound, tcpdump et iptables pour identifier la cause racine. L'enquête a révélé qu'un travail Hadoop analysant les journaux réseau effectuait de nombreuses recherches DNS inversées (enregistrements PTR), entraînant une amplification du trafic due à des nouvelles tentatives dépassant les limites du résolveur VPC d'AWS. Stripe a résolu le problème en ajustant les configurations de transfert d'Unbound pour répartir la charge entre les hôtes Hadoop individuels. Ce cas souligne l'importance d'une surveillance robuste, d'un dépannage multiforme et de stratégies pour gérer les pics de trafic dans les systèmes à haute disponibilité.

La boucle For humble en Rust : performances et lisibilité

2024-12-12

Cet article explore les compromis entre la boucle `for` et les approches de programmation fonctionnelle comme `map` et `fold` en Rust, en considérant à la fois les performances et la lisibilité. Grâce à des benchmarks comparant différentes méthodes sur des opérations de vecteurs et de vecteurs imbriqués, l'auteur découvre que `map` surpasse souvent les boucles `for` dans les transformations simples, offrant un style plus déclaratif. Cependant, pour des scénarios plus complexes comme l'aplatissement de vecteurs imbriqués ou la gestion des erreurs, les boucles `for` présentent un avantage de performance significatif et maintiennent une meilleure clarté du code. L'auteur préconise une approche pragmatique, en choisissant le meilleur outil pour le travail plutôt que de favoriser aveuglément la programmation fonctionnelle.

Développement performances boucle for

WordPress contre le capital-investissement : une lutte pour l’avenir de l’open source

2024-12-12
WordPress contre le capital-investissement : une lutte pour l’avenir de l’open source

WordPress, le système de gestion de contenu leader mondial, est engagé dans une bataille avec la société de capital-investissement Silver Lake et son investissement, WP Engine. Après avoir reçu un investissement massif, WP Engine, une société à but lucratif construite sur WordPress, a exploité agressivement la marque WordPress tout en contribuant de manière minime à la communauté open source. Après plusieurs tentatives de communication infructueuses, le PDG d’Automattic et cofondateur de WordPress, Matt Mullenweg, a pris des mesures, en restreignant l’accès de WP Engine aux ressources de WordPress.org pour défendre la communauté open source et l’avenir de WordPress. Ce conflit met en évidence le conflit fondamental entre les communautés open source et les sociétés de capital-investissement qui cherchent à maximiser les profits, servant d’avertissement quant à la santé à long terme des projets open source.

Développement Capital-investissement

Unexpected Keyboard : un clavier virtuel léger pour Android

2024-12-12
Unexpected Keyboard : un clavier virtuel léger pour Android

Unexpected Keyboard est un clavier virtuel léger pour Android, conçu pour les développeurs. Sa principale caractéristique est la possibilité de saisir plus de caractères en glissant vers les coins des touches. Initialement conçu pour les utilisateurs de Termux, il convient désormais à un usage quotidien. L'application est sans publicité, ne fait aucune requête réseau et est open source. Les utilisateurs peuvent accéder à des symboles spéciaux en glissant vers les coins des touches ; par exemple, glisser vers le coin inférieur gauche ouvre les paramètres. Des applications similaires incluent Calculator++.

Règles implicites des programmes de terminal : Rétrospective de 20 ans

2024-12-12

Cet article résume les 20 ans d’expérience de l’auteur avec les programmes de terminal, en distillant des règles de comportement courantes, bien que non officielles. Ces règles couvrent les réponses des programmes à Ctrl-C, Ctrl-D et à la touche « q », l’utilisation des couleurs, la prise en charge des liaisons de touches readline et la sortie de pipeline. L’auteur fait remarquer que, même s’il ne s’agit pas de normes obligatoires, la compréhension de ces règles permet de prédire le comportement des programmes de terminal et de réduire la courbe d’apprentissage. L’article utilise des exemples pour analyser l’applicabilité et les exceptions à ces règles, en soulignant l’importance de distinguer la responsabilité du programme lui-même du comportement par défaut du système d’exploitation.

Un ingénieur implémente un automate cellulaire réversible 1D à l'aide d'opérations bit à bit

2024-12-12
Un ingénieur implémente un automate cellulaire réversible 1D à l'aide d'opérations bit à bit

Richard Palethorpe, un ingénieur, a créé une démonstration utilisant la bibliothèque GFXPrim, montrant un automate cellulaire binaire unidimensionnel et sa contrepartie réversible. L'automate évolue selon des règles où l'état de chaque cellule est déterminé par son propre état et ceux de ses voisins gauche et droit. L'article détaille les optimisations des opérations bit à bit, telles que le traitement parallèle de plusieurs cellules utilisant des entiers 64 bits et la rotation des bits pour simuler l'interaction entre voisins. L'implémentation réversible est obtenue en utilisant XOR avec l'état précédent. L'auteur explore les impacts de l'optimisation du compilateur et de la vectorisation sur les performances et, finalement, implémente une méthode de rendu efficace.

L'ascension et la chute d'Ashton-Tate : la saga de dBASE

2024-12-12
L'ascension et la chute d'Ashton-Tate : la saga de dBASE

Ashton-Tate, acteur majeur de la révolution de l'informatique personnelle des années 1980, a connu la gloire grâce à son logiciel de gestion de base de données, dBASE. Initialement conçu par Wayne Ratliff sous le nom de Vulcan, le programme est rapidement devenu une norme pour les systèmes CP/M, puis a prospéré avec l'essor du PC IBM. Son interface conviviale et ses fonctionnalités puissantes ont propulsé Ashton-Tate vers une introduction en bourse et un succès important. Cependant, les difficultés ultérieures de l'entreprise avec le développement de dBASE III, la concurrence croissante et des problèmes internes ont finalement conduit à son rachat par Borland. Cette histoire détaille l'héritage de dBASE, l'ascension et la chute d'Ashton-Tate, offrant des informations précieuses sur la dynamique de l'industrie du logiciel.

Extension GitHub résumant les articles de Hacker News avec des LLMs

2024-12-12
Extension GitHub résumant les articles de Hacker News avec des LLMs

Le projet GitHub `hn-tldr-extension` propose une extension de navigateur utilisant les grands modèles de langage (LLMs) d'OpenAI et d'Anthropic pour résumer rapidement les articles de Hacker News. Les utilisateurs fournissent leurs propres clés API pour activer un bouton 'résumer' sur les pages HN, offrant des résumés concis des articles. Le code de l'extension est open-source et compatible avec des navigateurs comme Firefox.

Lancement de la bibliothèque lfi d'itération concurrente haute performance

2024-12-12

lfi est une bibliothèque de programmation fonctionnelle légère axée sur l'itération synchrone, asynchrone et concurrente. Elle surpasse significativement les bibliothèques telles que p-map et p-filter en matière d'itération concurrente en traitant chaque élément indépendamment, ce qui se traduit par des gains de performance substantiels. lfi utilise également l'évaluation paresseuse, effectuant les opérations uniquement lorsque nécessaire pour économiser de la mémoire, et possède une petite taille, ce qui la rend facilement optimisable avec tree shaking. Sa conception d'API propre, combinée à la fonction pipe, conduit à un code plus lisible et facile à maintenir.

Kubernetes Spec v1.32 publié : Guide de référence complet des ressources

2024-12-12
Kubernetes Spec v1.32 publié : Guide de référence complet des ressources

kubespec.dev a publié un guide de référence et une documentation pour la spécification Kubernetes v1.32, fournissant une documentation complète pour toutes les ressources, propriétés, types et exemples intégrés. Le guide couvre les charges de travail, le cluster, le réseau, la configuration, le stockage, l'administration et le contrôle d'accès, permettant aux utilisateurs de trouver et de comprendre rapidement les fonctionnalités de Kubernetes. Le projet est open source et accepte les contributions.

Développement Spécification

Modèles de mémoire des langages de programmation : défis et solutions en programmation concurrente

2024-12-12

Cet article explore en profondeur les modèles de mémoire des langages de programmation, plus précisément le comportement de la mémoire partagée dans les programmes multithreadés. Prenant un programme simple de type C comme exemple, il illustre comment les optimisations du compilateur peuvent conduire à des résultats inattendus, tels que des problèmes de concurrence entre les threads. Pour y remédier, les langages modernes introduisent des variables atomiques et des opérations atomiques afin de garantir la synchronisation des threads et d’éviter les problèmes de concurrence. L’article compare les modèles de mémoire de Java, C++, Rust et d’autres langages, en analysant leurs forces et faiblesses, ainsi que leur évolution, et souligne les défis qui persistent dans la formalisation des modèles de mémoire.

Peter Solnica, membre de l'équipe principale de Hanami, annonce sa retraite

2024-12-12
Peter Solnica, membre de l'équipe principale de Hanami, annonce sa retraite

Peter Solnica, développeur principal du framework Hanami, a récemment annoncé sa retraite de l'équipe principale. Après deux ans de réflexion, il a décidé de consacrer plus de temps à sa famille et de rechercher un meilleur équilibre entre vie professionnelle et personnelle. Solnica a remercié de nombreuses personnes et organisations qui ont significativement impacté sa carrière, notamment Lunar Logic, l'équipe DataMapper et les membres de l'équipe Hanami. Il a affirmé que, même s'il n'est plus membre de l'équipe principale, il continuera à soutenir le développement de Hanami et maintiendra le contact avec la communauté. La retraite de Solnica ne reflète pas une perte de confiance en Hanami, mais plutôt un ajustement personnel dans la gestion du temps et les priorités de vie, en se concentrant sur sa famille et le développement Elixir.

Développement Retraite

Preuve du Dernier Théorème de Fermat : Les Ordinateurs Relèvent un Défi Mathématique

2024-12-12
Preuve du Dernier Théorème de Fermat : Les Ordinateurs Relèvent un Défi Mathématique

Une équipe tente de prouver le dernier théorème de Fermat à l'aide de Lean, rencontrant des défis inattendus. Au lieu de s'appuyer sur la preuve originale, ils utilisent une approche moderne plus généralisée. Lors de la formalisation de la cohomologie cristalline, ils ont découvert une erreur dans un lemme clé, menant à une réévaluation des fondements de la théorie. Ils ont finalement trouvé une solution de contournement en utilisant une preuve différente. Cette expérience met en évidence des erreurs potentielles dans la littérature mathématique moderne et souligne la nécessité de preuves formalisées.

Jujutsu : Un système de contrôle de version révolutionnaire

2024-12-12

L'auteur utilise quotidiennement Jujutsu, un système de contrôle de version basé sur Git, et le recommande vivement. Contrairement à d'autres alternatives simplifiées à Git, Jujutsu se concentre sur l'amélioration du flux de travail des utilisateurs expérimentés, notamment en simplifiant l'édition de l'historique. L'auteur raconte une expérience personnelle montrant la facilité avec laquelle Jujutsu permet de modifier les commits précédents, en éliminant les commandes Git complexes. Bien que Jujutsu présente quelques inconvénients, tels que le manque de support pour git send-email et l'exigence de CLA de Google, l'auteur l'utilise toujours quotidiennement pour ses projets personnels.

Développement Contrôle de version

La loi de Parkinson : Fixez des délais, augmentez l'efficacité

2024-12-12
La loi de Parkinson : Fixez des délais, augmentez l'efficacité

La loi de Parkinson affirme que le travail s'étend pour remplir le temps disponible pour son achèvement. James Stanier, écrivant d'un point de vue de la gestion de l'ingénierie, plaide pour l'importance de fixer des délais stimulants mais réalisables. En utilisant le « Triangle de fer » (portée, ressources, temps), il montre comment les délais empêchent l'expansion de la portée, améliorent l'efficacité et stimulent l'innovation. Il souligne également la mise en œuvre de rapports hebdomadaires pour encourager l'achèvement proactif des tâches, conduisant en fin de compte à une efficacité accrue.

Accès à une base de données éphémère avec GitHub Actions et S3

2024-12-12

Cet article présente une méthode astucieuse pour exécuter une base de données temporaire en utilisant GitHub Actions pour le calcul éphémère et le stockage d'objets S3 pour la persistance. Créez une base de données compatible MySQL à la demande, stockez les données dans S3 et détruisez-la automatiquement une fois terminée, éliminant ainsi les coûts continus. Un tunnel sécurisé permet un accès public pour les tests d'intégration, les démonstrations ou le développement à court terme. Important : Cette approche convient uniquement aux tâches à court terme ; elle n'est pas conçue pour les services de base de données longue durée.

Développement Base de données

Stockage des heures pour les événements humains : meilleures pratiques et défis

2024-12-12
Stockage des heures pour les événements humains : meilleures pratiques et défis

Cet article de blog traite des meilleures pratiques pour stocker les heures des événements sur les sites Web d’événements. L’auteur soutient que le stockage direct de l’heure UTC entraîne la perte d’informations cruciales, telles que l’intention initiale de l’utilisateur et l’emplacement. Une meilleure approche consiste à stocker l’heure souhaitée par l’utilisateur et l’emplacement de l’événement, puis à dériver l’heure UTC. Des exemples tels que les erreurs de l’utilisateur, les ajustements des fuseaux horaires internationaux et la mise à jour de l’heure d’été de Microsoft Exchange de 2007 illustrent l’importance de stocker l’heure souhaitée par l’utilisateur. L’auteur recommande de concevoir une interface utilisateur claire et intuitive pour aider les utilisateurs à définir précisément les heures et les emplacements des événements, en soulignant l’importance de maintenir l’intention initiale de l’utilisateur afin d’éviter les erreurs causées par les changements de fuseau horaire.

1 2 207 208 209 210 211 212 214