[{"content":"Introduction : Le « changement de paradigme de calcul » apporté par l\u0026rsquo;ordinateur quantique Ces dernières années, il ne se passe pas un jour sans que nous voyions les mots « ordinateur quantique » dans les actualités ou les articles technologiques. Des histoires semblables à celles des films de science-fiction, telles que « Des calculs qui prendraient des milliers d\u0026rsquo;années aux superordinateurs actuels seront terminés en quelques minutes » ou « Toutes les technologies de cryptage actuelles pourraient être brisées », sont racontées avec conviction. Des géants de l\u0026rsquo;informatique comme Google, IBM et Microsoft aux universités et startups du monde entier, tous se font une concurrence acharnée pour mettre en pratique cette technologie de rêve.\nCependant, lorsqu\u0026rsquo;on demande « Qu\u0026rsquo;est-ce qu\u0026rsquo;un ordinateur quantique après tout ? », peu de personnes peuvent répondre avec précision. Beaucoup de gens ont une image vague d\u0026rsquo;une « boîte magique capable de calculer toutes les combinaisons en même temps », mais strictement parlant, ce n\u0026rsquo;est pas correct.\nDans cet article, nous expliquerons en profondeur depuis les bases, de manière experte mais facile à comprendre, en quoi un ordinateur quantique diffère fondamentalement d\u0026rsquo;un ordinateur classique (les PC et smartphones que nous utilisons habituellement), et comment il utilise des phénomènes étranges de la mécanique quantique tels que la « superposition » (Superposition), l\u0026rsquo;« intrication quantique » (Entanglement) et les « portes quantiques » (Quantum gates) pour les calculs. Au moment où vous aurez fini de lire cet article, vous devriez comprendre clairement la grandeur essentielle des ordinateurs quantiques et leurs défis actuels.\nChapitre 1 : La différence décisive entre les ordinateurs classiques et les ordinateurs quantiques Afin de comprendre le fonctionnement des ordinateurs quantiques, nous devons d\u0026rsquo;abord revoir le fonctionnement des « ordinateurs classiques » que nous utilisons actuellement.\nTableau comparatif : Ordinateur classique vs Ordinateur quantique Élément Ordinateur classique Ordinateur quantique Unité de base Bit (0 ou 1) Qubit (superposition de 0 et 1) Expression de l\u0026rsquo;état Déterministe Probabiliste (non déterminé jusqu\u0026rsquo;à l\u0026rsquo;observation) Méthode de calcul Traitement séquentiel (nécessite des cœurs physiques pour la parallélisation) Parallélisme quantique (manipulation simultanée d\u0026rsquo;états exponentiels) Calculs de prédilection Opérations arithmétiques, traitement de données quotidien Factorisation en nombres premiers, calculs de chimie quantique Tolérance aux erreurs Très forte Très faible (nécessite des environnements cryogéniques et une correction d\u0026rsquo;erreurs) Le monde des ordinateurs classiques : Le « Bit » qui vaut 0 ou 1 Les ordinateurs classiques représentent toutes les informations sous forme de « 0 » ou « 1 ». C\u0026rsquo;est ce qu\u0026rsquo;on appelle un bit (Bit). Physiquement, cela est représenté par la tension élevée (1) ou faible (0) des transistors sur une puce semi-conductrice. Les photos haute résolution de votre smartphone, le texte que vous lisez actuellement et vos vidéos YouTube préférées sont finalement réduits à un nombre massif de « séquences de 0 et de 1 ». Le calcul n\u0026rsquo;est rien d\u0026rsquo;autre que le processus d\u0026rsquo;application d\u0026rsquo;opérations à ces séquences de 0 et de 1 en combinant des circuits logiques de base tels que AND (et logique), OR (ou logique) et NOT (non logique). Il s\u0026rsquo;agit d\u0026rsquo;un monde très certain et déterministe. Si l\u0026rsquo;entrée est la même, la même sortie sera toujours obtenue.\nLe monde des ordinateurs quantiques : Le « Qubit » qui est à la fois 0 et 1 D\u0026rsquo;autre part, l\u0026rsquo;unité d\u0026rsquo;information minimale d\u0026rsquo;un ordinateur quantique est appelée qubit (Qubit : Quantum bit). La plus grande caractéristique d\u0026rsquo;un qubit est que, contrairement à un bit classique qui est soit dans l\u0026rsquo;état « 0 » soit dans l\u0026rsquo;état « 1 », il peut prendre un état dans lequel « 0 et 1 sont mélangés avec une certaine probabilité ». C\u0026rsquo;est ce qu\u0026rsquo;on appelle la « Superposition » (Superposition).\nPar exemple, si un bit classique est une pièce placée face « pile » ou face « face » vers le haut, un qubit est souvent comparé à une « pièce qui tourne continuellement dans les airs ». Une pièce en rotation ne peut être dite ni pile ni face, et les deux états se chevauchent. Ce n\u0026rsquo;est qu\u0026rsquo;au moment où la pièce tombe sur le sol et s\u0026rsquo;arrête (ce que la mécanique quantique appelle « l\u0026rsquo;observation ») qu\u0026rsquo;il est déterminé si c\u0026rsquo;est « pile » ou « face ».\nUn ordinateur quantique intègre cette propriété spécifique au monde microscopique (la mécanique quantique), où « l\u0026rsquo;état n\u0026rsquo;est pas déterminé jusqu\u0026rsquo;à ce qu\u0026rsquo;il soit observé », directement dans le processus de traitement de l\u0026rsquo;information.\nChapitre 2 : Trois propriétés quantiques qui changent fondamentalement le calcul La source de l\u0026rsquo;incroyable puissance de calcul d\u0026rsquo;un ordinateur quantique n\u0026rsquo;est pas simplement une fréquence d\u0026rsquo;horloge élevée ou de petits composants. Elle réside dans l\u0026rsquo;utilisation des lois de la physique elles-mêmes comme ressources de calcul. Les trois phénomènes quantiques suivants sont les principaux facteurs clés.\n1. La superposition (Superposition) et la quantité d\u0026rsquo;informations exponentielle Comme mentionné précédemment, un qubit peut conserver les deux états 0 et 1 en même temps. Un qubit est une « superposition de 0 et de 1 », mais que se passe-t-il si nous augmentons le nombre de qubits ?\n1 qubit : Superposition de 2 états (0, 1) 2 qubits : Superposition de 4 états (00, 01, 10, 11) 3 qubits : Superposition de 8 états N qubits : Superposition de $2^N$ motifs Avec seulement 50 qubits, il est possible de conserver simultanément $2^{50}$ (environ 1 100 billions) d\u0026rsquo;états. Et avec seulement 300 qubits, on peut conserver $2^{300}$ motifs (plus que le nombre de tous les atomes de l\u0026rsquo;univers !) à la fois. Cette capacité exponentielle de rétention d\u0026rsquo;informations est le fondement du potentiel des ordinateurs quantiques. Il est physiquement impossible pour un ordinateur classique de stocker dans sa mémoire plus d\u0026rsquo;états qu\u0026rsquo;il n\u0026rsquo;y a d\u0026rsquo;atomes dans l\u0026rsquo;univers.\n2. L\u0026rsquo;intrication quantique (Entanglement) : L\u0026rsquo;action fantôme à distance L\u0026rsquo;intrication quantique est un phénomène tellement étrange et contraire à l\u0026rsquo;intuition humaine qu\u0026rsquo;Einstein l\u0026rsquo;a appelé « l\u0026rsquo;action fantôme à distance » (Spooky action at a distance) et a refusé de l\u0026rsquo;accepter toute sa vie.\nLorsque plusieurs qubits sont dans un état « d\u0026rsquo;intrication quantique », ils sont fortement liés les uns aux autres, créant une relation semblable à une communauté de destin : « Lorsque l\u0026rsquo;état de l\u0026rsquo;un est déterminé, quelle que soit la distance, l\u0026rsquo;état de l\u0026rsquo;autre est instantanément déterminé ».\nPar exemple, supposons qu\u0026rsquo;il y ait deux qubits A et B dans un état intriqué (ils sont chacun dans une superposition de 0 et de 1). Si A est observé et vaut « 0 », dépassant la vitesse de la lumière qui est la limite de la vitesse de transmission de l\u0026rsquo;information, l\u0026rsquo;état de B est instantanément déterminé (par exemple, pour être toujours « 1 »). Dans un ordinateur quantique, cette intrication quantique est utilisée pour exprimer des corrélations complexes entre plusieurs qubits et effectuer un traitement de l\u0026rsquo;information massivement parallèle. Sans intrication, la puissance de calcul d\u0026rsquo;un ordinateur quantique ne serait pas très différente de celle d\u0026rsquo;un ordinateur classique.\n3. L\u0026rsquo;interférence quantique (Quantum Interference) : La magie qui fait ressortir la bonne réponse Vous pourriez penser : « Si vous pouvez conserver tous les motifs en même temps, pourquoi ne pas les calculer tous en parallèle et obtenir la réponse en un instant ? ». C\u0026rsquo;est le malentendu le plus courant à propos des ordinateurs quantiques. Même si vous effectuez des calculs dans un état superposé, vous devez finalement faire une « observation » pour connaître la réponse. Cependant, au moment où vous l\u0026rsquo;observez, l\u0026rsquo;état s\u0026rsquo;effondre de manière aléatoire en un seul des $2^N$ motifs. Avec cela, vous obtiendrez simplement une réponse aléatoire (au hasard).\nC\u0026rsquo;est ici qu\u0026rsquo;intervient « l\u0026rsquo;interférence quantique » (Interference). Lorsque des ondes entrent en collision, le phénomène où elles se renforcent là où les longueurs d\u0026rsquo;onde correspondent et s\u0026rsquo;annulent là où elles sont décalées est utilisé (le principe est fondamentalement le même que celui des écouteurs à réduction de bruit).\nUn excellent « algorithme quantique » manipule habilement l\u0026rsquo;état quantique pendant le processus de calcul afin que « les amplitudes de probabilité des états (ondes) menant à la bonne réponse se renforcent (amplification) » et « les amplitudes de probabilité des états menant à une mauvaise réponse s\u0026rsquo;annulent (annulation) ». Puis, lors de l\u0026rsquo;observation finale, il fait en sorte que la « bonne réponse » apparaisse avec une probabilité de presque 100 %. Concevoir habilement ce processus d\u0026rsquo;interférence est l\u0026rsquo;essence même de la programmation quantique.\nChapitre 3 : Comment calcule-t-on ? Les « portes quantiques » et les « circuits quantiques » Tout comme les ordinateurs classiques utilisent des portes logiques (AND, OR, NOT, etc.) pour effectuer des calculs, les ordinateurs quantiques appliquent des opérations appelées « portes quantiques » (Quantum Gates) aux qubits pour effectuer des calculs. Une combinaison de plusieurs portes quantiques est appelée un circuit quantique (Quantum Circuit).\nL\u0026rsquo;état d\u0026rsquo;un qubit est exprimé mathématiquement comme un point sur la surface d\u0026rsquo;une sphère tridimensionnelle appelée « sphère de Bloch » (Bloch sphere). Le pôle Nord est « 0 », le pôle Sud est « 1 » et l\u0026rsquo;équateur est un « état où 0 et 1 se superposent à moitié ». Une porte quantique n\u0026rsquo;est rien d\u0026rsquo;autre qu\u0026rsquo;une opération de rotation de l\u0026rsquo;état (vecteur) à la surface de cette sphère.\nVoici quelques-unes des portes quantiques les plus représentatives.\n1. La porte de Hadamard (Porte H) Il s\u0026rsquo;agit de la porte la plus fondamentale spécifique aux ordinateurs quantiques, qui n\u0026rsquo;existe pas dans les ordinateurs classiques. Faire passer un qubit dans l\u0026rsquo;état parfait « 0 » à travers une porte H crée un « état de superposition parfaite » (un point sur l\u0026rsquo;équateur de la sphère de Bloch) où 0 et 1 sont observés avec exactement la moitié de la probabilité chacun. En tant qu\u0026rsquo;étape d\u0026rsquo;initialisation du calcul quantique, de nombreux algorithmes commencent par appliquer cette porte H à tous les qubits.\n2. Les portes de Pauli (Portes X, Y, Z) Ce sont des portes qui incluent des opérations équivalentes à la porte NOT d\u0026rsquo;un ordinateur classique (inversant 0 à 1 et 1 à 0). Sur la sphère de Bloch, cela correspond à une rotation de 180 degrés autour des axes X, Y et Z. En particulier, la porte X inverse le pôle Nord (0) vers le pôle Sud (1), elle a donc exactement la même fonction que la porte NOT classique. La porte Z a pour rôle d\u0026rsquo;inverser la « phase » (comme le timing de l\u0026rsquo;onde) de la superposition, ce qui est extrêmement important pour provoquer l\u0026rsquo;interférence quantique.\n3. La porte CNOT (Porte NOT contrôlée) C\u0026rsquo;est une porte super importante pour créer l\u0026rsquo;intrication quantique. Elle utilise 2 qubits (un bit de contrôle et un bit cible). Elle fonctionne ainsi : « Si le bit de contrôle est à 1, l\u0026rsquo;état du bit cible est inversé (porte X). Si le bit de contrôle est à 0, ne rien faire ». À première vue, cela ressemble à un simple branchement conditionnel IF, mais que se passe-t-il si le bit de contrôle est dans un « état de superposition de 0 et de 1 » ? Le bit cible devient un « état où ce qui est inversé et ce qui ne l\u0026rsquo;est pas se superposent », et les destins des 2 bits sont complètement liés. Les deux qubits sont magnifiquement « intriqués ».\nEn disposant et en appliquant ces portes dans l\u0026rsquo;ordre de gauche à droite, comme sur une partition de musique, des algorithmes complexes sont exécutés.\nChapitre 4 : Pour quoi les ordinateurs quantiques sont-ils doués et pour quoi ne le sont-ils pas ? Je tiens à partager un fait important ici. Un ordinateur quantique n\u0026rsquo;est pas un dieu omnipotent. Pour les tâches quotidiennes telles que la navigation sur le Web, le rendu vidéo, le traitement de macros Excel ou l\u0026rsquo;exécution d\u0026rsquo;applications pour smartphone générales, il est probable que les ordinateurs quantiques ne surpasseront jamais les ordinateurs classiques. Pour ce traitement séquentiel, les ordinateurs classiques, qui sont déjà hautement optimisés et offrent une vitesse et un faible coût écrasants, sont mieux adaptés.\nLes ordinateurs quantiques ne montrent leur véritable valeur que pour « les problèmes spécifiques où les combinaisons de calculs dans un ordinateur classique explosent de manière exponentielle, prenant un temps comparable à la durée de vie de l\u0026rsquo;univers ». C\u0026rsquo;est ce qu\u0026rsquo;on appelle la « suprématie quantique » (Quantum Supremacy) ou l\u0026rsquo;« avantage quantique » (Quantum Advantage).\nCe pour quoi les ordinateurs quantiques sont doués (Applications tueuses) 1. Factorisation en nombres premiers et cryptanalyse (Algorithme de Shor) Actuellement, les communications sécurisées sur Internet (telles que les paiements par carte de crédit et la transmission d\u0026rsquo;informations personnelles) sont protégées par le « cryptage RSA », etc., qui repose sur l\u0026rsquo;hypothèse que « la factorisation en nombres premiers de très grands nombres est pratiquement impossible (prend énormément de temps) pour un ordinateur classique ». Cependant, en utilisant l\u0026rsquo;« algorithme de Shor » découvert par le mathématicien Peter Shor en 1994, les ordinateurs quantiques peuvent exploiter intelligemment les interférences pour le résoudre à une vitesse spectaculaire (temps polynomial). En conséquence, il existe un risque que le système cryptographique actuel s\u0026rsquo;effondre à l\u0026rsquo;avenir, et les banques centrales et les agences gouvernementales du monde entier se précipitent pour faire la transition vers la « cryptographie post-quantique » (Post-Quantum Cryptography).\n2. Calculs de chimie quantique et développement de nouveaux matériaux et médicaments Le comportement des molécules et des atomes dans le monde naturel obéit aux lois de la mécanique quantique en premier lieu. Tenter de simuler le comportement de molécules complexes avec un ordinateur classique entraîne une explosion des combinaisons d\u0026rsquo;interactions électroniques, atteignant la limite des ressources de calcul même pour des molécules relativement petites. Comme l\u0026rsquo;a dit le lauréat du prix Nobel de physique Richard Feynman : « Si vous voulez simuler la nature, vous feriez mieux de la rendre quantique », les ordinateurs quantiques démontrent une puissance native écrasante dans la simulation de matériaux. Des avancées permettant de résoudre les défis de l\u0026rsquo;humanité sont attendues, telles que la conception de nouveaux médicaments révolutionnaires, la découverte de matériaux supraconducteurs à température ambiante, le développement de batteries et de cellules solaires à haut rendement, et la synthèse d\u0026rsquo;engrais économes en énergie.\n3. Problèmes d\u0026rsquo;optimisation combinatoire et recherche (Algorithme de Grover) Les algorithmes quantiques sont également efficaces pour trouver la solution optimale parmi un très grand nombre d\u0026rsquo;options (itinéraires logistiques optimaux, optimisation de portefeuille financier, etc.). En utilisant « l\u0026rsquo;algorithme de Grover », vous pouvez trouver les données souhaitées en un nombre de fois égal à la racine carrée de l\u0026rsquo;itinéraire de l\u0026rsquo;ordinateur classique lors d\u0026rsquo;une recherche dans une base de données où les données ne sont pas triées. Par exemple, s\u0026rsquo;il y a 100 millions d\u0026rsquo;enregistrements de données, une recherche qui prendrait jusqu\u0026rsquo;à 100 millions de fois avec un ordinateur classique peut être effectuée en seulement 10 000 fois environ.\nChapitre 5 : Le mur matériel qui se dresse sur le chemin : « Décohérence » et « Correction d\u0026rsquo;erreurs quantiques » En théorie, un ordinateur quantique est magiquement puissant, mais un mur physique extrêmement haut et escarpé se dresse sur le chemin de sa mise en œuvre pratique. Le plus grand ennemi est le « bruit ».\nLa « superposition » et l\u0026rsquo;« intrication quantique » des qubits sont des états extrêmement délicats et fragiles. Le simple fait de toucher une légère quantité de chaleur, une fluctuation d\u0026rsquo;onde électromagnétique ou un rayon cosmique environnant provoque l\u0026rsquo;effondrement instantané de l\u0026rsquo;état magique, le transformant en un simple bit classique. Ce phénomène est appelé « Décohérence » (effondrement quantique).\nUne concurrence féroce dans les méthodes de réalisation physique Actuellement, divers instituts à travers le monde mènent des recherches sur la façon de construire physiquement ces qubits délicats, et une lutte pour la suprématie est en cours.\nMéthode supraconductrice (Superconducting) : Adoptée par Google, IBM, Amazon, etc. Elle utilise un circuit supraconducteur en forme de boucle et contrôle l\u0026rsquo;état quantique en le refroidissant avec un énorme réfrigérateur à une température extrêmement basse proche du zéro absolu (environ -273°C). C\u0026rsquo;est la méthode actuellement la plus avancée et avec laquelle il est le plus facile d\u0026rsquo;augmenter le nombre de qubits, mais l\u0026rsquo;équipement de refroidissement est énorme et coûteux. Méthode du piège à ions (Trapped Ion) : Adoptée par IonQ, Quantinuum, etc. Elle piège les ions (atomes) dans le vide avec des champs électromagnétiques et les contrôle avec des lasers précis. Sa force est que tous les qubits sont uniformes et peuvent maintenir leur état pendant une longue période (long temps de cohérence), mais sa vitesse de fonctionnement est plus lente par rapport à la méthode supraconductrice. Méthode photonique (Photonic) : PsiQuantum, etc., se concentrent dessus. Elle utilise des particules de lumière (photons). Elle présente l\u0026rsquo;avantage majeur qu\u0026rsquo;elle fonctionne en grande partie à température ambiante sans nécessiter un environnement cryogénique, et elle est très compatible avec les technologies de fabrication de puces en silicium et de communication par fibre optique existantes. Méthode topologique (Topological) : Longtemps étudiée par Microsoft. Il s\u0026rsquo;agit d\u0026rsquo;une approche ambitieuse qui utilise les propriétés topologiques (géométrie topologique) de particules spéciales appelées anyons pour créer des qubits fondamentalement résistants au bruit environnemental (moins sujets aux erreurs). On dit qu\u0026rsquo;elle est la plus forte en théorie, mais qu\u0026rsquo;elle présente les obstacles à la réalisation physique les plus élevés. Le chemin vers le but ultime, l\u0026rsquo;« ordinateur quantique tolérant aux pannes (FTQC) » Des erreurs de calcul (telles que le basculement de bits dû aux rayons cosmiques) existent également dans le monde de l\u0026rsquo;informatique classique d\u0026rsquo;aujourd\u0026rsquo;hui, mais comme elles sont parfaitement corrigées par un « code de correction d\u0026rsquo;erreurs », nous pouvons utiliser nos smartphones sans jamais être conscients d\u0026rsquo;une erreur. Pour effectuer des calculs à grande échelle pratiques même avec un ordinateur quantique, une « Correction d\u0026rsquo;erreurs quantiques » (Quantum Error Correction: QEC) similaire est indispensable.\nCependant, comme l\u0026rsquo;état quantique a la propriété de se « briser lorsqu\u0026rsquo;on l\u0026rsquo;observe », il y a un dilemme fatal où l\u0026rsquo;on ne peut pas regarder (observer) directement le contenu pour vérifier les erreurs. Pour contourner cela, une théorie a été établie pour construire un « qubit logique » stable capable de détecter et de corriger les erreurs en combinant habilement de nombreux « qubits physiques » instables (tels que le code de surface). Cependant, on dit que 1 000 à 10 000 qubits physiques sont nécessaires pour fabriquer un seul qubit logique. Pour exécuter l\u0026rsquo;algorithme de Shor et d\u0026rsquo;autres à l\u0026rsquo;aide de milliers de qubits logiques, un système massif avec des millions à des dizaines de millions de qubits physiques au total est requis.\nActuellement, nous sommes dans ce qu\u0026rsquo;on appelle l\u0026rsquo;ère des appareils NISQ (Noisy Intermediate-Scale Quantum : Quantique à échelle intermédiaire bruité). Ce sont des machines de transition qui fonctionnent avec des dizaines à des centaines de qubits sans correction d\u0026rsquo;erreurs. Les experts prédisent qu\u0026rsquo;il faudra encore des décennies de recherche et de développement à long terme pour atteindre le but ultime d\u0026rsquo;un « Ordinateur quantique tolérant aux pannes » (Fault-Tolerant Quantum Computer: FTQC) entièrement capable de corriger les erreurs.\nChapitre 6 : L\u0026rsquo;histoire des ordinateurs quantiques et perspectives d\u0026rsquo;avenir Enfin, jetons un œil à la façon dont les ordinateurs quantiques sont nés et où ils se dirigent à l\u0026rsquo;avenir.\nDe la naissance de la théorie à la démonstration de la « suprématie quantique » Les années 1980 : Les physiciens Paul Benioff et Richard Feynman ont proposé le concept d\u0026rsquo;un ordinateur qui utilise les principes de la mécanique quantique. La phrase « Si vous voulez simuler la nature, utilisez la mécanique quantique » en a été le point de départ. 1994 : Peter Shor annonce un algorithme quantique de factorisation en nombres premiers (l\u0026rsquo;algorithme de Shor). Cela a choqué le monde et a déclenché un afflux massif de fonds de recherche. 1996 : Lov Grover publie l\u0026rsquo;algorithme de Grover pour accélérer la recherche de données. 2019 : Une étape historique. Google a annoncé qu\u0026rsquo;il avait utilisé un processeur supraconducteur de 53 qubits appelé « Sycamore » pour effectuer un calcul de vérification de génération de nombres aléatoires, qui prendrait (soi-disant) 10 000 ans sur un superordinateur classique, en environ 200 secondes. Cela a fait grand bruit en tant que première déclaration de démonstration de la « Suprématie quantique » (Quantum Supremacy) au monde (plus tard, IBM et d\u0026rsquo;autres ont amélioré l\u0026rsquo;algorithme du côté du superordinateur classique et ont rétorqué qu\u0026rsquo;il pouvait être calculé en quelques jours, conduisant à des débats animés). Après 2023 : IBM annonce le processeur « Condor » avec plus de 1 000 qubits. De plus, l\u0026rsquo;Université de Harvard et d\u0026rsquo;autres ont réussi à générer et à manipuler des « qubits logiques », et les premières démonstrations de technologie de correction d\u0026rsquo;erreurs commencent à être signalées les unes après les autres. Vers la technologie de la prochaine génération Un ordinateur quantique n\u0026rsquo;est pas simplement un « CPU de nouvelle génération avec une vitesse d\u0026rsquo;horloge plus rapide ». Il s\u0026rsquo;agit d\u0026rsquo;un véritable changement de paradigme en informatique, réécrivant le concept même de calcul à partir de zéro avec les règles de la mécanique quantique qui régissent le monde microscopique.\nIl est peu probable que nous ayons un « smartphone quantique personnel » dans nos poches de notre vivant (ce n\u0026rsquo;est d\u0026rsquo;ailleurs pas nécessaire). Cependant, l\u0026rsquo;avenir dans lequel un puissant centre de données quantique de l\u0026rsquo;autre côté d\u0026rsquo;un réseau cloud tel qu\u0026rsquo;AWS ou Azure découvre soudainement un remède miracle contre une maladie incurable, ou produit un matériau d\u0026rsquo;énergie propre de rêve qui résout le réchauffement climatique (par exemple, un catalyseur qui synthétise l\u0026rsquo;ammoniac à partir de l\u0026rsquo;azote de l\u0026rsquo;air à température ambiante), approche à grands pas.\nActuellement, nous sommes encore aux premiers jours équivalents à l\u0026rsquo;ENIAC dans les années 1940, qui fonctionnait avec des cartes perforées alors que la pièce entière chauffait à cause de la chaleur d\u0026rsquo;énormes tubes à vide. Cependant, des chercheurs et ingénieurs de haut niveau du monde entier se creusent les méninges, et des percées technologiques sont signalées chaque jour. Nous qui pouvons assister en temps réel au processus d\u0026rsquo;évolution de cette nouvelle « aube du calcul » pouvons être considérés comme vivant dans une période très excitante de l\u0026rsquo;histoire.\nLa porte du monde quantique vient de s\u0026rsquo;ouvrir. Nous devons garder un œil sur les tendances futures.\nCet article vise à expliquer les concepts fondamentaux de l\u0026rsquo;informatique quantique d\u0026rsquo;une manière facile à comprendre pour les hommes d\u0026rsquo;affaires et le grand public intéressé par la technologie. Veuillez noter que des simplifications ont été apportées à partir des définitions mathématiques et physiques strictes (telles que la notation bra-ket et les détails de l\u0026rsquo;amplitude de probabilité complexe).\n","date":"2026-09-05T22:10:00+09:00","image":"http://kenji.blog/p/quantum-computer-basics/quantum_basics_eyecatch_1788613712487_huf997c6e55368509d0617b56f68899854_1084950_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/quantum-computer-basics/","title":"【Anatomie Complète】 Qu\"est-ce qu\"un ordinateur quantique ? 〜 Le principe de calcul ultime expliqué de zéro 〜"},{"content":"Introduction : La \u0026ldquo;menace\u0026rdquo; de l\u0026rsquo;informatique quantique pour la technologie de cryptographie Actuellement, la plupart des communications que nous effectuons quotidiennement sur Internet — paiements bancaires en ligne, navigation web (HTTPS), échanges sur des applications de messagerie, et même transactions sur blockchain ou cryptomonnaies — sont protégées par une technologie appelée \u0026ldquo;cryptographie à clé publique\u0026rdquo;. Plus précisément, des algorithmes comme le chiffrement RSA et la cryptographie sur les courbes elliptiques (ECC) constituent le fondement de la fiabilité de notre société numérique moderne.\nCes méthodes de cryptographie reposent sur des problèmes mathématiques difficiles, tels que la \u0026ldquo;factorisation en nombres premiers de très grands nombres\u0026rdquo; et le \u0026ldquo;problème du logarithme discret\u0026rdquo;, dont la résolution par les ordinateurs classiques actuels (y compris les supercalculateurs) prendrait un temps astronomique, garantissant ainsi leur sécurité. Cependant, avec la mise en pratique des ordinateurs quantiques , qui connaissent des progrès remarquables ces dernières années, cette prémisse sera fondamentalement renversée.\nL\u0026rsquo;algorithme de Shor, présenté par Peter Shor en 1994, a prouvé mathématiquement qu\u0026rsquo;un ordinateur quantique doté de performances suffisantes pourrait résoudre des problèmes de factorisation et de logarithme discret en un temps extrêmement court. Cela signifie que toutes les communications chiffrées protégeant l\u0026rsquo;Internet actuel risquent d\u0026rsquo;être déchiffrées à l\u0026rsquo;avenir (un problème connu sous le nom de Y2Q : Years to Quantum, ou Q-Day).\nEncore plus préoccupante est l\u0026rsquo;existence d\u0026rsquo;une méthode d\u0026rsquo;attaque appelée \u0026ldquo;Harvest Now, Decrypt Later\u0026rdquo; (Récolter maintenant, déchiffrer plus tard : voler les données maintenant, les stocker, et les déchiffrer à l\u0026rsquo;avenir quand cela deviendra possible). Les données nécessitant une confidentialité sur plusieurs décennies, telles que les secrets d\u0026rsquo;État, la propriété intellectuelle des entreprises et les données biométriques personnelles, pourraient déjà faire l\u0026rsquo;objet de vols en vue d\u0026rsquo;un déchiffrement futur.\nPour faire face à cette crise sans précédent, des cryptographes et des instituts de recherche du monde entier concentrent leurs efforts pour développer la cryptographie post-quantique (PQC : Post-Quantum Cryptography) , une technologie de chiffrement de nouvelle génération capable de maintenir la sécurité même contre les attaques d\u0026rsquo;ordinateurs quantiques. Dans cet article, nous expliquerons en détail depuis les bases de la PQC jusqu\u0026rsquo;aux mécanismes de ses principaux algorithmes, ainsi que les dernières tendances de normalisation mondiale menées par l\u0026rsquo;Institut national des normes et de la technologie (NIST) des États-Unis.\nQu\u0026rsquo;est-ce que la cryptographie post-quantique (PQC) ? La cryptographie post-quantique (Post-Quantum Cryptography, PQC) est un terme générique désignant les algorithmes de chiffrement conçus pour fonctionner sur les ordinateurs classiques existants, tout en résistant aux attaques (comme l\u0026rsquo;algorithme de Shor) menées par de futurs ordinateurs quantiques à grande échelle.\nDes technologies souvent confondues sont la \u0026ldquo;cryptographie quantique (Quantum Cryptography)\u0026rdquo; et la \u0026ldquo;distribution quantique de clés (QKD)\u0026rdquo;, mais il s\u0026rsquo;agit d\u0026rsquo;approches totalement différentes. La cryptographie quantique (QKD) est une technologie matérielle qui utilise les lois de la mécanique quantique (comme le fait que l\u0026rsquo;observation modifie l\u0026rsquo;état) pour rendre l\u0026rsquo;écoute sur le canal de communication physiquement impossible. Elle nécessite des fibres optiques dédiées et des équipements spéciaux, ce qui pose des problèmes de coût de déploiement et de limite de distance.\nEn revanche, la PQC est une technologie de cryptographie purement logicielle basée sur les mathématiques . Par conséquent, elle peut être intégrée sous forme de mise à jour logicielle dans l\u0026rsquo;infrastructure Internet existante, les serveurs, les smartphones, les navigateurs, etc., ce qui la rend extrêmement applicable dans le monde réel. Pour les entreprises informatiques et les gouvernements du monde entier, remplacer (migrer) le RSA et l\u0026rsquo;ECC actuellement utilisés par cette PQC est une tâche urgente.\nLes 4 principales approches mathématiques soutenant la PQC Divers algorithmes de PQC ont été proposés, basés sur des problèmes mathématiques difficiles (comme les problèmes NP-difficiles) qui ne peuvent pas être résolus efficacement même avec un ordinateur quantique. Nous présentons ici les quatre catégories principales actuellement dominantes.\nApproches principales de la cryptographie post-quantique (PQC) 1 2 3 4 5 6 7 8 9 10 11 12 graph LR PQC[Cryptographie post-quantique PQC] --\u0026gt; L[Cryptographie fondée sur les réseaux Lattice-based] PQC --\u0026gt; H[Cryptographie fondée sur le hachage Hash-based] PQC --\u0026gt; M[Cryptographie multivariée Multivariate] PQC --\u0026gt; C[Cryptographie fondée sur les codes Code-based] L --\u0026gt; L1(FIPS 203: ML-KEM) L --\u0026gt; L2(FIPS 204: ML-DSA) H --\u0026gt; H1(FIPS 205: SLH-DSA) style PQC fill:#f9f,stroke:#333,stroke-width:2px 1. Cryptographie fondée sur les réseaux (Lattice-based Cryptography) Actuellement, cette \u0026ldquo;cryptographie fondée sur les réseaux\u0026rdquo; est considérée comme la plus prometteuse et constitue la tendance principale dans le domaine de la PQC. La cryptographie sur les réseaux base sa sécurité sur des problèmes liés à des points régulièrement espacés (points de réseau) dans un espace multidimensionnel. Parmi les problèmes célèbres figurent le \u0026ldquo;problème du vecteur le plus court (SVP : Shortest Vector Problem)\u0026rdquo; et le \u0026ldquo;problème d\u0026rsquo;apprentissage avec erreurs (LWE : Learning With Errors)\u0026rdquo;.\nAperçu du mécanisme : Imaginez un nombre infini de points disposés en réseau dans un espace à très haute dimension (des centaines à des milliers de dimensions). Trouver un point de réseau spécifique est facile en 2 ou 3 dimensions, mais avec des centaines de dimensions, aucun algorithme efficace n\u0026rsquo;a été découvert pour y parvenir, ni pour les ordinateurs classiques ni pour les quantiques. En particulier, le problème LWE exploite la propriété selon laquelle « ajouter intentionnellement un petit \u0026ldquo;bruit (erreur)\u0026rdquo; à un système d\u0026rsquo;équations linéaires rend considérablement plus difficile la déduction des variables originales ».\nAvantages :\nApplicable à la fois à l\u0026rsquo;échange de clés (KEM) et aux signatures numériques. Vitesse de traitement très rapide (parfois plus rapide que RSA ou ECC). Bon équilibre avec des tailles de clé et de texte chiffré relativement petites. La plupart des algorithmes actuellement normalisés par le NIST (tels que ML-KEM et ML-DSA) adoptent cette cryptographie basée sur les réseaux.\n2. Cryptographie fondée sur le hachage (Hash-based Cryptography) La cryptographie fondée sur le hachage est un algorithme PQC spécialisé dans les signatures numériques. Sa sécurité repose uniquement sur la résistance aux collisions et l\u0026rsquo;unidirectionnalité de \u0026ldquo;fonctions de hachage cryptographiques\u0026rdquo; sûres comme SHA-2 ou SHA-3.\nAperçu du mécanisme : Le point de départ est un schéma de signature à usage unique appelé \u0026ldquo;signature de Lamport (Lamport Signature)\u0026rdquo;. En les regroupant dans une structure de données arborescente appelée \u0026ldquo;arbre de Merkle (Merkle Tree)\u0026rdquo;, il devient possible d\u0026rsquo;effectuer plusieurs signatures avec une seule paire de clés.\nAvantages :\nLe fondement de la sécurité est extrêmement solide, avec une forte preuve que \u0026ldquo;c\u0026rsquo;est sûr tant que la fonction de hachage est sûre\u0026rdquo;. Moins dépendant d\u0026rsquo;une structure mathématique, réduisant le risque de découvrir des méthodes de décryptage inattendues. Inconvénients :\nNe peut pas être utilisé pour l\u0026rsquo;échange de clés (KEM), uniquement pour les signatures numériques. La taille de la signature a tendance à être grande. Il existe des approches \u0026ldquo;avec état (stateful)\u0026rdquo; et \u0026ldquo;sans état (stateless)\u0026rdquo; ; les méthodes avec état (comme XMSS) nécessitent une gestion stricte du nombre d\u0026rsquo;utilisations de la clé, ce qui les rend difficiles à implémenter. Le NIST a normalisé \u0026ldquo;SLH-DSA (anciennement SPHINCS+)\u0026rdquo; en tant que signature basée sur le hachage sans état.\n3. Cryptographie multivariée (Multivariate Cryptography) La cryptographie multivariée base sa sécurité sur la difficulté de résoudre un système d\u0026rsquo;équations polynomiales quadratiques à plusieurs variables (le problème MQ : Multivariate Quadratic problem). Ce problème est connu pour être NP-difficile.\nAperçu du mécanisme : L\u0026rsquo;expéditeur crée un texte chiffré (ou une signature) en substituant le texte clair (ou la valeur de hachage) dans une équation complexe à plusieurs variables fournie en tant que clé publique. Le destinataire légitime possède une \u0026ldquo;information cachée (trappe)\u0026rdquo; sous forme de clé secrète permettant de transformer facilement la structure de l\u0026rsquo;équation sous une forme soluble, et l\u0026rsquo;utilise pour déchiffrer (ou vérifier la signature).\nAvantages :\nLa taille de la signature est très petite. La vitesse de vérification de la signature est extrêmement rapide. Convient aux appareils IoT aux ressources limitées. Inconvénients :\nLa taille de la clé publique est très grande (peut atteindre des dizaines à des centaines de kilo-octets). Dans le passé, des algorithmes prometteurs (comme Rainbow) ont été compromis par des attaques classiques, ce qui rend la confiance en leur sécurité plus difficile à établir que pour d\u0026rsquo;autres méthodes. 4. Cryptographie fondée sur les codes (Code-based Cryptography) La cryptographie fondée sur les codes applique à la cryptographie la théorie des \u0026ldquo;codes correcteurs d\u0026rsquo;erreurs\u0026rdquo; utilisés pour corriger les erreurs sur les canaux de communication. La \u0026ldquo;cryptographie de McEliece\u0026rdquo;, proposée en 1978, est la plus célèbre et l\u0026rsquo;une des plus anciennes du domaine de la PQC.\nAperçu du mécanisme : L\u0026rsquo;expéditeur utilise la clé publique du destinataire (une matrice génératrice d\u0026rsquo;un code correcteur d\u0026rsquo;erreurs cachant une structure spécifique) pour encoder le texte clair, puis ajoute des erreurs intentionnelles (du bruit) avant de le transmettre. Le destinataire utilise sa clé secrète pour supprimer les erreurs et récupérer le texte clair. Un cryptanalyste doit corriger les erreurs d\u0026rsquo;un code aléatoire sans en connaître la structure, ce qui est appelé le \u0026ldquo;problème général de décodage par syndrome\u0026rdquo;, prouvé NP-difficile.\nAvantages :\nAyant été étudiée de manière exhaustive pendant plus de 40 ans sans qu\u0026rsquo;aucune attaque efficace n\u0026rsquo;ait été trouvée, sa fiabilité en matière de sécurité est extrêmement élevée. Le traitement du chiffrement et du déchiffrement est rapide. Inconvénients :\nLa taille de la clé publique est énorme (peut atteindre plusieurs mégaoctets). Par conséquent, il est difficile de l\u0026rsquo;utiliser dans des environnements où la bande passante ou la mémoire sont limitées (comme le handshake TLS). Dernières tendances de la normalisation de la PQC par le NIST L\u0026rsquo;Institut national des normes et de la technologie (NIST) des États-Unis a lancé un appel public mondial en 2016 pour les algorithmes de cryptographie post-quantique de nouvelle génération, menant des évaluations rigoureuses sur plusieurs années.\nEn 2024, le NIST a finalement annoncé les trois algorithmes suivants en tant que normes fédérales de traitement de l\u0026rsquo;information (FIPS) officielles. Cela fournit une base solide aux organisations du monde entier pour commencer leur implémentation en environnement de production.\nNormes FIPS établies (2024) FIPS 203: ML-KEM (anciennement : CRYSTALS-Kyber)\nUtilisation : Mécanisme d\u0026rsquo;encapsulation de clé (KEM) / Chiffrement et échange de clés Technologie de base : Cryptographie fondée sur les réseaux (Module-LWE) Caractéristiques : Excellent équilibre entre la taille de la clé et la vitesse, il servira d\u0026rsquo;échange de clés PQC par défaut pour des utilisations Internet générales telles que les communications web (TLS) et les applications de messagerie sécurisées. FIPS 204: ML-DSA (anciennement : CRYSTALS-Dilithium)\nUtilisation : Signature numérique Technologie de base : Cryptographie fondée sur les réseaux (Module-LWE) Caractéristiques : Norme principale pour les signatures numériques. Permettant un traitement efficace, elle deviendra la nouvelle norme pour toutes les applications de signature électronique, telles que la signature de logiciels et l\u0026rsquo;authentification de documents. FIPS 205: SLH-DSA (anciennement : SPHINCS+)\nUtilisation : Signature numérique Technologie de base : Cryptographie fondée sur le hachage (sans état) Caractéristiques : Joue un rôle crucial car il sert de sauvegarde au cas où des vulnérabilités seraient découvertes dans la cryptographie sur les réseaux à l\u0026rsquo;avenir. Bien que la taille de la signature soit plus grande, elle convient aux applications nécessitant une fiabilité à long terme. La recherche d\u0026rsquo;une plus grande diversité Bien que le NIST ait terminé son premier processus de normalisation, il continue d\u0026rsquo;explorer d\u0026rsquo;autres algorithmes. La normalisation étant particulièrement biaisée en faveur de la \u0026ldquo;cryptographie fondée sur les réseaux\u0026rdquo;, il est jugé essentiel d\u0026rsquo;assurer la diversité des algorithmes (Crypto Diversity) . Des évaluations sont en cours pour des méthodes comme la cryptographie basée sur les codes comme norme de sauvegarde pour l\u0026rsquo;échange de clés, et les fondations de la PQC devraient devenir encore plus solides à l\u0026rsquo;avenir.\nScénarios de transition vers la PQC et défis : L\u0026rsquo;importance de la \u0026ldquo;Crypto-Agilité\u0026rdquo; Avec la publication de normes officielles par le NIST, les agences gouvernementales, les institutions financières et les entreprises technologiques du monde entier accélèrent leur migration (transition) des systèmes existants RSA/ECC vers la PQC. Les directives d\u0026rsquo;organismes tels que la NSA (Agence nationale de sécurité américaine) recommandent également d\u0026rsquo;achever cette migration rapidement.\nAdoption d\u0026rsquo;une approche hybride Étant donné que les algorithmes PQC sont nouveaux, ils n\u0026rsquo;ont pas subi l\u0026rsquo;épreuve du temps contrairement aux cryptographies classiques. En tenant compte du risque de bugs cachés dans l\u0026rsquo;implémentation ou de la découverte de nouvelles méthodes d\u0026rsquo;attaque, une \u0026ldquo;approche hybride\u0026rdquo; est recommandée pendant la période de transition. Il s\u0026rsquo;agit d\u0026rsquo;une méthode d\u0026rsquo;échange de clés combinant une cryptographie existante éprouvée (ex. : ECDHE) et une nouvelle PQC (ex. : ML-KEM). Actuellement, les principaux navigateurs et services cloud adoptent rapidement cette méthode à titre expérimental.\nRéalisation de la crypto-agilité (Crypto-Agility) Ce dont les entreprises et les développeurs de systèmes devront être le plus conscients à l\u0026rsquo;avenir, c\u0026rsquo;est d\u0026rsquo;assurer la \u0026ldquo;crypto-agilité (Crypto-Agility)\u0026rdquo; . Il est essentiel de concevoir une architecture flexible permettant d\u0026rsquo;échanger et de mettre à jour rapidement les algorithmes de chiffrement sans arrêter le système, au cas où des failles seraient découvertes dans un algorithme ou si de nouvelles normes apparaissaient à l\u0026rsquo;avenir.\nLa création d\u0026rsquo;un inventaire cryptographique (CBOM : Cryptography Bill of Materials) pour identifier avec précision \u0026ldquo;où\u0026rdquo;, \u0026ldquo;quelle cryptographie\u0026rdquo; et \u0026ldquo;dans quel but\u0026rdquo; est utilisée au sein des systèmes de l\u0026rsquo;entreprise constitue une première étape importante vers la migration PQC.\nConclusion : Se préparer au futur \u0026ldquo;Q-Day\u0026rdquo; L\u0026rsquo;évolution de l\u0026rsquo;informatique quantique apportera d\u0026rsquo;énormes avantages à l\u0026rsquo;humanité, mais elle représente également la plus grande menace pour la sécurité cryptographique qui constitue le fondement de notre société numérique actuelle. La cryptographie post-quantique (PQC) n\u0026rsquo;est plus un \u0026ldquo;thème de recherche d\u0026rsquo;un futur lointain\u0026rdquo;. Après avoir franchi l\u0026rsquo;étape de la publication des normes FIPS par le NIST, la PQC est entrée dans une véritable phase d\u0026rsquo;\u0026ldquo;implémentation et de migration\u0026rdquo;.\nCompte tenu de la menace \u0026ldquo;Harvest Now, Decrypt Later\u0026rdquo;, la migration vers la PQC est une priorité absolue qui doit être entreprise \u0026ldquo;immédiatement\u0026rdquo; par toutes les organisations traitant des données sensibles. En comprenant en profondeur la technologie de cryptographie de nouvelle génération et en augmentant la crypto-agilité des systèmes, surmontons en toute sécurité l\u0026rsquo;ère imminente de l\u0026rsquo;informatique quantique.\n","date":"2026-09-05T22:09:22+09:00","image":"http://kenji.blog/p/post-quantum-cryptography/post_quantum_cryptography_1788613735417_hu9d405d830ed3e56e9e703ab601cf6c0a_1143219_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/post-quantum-cryptography/","title":"【PQC】 Vue d'ensemble de la cryptographie post-quantique, le chiffrement de nouvelle génération à l'ère de l'informatique quantique"},{"content":"Introduction : À la croisée de la cryptographie et de l\u0026rsquo;informatique quantique Dans la société Internet moderne, la cryptographie à clé publique est la base de la protection du secret des communications. Le représentant le plus célèbre est le \u0026ldquo;cryptage RSA\u0026rdquo;, développé en 1977 par Ron Rivest, Adi Shamir et Leonard Adleman. Du paiement des achats en ligne que nous utilisons tous les jours, à la navigation sur des sites Web (HTTPS), en passant par l\u0026rsquo;envoi et la réception d\u0026rsquo;e-mails, le cryptage RSA fonctionne comme le cœur de l\u0026rsquo;infrastructure Internet.\nCependant, avec l\u0026rsquo;avènement de l\u0026rsquo;\u0026ldquo;ordinateur quantique\u0026rdquo;, il a été souligné que cette sécurité pourrait être fondamentalement bouleversée. Dans les médias, on voit parfois des gros titres sensationnels comme : \u0026ldquo;Une fois l\u0026rsquo;ordinateur quantique achevé, les mots de passe et les cryptages du monde entier seront décryptés en quelques secondes\u0026rdquo;. Est-ce vraiment le cas ?\nCet article se penche sur les mécanismes de la méthode classique de décryptage GNFS (Crible du corps de nombres généralisé) et sur l\u0026rsquo;algorithme définitif de décryptage utilisant des ordinateurs quantiques, l\u0026rsquo;\u0026ldquo;Algorithme de Shor\u0026rdquo; (Shor\u0026rsquo;s Algorithm). Nous expliquerons de manière simple des concepts avancés tels que la transformée de Fourier quantique et la recherche de période, et examinerons en détail l\u0026rsquo;état actuel du matériel quantique à l\u0026rsquo;ère NISQ (Noisy Intermediate-Scale Quantum) ainsi que les obstacles nécessaires pour briser réellement le RSA-2048.\nLes fondements du cryptage RSA : La difficulté de la factorisation en nombres premiers La sécurité du cryptage RSA repose sur une asymétrie mathématique extrêmement simple. Il s\u0026rsquo;agit du fait qu\u0026rsquo; \u0026ldquo;il est facile de multiplier deux nombres premiers géants, mais il est extrêmement difficile de retrouver les deux nombres premiers originaux (factorisation) à partir du résultat de cette multiplication (nombre composé)\u0026rdquo;.\nPar exemple, supposons qu\u0026rsquo;il y ait deux nombres premiers, $ p = 61 $ et $ q = 53 $. Le calcul de leur multiplication $ N = p \\times q = 3233 $ est instantané. Cependant, si on ne vous donne que le nombre \u0026ldquo;3233\u0026rdquo; et qu\u0026rsquo;on vous demande \u0026ldquo;quelle est la multiplication de quels nombres premiers ?\u0026rdquo;, la complexité du calcul augmente de façon explosive à mesure que les nombres s\u0026rsquo;agrandissent.\nDans le RSA-2048, actuellement dominant, on utilise une longueur de clé de 2048 bits, c\u0026rsquo;est-à-dire un nombre composé géant $ N $ d\u0026rsquo;environ 617 chiffres en base 10. Si l\u0026rsquo;on parvient à factoriser ce $ N $, le cryptage sera considéré comme déchiffré.\nLe défi des ordinateurs classiques : GNFS (Crible du corps de nombres généralisé) Pour résoudre le problème de la factorisation, les mathématiciens et les cryptographes ont développé divers algorithmes au fil des ans. Parmi eux, le plus rapide actuellement sur les ordinateurs classiques est le ** Crible du corps de nombres généralisé (GNFS : General Number Field Sieve) **.\nGNFS est une méthode qui étend les calculs dans l\u0026rsquo;anneau des entiers à un corps algébrique plus abstrait (Number Field) afin de factoriser un nombre géant $ N $. Le processus général est le suivant :\n** Sélection de polynômes ** : Trouver un polynôme $ f(x) $ avec un degré et des coefficients appropriés qui a $ N $ comme racine. ** Collecte de données (criblage) ** : Rechercher un grand nombre de paires de nombres qui peuvent être décomposées en petits nombres premiers (nombres friables, Smooth numbers) sur le corps des rationnels et des corps algébriques. Ce processus est appelé \u0026ldquo;criblage\u0026rdquo; et est la partie la plus chronophage. ** Génération et réduction de matrices ** : Générer une matrice creuse géante (une matrice dont la plupart des éléments sont 0) sur la base des relations collectées, et trouver une solution à l\u0026rsquo;aide de méthodes d\u0026rsquo;algèbre linéaire (comme la méthode de Lanczos par blocs). ** Calcul des racines carrées ** : Enfin, calculer la racine carrée sur le corps algébrique pour dériver les facteurs (facteurs premiers) de $ N $. La complexité de GNFS est évaluée de manière non asymptotique à $ O(\\exp((\\sqrt[3]{\\frac{64}{9}} + o(1)) (\\log N)^{\\frac{1}{3}} (\\log \\log N)^{\\frac{2}{3}})) $. C\u0026rsquo;est ce qu\u0026rsquo;on appelle une complexité temporelle \u0026ldquo;sous-exponentielle\u0026rdquo; (Sub-exponential). Bien que plus rapide qu\u0026rsquo;un temps exponentiel, c\u0026rsquo;est une complexité beaucoup plus lente qu\u0026rsquo;un temps polynomial (Polynomial time).\nEn fait, en 2020, une équipe de recherche internationale a réussi à factoriser le RSA-250 (un nombre composé de 829 bits et 250 chiffres) en utilisant GNFS. Ce calcul a nécessité un temps de calcul énorme d\u0026rsquo;environ 2700 cœurs-années de CPU en rassemblant les ressources informatiques du monde entier. Cependant, lorsqu\u0026rsquo;il s\u0026rsquo;agit de 2048 bits, on dit que la complexité de calcul requise gonflerait jusqu\u0026rsquo;à des billions de fois l\u0026rsquo;âge de l\u0026rsquo;univers, et peu importe le nombre de superordinateurs actuels fonctionnant en parallèle, il est impossible de le décrypter dans un temps réaliste avec des méthodes classiques.\nL\u0026rsquo;atout des ordinateurs quantiques : L\u0026rsquo;algorithme de Shor C\u0026rsquo;est ici qu\u0026rsquo;intervient l\u0026rsquo;\u0026ldquo;Algorithme de Shor\u0026rdquo;, présenté par Peter Shor en 1994. Cet algorithme était révolutionnaire car il permettait de résoudre le problème de la factorisation sur un ordinateur quantique en ** temps polynomial ** ( $ O((\\log N)^3) $ ). La différence entre le temps sous-exponentiel et le temps polynomial est décisive et signifie qu\u0026rsquo;en théorie, les ordinateurs quantiques détruiront complètement le cryptage RSA.\nFlux global de l\u0026rsquo;algorithme de Shor 1 2 3 4 5 6 7 8 9 10 graph TD A[Entrez le nombre N à factoriser] --\u0026gt; B[Sélectionnez un entier aléatoire a] B --\u0026gt; C{Le PGCD\u0026lt;br\u0026gt;de a et N} C --\u0026gt;|Supérieur à 1| D[Par chance, un facteur premier est trouvé !] C --\u0026gt;|1 Premiers entre eux| E[C\u0026#39;est au tour de l\u0026#39;ordinateur quantique] E --\u0026gt; F[Trouver la période r de la fonction f_x = a^x mod N\u0026lt;br\u0026gt;par transformée de Fourier quantique] F --\u0026gt; G{La période r est paire ET\u0026lt;br\u0026gt;a^r/2 ≢ -1 mod N} G --\u0026gt;|Oui| H[Calculer le PGCD gcd_a^r/2 ± 1, N] H --\u0026gt; I((Factorisation réussie !)) G --\u0026gt;|Non| B L\u0026rsquo;algorithme de Shor ne résout pas directement le problème de la factorisation, mais utilise des théorèmes de la théorie des nombres pour le convertir en un autre problème appelé \u0026ldquo;problème de recherche de période\u0026rdquo; (Period Finding Problem), puis utilise les caractéristiques des ordinateurs quantiques pour le résoudre rapidement.\nÉtape 1 : Réduction de la factorisation au problème de recherche de période (Traitement classique) La première étape de l\u0026rsquo;algorithme est exécutée sur un ordinateur classique. Pour le nombre $ N $ à factoriser, choisissez un entier aléatoire $ a $ ($ 1 \u003c a \u003c N $) premier avec $ N $ (le plus grand commun diviseur est 1). Si, par hasard, le plus grand commun diviseur n\u0026rsquo;est pas 1, le diviseur commun trouvé à ce moment-là est un facteur premier de $ N $, et le décryptage est terminé, mais la probabilité est extrêmement faible.\nEnsuite, considérez la suite d\u0026rsquo;équations modulo suivante : $ f(x) = a^x \\pmod N $\nEn substituant $ x = 1, 2, 3, \\dots $ dans cette fonction $ f(x) $, les valeurs semblent aléatoires, mais puisqu\u0026rsquo;elles sont calculées dans une plage finie, elles reviendront toujours à la valeur d\u0026rsquo;origine à un moment donné et répéteront la même suite de nombres. La période de cette répétition est appelée $ r $. En d\u0026rsquo;autres termes, $ a^r \\equiv 1 \\pmod N $ Le problème de trouver le plus petit entier positif $ r $ qui satisfait cette condition est le \u0026ldquo;problème de recherche de période\u0026rdquo;.\nSi cette période $ r $ est trouvée et que $ r $ est pair, alors $ a^r - 1 \\equiv 0 \\pmod N $, et en utilisant la formule de factorisation, on peut la transformer en $ (a^{r/2} - 1)(a^{r/2} + 1) \\equiv 0 \\pmod N $ À partir de là, en utilisant l\u0026rsquo;algorithme d\u0026rsquo;Euclide pour calculer le plus grand commun diviseur de $ N $ et de $ a^{r/2} \\pm 1 $, les facteurs premiers de $ N $ peuvent être obtenus avec une probabilité extrêmement élevée.\nEn fin de compte, pour trouver la période $ r $ avec un ordinateur classique, des étapes exponentielles sont nécessaires et ne peuvent pas être accélérées. Cependant, avec un ordinateur quantique, cette période $ r $ peut être trouvée instantanément (en temps polynomial).\nÉtape 2 : Préparation de l\u0026rsquo;état quantique et superposition C\u0026rsquo;est ici qu\u0026rsquo;interviennent les ordinateurs quantiques. Les ordinateurs quantiques utilisent des \u0026ldquo;qubits\u0026rdquo; qui peuvent avoir simultanément les états \u0026ldquo;0\u0026rdquo; et \u0026ldquo;1\u0026rdquo;. L\u0026rsquo;algorithme de Shor prépare deux registres : un registre pour stocker les entrées (premier registre) et un registre pour stocker les résultats du calcul (deuxième registre).\nTout d\u0026rsquo;abord, une opération de porte quantique appelée porte de Hadamard est appliquée à tous les qubits du premier registre. En conséquence, le premier registre sera dans un ** état de superposition uniforme ** de toutes les valeurs possibles de $ x $ (de $ 0 $ à $ 2^n-1 $. $ n $ est un nombre de bits suffisamment grand).\nEn d\u0026rsquo;autres termes, un état est créé à l\u0026rsquo;intérieur de l\u0026rsquo;ordinateur quantique où un nombre infini de valeurs d\u0026rsquo;entrée, $ x = 0, 1, 2, 3, \\dots $, existent simultanément et en parallèle.\nÉtape 3 : Exponentiation modulaire quantique (Quantum Modular Exponentiation) Ensuite, en prenant l\u0026rsquo;état de superposition du premier registre comme entrée, calculez $ f(x) = a^x \\pmod N $ et stockez le résultat dans le deuxième registre. Étant donné que ce calcul est exécuté sous forme de transformation unitaire sur un circuit quantique, le calcul de $ f(x) $ pour tout $ x $ est effectué \u0026ldquo;simultanément et en parallèle (parallélisme quantique)\u0026rdquo; tout en maintenant la superposition.\nL\u0026rsquo;espace de l\u0026rsquo;ensemble du système quantique à ce stade est une vaste superposition d\u0026rsquo;états : $ |x, a^x \\bmod N\\rangle $\nCependant, si l\u0026rsquo;on se contente de mesurer (observer) le deuxième registre à ce stade, seule une valeur aléatoire de $ a^x \\bmod N $ sera choisie de manière probabiliste, et en conjonction avec cela, le $ x $ du premier registre sera également fixé à une seule valeur. Cela équivaut à calculer une seule fois sur un ordinateur classique et ne permet pas de trouver la période $ r $.\nSelon les règles de la mécanique quantique, vous ne pouvez pas regarder directement à l\u0026rsquo;intérieur d\u0026rsquo;un état superposé. Alors, comment extraire l\u0026rsquo;information globale de \u0026ldquo;période\u0026rdquo; de l\u0026rsquo;ensemble ?\nÉtape 4 : Transformée de Fourier quantique (QFT: Quantum Fourier Transform) La véritable valeur de l\u0026rsquo;algorithme de Shor, qui permet de franchir ce mur, est l\u0026rsquo;application de la ** Transformée de Fourier Quantique (QFT) ** au premier registre.\nAvant de mesurer, on analyse les propriétés ondulatoires de la fonction $ f(x) $. Supposons que nous observions le deuxième registre. Supposons qu\u0026rsquo;une valeur $ y $ soit obtenue. Ensuite, l\u0026rsquo;état du premier registre se réduit à la \u0026ldquo;superposition de tous les $ x $ tels que $ a^x \\pmod N = y $\u0026rdquo;. Les valeurs de ce $ x $ seront un état discret (une sorte de distribution d\u0026rsquo;amplitude de probabilité en forme de peigne) espacé par des intervalles de période $ r $, tel que $ x_0, x_0 + r, x_0 + 2r, x_0 + 3r, \\dots $.\nLa transformée de Fourier quantique (QFT) est appliquée à cet état. Tout comme la transformée de Fourier discrète classique convertit un signal dans le domaine temporel en domaine fréquentiel, la QFT provoque des interférences dans l\u0026rsquo;amplitude de probabilité des états quantiques.\nLorsque la QFT est appliquée, en raison des effets d\u0026rsquo;interférence quantique, la probabilité de réponses incorrectes qui ne résonnent pas avec la période $ r $ (phases non alignées) s\u0026rsquo;annule mutuellement pour s\u0026rsquo;approcher de zéro (interférence destructive), et seule la probabilité de la réponse correcte contenant les informations de la période $ r $ est amplifiée (interférence constructive).\nÉtape 5 : Mesure et expansion en fraction continue (Post-traitement classique) Lorsque le premier registre est mesuré après l\u0026rsquo;application de la QFT, un entier $ c $ proche de la forme $ c \\approx \\frac{j \\cdot 2^n}{r} $ est obtenu avec une probabilité très élevée ($ j $ est un entier inconnu et $ 2^n $ est la taille du registre).\nCe résultat de mesure $ c $ est renvoyé à l\u0026rsquo;ordinateur classique pour créer la fraction $ \\frac{c}{2^n} \\approx \\frac{j}{r} $. Ensuite, en calculant une valeur approximative à l\u0026rsquo;aide d\u0026rsquo;une méthode mathématique appelée \u0026ldquo;expansion en fraction continue\u0026rdquo; (Continued fraction expansion), on peut brillamment extraire le dénominateur, la période $ r $.\nUne fois que l\u0026rsquo;on connaît $ r $, il suffit de calculer les facteurs premiers de $ N $ en utilisant la formule de l\u0026rsquo;étape 1, et le cryptage RSA est complètement déchiffré.\nCapacités et défis actuels des ordinateurs quantiques (NISQ) Bien que l\u0026rsquo;algorithme de Shor soit parfait en théorie, si l\u0026rsquo;on se demande \u0026ldquo;Le cryptage RSA sera-t-il brisé demain ?\u0026rdquo;, la réponse est clairement \u0026ldquo;Non\u0026rdquo;. La raison réside dans les limites de la technologie matérielle des ordinateurs quantiques actuels.\nL\u0026rsquo;ère NISQ (Noisy Intermediate-Scale Quantum) L\u0026rsquo;ère dans laquelle nous nous trouvons actuellement est appelée l\u0026rsquo;ère \u0026ldquo;NISQ\u0026rdquo;. Les dispositifs NISQ possèdent de quelques dizaines à quelques centaines de qubits physiques, mais sont extrêmement vulnérables au bruit.\nLes qubits sont sensibles aux environnements externes tels que la chaleur et les ondes électromagnétiques, entraînant de fréquentes \u0026ldquo;décohérences\u0026rdquo; (pertes d\u0026rsquo;intrication quantique) où l\u0026rsquo;état quantique se brise, et des \u0026ldquo;erreurs de porte\u0026rdquo; lors des opérations de porte. Lorsque vous essayez d\u0026rsquo;exécuter un circuit quantique très profond (avec un nombre énorme d\u0026rsquo;étapes de calcul) comme l\u0026rsquo;algorithme de Shor, des erreurs s\u0026rsquo;accumulent pendant le calcul et la sortie finale devient un bruit complet et dénué de sens.\nQubits physiques et Qubits logiques La \u0026ldquo;correction d\u0026rsquo;erreurs quantiques\u0026rdquo; (Quantum Error Correction) est essentielle pour résoudre ce problème d\u0026rsquo;erreur. Des codes de correction d\u0026rsquo;erreurs sont également utilisés dans les ordinateurs classiques, mais comme il existe un \u0026ldquo;théorème de non-clonage quantique\u0026rdquo; qui interdit de copier les états quantiques, la correction d\u0026rsquo;erreurs quantiques est extrêmement complexe.\nDans la correction d\u0026rsquo;erreurs quantiques, en utilisant des technologies telles que le \u0026ldquo;code de surface\u0026rdquo; (Surface Code), on combine un grand nombre de \u0026ldquo;qubits physiques\u0026rdquo; bruyants pour créer un seul \u0026ldquo;qubit logique\u0026rdquo; idéal et sans erreur.\nEn supposant le taux d\u0026rsquo;erreur actuel, on estime qu\u0026rsquo;il faudrait entre 1 000 et 10 000 qubits physiques pour créer un seul qubit logique. On appelle cela la \u0026ldquo;surcharge de correction d\u0026rsquo;erreur\u0026rdquo;.\nQuelles sont les ressources nécessaires pour briser le RSA-2048 ? Alors, combien de ressources sont nécessaires pour exécuter l\u0026rsquo;algorithme de Shor afin de décrypter réellement le RSA-2048 ?\nSelon une estimation révolutionnaire des ressources dans un article de 2021 de Craig Gidney (Google) et Martin Ekerå, si l\u0026rsquo;on utilise un algorithme de Shor optimisé et une correction d\u0026rsquo;erreur par code de surface, les ressources suivantes sont nécessaires :\n** Nombre de qubits logiques ** : environ 4 096 ** Nombre de qubits physiques ** : ** environ 20 millions ** (en supposant un taux d\u0026rsquo;erreur d\u0026rsquo;environ $10^{-3}$) ** Temps de calcul ** : environ 8 heures (des millions à des milliards d\u0026rsquo;opérations de portes physiques sont nécessaires) Face à cela, où en est le matériel quantique actuel ? Le processeur quantique supraconducteur \u0026ldquo;Condor\u0026rdquo; annoncé par IBM fin 2023 compte 1 121 qubits. Par ailleurs, des recherches révolutionnaires sur la génération de qubits logiques ont émergé (telles que la génération de 48 qubits logiques à l\u0026rsquo;aide d\u0026rsquo;un ordinateur quantique à atomes neutres par l\u0026rsquo;Université de Harvard et QuEra, etc.), mais on n\u0026rsquo;en est pas encore au stade où des \u0026ldquo;calculs parfaits et sans bruit\u0026rdquo; peuvent être exécutés en continu pendant de longues périodes.\nIl existe des obstacles d\u0026rsquo;ingénierie colossaux (problèmes de câblage, limites de la capacité de refroidissement, hypertrophie de l\u0026rsquo;électronique de contrôle) pour passer de quelques milliers de qubits physiques à un système avec ** 20 millions ** de qubits physiques pratiques (interconnectés, fonctionnant de manière stable à des températures cryogéniques et capables de traiter les signaux de contrôle à des vitesses ultra-rapides). De nombreux experts prédisent qu\u0026rsquo;il faudra au moins 10 à 30 ans, ou plus, avant qu\u0026rsquo;un \u0026ldquo;ordinateur quantique tolérant aux pannes (FTQC)\u0026rdquo; capable de décrypter le RSA-2048 ne devienne une réalité.\nLa menace imminente de \u0026ldquo;Store Now, Decrypt Later\u0026rdquo; et l\u0026rsquo;aube de la PQC Il est prématuré de penser : \u0026ldquo;Nous sommes en sécurité car cela prendra encore plus de 10 ans\u0026rdquo;. À l\u0026rsquo;heure actuelle, il existe des données dont la confidentialité doit être garantie pendant des décennies, comme les secrets d\u0026rsquo;État, les données médicales et la conception d\u0026rsquo;infrastructures à long terme.\nCe que l\u0026rsquo;on craint ici, c\u0026rsquo;est une méthode d\u0026rsquo;attaque appelée ** \u0026ldquo;Store Now, Decrypt Later\u0026rdquo; (Stockez maintenant, décryptez plus tard) **. Des pays ou des organisations malveillants interceptent toutes les données de communication cryptées avec le RSA ou ECC (cryptographie sur les courbes elliptiques) actuels et les stockent. Puis, 10 ou 20 ans plus tard, au moment où un puissant ordinateur quantique est achevé, ils utilisent l\u0026rsquo;algorithme de Shor pour décrypter toutes les données passées et révéler des secrets.\nPour lutter contre cette menace de décalage temporel, le NIST (National Institute of Standards and Technology des États-Unis) a dirigé le processus de standardisation de la ** \u0026ldquo;Cryptographie post-quantique (PQC: Post-Quantum Cryptography)\u0026rdquo; ** à un rythme effréné.\nLa PQC est un nouvel algorithme cryptographique basé sur des problèmes mathématiques difficiles à décrypter même à l\u0026rsquo;aide d\u0026rsquo;ordinateurs quantiques (c\u0026rsquo;est-à-dire que l\u0026rsquo;algorithme de Shor ne peut pas être appliqué). Les principales approches incluent :\n** Cryptographie basée sur les réseaux euclidiens (Lattice-based cryptography) ** : Basée sur des problèmes tels que LWE (Learning with Errors). Actuellement le courant dominant dans la standardisation du NIST (Kyber, Dilithium, etc.). ** Cryptographie basée sur les codes (Code-based cryptography) ** : Repose sur la difficulté de décodage des codes correcteurs d\u0026rsquo;erreurs. ** Cryptographie multivariée (Multivariate cryptography) ** : Repose sur la difficulté de résoudre un système d\u0026rsquo;équations quadratiques à plusieurs variables. ** Signatures basées sur le hachage (Hash-based signatures) ** : Signatures numériques qui reposent uniquement sur la sécurité des fonctions de hachage. Les principaux logiciels et plateformes tels que Google Chrome et Apple iMessage ont déjà commencé les tests de déploiement de la PQC et des implémentations hybrides.\nConclusion L\u0026rsquo;ordinateur quantique est passé d\u0026rsquo;un conte de fées de science-fiction à un véritable défi d\u0026rsquo;ingénierie. L\u0026rsquo;algorithme de Shor est une grande réalisation intellectuelle de l\u0026rsquo;humanité combinant les mathématiques et la mécanique quantique, mais en même temps, il cache un \u0026ldquo;pouvoir destructeur\u0026rdquo; qui ébranle les fondements de notre société numérique.\nLe cryptage RSA ne deviendra pas inutilisable dès demain. Cependant, compte tenu de l\u0026rsquo;évolution de la technologie quantique et du risque du \u0026ldquo;Store Now, Decrypt Later\u0026rdquo;, une migration massive vers la PQC, qui restera dans l\u0026rsquo;histoire de la cryptographie, a déjà commencé. Nous sommes actuellement témoins d\u0026rsquo;un changement de paradigme en matière de sécurité de l\u0026rsquo;information.\n","date":"2026-09-05T22:09:21+09:00","image":"http://kenji.blog/p/shors-algorithm-and-rsa-breaking/quantum_breaking_rsa_1788613722990_huf997c6e55368509d0617b56f68899854_1017504_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/shors-algorithm-and-rsa-breaking/","title":"Les ordinateurs quantiques vont-ils vraiment détruire le cryptage RSA ? ~ L'algorithme de Shor et les avancées actuelles ~"},{"content":"【Anatomie Complète】Comprendre et implémenter l\u0026rsquo;algorithme de décryptage ultime « GNFS » en C++ La cryptographie RSA, qui soutient l\u0026rsquo;Internet moderne, repose sur une croyance mathématique : « il est virtuellement impossible pour les ordinateurs actuels de factoriser d\u0026rsquo;énormes nombres composés ».\nCependant, l\u0026rsquo;humanité n\u0026rsquo;a jamais abandonné. Actuellement, pour les ordinateurs classiques (non quantiques), il existe l\u0026rsquo;algorithme le plus puissant et le plus avancé de l\u0026rsquo;humanité pour effectuer des factorisations géantes. C\u0026rsquo;est le « Crible Général du Corps de Nombres (GNFS : General Number Field Sieve) ».\nDans cet article, nous publions entièrement le code d\u0026rsquo;implémentation modélisant strictement la logique de pointe de ce GNFS en C++ (utilisant les entiers à précision multiple boost::multiprecision de la bibliothèque Boost), et nous expliquerons en profondeur la « théorie algébrique des nombres » qui se cache derrière.\nAppréciez les mystères mathématiques et la puissance de l\u0026rsquo;informatique qui les surmonte, à travers ce code source.\n1. Cadre logique de pointe du GNFS (Code source complet) Tout d\u0026rsquo;abord, voici la vue d\u0026rsquo;ensemble de l\u0026rsquo;implémentation C++ du GNFS que nous allons expliquer. Le crible de corps de nombres réel (comme CADO-NFS) est un système distribué gigantesque de centaines de milliers de lignes, mais ce code extrait les « 5 pipelines (phases) essentiels » constituant le GNFS, les conçoit en classes, et les modélise avec une configuration minimale sans perdre leur signification mathématique.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 #include \u0026lt;iostream\u0026gt; #include \u0026lt;vector\u0026gt; #include \u0026lt;cmath\u0026gt; #include \u0026lt;map\u0026gt; #include \u0026lt;set\u0026gt; #include \u0026lt;chrono\u0026gt; #include \u0026lt;boost/multiprecision/cpp_int.hpp\u0026gt; // Utilisation des entiers à précision multiple de Boost.Multiprecision using namespace boost::multiprecision; // ============================================================================ // [SOTA GNFS] Cadre logique de pointe du General Number Field Sieve (Crible Général du Corps de Nombres) // // Ce code modélise strictement les 5 pipelines du GNFS de pointe utilisés dans CADO-NFS etc., // en tant que conception de classes C++ (Boost). // ============================================================================ struct Relation { int64_t a; int64_t b; std::vector\u0026lt;uint32_t\u0026gt; rational_primes; std::vector\u0026lt;uint32_t\u0026gt; algebraic_primes; }; // ============================================================================ // Phase 1 : Sélection de polynômes (Algorithme de Kleinjung) // ============================================================================ class PolynomialSelector { public: int degree; std::vector\u0026lt;cpp_int\u0026gt; f; // Polynôme côté algébrique f(x) std::vector\u0026lt;cpp_int\u0026gt; g; // Polynôme côté rationnel g(x) = x - m cpp_int m; PolynomialSelector(int d) : degree(d) {} // Génération du polynôme initial basée sur l\u0026#39;expansion en base m (en réalité, une réduction de base de réseau LLL plus avancée est utilisée) void select(const cpp_int\u0026amp; N) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 1] Polynomial Selection (Degree \u0026#34; \u0026lt;\u0026lt; degree \u0026lt;\u0026lt; \u0026#34;) starting...\u0026#34; \u0026lt;\u0026lt; std::endl; // Expansion simplifiée en base m (degré d) // m = N^(1/d) cpp_int N_copy = N; m = 1; // Approximation simple de m (sans utiliser les fonctions de Boost) cpp_int low = 1, high = N; while (low \u0026lt;= high) { cpp_int mid = low + (high - low) / 2; cpp_int p = 1; for(int i=0; i\u0026lt;degree; ++i) p *= mid; if (p \u0026lt;= N) { m = mid; low = mid + 1; } else { high = mid - 1; } } f.resize(degree + 1); cpp_int temp = N; for (int i = 0; i \u0026lt;= degree; ++i) { f[i] = temp % m; temp /= m; } g = {-m, 1}; // g(x) = x - m std::cout \u0026lt;\u0026lt; \u0026#34; -\u0026gt; m = \u0026#34; \u0026lt;\u0026lt; m \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34; -\u0026gt; f(x) = \u0026#34;; for(int i = degree; i \u0026gt;= 0; --i) { std::cout \u0026lt;\u0026lt; f[i] \u0026lt;\u0026lt; \u0026#34;x^\u0026#34; \u0026lt;\u0026lt; i \u0026lt;\u0026lt; (i \u0026gt; 0 ? \u0026#34; + \u0026#34; : \u0026#34;\u0026#34;); } std::cout \u0026lt;\u0026lt; \u0026#34;\\n[Phase 1] Complete.\u0026#34; \u0026lt;\u0026lt; std::endl; } }; // ============================================================================ // Phase 2 : Crible de réseau (Lattice Sieving) // ============================================================================ // Le GNFS récent utilise, au lieu du crible linéaire (Line Sieve), // le crible de réseau spécial-q (Special-q Lattice Sieving) de Franke-Kleinjung etc., comme standard de facto. class LatticeSieve { uint32_t rational_bound; uint32_t algebraic_bound; std::vector\u0026lt;uint32_t\u0026gt; rational_fb; std::vector\u0026lt;uint32_t\u0026gt; algebraic_fb; public: LatticeSieve(uint32_t rb, uint32_t ab) : rational_bound(rb), algebraic_bound(ab) {} void generate_factor_bases() { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 2] Generating Factor Bases (Rational Bound: \u0026#34; \u0026lt;\u0026lt; rational_bound \u0026lt;\u0026lt; \u0026#34;, Algebraic Bound: \u0026#34; \u0026lt;\u0026lt; algebraic_bound \u0026lt;\u0026lt; \u0026#34;)\u0026#34; \u0026lt;\u0026lt; std::endl; // (Omis) En réalité, on génère des nombres premiers et on filtre avec le symbole de Legendre etc. } std::vector\u0026lt;Relation\u0026gt; sieve(const PolynomialSelector\u0026amp; poly) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 2] Special-q Lattice Sieving active...\u0026#34; \u0026lt;\u0026lt; std::endl; std::vector\u0026lt;Relation\u0026gt; relations; // Implémentation factice : le crible de réseau réel scanne des centaines de Go d\u0026#39;espace mémoire par blocs. // Mappe les paires (a, b) sur un réseau (a = i*q + j*...) pour chaque nombre premier spécial q, // et exécute un crible (sieve) avec une efficacité de cache maximisée. // Ajout d\u0026#39;une relation factice pour la démonstration Relation r; r.a = 17; r.b = 3; r.rational_primes = {2, 5}; r.algebraic_primes = {3, 7}; relations.push_back(r); std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 2] Found \u0026#34; \u0026lt;\u0026lt; relations.size() \u0026lt;\u0026lt; \u0026#34; relations.\u0026#34; \u0026lt;\u0026lt; std::endl; return relations; } }; // ============================================================================ // Phase 3 : Filtrage (Purge des singularités et fusion de cliques) // ============================================================================ class Filter { public: void reduce_matrix(std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 3] Filtering Relations...\u0026#34; \u0026lt;\u0026lt; std::endl; // 1. Suppression des singletons (suppression des relations ayant des nombres premiers n\u0026#39;apparaissant qu\u0026#39;une fois) // 2. Fusion de cliques (combinaison de relations pour densifier une matrice creuse) // En réalité, des algorithmes comme Union-Find compressent des centaines de millions de lignes à quelques millions. std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 3] Matrix size reduced optimally.\u0026#34; \u0026lt;\u0026lt; std::endl; } }; // ============================================================================ // Phase 4 : Algèbre linéaire sur GF(2) (Méthode de Block Wiedemann) // ============================================================================ class LinearAlgebraGF2 { public: // Dans les environnements de supercalculateurs récents, la méthode de Block Wiedemann // (implémentation de Coppersmith), plus adaptée au calcul distribué que Block Lanczos, est utilisée à la pointe. std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; solve_nullspace(const std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 4] Block Wiedemann algorithm over GF(2) starting...\u0026#34; \u0026lt;\u0026lt; std::endl; // Répète les opérations de produit entre une matrice creuse et un vecteur, // et trouve plusieurs vecteurs solutions (noyau) tels que M * x = 0 mod 2. std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; dependencies; // Liste des dépendances // Données factices dependencies.push_back({0}); std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 4] Found \u0026#34; \u0026lt;\u0026lt; dependencies.size() \u0026lt;\u0026lt; \u0026#34; linear dependencies (perfect squares).\u0026#34; \u0026lt;\u0026lt; std::endl; return dependencies; } }; // ============================================================================ // Phase 5 : Racine carrée algébrique (Algebraic Square Root) // ============================================================================ class AlgebraicSquareRoot { public: void compute_and_factor(const std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations, const std::vector\u0026lt;int\u0026gt;\u0026amp; dep, const cpp_int\u0026amp; N) { std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 5] Algebraic Square Root computation...\u0026#34; \u0026lt;\u0026lt; std::endl; // 1. Calcul de la racine carrée côté rationnel V (opérations entières simples) cpp_int V = 1; // V = sqrt( prod(a - bm) ) mod N // 2. Calcul de la racine carrée côté algébrique gamma (méthode de Montgomery etc.) // Trouve l\u0026#39;élément gamma de l\u0026#39;énorme corps algébrique O_K et le mappe dans le monde réel par homomorphisme phi // Y = phi(gamma) mod N cpp_int Y = 1; // On suppose que des colonnes de caractères quadratiques (Quadratic Characters) ont été ajoutées // en Phase 2 et 4 pour éviter les obstructions du groupe des classes d\u0026#39;idéaux et du groupe des unités. std::cout \u0026lt;\u0026lt; \u0026#34; -\u0026gt; Homomorphism map phi applied.\u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;[Phase 5] Calculating GCD(V - Y, N)...\u0026#34; \u0026lt;\u0026lt; std::endl; cpp_int factor = gcd(V - Y, N); // GCD(X-Y, N) if (factor \u0026gt; 1 \u0026amp;\u0026amp; factor \u0026lt; N) { std::cout \u0026lt;\u0026lt; \u0026#34;\\n================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;[SUCCESS] Non-trivial factor found: \u0026#34; \u0026lt;\u0026lt; factor \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34; Other factor: \u0026#34; \u0026lt;\u0026lt; N / factor \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; } else { std::cout \u0026lt;\u0026lt; \u0026#34;[FAILURE] Trivial solution. Trying next dependency...\u0026#34; \u0026lt;\u0026lt; std::endl; } } }; // ============================================================================ // Pipeline d\u0026#39;exécution principal // ============================================================================ int main() { std::cout \u0026lt;\u0026lt; \u0026#34;================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34; [SOTA GNFS] General Number Field Sieve Engine (Boost C++) \u0026#34; \u0026lt;\u0026lt; std::endl; std::cout \u0026lt;\u0026lt; \u0026#34;================================================================\u0026#34; \u0026lt;\u0026lt; std::endl; // Nombre composé géant N à factoriser, ex. RSA-270 cpp_int N(\u0026#34;233108530344407544527637656910680524145619812480305449042948611968495918245135782867888369318577116418213919268572658314913060672626911354027609793166341626693946596196427744273886601876896313468704059066746903123910748277606548649151920812699309766587514735456594993207\u0026#34;); // Degré du polynôme (généralement 5ème ou 6ème degré pour plus de 130 chiffres) int degree = 6; // Initialisation du pipeline PolynomialSelector poly_select(degree); LatticeSieve sieve(10000000, 20000000); // Les bornes réelles vont de dizaines à centaines de millions Filter filter; LinearAlgebraGF2 linalg; AlgebraicSquareRoot sqrt_step; auto start_time = std::chrono::high_resolution_clock::now(); // 1. Sélection de polynômes poly_select.select(N); // 2. Traitement du crible (sieve) sieve.generate_factor_bases(); std::vector\u0026lt;Relation\u0026gt; relations = sieve.sieve(poly_select); // 3. Filtrage (Compression de matrice) filter.reduce_matrix(relations); // 4. Algèbre linéaire (Recherche du noyau sur GF(2)) std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; dependencies = linalg.solve_nullspace(relations); // 5. Calcul de la racine carrée algébrique et PGCD for (const auto\u0026amp; dep : dependencies) { sqrt_step.compute_and_factor(relations, dep, N); } auto end_time = std::chrono::high_resolution_clock::now(); std::chrono::duration\u0026lt;double\u0026gt; elapsed = end_time - start_time; std::cout \u0026lt;\u0026lt; \u0026#34;\\n[System] SOTA GNFS Pipeline completed in \u0026#34; \u0026lt;\u0026lt; elapsed.count() \u0026lt;\u0026lt; \u0026#34; seconds.\u0026#34; \u0026lt;\u0026lt; std::endl; return 0; } Alors, comment ce code détruit-il les murs du cryptage ? Pour chacune des 5 phases, nous allons analyser et expliquer son algorithme minutieux et ses mathématiques avancées.\n2. Objectif final du GNFS : $X^2 \\equiv Y^2 \\pmod N$ Le but de presque tous les algorithmes modernes de factorisation de grands nombres, y compris le GNFS, est de trouver une paire non triviale $(X, Y)$ satisfaisant la congruence suivante.\n$$X^2 \\equiv Y^2 \\pmod N$$ Cette équation signifie que « le reste de la division de $X^2$ et $Y^2$ par $N$ est égal ». En transformant cela, on obtient : $X^2 - Y^2 \\equiv 0 \\pmod N$ C\u0026rsquo;est-à-dire que $(X-Y)(X+Y)$ est un multiple de $N$.\nSi $X \\not\\equiv \\pm Y \\pmod N$ (solution non triviale), alors il existe un « diviseur commun supérieur à 1 et inférieur à $N$ » entre $(X-Y)$ et $N$. Ici, si nous calculons $\\gcd(X-Y, N)$ à l\u0026rsquo;aide de l\u0026rsquo;algorithme d\u0026rsquo;Euclide, nous pouvons facilement trouver les facteurs premiers de $N$.\nCependant, trouver ce $X$ et ce $Y$ est comme chercher une aiguille dans un désert. C\u0026rsquo;est pourquoi le GNFS adopte une approche géniale consistant à créer 2 mondes — le « monde des entiers réels » et le « monde des corps algébriques des polynômes » — et à distribuer les calculs.\n3. Phase 1 : Sélection de polynômes (Polynomial Selection) 1 2 3 4 5 6 7 8 9 10 11 12 class PolynomialSelector { // ... void select(const cpp_int\u0026amp; N) { // Calcul de m = N^(1/d) et expansion en base m // ... for (int i = 0; i \u0026lt;= degree; ++i) { f[i] = temp % m; temp /= m; } g = {-m, 1}; // g(x) = x - m } }; La première étape du GNFS consiste à créer un « polynôme magique » pour relier les deux mondes. Pour un grand nombre $N$, nous choisissons un entier $m$. Habituellement, nous choisissons $m \\approx N^{1/d}$ (le code suppose un polynôme de degré $d=6$).\nEnsuite, nous développons $N$ en base $m$ et utilisons ces coefficients pour construire un polynôme $f(x)$. $$N = c_d m^d + c_{d-1} m^{d-1} + \\dots + c_1 m + c_0$$ $$f(x) = c_d x^d + c_{d-1} x^{d-1} + \\dots + c_1 x + c_0$$ Ce polynôme $f(x)$ a une propriété extrêmement importante : « si l\u0026rsquo;on substitue $m$ à la variable $x$, cela devient exactement $N$ ($f(m) = N$) ». En d\u0026rsquo;autres termes, $f(m) \\equiv 0 \\pmod N$. Le polynôme côté rationnel est défini comme $g(x) = x - m$.\nAinsi, le « monde du corps algébrique $\\mathbb{Z}[\\alpha]$ » régi par la racine $\\alpha$ de $f(x)=0$ et le « monde des nombres rationnels (entiers) habituels $\\mathbb{Z}$ » sont solidement liés par un « homomorphisme d\u0026rsquo;anneaux » $x \\to m$.\nDans CADO-NFS et d\u0026rsquo;autres systèmes de pointe, des algorithmes comme celui de Kleinjung ou la réduction de base de réseau LLL sont utilisés pour rechercher pendant des mois le « polynôme $f(x)$ le plus pratique ». Cela garantit que les coefficients du polynôme ne deviennent pas extrêmement grands et que des nombres premiers apparaissent facilement (deviennent friables) dans les étapes suivantes.\n4. Phase 2 : Crible de réseau spécial-$q$ (Special-q Lattice Sieving) 1 2 3 4 5 6 7 8 9 class LatticeSieve { // ... std::vector\u0026lt;Relation\u0026gt; sieve(const PolynomialSelector\u0026amp; poly) { // ... // Mappe les paires (a, b) sur un réseau pour chaque nombre premier spécial q, // et exécute un crible (sieve) avec une efficacité de cache maximisée. // ... } }; Après avoir préparé les deux mondes, l\u0026rsquo;étape suivante consiste à rechercher des « nombres friables (nombres composés uniquement de petits facteurs premiers) » dans ces deux mondes. Nous générons d\u0026rsquo;innombrables paires d\u0026rsquo;entiers $(a, b)$ et calculons les deux valeurs suivantes :\nValeur côté rationnel : $a - bm$ Norme côté algébrique : $b^d f(a/b)$ Le but du GNFS est de collecter des dizaines à centaines de millions de « paires (Relations) où les valeurs des côtés rationnel et algébrique peuvent toutes deux être complètement factorisées uniquement avec de petits facteurs premiers ».\nDans les premiers GNFS, on utilisait un « crible linéaire (Line Sieve) » qui alignait $(a, b)$ sur le plan $xy$ et les divisait par des nombres premiers de bout en bout. Cependant, cette méthode causait de nombreux défauts de cache en accédant partout dans la mémoire et était très lente.\nPar conséquent, les codes de pointe actuels utilisent une méthode appelée « Crible de réseau spécial-$q$ (Special-q Lattice Sieve) ». Un nombre premier raisonnablement grand $q$ est fixé, et seules les paires $(a, b)$ « dont la valeur côté algébrique est toujours divisible par $q$ » sont calculées. Ces $(a, b)$ remplissant la condition forment un « réseau (Lattice) » sur le plan, rendant les sauts d\u0026rsquo;adresses constants lors des calculs, ce qui s\u0026rsquo;adapte parfaitement au cache L1/L2 du CPU. Grâce à l\u0026rsquo;introduction de ce crible de réseau, la vitesse de calcul du GNFS a considérablement augmenté.\n5. Phase 3 : Filtrage (Filtering) 1 2 3 4 5 6 7 class Filter { public: void reduce_matrix(std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { // 1. Suppression des singletons (suppression des relations ayant des nombres premiers n\u0026#39;apparaissant qu\u0026#39;une fois) // 2. Fusion de cliques (combinaison de relations pour densifier une matrice creuse) } }; Des centaines de millions de relations ont été collectées en plusieurs mois par des ordinateurs du monde entier lors de la Phase 2. Cependant, si on les injecte telles quelles dans « l\u0026rsquo;étape de résolution du système d\u0026rsquo;équations (calcul matriciel) » suivante, la mémoire des supercalculateurs explosera.\nC\u0026rsquo;est pourquoi un processus de super compression matricielle appelé Filtrage (Filtering) est effectué.\nSuppression des singletons (Purge des singularités) Supposons qu\u0026rsquo;un énorme nombre premier $p$ n\u0026rsquo;apparaisse « qu\u0026rsquo;une seule fois » parmi les centaines de millions de relations. Puisque notre but est de « rendre l\u0026rsquo;exposant de tous les nombres premiers pair (multiple de 2) », un nombre premier qui n\u0026rsquo;apparaît qu\u0026rsquo;une fois ne peut jamais devenir pair. Par conséquent, la relation contenant ce nombre premier est immédiatement supprimée (purgée) comme « déchet inutile ». En provoquant cela en chaîne, les données qui comptaient des centaines de millions de lignes sont drastiquement réduites.\nFusion de cliques (Clique merging) De plus, en multipliant (additionnant) les relations qui partagent un nombre premier spécifique, on réduit le nombre de lignes tout en compressant la matrice creuse (pleine de vides) vers un état plus dense (en utilisant une méthode similaire à la recherche de cliques en théorie des graphes).\nGrâce à cette optimisation, la gigantesque matrice creuse est drastiquement compressée à une taille calculable.\n6. Phase 4 : Algèbre linéaire sur GF(2) (Méthode de Block Wiedemann) 1 2 3 4 5 6 7 class LinearAlgebraGF2 { public: std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt; solve_nullspace(const std::vector\u0026lt;Relation\u0026gt;\u0026amp; relations) { // Répète les opérations de produit entre une matrice creuse et un vecteur, // et trouve plusieurs vecteurs solutions (noyau) tels que M * x = 0 mod 2. } }; C\u0026rsquo;est enfin le cœur du puzzle. Nous multiplions les relations collectées pour trouver la « combinaison où les exposants de tous les facteurs premiers deviennent pairs ».\nMathématiquement, cela équivaut à utiliser une immense matrice $M$ dont les éléments sont la parité de l\u0026rsquo;exposant de chaque nombre premier (c\u0026rsquo;est-à-dire 0 ou 1) et un vecteur $x$ représentant quelles relations utiliser, pour trouver un vecteur solution $x$ (noyau, nullspace) tel que : $M \\cdot x \\equiv 0 \\pmod 2$\nNous devons résoudre un système d\u0026rsquo;équations pour une matrice d\u0026rsquo;une taille incroyable de millions de lignes × millions de colonnes. Avec l\u0026rsquo;élimination de Gauss habituelle, la complexité algorithmique serait de $O(N^3)$, et le calcul ne se terminerait pas avant la fin de l\u0026rsquo;univers.\nAinsi, la « Méthode de Block Wiedemann » est adoptée dans les implémentations de pointe. Il s\u0026rsquo;agit d\u0026rsquo;un type de méthode du sous-espace de Krylov qui exploite le fait que la matrice $M$ est « très creuse (presque que des 0) » pour dériver des solutions en effectuant itérativement la multiplication de la matrice et du vecteur. Contrairement à l\u0026rsquo;ancienne méthode de Block Lanczos, la méthode de Block Wiedemann peut diviser entièrement le processus de calcul sur plusieurs clusters, démontrant ainsi une puissance écrasante dans le cloud computing distribué moderne et le calcul parallèle sur supercalculateurs.\n7. Phase 5 : Racine carrée algébrique (Algebraic Square Root) et effondrement de la cryptographie 1 2 3 4 5 6 7 8 9 10 11 12 13 class AlgebraicSquareRoot { public: void compute_and_factor(...) { // 1. Calcul de la racine carrée côté rationnel V cpp_int V = 1; // 2. Calcul de la racine carrée côté algébrique gamma cpp_int Y = 1; // ... cpp_int factor = gcd(V - Y, N); // GCD(X-Y, N) } }; Grâce au calcul matriciel de la Phase 4, nous avons obtenu « un ensemble $S$ de relations qui, lorsqu\u0026rsquo;elles sont multipliées ensemble, ont des facteurs premiers élevés à une puissance paire ». Cela nous permet de construire des « carrés » dans les mondes rationnel et algébrique respectivement.\nCôté rationnel, comme il s\u0026rsquo;agit d\u0026rsquo;une simple multiplication d\u0026rsquo;entiers, il est facile de calculer la racine carrée $V$. $$V^2 = \\prod_{S} (a - bm)$$ Cependant, le véritable enfer réside du « côté algébrique ». Dans le monde du corps algébrique $\\mathbb{Z}[\\alpha]$, comme l\u0026rsquo;unicité de la factorisation première ne tient pas, nous avons utilisé des idéaux pour les calculs. Ce qui a été garanti par le calcul matriciel, c\u0026rsquo;est « seulement qu\u0026rsquo;il devient le carré d\u0026rsquo;un idéal », et il n\u0026rsquo;est pas garanti qu\u0026rsquo;il devienne « le carré d\u0026rsquo;un élément ($\\gamma^2$) ».\nIci, nous faisons face à de puissants murs en théorie algébrique des nombres : « l\u0026rsquo;obstruction du groupe des classes d\u0026rsquo;idéaux » et « l\u0026rsquo;obstruction du groupe des unités ». Le GNFS utilise la magie des « caractères quadratiques (Quadratic Characters) » pour briser ces murs. Nous ajoutons secrètement à la matrice de la Phase 4 les colonnes des résidus quadratiques (symbole de Legendre) pour plusieurs dizaines d\u0026rsquo;idéaux premiers spéciaux. Grâce à cela, l\u0026rsquo;ensemble $S$ trouvé évitera les obstacles avec une probabilité écrasante, et formera sans problème « le vrai carré de l\u0026rsquo;élément $\\gamma^2$ ».\nL\u0026rsquo;opération pour trouver $\\gamma$ (racine carrée algébrique) est calculée à l\u0026rsquo;aide d\u0026rsquo;algorithmes très complexes comme la méthode de Montgomery.\nEt finalement, la racine carrée algébrique $\\gamma$ est téléportée dans le monde réel par l\u0026rsquo;homomorphisme d\u0026rsquo;anneaux $\\phi$ (en substituant $m$ à $x$) pour obtenir $Y$. Si on pose $V$ du côté rationnel tel quel comme $X$, l\u0026rsquo;équation absolue que nous poursuivions est enfin accomplie.\n$$X^2 \\equiv Y^2 \\pmod N$$\nEnsuite, il suffit de calculer $\\gcd(X-Y, N)$. Au moment où le traitement de 0,001 seconde s\u0026rsquo;achève et qu\u0026rsquo;un facteur non trivial s\u0026rsquo;imprime à l\u0026rsquo;écran, le cryptage RSA, autrefois considéré comme imprenable, s\u0026rsquo;effondre complètement.\nConclusion Le GNFS n\u0026rsquo;est pas qu\u0026rsquo;une simple technique de programmation. C\u0026rsquo;est le sommet de l\u0026rsquo;intelligence humaine, où les « abîmes des mathématiques pures » telles que l\u0026rsquo;algèbre abstraite, la théorie des anneaux, et les groupes de classes d\u0026rsquo;idéaux ont été surmontés par une « ingénierie de l\u0026rsquo;extrême » comme l\u0026rsquo;architecture distribuée des supercalculateurs et l\u0026rsquo;optimisation des caches.\nLes chats et les informations de carte de crédit que nous envoyons sans y penser sont protégés au-dessus de ces luttes mathématiques astronomiques.\nNous espérons qu\u0026rsquo;à travers ce framework C++, vous ressentirez le « romantisme des mathématiques et des ordinateurs » qui se cache derrière les algorithmes de décryptage les plus avancés.\n","date":"2026-09-05T13:04:59+09:00","image":"http://kenji.blog/p/gnfs-cpp-implementation/gnfs_cpp_blog_eyecatch_1788580949217_hu57b4110ce75cf76414fb819be22bae03_985705_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/gnfs-cpp-implementation/","title":"【Anatomie Complète】Comprendre et implémenter l'algorithme de décryptage ultime « GNFS » en C++"},{"content":"La Véritable Structure Mathématique du Crible Général du Corps de Nombres (GNFS) L\u0026rsquo;objectif ultime du GNFS est de trouver $X, Y$ tels que $X^2 \\equiv Y^2 \\pmod N$. Pour y parvenir, les mathématiciens ont construit un pont entre le \u0026ldquo;monde des entiers réels\u0026rdquo; et le \u0026ldquo;monde des corps algébriques\u0026rdquo; . Ce pont est l\u0026rsquo;\u0026ldquo;homomorphisme\u0026rdquo;.\nPhase 1 : Relier les mondes avec l\u0026rsquo;\u0026ldquo;Homomorphisme\u0026rdquo; 1. Sélection du polynôme et définition des racines Pour un nombre composé géant $N$, on choisit un entier $m$ et un polynôme $f(x)$ tels que $f(m) \\equiv 0 \\pmod N$. (Exemple : on développe $N$ en base $m$ et on crée $f(x)$ à partir de ses coefficients. On suppose ici que $f(x)$ est irréductible sur le corps des rationnels $\\mathbb{Q}$ (ne peut pas être factorisé davantage)).\nEnsuite, on définit l\u0026rsquo;une des \u0026ldquo;racines complexes\u0026rdquo; de l\u0026rsquo;équation $f(x) = 0$ comme étant $\\alpha$. Naturellement, $f(\\alpha) = 0$. $\\alpha$ n\u0026rsquo;est pas un entier, mais un nombre complexe impliquant des racines et des nombres imaginaires (un nombre algébrique).\n2. Construction d\u0026rsquo;Anneaux (Rings) et d\u0026rsquo;Homomorphismes Ici, on prépare deux \u0026ldquo;anneaux\u0026rdquo; mathématiques (des mondes où l\u0026rsquo;addition et la multiplication sont définies).\nMonde A : $\\mathbb{Z}[\\alpha]$ (L\u0026rsquo;anneau des entiers algébriques contenant $\\alpha$) Un monde de nombres exprimés sous la forme $a + b\\alpha + c\\alpha^2 + \\dots$. Monde B : $\\mathbb{Z}/N\\mathbb{Z}$ (L\u0026rsquo;anneau des restes modulo $N$) Un monde de congruences composé uniquement des entiers de $0$ à $N-1$. Ici, on définit une application $\\phi$ du Monde A vers le Monde B comme suit. $$\\phi : \\mathbb{Z}[\\alpha] \\to \\mathbb{Z}/N\\mathbb{Z}$$ $$\\phi(\\alpha) = m \\pmod N$$\nCette application $\\phi$ est une opération magique qui remplace exactement la variable $\\alpha$ du Monde A par l\u0026rsquo;entier $m$ du Monde B. Ce $\\phi$ possède une propriété extrêmement puissante appelée \u0026ldquo;Homomorphisme d\u0026rsquo;Anneau (Ring Homomorphism)\u0026rdquo; . L\u0026rsquo;homomorphisme est la propriété de \u0026ldquo;se téléporter dans un autre monde sans détruire la structure de l\u0026rsquo;addition et de la multiplication\u0026rdquo; . En d\u0026rsquo;autres termes, les équations suivantes sont vraies :\n$\\phi(X \\times Y) = \\phi(X) \\times \\phi(Y)$ $\\phi(X^2) = \\phi(X)^2$ Qu\u0026rsquo;est-ce que cela signifie ? Si nous pouvons créer le \u0026ldquo;carré ($\\gamma^2$)\u0026rdquo; d\u0026rsquo;un élément complexe $\\gamma$ dans le \u0026ldquo;Monde A (le monde de $\\alpha$)\u0026rdquo;, et le téléporter dans le \u0026ldquo;Monde B (le monde des restes)\u0026rdquo; en utilisant $\\phi$, la forme carrée $\\phi(\\gamma)^2$ est parfaitement préservée .\nPhase 2 : L\u0026rsquo;Effondrement de la Factorisation Première et la Naissance des \u0026ldquo;Idéaux\u0026rdquo; Dans le Monde A ($\\mathbb{Z}[\\alpha]$), on souhaite rassembler de nombreux éléments appropriés $(a - b\\alpha)$ et les multiplier pour créer un \u0026ldquo;carré parfait (élément carré)\u0026rdquo;. Normalement, on procéderait à la \u0026ldquo;factorisation première\u0026rdquo; de chaque $(a - b\\alpha)$ collecté et on les combinerait de manière à ce que les exposants des nombres premiers soient tous pairs (en résolvant avec des matrices) pour former un carré.\nCependant, ici, le mur désespérant de l\u0026rsquo;algèbre se dresse. Dans des mondes algébriques comme $\\mathbb{Z}[\\alpha]$, l\u0026rsquo;\u0026ldquo;unicité de la factorisation première (tout nombre peut être exprimé de manière unique comme un produit de nombres premiers)\u0026rdquo; enseignée au collège s\u0026rsquo;effondre .\n(Exemple : Dans un certain monde algébrique, $6 = 2 \\times 3$, mais en même temps $6 = (1+\\sqrt{-5}) \\times (1-\\sqrt{-5})$, et on ne sait plus quels sont les vrais nombres premiers)\nSi la factorisation n\u0026rsquo;est pas unique, le puzzle consistant à \u0026ldquo;compter le nombre de nombres premiers pour les rendre pairs\u0026rdquo; (la méthode du crible) est, en principe, impossible à exécuter.\nLe Sauvetage de Kummer et Dedekind : les \u0026ldquo;Idéaux\u0026rdquo; Ce qui a sauvé cet effondrement, c\u0026rsquo;est le concept d\u0026rsquo; \u0026ldquo;Idéal (Ideal : nombre idéal)\u0026rdquo; créé par les mathématiciens du 19ème siècle. En pensant non pas à l\u0026rsquo;élément lui-même, mais à \u0026ldquo;l\u0026rsquo;ensemble des multiples (idéal)\u0026rdquo; généré par cet élément, la factorisation première est redevenue possible.\nDans l\u0026rsquo;anneau des entiers d\u0026rsquo;un corps algébrique $\\mathcal{O}_K$ (un anneau plus complet contenant $\\mathbb{Z}[\\alpha]$), il est prouvé que même si un élément ne peut pas être factorisé de manière unique, \u0026ldquo;un idéal peut toujours être factorisé de manière unique comme le produit d\u0026rsquo;\u0026lsquo;Idéaux Premiers ($\\mathfrak{p}$)\u0026rsquo;\u0026rdquo; .\nPar conséquent, dans le GNFS, au lieu de factoriser l\u0026rsquo;élément $(a - b\\alpha)$ lui-même, on factorise l\u0026rsquo;idéal principal $\\langle a - b\\alpha \\rangle$ qu\u0026rsquo;il génère en idéaux premiers .\nPhase 3 : La Norme (Norm) et les Deux Cribles (Sieves) Alors, comment savoir en quels idéaux premiers l\u0026rsquo;idéal $\\langle a - b\\alpha \\rangle$ se décompose ? Ici on utilise une fonction appelée \u0026ldquo;Norme (Norm)\u0026rdquo; . La Norme est une fonction qui convertit des éléments complexes de corps algébriques en \u0026ldquo;entiers réels normaux $\\mathbb{Z}$\u0026rdquo;.\nLa norme de l\u0026rsquo;élément $(a - b\\alpha)$ est trouvée par un simple calcul polynomial $b^d f(a/b)$ ($d$ est le degré de $f(x)$).\nD\u0026rsquo;après un théorème algébrique, on sait que \u0026ldquo;si la norme d\u0026rsquo;un certain idéal peut être complètement factorisée en petits nombres premiers (est friable), alors l\u0026rsquo;idéal d\u0026rsquo;origine peut également être complètement factorisé en petits idéaux premiers\u0026rdquo; .\nAinsi, pour un grand nombre de paires d\u0026rsquo;entiers $(a, b)$, le GNFS calcule les deux valeurs suivantes simultanément et ne collecte que les paires où les deux deviennent des \u0026ldquo;nombres friables (smooth numbers)\u0026rdquo; :\nCrible Rationnel (Rational Sieve) : $a - bm$ (la valeur dans le monde réel) Crible Algébrique (Algebraic Sieve) : $b^d f(a/b)$ (la norme dans le monde algébrique) En collectant des dizaines de millions de paires $(a, b)$ où les deux sont friables, on résout les données de factorisation des idéaux premiers (combien d\u0026rsquo;idéaux premiers sont inclus) sous la forme d\u0026rsquo;une matrice géante (algèbre linéaire sur GF(2)) pour trouver un ensemble $S$ de paires tel que \u0026ldquo;multipliés ensemble, les exposants de tous les idéaux premiers deviennent pairs\u0026rdquo;.\nPhase 4 : Les Deux \u0026ldquo;Obstacles\u0026rdquo; et le Groupe des Classes d\u0026rsquo;Idéaux À partir du calcul matriciel, on a découvert qu\u0026rsquo;en multipliant tous les idéaux de $(a - b\\alpha)$ appartenant à l\u0026rsquo;ensemble $S$, on obtient le carré d\u0026rsquo;un certain idéal $I$. $$\\prod_{S} \\langle a - b\\alpha \\rangle = I^2$$ Cependant, ce n\u0026rsquo;est pas encore terminé. Le mur mathématique le plus profond et le plus difficile du GNFS se trouve ici.\nCe que nous voulons à la fin, ce n\u0026rsquo;est pas \u0026ldquo;le carré d\u0026rsquo;un idéal\u0026rdquo;, mais le \u0026ldquo;carré d\u0026rsquo;un élément ($\\gamma^2$)\u0026rdquo; à substituer dans l\u0026rsquo;application $\\phi$. Ce n\u0026rsquo;est pas parce que c\u0026rsquo;est devenu le carré d\u0026rsquo;un idéal que l\u0026rsquo;élément lui-même est nécessairement un carré. Il y a ici deux puissants obstacles mathématiques (Obstructions) .\nObstacle ① : La Barrière du Groupe des Classes d\u0026rsquo;Idéaux (Ideal Class Group) L\u0026rsquo;idéal $I$ n\u0026rsquo;est pas toujours un \u0026ldquo;idéal généré par un seul élément (idéal principal)\u0026rdquo;. Il est impossible d\u0026rsquo;extraire un élément spécifique $\\gamma$ d\u0026rsquo;un idéal qui n\u0026rsquo;est pas principal.\nC\u0026rsquo;est ici qu\u0026rsquo;intervient le concept de \u0026ldquo;Groupe des Classes d\u0026rsquo;Idéaux (Class Group, $Cl_K$)\u0026rdquo; . Le groupe des classes d\u0026rsquo;idéaux est un groupe qui mesure \u0026ldquo;combien d\u0026rsquo;idéaux existent dans ce corps algébrique qui ne sont pas principaux (à quel point l\u0026rsquo;unicité de la factorisation est brisée)\u0026rdquo;. Même si $\\prod \\langle a - b\\alpha \\rangle$ devient $I^2$, si $I$ n\u0026rsquo;est pas l\u0026rsquo;élément neutre (idéal principal) dans le groupe des classes d\u0026rsquo;idéaux, il ne peut pas être ramené au carré d\u0026rsquo;un élément.\nObstacle ② : La Barrière du Groupe des Unités (Unit Group) Supposons que, par chance, $I$ soit l\u0026rsquo;idéal principal $\\langle \\gamma \\rangle$. Alors, on a $\\prod \\langle a - b\\alpha \\rangle = \\langle \\gamma^2 \\rangle$. Vous pourriez penser : \u0026ldquo;Super, l\u0026rsquo;élément est aussi un carré !\u0026rdquo;, mais c\u0026rsquo;est une grosse erreur.\nLe fait que des idéaux (ensembles de multiples) soient égaux ne signifie pas que les éléments sont parfaitement égaux. Il y aura toujours un décalage par une \u0026ldquo;Unité (Unit : un nombre dont l\u0026rsquo;inverse est aussi un entier. Comme 1 ou -1)\u0026rdquo; . En d\u0026rsquo;autres termes, l\u0026rsquo;équation réelle des éléments devient la suivante : $$\\prod_{S} (a - b\\alpha) = u \\cdot \\gamma^2$$ ($u$ est un élément du groupe des unités $U_K$)\nÀ moins que cette unité $u$ ne soit elle-même le carré de quelque chose, le côté gauche ne pourra jamais devenir le \u0026ldquo;carré parfait d\u0026rsquo;un élément\u0026rdquo;.\nPhase 5 : La Magie d\u0026rsquo;Adleman \u0026ldquo;Caractères Quadratiques\u0026rdquo; (Quadratic Characters) L\u0026rsquo;obstacle du groupe des classes d\u0026rsquo;idéaux et l\u0026rsquo;obstacle du groupe des unités. Comment surmonter ces deux-là ? C\u0026rsquo;est ici qu\u0026rsquo;intervient la brillante méthode des \u0026ldquo;Caractères Quadratiques (Quadratic Characters)\u0026rdquo; , introduzido par le cryptographe Leonard Adleman (le \u0026ldquo;A\u0026rdquo; de RSA) et d\u0026rsquo;autres.\nPour déterminer \u0026ldquo;si un certain élément est un carré parfait dans le corps algébrique\u0026rdquo;, on utilise la version pour corps algébriques du Symbole de Legendre (résidu quadratique). Dans cette matrice géante d\u0026rsquo;avant (le puzzle pour rendre pairs les comptes d\u0026rsquo;idéaux premiers), on ajoute furtivement quelques dizaines de conditions supplémentaires (colonnes) disant que \u0026ldquo;les caractères quadratiques pour certains idéaux premiers spéciaux $\\mathfrak{q}$ doivent également tous être $1$ (pairs)\u0026rdquo; .\nLorsqu\u0026rsquo;on trouve un ensemble $S$ qui satisfait même à ces conditions supplémentaires par le calcul matriciel, des théorèmes profonds de la théorie algébrique des nombres garantissent que \u0026ldquo;l\u0026rsquo;obstacle du groupe des classes d\u0026rsquo;idéaux et l\u0026rsquo;obstacle du groupe des unités disparaîtront naturellement avec une probabilité écrasante\u0026rdquo; .\nAvec cela, nous obtenons enfin la véritable équation. $$\\prod_{S} (a - b\\alpha) = \\gamma^2$$ Phase Finale : La Fusion des Mondes et l\u0026rsquo;Effondrement Cryptographique Enfin, toutes les pièces du puzzle sont en place.\n[Éléments dans le Monde Algébrique (Monde A)] $\\gamma^2 = \\prod (a - b\\alpha)$ (On utilise un algorithme de racine carrée pour trouver $\\gamma$)\n[Éléments dans le Monde Réel (Monde des Nombres Rationnels)] $V^2 = \\prod (a - bm)$ (Comme il s\u0026rsquo;agit d\u0026rsquo;une simple multiplication d\u0026rsquo;entiers, $V$ est trouvé normalement)\nMaintenant, il est temps d\u0026rsquo;utiliser ce pont magique que nous avons construit au début, l\u0026rsquo; homomorphisme $\\phi$ . On téléporte l\u0026rsquo;élément $\\gamma$ du Monde A vers le Monde B (le monde des restes de $N$) en utilisant $\\phi$ (l\u0026rsquo;application où on remplace $\\alpha$ par $m$). $$Y = \\phi(\\gamma) \\pmod N$$ D\u0026rsquo;autre part, on amène directement le $V$ construit dans le monde réel dans le monde des restes et on l\u0026rsquo;appelle $X$. $$X = V \\pmod N$$ Grâce à la propriété de \u0026ldquo;préservation de structure\u0026rdquo; de l\u0026rsquo;homomorphisme, la relation carrée qui tenait dans le Monde A est parfaitement préservée dans le Monde B (le monde modulo $N$). De plus, puisque les paires originales $(a, b)$ ont été créées en correspondance sous les formes $a - b\\alpha$ et $a - bm$, ces $X$ et $Y$ entrent en collision dans le monde modulo $N$ et produisent l\u0026rsquo;équation absolue suivante :\n$$X^2 \\equiv Y^2 \\pmod N$$\nIl ne reste plus qu\u0026rsquo;à prier pour que ces $X$ et $Y$ ne soient pas des solutions triviales ($X \\equiv \\pm Y$), et à calculer $\\gcd(X - Y, N)$ .\nS\u0026rsquo;il s\u0026rsquo;agit d\u0026rsquo;une solution non triviale, l\u0026rsquo;algorithme d\u0026rsquo;Euclide s\u0026rsquo;exécutera en 0,001 seconde, et les nombres premiers secrets $p$ et $q$, qui sont le cœur de la cryptographie RSA, seront imprimés sur l\u0026rsquo;écran de sortie.\nCeci est l\u0026rsquo;image complète du \u0026ldquo;Crible Général du Corps de Nombres (GNFS)\u0026rdquo; , l\u0026rsquo;essence des mathématiques modernes.\n","date":"2026-09-05T02:26:13+09:00","image":"http://kenji.blog/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/rsa_encryption_break_1788542156523_hu57b4110ce75cf76414fb819be22bae03_1010164_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/","title":"La Véritable Structure Mathématique du Crible Général du Corps de Nombres (GNFS)"},{"content":"Qu\u0026rsquo;est-ce que le « Crible du corps de nombres généralisé (GNFS) », la mathématique la plus puissante de l\u0026rsquo;humanité qui brise le chiffrement d\u0026rsquo;Internet ? L\u0026rsquo;Internet que nous utilisons tous les jours. Les messages sur LINE, YouTube, les achats sur Amazon, toutes les communications sont protégées par le « chiffrement ». Actuellement, le chiffrement le plus utilisé dans le monde est le « Chiffrement RSA ».\nLa clé de la défense du chiffrement RSA est très simple. Elle utilise la propriété mathématique selon laquelle ** « la factorisation en nombres premiers de nombres gigantesques ne peut être résolue, même par des ordinateurs » ** . Par exemple, pour « 15 », nous savons tout de suite que c\u0026rsquo;est « 3 × 5 », mais dès que cela devient un « nombre à 270 chiffres », même si tous les superordinateurs du monde étaient combinés, cela prendrait des centaines de millions d\u0026rsquo;années à résoudre.\nCependant, les mathématiciens ne sont pas restés silencieux. Pour briser ce chiffrement impénétrable, l\u0026rsquo;humanité a créé un algorithme (procédure de calcul) presque magique appelé ** « Crible du corps de nombres généralisé (GNFS : General Number Field Sieve) » ** .\nDans cet article, sans utiliser de jargon technique, avec seulement les connaissances des ** mathématiques du collège (factorisation, expressions algébriques, plus grand commun diviseur) ** , nous vous expliquerons étape par étape comment « l\u0026rsquo;algorithme le plus puissant de l\u0026rsquo;humanité » brise le code !\nChapitre 1 : Le but du déchiffrement est une « formule de 3ème » Le plus grand coup spécial pour faire face à la gigantesque factorisation en nombres premiers. C\u0026rsquo;est cette formule apprise en classe de 3ème :\n** $X^2 - Y^2 = (X + Y)(X - Y)$ **\nVous pourriez vous dire : « Sérieusement, une formule aussi basique peut briser le chiffrement ? ». Cependant, c\u0026rsquo;est la clé maîtresse qui révèle tout.\nLe but ultime pour briser le chiffrement, pour un nombre gigantesque $N$, est de trouver ** « des nombres ($X$ et $Y$) dont le reste de la division de $X^2$ et $Y^2$ par $N$ est le même » ** .\nPourquoi avoir le « même reste » brise-t-il le chiffrement ? Supposons que deux nombres, $X^2$ et $Y^2$, aient « le même reste lorsqu\u0026rsquo;ils sont divisés par $N$ ». Avoir le même reste signifie qu\u0026rsquo;il y a une règle selon laquelle ** la soustraction « $X^2 - Y^2$ » sera toujours parfaitement divisible par $N$ (sera un multiple de $N$) ** .\nIci, supposons que le nombre géant $N$ utilisé dans le chiffrement soit constitué de la multiplication de deux nombres premiers secrets ($p$ et $q$) ($N = p \\times q$).\nEn factorisant $X^2 - Y^2$, nous obtenons ** $(X - Y)(X + Y)$ ** . Le fait que ce soit un multiple de $N$ signifie que, quelque part dans cette multiplication, les nombres premiers secrets $p$ et $q$ sont cachés.\nIci, un miracle se produit. Il y a une probabilité mathématique de ** 50 % (la moitié) ** que les deux nombres premiers $p$ et $q$ se séparent dans des pièces différentes : ** « $p$ va dans la pièce de $(X - Y)$ » et « $q$ va dans la pièce de $(X + Y)$ » ** .\nAvec seulement le nombre premier $p$ étant entré dans la pièce de $(X - Y)$, calculons le ** « plus grand commun diviseur (la plus grande partie commune) » ** de $(X - Y)$ et $N$.\nContenu de $(X - Y)$ = $p \\times$ un certain nombre Contenu de $N$ = $p \\times q$ La seule partie commune est ** « $p$ » ** ! En d\u0026rsquo;autres termes, au moment où le plus grand commun diviseur est calculé, le nombre premier caché $p$ est révélé et le chiffrement est complètement décodé. (*Le plus grand commun diviseur peut être calculé instantanément sur un smartphone en utilisant « l\u0026rsquo;Algorithme d\u0026rsquo;Euclide »).\n** 【Petite Chronique : Pourquoi le carré ? Le cube ou le double ne fonctionnent-ils pas ?】 **\nAvec « $2X - 2Y$ », cela devient $2(X - Y)$ et il n\u0026rsquo;y a qu\u0026rsquo;une seule pièce, vous ne pouvez donc pas séparer les nombres premiers. Avec « $X^3 - Y^3$ », la taille des pièces devient déséquilibrée et le calcul devient inutilement lourd. Pour séparer les nombres premiers en deux, le « carré » qui se divise parfaitement en deux pièces est le plus rentable.\nChapitre 2 : Comment trouver X et Y ? « Le puzzle de collecte de cartes de nombres premiers » L\u0026rsquo;objectif est clair. Cependant, même si nous cherchons aveuglément des « $X^2$ et $Y^2$ qui ont le même reste », la fin de l\u0026rsquo;univers arriverait avant de les trouver. Alors, les mathématiciens ont imaginé une méthode géniale appelée ** « le puzzle de collecte de cartes de nombres premiers » ** .\nÉtape 1 : Collecter uniquement de la poudre d\u0026rsquo;or (nombres friables) avec un tamis Tout d\u0026rsquo;abord, préparez un nombre approprié $Z$, élevez-le au carré et calculez le reste $W$ en le divisant par $N$. (Le monde des restes de $Z^2 = W$)\nFactorisez le reste obtenu $W$ en nombres premiers. Ici, seulement lorsqu\u0026rsquo;il apparaît ** « un $W$ composé uniquement de petits nombres premiers tels que 2, 3, 5, 7, etc. » ** , gardez cette équation comme une « carte gagnante » et jetez-la si de grands nombres premiers sont mélangés. C\u0026rsquo;est comme jeter de grosses pierres avec un tamis dans une rivière pour ne récolter que de la poudre d\u0026rsquo;or.\nÉtape 2 : Le puzzle pour tout rendre « pair » Par exemple, supposons que les 3 cartes de poudre d\u0026rsquo;or suivantes ont été collectées.\nCarte A : $Z_1^2 = 2^3 \\times 3^1$ Carte B : $Z_2^2 = 2^1 \\times 5^1$ Carte C : $Z_3^2 = 3^1 \\times 5^1$ Multiplions-les toutes. Le côté droit devient $(2^3 \\times 3^1) \\times (2^1 \\times 5^1) \\times (3^1 \\times 5^1)$, Et en organisant le tout ensemble, cela devient ** « $2^4 \\times 3^2 \\times 5^2$ » ** .\nÉtonnamment, la quantité de nombres premiers est devenue « 4, 2, 2 », ** tous étant un nombre pair ** ! Le fait qu\u0026rsquo;ils soient tous pairs signifie que si vous divisez la quantité totale par deux, ce sera « le carré de quelque chose ». En d\u0026rsquo;autres termes, $(2^2 \\times 3^1 \\times 5^1)^2 = (60)^2$.\nLe côté gauche est $(Z_1 \\times Z_2 \\times Z_3)^2$, donc finalement, ** $X = (Z_1 \\times Z_2 \\times Z_3)$ ** ** $Y = 60$ ** La paire tant attendue de « $X^2 = Y^2$ » est complète !\nPour les ordinateurs, le puzzle consistant à calculer si la quantité de nombres premiers est « paire ou impaire (0 ou 1) » est quelque chose dans lequel ils sont très doués, donc avec cette méthode, $X$ et $Y$ peuvent être trouvés à grande vitesse.\nChapitre 3 : Le mur du désespoir Maintenant n\u0026rsquo;importe quel code peut être brisé ! \u0026hellip; Ou du moins le pensions-nous, mais un problème majeur survient. Si le nombre du chiffrement $N$ compte jusqu\u0026rsquo;à « 100 chiffres », cette méthode (appelée Crible Quadratique) peut le résoudre, mais lorsque $N$ atteint « 200 ou 300 chiffres », le $W$ qui apparaît au milieu du calcul devient beaucoup trop grand.\nLorsque les nombres deviennent trop grands, les « nombres composés uniquement de petits nombres premiers (poudre d\u0026rsquo;or) » cessent purement et simplement d\u0026rsquo;apparaître. Cela devient plus difficile que de chercher des lentilles de contact dans le désert, et les cartes nécessaires pour résoudre le puzzle ne s\u0026rsquo;accumuleront plus du tout.\nIci, l\u0026rsquo;arme ultime de l\u0026rsquo;humanité, le ** « Crible du corps de nombres généralisé (GNFS) » ** , entre enfin en scène.\nChapitre 4 : L\u0026rsquo;idée la plus puissante de l\u0026rsquo;humanité de créer « Deux Mondes » L\u0026rsquo;idée géniale du GNFS est : ** « Les nombres deviennent gigantesques car nous calculons uniquement dans le monde réel. Créons donc un \u0026lsquo;monde caché\u0026rsquo; en utilisant des polynômes (formules avec des lettres) pour diviser le poids du calcul en deux. » **\nLa magie des formules avec des lettres Le GNFS convertit le nombre géant $N$ en une expression littérale à l\u0026rsquo;aide d\u0026rsquo;un nombre de base $m$. Par exemple si $N=100$, avec $m=4$, alors $100 = 4^3 + 2(4^2) + 4$. En utilisant la lettre $x$, nous en faisons une formule (le monde caché) : ** $f(x) = x^3 + 2x^2 + x$ ** .\nCe qui est intéressant avec cette formule, c\u0026rsquo;est qu\u0026rsquo;elle a la propriété que ** « si vous remplacez $x$ par $m$ (4 dans l\u0026rsquo;exemple ci-dessus), vous pouvez toujours revenir au nombre réel $N$ » ** .\nChercher de la poudre d\u0026rsquo;or dans 2 mondes en même temps Le GNFS crée de nombreuses paires d\u0026rsquo;entiers aléatoires $(a, b)$ et effectue les deux calculs suivants simultanément :\n** Monde Réel ** : $a - b \\times m$ ** Monde des Lettres ** : La valeur de $a - b \\times x$ calculée selon les règles des polynômes En séparant le problème en deux mondes, la taille des nombres manipulés diminue (devient plus légère) de manière spectaculaire. C\u0026rsquo;est comme fendre un rocher géant en deux pierres plus faciles à manipuler.\nEnsuite, vous utilisez un crible (tamis) pour séparer et ne collecter que les paires miraculeuses $(a, b)$ où ** « à la fois dans le monde réel et dans le monde des lettres, les deux sont \u0026lsquo;composés uniquement de petits nombres premiers (poudre d\u0026rsquo;or)\u0026rsquo; » ** . D\u0026rsquo;où le nom de « Crible du corps de nombres ».\nLe moment où le chiffrement est enfin brisé Une fois que des dizaines de millions de « cartes de poudre d\u0026rsquo;or » sont collectées dans les deux mondes, le superordinateur utilise des calculs matriciels gigantesques pour trouver « une combinaison où le nombre de nombres premiers est entièrement pair », tout comme nous l\u0026rsquo;avons fait au Chapitre 2.\nUne fois la combinaison trouvée :\nQue le nombre au carré dans le monde réel soit ** $X^2$ ** Que la formule au carré créée dans le monde des lettres soit ** $Y(x)^2$ ** Enfin, remplacez le $x$ dans la formule littérale $Y(x)$ par $m$, en revenant au monde réel et en les rejoignant. Alors, comme par magie mathématique, la condition où ** « les restes de $X^2$ et $Y^2$ sont les mêmes » ** est strictement remplie !\nLe reste, comme au Chapitre 1, consiste simplement à calculer le plus grand commun diviseur de $X - Y$ et $N$, et le chiffrement RSA impénétrable s\u0026rsquo;effondrera, révélant les nombres premiers secrets.\nConclusion : Les mathématiques ne finissent jamais Vous pourriez penser : « Super, avec le GNFS n\u0026rsquo;importe quel chiffrement peut être brisé ! ». Cependant, le chiffrement RSA ne s\u0026rsquo;est pas non plus avoué vaincu. Ce qui est utilisé sur l\u0026rsquo;Internet d\u0026rsquo;aujourd\u0026rsquo;hui est un nombre gigantesque et monstrueux appelé « RSA-2048 (environ 617 chiffres) ».\nBien que le GNFS soit l\u0026rsquo;algorithme le plus puissant de l\u0026rsquo;humanité, même pour résoudre 270 chiffres (RSA-270), on dit que cela prendrait des milliers ou des dizaines de milliers d\u0026rsquo;années, même en connectant des ordinateurs du monde entier. Pour l\u0026rsquo;instant, nos données LINE et bancaires sont en sécurité.\nMais que se passerait-il si ** « une magie capable de trouver instantanément $X$ et $Y$ pour n\u0026rsquo;importe quel nombre géant » ** apparaissait ? En fait, la chose qui s\u0026rsquo;en rapproche le plus est l\u0026rsquo; ** « Ordinateur Quantique (Algorithme de Shor) » ** , actuellement en développement. En utilisant la nature ondulatoire de la mécanique quantique, il a été prouvé mathématiquement qu\u0026rsquo;il est possible d\u0026rsquo;ignorer le fastidieux puzzle de collecte de cartes et de tirer la réponse d\u0026rsquo;un seul coup.\nLa bataille d\u0026rsquo;intelligence sans fin entre ceux qui créent le chiffrement (la défense) et ceux qui créent des algorithmes pour le briser (l\u0026rsquo;attaque). Savoir que la « factorisation en nombres premiers » et les « expressions littérales apprises au collège sont en fait les armes qui s\u0026rsquo;affrontent sur la ligne de front de la sécurité mondiale ne rend-il pas les cours de mathématiques un peu plus intéressants ?\nLa personne qui découvrira l\u0026rsquo;algorithme le plus puissant du futur, c\u0026rsquo;est peut-être vous qui lisez cet article !\n(※Cet article est une adaptation conceptuelle de l\u0026rsquo;attrait mathématique du cassage de code pour les collégiens. Le GNFS réel est rigoureusement calculé à l\u0026rsquo;aide de mathématiques universitaires avancées, telles que les groupes de classes d\u0026rsquo;idéaux des corps de nombres algébriques et les homomorphismes)\n","date":"2026-09-05T02:09:08+09:00","image":"http://kenji.blog/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/gnfs_two_worlds_1788542142485_huf997c6e55368509d0617b56f68899854_1135822_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/","title":"Qu'est-ce que le \"Crible du corps de nombres généralisé (GNFS)\", la mathématique la plus puissante de l'humanité qui brise le chiffrement d'Internet ?"},{"content":"Les mérites et les démérites des anti-vaccins - Comment \u0026ldquo;l\u0026rsquo;anxiété de bonne volonté\u0026rdquo; a tué l\u0026rsquo;avenir de 5 000 personnes, et les leçons épidémiologiques que nous devrions en tirer L\u0026rsquo;« illusion de la causalité » mise en évidence par la pandémie de COVID-19 Depuis 2021, la vaccination contre le nouveau coronavirus a progressé rapidement au Japon. Il s\u0026rsquo;agissait d\u0026rsquo;un projet de santé publique d\u0026rsquo;une ampleur rare dans l\u0026rsquo;histoire de l\u0026rsquo;humanité, avec près de 80 % de la population vaccinée en peu de temps. Au cours de ce processus, nous avons été témoins d\u0026rsquo;innombrables « cris » via les réseaux sociaux et les médias : « Un membre de ma famille est décédé quelques jours après avoir reçu le vaccin », « Depuis la vaccination, je souffre de troubles inexpliqués de la santé ». Ces appels sont poignants, et pour les personnes concernées, cette souffrance est une vérité indéniable.\nCependant, il existe ici un « piège » épidémiologique froid, mais extrêmement important. Si l\u0026rsquo;on considère la taille de la population japonaise, que l\u0026rsquo;on se fasse vacciner ou non, environ 3 000 à 4 000 personnes meurent chaque jour pour une raison quelconque (maladie, accident, vieillesse). Si la grande majorité des citoyens sont vaccinés en même temps, il y aura inévitablement, du point de vue des probabilités, un certain nombre de personnes qui « mourront le lendemain de la vaccination (pour des raisons non liées au vaccin) ». En termes spécialisés, cela s\u0026rsquo;appelle la « coïncidence (Coincidence) » .\nLes êtres humains sont dotés d\u0026rsquo;un biais cognitif appelé « erreur de causalité post hoc (post hoc ergo propter hoc) ». Si « B (décès) se produit après A (vaccination) », nous lions intuitivement que « A est la cause de B ». Pendant la pandémie de COVID-19, ce biais cognitif a été amplifié par la caisse de résonance des réseaux sociaux, créant une couche de personnes pour qui l\u0026rsquo;image « vaccin = danger » s\u0026rsquo;est installée avant d\u0026rsquo;attendre une vérification scientifique.\nNombreux sont les experts en santé publique qui ont observé cette scène avec un sentiment de déjà-vu. Car le Japon est le seul pays développé qui, il y a quelques années à peine, a volontairement abandonné les moyens de prévenir des maladies évitables à cause de cette « anxiété sans base scientifique ». Il s\u0026rsquo;agit du problème du « vaccin contre le cancer du col de l\u0026rsquo;utérus (vaccin HPV) » .\nQue s\u0026rsquo;est-il passé au Japon en 2013 ? Reculons un peu dans le temps. Le cancer du col de l\u0026rsquo;utérus touche environ 11 000 femmes chaque année, et environ 2 900 en meurent. Il frappe particulièrement les générations de 20 à 40 ans, qui sont en pleine période d\u0026rsquo;éducation des enfants et de travail, d\u0026rsquo;où son surnom de « tueur de mères ». La cause en est l\u0026rsquo;infection par le papillomavirus humain (HPV), un virus si courant que 80 % des femmes ayant eu des relations sexuelles seront infectées au moins une fois dans leur vie. Le vaccin HPV, qui prévient cette infection virale, a été introduit dans le monde entier comme un « vaccin révolutionnaire capable de prévenir le cancer », et au Japon également, il a été intégré au programme de vaccination de routine (fortement recommandé par le gouvernement et disponible gratuitement) en avril 2013.\nCependant, la situation a pris une tournure sombre peu de temps après. Certaines des jeunes filles vaccinées ont signalé des symptômes tels que des douleurs généralisées, des troubles moteurs et des troubles de la mémoire, et les médias ont fait de grands reportages quotidiens sur ces cas en les qualifiant de « soupçons d\u0026rsquo;effets secondaires du vaccin ». Les images de jeunes filles souffrant de convulsions ont eu un impact fort sur les téléspectateurs, et l\u0026rsquo;opinion publique a rapidement basculé vers la « théorie du danger du vaccin ».\nEn réponse, en juin 2013, à peine deux mois après le début de la vaccination de routine, le ministère de la Santé, du Travail et des Affaires sociales a décidé de « suspendre la recommandation active ». Il ne s\u0026rsquo;agissait ni d\u0026rsquo;une « interdiction » ni d\u0026rsquo;un « arrêt », mais d\u0026rsquo;une décision politique extrêmement ambiguë : « le cadre de la vaccination de routine est maintenu, mais le gouvernement cesse d\u0026rsquo;envoyer des avis individuels ». Cependant, le public a compris le message comme : « le gouvernement a reconnu que c\u0026rsquo;était dangereux et a arrêté ». En conséquence, le taux de vaccination, qui dépassait 70 %, est tombé à moins de 1 % en un clin d\u0026rsquo;œil.\nC\u0026rsquo;est ainsi qu\u0026rsquo;ont commencé les « huit années perdues (fossé vaccinal) » au Japon.\nLa « vérité » révélée par l\u0026rsquo;étude de Nagoya Les symptômes rapportés par les médias étaient-ils vraiment dus au vaccin ? Une étude à grande échelle a tenté de répondre scientifiquement à cette question. Elle est communément appelée « l\u0026rsquo;étude de Nagoya » .\nEn 2015, la ville de Nagoya a mené une vaste enquête par questionnaire auprès d\u0026rsquo;environ 70 000 jeunes femmes. L\u0026rsquo;enquête incluait à la fois des personnes « vaccinées » et « non vaccinées », et leur demandait si elles présentaient 24 symptômes tels que « menstruations irrégulières », « douleurs articulaires » et « baisse de concentration ». Si le vaccin en était la cause, ces symptômes devraient clairement apparaître plus souvent dans le groupe des « vaccinées ».\nLes résultats ont été choquants. Aucune différence significative dans le taux d\u0026rsquo;incidence des symptômes n\u0026rsquo;a été observée entre le « groupe vacciné » et le « groupe non vacciné ».\nQu\u0026rsquo;est-ce que cela signifie ? Les adolescentes, vaccinées ou non, sont dans une période où elles sont susceptibles de souffrir de problèmes de santé tels que des troubles de la régulation orthostatique ou des douleurs chroniques, en raison des changements hormonaux et des circonstances spécifiques à la croissance. En d\u0026rsquo;autres termes, il y avait autant de « filles qui présentaient les mêmes symptômes sans avoir été vaccinées » que de « filles qui présentaient des symptômes après avoir été vaccinées », comme le rapportaient les médias. Cependant, les problèmes de santé des filles non vaccinées ont été traités comme des « troubles de l\u0026rsquo;adolescence », tandis que seuls ceux des filles vaccinées ont été mis en évidence comme des « dommages liés au vaccin ». Les données ont montré qu\u0026rsquo;il est très probable que ce soit la véritable nature du phénomène qui a fait tant de bruit en tant que « scandale sanitaire ».\nEn outre, l\u0026rsquo;implication de l\u0026rsquo;« effet nocebo (Nocebo effect) » a également été soulignée. C\u0026rsquo;est le contraire de l\u0026rsquo;effet « placebo » : lorsqu\u0026rsquo;on consomme quelque chose en croyant que « c\u0026rsquo;est mauvais pour le corps », l\u0026rsquo;anxiété et la peur provoquent des douleurs et des troubles réels. On ne peut nier la possibilité que la couverture médiatique négative quotidienne ait affecté l\u0026rsquo;esprit et le corps sensibles des jeunes filles.\nLe « péché d\u0026rsquo;omission » vu en chiffres « Arrêter la recommandation par précaution ». À première vue, cette décision semble être un « choix prudent et sûr ». Puisqu\u0026rsquo;il serait trop tard si quelque chose se passait, il faudrait arrêter en cas de doute. Cependant, en santé publique, « ne rien faire (l\u0026rsquo;omission) » cause parfois des dommages qui dépassent de loin le risque de « faire quelque chose ».\nUne équipe de recherche de l\u0026rsquo;Université d\u0026rsquo;Osaka a publié des estimations cruelles sur l\u0026rsquo;impact de cette suspension des recommandations. En raison de la chute drastique du taux de vaccination entre 2013 et 2019, le nombre de patientes atteintes du cancer du col de l\u0026rsquo;utérus, qui aurait pu être évité à l\u0026rsquo;avenir, augmentera d\u0026rsquo;environ 25 000, et le nombre de décès augmentera d\u0026rsquo;environ 5 000 à 5 700 .\nPlus de 5 000 décès. C\u0026rsquo;est un chiffre comparable à celui d\u0026rsquo;une catastrophe naturelle majeure. En essayant d\u0026rsquo;éviter le risque d\u0026rsquo;« anxiété face aux effets secondaires », dont le lien de causalité n\u0026rsquo;est pas scientifiquement établi, nous avons fait peser sur les femmes de l\u0026rsquo;avenir le risque certain et grave de « décès par cancer ».\nSi l\u0026rsquo;on regarde le monde, la différence est flagrante. En Australie, on prévoit que le cancer du col de l\u0026rsquo;utérus sera « éradiqué (deviendra un cancer rare) » d\u0026rsquo;ici 2028 environ, grâce à la généralisation de la vaccination chez les hommes et les femmes. Au Royaume-Uni également, il a été signalé que l\u0026rsquo;incidence du cancer du col de l\u0026rsquo;utérus chez la génération vaccinée est tombée à presque zéro. Alors que le monde avance vers un avenir où le cancer est « vaincu », seul le Japon est resté dans le passé où « le cancer continue d\u0026rsquo;augmenter ». En 2015, le Comité consultatif mondial sur la sécurité des vaccins de l\u0026rsquo;OMS (Organisation mondiale de la santé) a critiqué nommément la situation au Japon, déclarant : « Des décisions politiques non fondées sur des preuves scientifiques causent de réels dommages (décès par cancer) ».\nLa « réticence à la vaccination (Vaccine Hesitancy) » qui s\u0026rsquo;enchaîne par-delà les mers La tragédie du vaccin HPV qui s\u0026rsquo;est produite au Japon n\u0026rsquo;est en aucun cas une « situation particulière propre au Japon ». Actuellement, des cas sont signalés dans le monde entier montrant que lorsque « l\u0026rsquo;anxiété intuitive » ou « l\u0026rsquo;idéologie » l\u0026rsquo;emportent sur la science, les maladies infectieuses peuvent frapper n\u0026rsquo;importe où et n\u0026rsquo;importe quand.\nUn exemple frappant est l\u0026rsquo;épidémie de « rougeole » aux États-Unis.\nLa rougeole est un virus très contagieux, mais c\u0026rsquo;est une maladie qui peut être presque complètement prévenue par un vaccin. Aux États-Unis, son « élimination » a été déclarée en 2000 grâce à un programme de vaccination exhaustif. En d\u0026rsquo;autres termes, on considérait qu\u0026rsquo;il n\u0026rsquo;y avait plus de virus endémique dans le pays. Cependant, ces dernières années, la rougeole a recommencé à se propager.\nSelon un rapport de la BBC (2024), les autorités sanitaires américaines soulignent que la « réticence à la vaccination (Vaccine Hesitancy) », qui reste profondément enracinée dans certaines communautés, constitue un terreau favorable à la propagation des infections. Le taux de vaccination diminue dans les régions où s\u0026rsquo;infiltre l\u0026rsquo;idéologie anti-vaccin, que ce soit pour des raisons religieuses, dans certains groupes se réclamant d\u0026rsquo;un mode de vie « naturel », ou sur la base de fausses informations. Lorsque le virus est introduit de l\u0026rsquo;étranger dans ces régions, des infections explosives se produisent parmi les personnes non immunisées.\nLa rougeole n\u0026rsquo;est pas une maladie qui se limite à de la fièvre et des éruptions cutanées. Elle provoque de graves complications comme la pneumonie et l\u0026rsquo;encéphalite, et peut être mortelle même dans les pays développés. Une maladie que l\u0026rsquo;humanité avait autrefois « contenue » en rassemblant sa sagesse menace à nouveau la vie des enfants, en s\u0026rsquo;engouffrant dans la brèche de la « suspicion » des gens. Le cas des États-Unis nous avertit : « La digue d\u0026rsquo;un taux de vaccination élevé s\u0026rsquo;effondre en un instant si la confiance du public est ébranlée ».\nLa défaite des médias, des experts et de nous-mêmes Pourquoi de telles situations se répètent-elles ? Il y a là l\u0026rsquo;asymétrie de l\u0026rsquo;information propre à la société moderne et nos biais cognitifs.\nDans le cas du problème du vaccin HPV au Japon, les médias ont rapporté de manière sensationnelle les « soupçons d\u0026rsquo;effets secondaires du vaccin ». Le schéma « pauvres victimes » contre « État et laboratoires pharmaceutiques froids » était un récit très puissant, qui a fortement remué les émotions des téléspectateurs. D\u0026rsquo;un autre côté, les explications scientifiques des experts, telles que « aucune différence statistique significative » ou « les bénéfices l\u0026rsquo;emportent sur les risques », sonnaient de manière aride et froide, et étaient trop impuissantes face au torrent d\u0026rsquo;émotions.\nDans le monde scientifique, lorsqu\u0026rsquo;il y a une théorie acceptée soutenue par 99 % des scientifiques et une opinion dissidente à 1 %, on ne les traite pas comme des « opinions équivalentes ». Cependant, par souci d\u0026rsquo;« équité » ou pour attirer l\u0026rsquo;attention, les médias ont présenté en parallèle des données sauvant des dizaines de milliers de vies et le plaidoyer émotionnel d\u0026rsquo;une seule victime, comme s\u0026rsquo;il s\u0026rsquo;agissait de choses « équivalentes ». Les politiciens ont également craint la réaction de l\u0026rsquo;opinion publique et ont préféré « lire l\u0026rsquo;atmosphère du moment » plutôt que de s\u0026rsquo;appuyer sur des preuves scientifiques. En conséquence, la recommandation active du vaccin HPV a été suspendue au Japon pendant environ neuf ans, ce qui a entraîné de nombreux cancers qui auraient pu être évités pendant cette période.\nL\u0026rsquo;histoire se répète - Pour une intelligence qui résiste à l\u0026rsquo;« atmosphère » En 2022, la recommandation active du vaccin HPV a finalement repris au Japon. Cependant, le temps et les vies perdues ne reviendront pas. Et maintenant, comme le montre la résurgence de la rougeole aux États-Unis, si nous baissons la garde, l\u0026rsquo;histoire se répétera indéfiniment.\nNous ne pouvons pas nier complètement le mouvement anti-vaccin ou le fait d\u0026rsquo;avoir des inquiétudes concernant les soins médicaux. Être prudent quant à ce que l\u0026rsquo;on introduit dans son corps est un instinct de défense humain, et des scandales sanitaires se sont effectivement produits dans le passé. Surveiller et douter du pouvoir est important en démocratie.\nCependant, la série d\u0026rsquo;événements impliquant le vaccin contre le COVID-19, le vaccin HPV et l\u0026rsquo;épidémie de rougeole aux États-Unis nous confronte à la réalité glaçante que « l\u0026rsquo;anxiété de bonne volonté ignorant la science » peut coûter plus de vies que le virus lui-même .\n« C\u0026rsquo;est peut-être dangereux, alors attendons de voir » Lorsque nous prenons cette décision, prenons-nous en compte la « probabilité de mourir de la maladie pendant que nous attendons de voir » ? « Le naturel est le meilleur » Lorsque nous disons cela, n\u0026rsquo;avons-nous pas oublié l\u0026rsquo;histoire qui montre que « ce sont précisément les virus présents dans la nature qui ont été les plus impitoyablement meurtriers » ?\nDe nouvelles maladies infectieuses apparaîtront à l\u0026rsquo;avenir, et de nouveaux vaccins seront développés. À ce moment-là, serons-nous à nouveau dupés par le phénomène de « coïncidence » et emportés par des agitations émotionnelles ? Ou serons-nous capables de lire calmement les données et de peser les risques et les bénéfices ?\nOn dit que l\u0026rsquo;histoire se répète. Mais seule notre raison peut l\u0026rsquo;arrêter. Nous devons regarder les données statistiquement correctes, et avoir l\u0026rsquo;intelligence de choisir les « faits » plutôt que l\u0026rsquo;« atmosphère ». Telle est notre responsabilité en tant qu\u0026rsquo;habitants de l\u0026rsquo;époque moderne.\nRéférences et sources de données Ministère de la Santé, du Travail et des Affaires sociales : « Infections à papillomavirus humain (HPV) - Cancer du col de l\u0026rsquo;utérus et vaccin HPV » Centre national du cancer : Données statistiques du service d\u0026rsquo;information sur le cancer, « Cancer du col de l\u0026rsquo;utérus » BBC News (Japonais) : « Le CDC américain appelle à la vaccination face à l\u0026rsquo;épidémie de rougeole, augmentation des infections à l\u0026rsquo;échelle mondiale » (2024) et articles originaux connexes Équipe de recherche de l\u0026rsquo;Université d\u0026rsquo;Osaka (Yagi A, et al. Lancet Public Health. 2020) : Étude d\u0026rsquo;estimation du nombre de cas excédentaires et de décès dus à la suspension de la recommandation active de la vaccination de routine contre le HPV Étude de Nagoya (Suzuki S, et al. Papillomavirus Res. 2018) ","date":"2026-01-24T15:41:23+09:00","image":"http://kenji.blog/p/%E5%8F%8D%E3%83%AF%E3%82%AF%E3%83%81%E3%83%B3%E3%81%AE%E5%8A%9F%E7%BD%AA/img_hu25fb505b5ce09f8b6e475386b0bbff8f_1013820_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E5%8F%8D%E3%83%AF%E3%82%AF%E3%83%81%E3%83%B3%E3%81%AE%E5%8A%9F%E7%BD%AA/","title":"Les mérites et les démérites des anti-vaccins"},{"content":"Mythes et réalités du « Japonais d\u0026rsquo;abord » : La « coexistence » comme stratégie de défense pour le Japon de 2026 Introduction : Pourquoi cette expression résonne-t-elle tant aujourd\u0026rsquo;hui ? Nous nous trouvons aujourd\u0026rsquo;hui à un tournant historique sans précédent. Inflation prolongée, stagnation des salaires réels et vieillissement de la population couplé à une baisse de la natalité de plus en plus visible. À chaque fois que les étiquettes de prix des produits alignés dans les rayons des supermarchés sont modifiées, l\u0026rsquo;anxiété face à l\u0026rsquo;avenir assombrit nos cœurs. Dans ce sentiment de stagnation, une expression gagne rapidement en popularité. Il s\u0026rsquo;agit de « Japonais d\u0026rsquo;abord ».\nLe souhait que « le gouvernement améliore d\u0026rsquo;abord la vie de ses propres citoyens » ou qu\u0026rsquo;il « protège en priorité la culture et la sécurité japonaises » est un désir extrêmement naturel et pressant pour tout citoyen souverain et pour tout être humain vivant dans ce pays. Cependant, entre « l\u0026rsquo;idéal » prôné par cette expression et la « réalité » montrée par les données statistiques, il existe un grand décalage que nous devons regarder en face.\nDans cet article, en mettant de côté l\u0026rsquo;émotionnalisme et l\u0026rsquo;étiquetage, nous allons cerner la véritable nature de ce problème sur la base de données objectives, de l\u0026rsquo;évolution chronologique et des faits se produisant sur le terrain dans divers secteurs de la société.\nChapitre 1 : Chronologie du « Japonais d\u0026rsquo;abord » et contexte social Cette expression n\u0026rsquo;est pas apparue soudainement. Elle s\u0026rsquo;est développée à travers l\u0026rsquo;entrelacement complexe d\u0026rsquo;une tendance mondiale et de circonstances propres au Japon.\n1. 2016-2017 : Importation et ancrage de l\u0026rsquo;expression En 2016, l\u0026rsquo;« America First » (L\u0026rsquo;Amérique d\u0026rsquo;abord) prôné par Donald Trump a provoqué une onde de choc dans le monde entier. Au niveau national en 2017, le parti « Tomin First no Kai » (Les citoyens de Tokyo d\u0026rsquo;abord) dirigé par la gouverneure de Tokyo Yuriko Koike a attiré l\u0026rsquo;attention. À ce stade, c\u0026rsquo;était surtout une rhétorique visant à clarifier les priorités politiques, et la nuance xénophobe restait limitée.\n2. 2023-2024 : Visualisation de l\u0026rsquo;anxiété Le retard de la reprise économique post-pandémie et l\u0026rsquo;inflation accompagnant la dépréciation rapide du yen ont frappé de plein fouet les ménages ordinaires. À la même période, des mécontentements fondés sur des informations fragmentaires, tels que « le soutien aux étrangers est trop généreux » ou « l\u0026rsquo;argent des contribuables japonais coule à flots vers les étrangers », ont commencé à éclater sur les réseaux sociaux.\n3. 2025-2026 : Fusion des forces politiques et des réseaux sociaux Lors des élections nationales de 2025, les forces ayant officiellement adopté le « Japonais d\u0026rsquo;abord » comme slogan ont obtenu un certain nombre de sièges. Les algorithmes des réseaux sociaux ont réagi à l\u0026rsquo;anxiété des gens en affichant de manière prioritaire des publications extrêmes, accélérant ainsi le phénomène de « chambre d\u0026rsquo;écho » où seules des valeurs spécifiques sont renforcées.\nLes derniers sondages d\u0026rsquo;opinion menés par les journaux (fin 2025) ont mis en évidence que l\u0026rsquo;opinion publique est divisée en deux face à ce slogan, avec 42 % de « Pour / plutôt pour » et 38 % de « Contre / plutôt contre ».\nChapitre 2 : La vérité sur l\u0026rsquo;économie et la sécurité sociale — « Prédateurs » ou « Piliers » ? L\u0026rsquo;un des piliers de l\u0026rsquo;argumentaire soutenant le « Japonais d\u0026rsquo;abord » est l\u0026rsquo;idée que « les ressources des Japonais sont volées par les étrangers ». Cependant, les données primaires des agences gouvernementales montrent une réalité exactement opposée à cette intuition.\n1. Main-d\u0026rsquo;œuvre : Un « sang indispensable » pour maintenir l\u0026rsquo;économie japonaise Selon la « Situation de l\u0026rsquo;emploi des étrangers (à fin octobre 2024) » du ministère de la Santé, du Travail et des Affaires sociales, le nombre de travailleurs étrangers était de 2 048 675 personnes. Les estimations actuelles pour 2026 indiquent qu\u0026rsquo;il a déjà dépassé 2,3 millions de personnes.\nSecteur industriel Pourcentage / Taux d\u0026rsquo;augmentation des travailleurs étrangers Réalité et rôle Construction Augmentation d\u0026rsquo;environ 22,7 % par rapport à l\u0026rsquo;année précédente Indispensables à l\u0026rsquo;entretien des infrastructures et à la réparation des ponts et routes vieillissants. Santé et Action sociale Augmentation d\u0026rsquo;environ 28,1 % par rapport à l\u0026rsquo;année précédente En première ligne sur le terrain des soins, ils soutiennent les personnes âgées japonaises. Industrie manufacturière Représente environ 26 % du total La colonne vertébrale qui soutient le secteur de l\u0026rsquo;industrie d\u0026rsquo;exportation japonaise. Actuellement, ce ne sont pas des emplois que les Japonais aimeraient occuper mais ne peuvent pas, ils comblent « le vide que les Japonais ne peuvent plus combler ». Si nous les excluons au nom du « Japonais d\u0026rsquo;abord », notre système de soins s\u0026rsquo;effondrera immédiatement, et les prix des logements et de la nourriture feront un bond de plusieurs dizaines de pour cent à plusieurs fois leur valeur actuelle.\n2. Sécurité sociale : Rumeurs et réalités autour de l\u0026rsquo;aide sociale L\u0026rsquo;affirmation la plus largement diffusée sur les réseaux sociaux est que « les étrangers reçoivent l\u0026rsquo;aide sociale en priorité ». Cependant, si l\u0026rsquo;on vérifie les statistiques du ministère de la Santé, du Travail et des Affaires sociales, la proportion de foyers dont le chef de famille est étranger parmi tous les foyers bénéficiaires est d\u0026rsquo;environ 2,8 à 2,9 %. Ce chiffre est resté presque stable depuis plus de 10 ans.\nÀ l\u0026rsquo;inverse, si l\u0026rsquo;on regarde la structure par âge des résidents étrangers, la plupart appartiennent à la population active dans la vingtaine, trentaine et quarantaine. Ils paient l\u0026rsquo;assurance retraite et l\u0026rsquo;assurance maladie, jouant le rôle de « contributeurs » qui soutiennent les retraites et les frais médicaux des « Japonais âgés ». Ce sont eux qui comblent le vide laissé par la population active japonaise et prolongent la vie du système de sécurité sociale japonais.\nChapitre 3 : Sécurité publique et biais des réseaux sociaux — Déconstruction logique de la « criminalité étrangère » L\u0026rsquo;anxiété concernant la sécurité publique stimule le plus fortement les émotions liées au « Japonais d\u0026rsquo;abord ». Cependant, une lecture détaillée des statistiques de l\u0026rsquo;Agence nationale de la police et du « Livre blanc sur la criminalité » du ministère de la Justice révèle à quel point l\u0026rsquo;image de « l\u0026rsquo;étranger dangereux » sur Internet est créée par une distorsion cognitive.\n1. Comparaison objective entre « nombre total » et « taux de criminalité » Selon les statistiques publiées en 2024, la proportion d\u0026rsquo;étrangers parmi le nombre total de personnes arrêtées est d\u0026rsquo;environ 5,5 %. Les 95 % restants concernent des crimes commis par des Japonais.\nUne comparaison basée sur le nombre de personnes arrêtées pour 100 000 habitants (taux de criminalité) rend la réalité encore plus évidente.\nCatégorie Nombre de personnes arrêtées pour 100 000 habitants (estimation) Japonais (tous âges confondus) Environ 142,7 personnes Étrangers résidents (Résidents permanents / Résidents de longue durée) Environ 120,0 personnes C\u0026rsquo;est un fait statistique que le taux de criminalité des étrangers résidant à moyen ou long terme au Japon est inférieur à la moyenne globale des Japonais.\n2. La magie du biais lié à la « génération » Pourquoi l\u0026rsquo;image selon laquelle « les étrangers font peur » prédomine-t-elle ? Le facteur principal réside dans la différence de « la structure par âge » en criminologie.\nJaponais : Environ 30 % sont des personnes âgées dont le taux de criminalité est extrêmement faible. Comme ce groupe fait baisser le « dénominateur », le chiffre global du Japon semble faible. Étrangers : Étant venus au Japon en tant que main-d\u0026rsquo;œuvre, plus de 80 % appartiennent à « une population jeune à d\u0026rsquo;âge moyen », une tranche d\u0026rsquo;âge statistiquement plus propice à la criminalité. Si l\u0026rsquo;on compare les taux de criminalité des Japonais et des étrangers sous la même condition de la « vingtaine », on ne constate aucune différence significative entre les deux. En d\u0026rsquo;autres termes, ce n\u0026rsquo;est pas que « la sécurité publique s\u0026rsquo;est détériorée à cause de l\u0026rsquo;augmentation du nombre d\u0026rsquo;étrangers », mais simplement que « la tranche d\u0026rsquo;âge la plus susceptible de commettre des crimes (les jeunes) est présente au Japon sous la forme d\u0026rsquo;étrangers ».\n3. Le « biais de confirmation » créé par les réseaux sociaux Les algorithmes des réseaux sociaux utilisent notre « anxiété » comme carburant. Lorsqu\u0026rsquo;un crime impliquant un étranger se produit, il est lié à un « attribut (la nationalité) » et est violemment partagé. En conséquence, seule la mémoire de « un étranger a encore causé un incident » est renforcée dans notre cerveau.\nC\u0026rsquo;est ce qu\u0026rsquo;on appelle le « biais de confirmation ». Les crimes commis par des Japonais, qui représentent 95 % du total, sont négligés comme faisant partie du « quotidien », tandis que les 5 % de crimes commis par des étrangers sont transformés pour représenter l\u0026rsquo;image de « tous les étrangers ».\nChapitre 4 : Transmission culturelle — « Destructeurs » ou « Sauveurs » ? La crainte que « les traditions et la culture japonaises soient détruites » est également en contradiction avec la réalité du terrain.\n1. Les « derniers héritiers » de l\u0026rsquo;artisanat traditionnel Le nombre de personnes engagées dans la fabrication d\u0026rsquo;objets artisanaux traditionnels japonais a drastiquement chuté, passant d\u0026rsquo;environ 300 000 dans les années 1970 à environ 50 000 aujourd\u0026rsquo;hui. Ceux qui sauvent cette culture de l\u0026rsquo;extinction sont des étrangers venus au Japon avec un profond respect pour la culture japonaise.\nBrasseries de saké et forgerons de sabres : Des étrangers deviennent apprentis dans des ateliers que les Japonais étaient sur le point d\u0026rsquo;abandonner. En apportant leur capacité de communication à l\u0026rsquo;international et une nouvelle sensibilité, ils transforment des cultures au bord de la fermeture en « industries durables ». 2. Maintien des communautés locales Dans les municipalités locales devenues des « villes menacées de disparition » en raison du départ des jeunes, les stagiaires techniques et les travailleurs étrangers à compétences spécifiques deviennent les porteurs des festivals locaux et soutiennent la base de l\u0026rsquo;agriculture. Qui cultive les terres agricoles abandonnées par les Japonais partis et qui préserve des événements vieux de plusieurs centaines d\u0026rsquo;années ? Si nous regardons cette réalité en face, il devient évident qu\u0026rsquo;ils ne sont pas des « destructeurs » culturels, mais « la dernière ligne de défense ».\nChapitre 5 : Inquiétudes dans le milieu éducatif et le cycle du « harcèlement » Les effets secondaires de l\u0026rsquo;introduction de l\u0026rsquo;expression « Japonais d\u0026rsquo;abord » dans le milieu de l\u0026rsquo;éducation sont graves.\nUne dichotomie séparant « l\u0026rsquo;intérieur et l\u0026rsquo;extérieur » : Si les enfants intériorisent le faux complexe de supériorité selon lequel « les Japonais sont une classe privilégiée qui devrait être prioritaire », cela conduit facilement au harcèlement pour exclure « ceux qui sont différents d\u0026rsquo;eux ». Hiérarchisation basée sur les origines : Même s\u0026rsquo;ils ont la nationalité japonaise, les enfants dont l\u0026rsquo;apparence ou le nom sont différents sont attaqués parce qu\u0026rsquo;ils « ne sont pas japonais ». C\u0026rsquo;est l\u0026rsquo;effondrement de l\u0026rsquo;éducation et un acte par lequel nous blessons nous-mêmes les talents qui porteront le Japon de demain. Les experts de l\u0026rsquo;éducation craignent que le caractère exclusif du mot « d\u0026rsquo;abord » ne réduise la capacité des enfants à vivre ensemble dans un environnement multiculturel et, par conséquent, n\u0026rsquo;isole le Japon du reste du monde.\nChapitre 6 : Tendances mondiales et vague populiste Ce phénomène n\u0026rsquo;est pas propre au Japon. Dans les pays occidentaux également, nous continuons d\u0026rsquo;assister à un phénomène où les populations qui n\u0026rsquo;ont pas bénéficié de la mondialisation se tournent vers un populisme prônant le principe de « son propre pays d\u0026rsquo;abord ».\nCependant, ce qui différencie fondamentalement le Japon de l\u0026rsquo;Occident, c\u0026rsquo;est le fait que « la population diminue au rythme le plus rapide au monde ». Même si d\u0026rsquo;autres pays ont l\u0026rsquo;option de la « restriction », le Japon possède déjà d\u0026rsquo;innombrables infrastructures sociales qui ne, peuvent être maintenues sans « coopération ». S\u0026rsquo;en tenir à un « d\u0026rsquo;abord » émotionnel signifie logiquement un « suicide à petit feu ».\nEn guise de conclusion : Qu\u0026rsquo;est-ce que le véritable « Japonais d\u0026rsquo;abord » ? Le souhait que « l\u0026rsquo;on pense d\u0026rsquo;abord à la vie des citoyens », intégré dans l\u0026rsquo;expression « Japonais d\u0026rsquo;abord », est en soi la responsabilité la plus fondamentale que le gouvernement d\u0026rsquo;un pays devrait avoir.\nCependant, le moyen de réaliser ce souhait ne doit pas être « l\u0026rsquo;exclusion de ses voisins ». Comme le montrent les données objectives, la commodité de notre vie quotidienne, la sécurité, la culture traditionnelle et le système de sécurité sociale lui-même, dont nous bénéficions actuellement, sont déjà dans une phase de « dépendance et coexistence » qui ne peut exister sans la présence d\u0026rsquo;étrangers.\nLe véritable « Japonais d\u0026rsquo;abord » ne consisterait-il pas à mettre en pratique calmement les 3 points suivants ?\nDébat basé sur les faits : Saisir la réalité sur la base des statistiques primaires des agences gouvernementales, sans se laisser influencer par des rumeurs ou des informations exagérées. Établissement de règles justes : Obliger les étrangers à respecter les règles du Japon, tandis que la société japonaise les traite comme des partenaires équitables. Mise à jour intérieure : Transformer notre perception pour ne plus considérer l\u0026rsquo;accueil des étrangers comme « la perte du Japon », mais comme « la reconstruction et le maintien du Japon » avec leur aide. En 2026, nous nous trouvons à un carrefour important. Allons-nous continuer à crier des mots de division et à nous étrangler nous-mêmes ? Ou allons-nous regarder la réalité en face et faire un pas vers un « Japon durable » où des personnes diverses se soutiennent mutuellement ?\nLa réponse réside dans « l\u0026rsquo;intelligence » et le « courage » du cœur de chacun d\u0026rsquo;entre nous.\n","date":"2026-01-23T13:43:41+09:00","image":"http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E4%BA%BA%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E6%80%9D%E3%81%86%E3%81%93%E3%81%A8/img_hua12d272c50d3b08d888fe1df256a5051_1332597_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E6%97%A5%E6%9C%AC%E4%BA%BA%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E6%80%9D%E3%81%86%E3%81%93%E3%81%A8/","title":"Mythes et réalités du « Japonais d'abord » : La « coexistence » comme stratégie de défense pour le Japon de 2026"},{"content":"[Attention] Serez-vous facturé après la fin de l\u0026rsquo;essai gratuit de Gemini ? Résumé de la procédure d\u0026rsquo;annulation Lorsque vous essayez d\u0026rsquo;utiliser le service d\u0026rsquo;IA de Google « Gemini », un essai gratuit d\u0026rsquo;un mois est proposé au début. De nombreuses personnes s\u0026rsquo;inscrivent en pensant « Puisque c\u0026rsquo;est gratuit, je vais l\u0026rsquo;essayer pour l\u0026rsquo;instant », mais il y a un point auquel il faut faire attention ici.\nQue se passe-t-il à la fin de l\u0026rsquo;essai gratuit ? À la fin de la période d\u0026rsquo;essai, un montant de 2 900 yens par mois vous sera automatiquement facturé. Ceci est lié à un abonnement appelé « Abonnement Google One », et si vous ne faites rien, cela passera à une facturation continue.\nSi vous annulez, vous ne serez pas facturé, mais\u0026hellip; Bien sûr, si vous annulez pendant la période d\u0026rsquo;essai, aucuns frais ne vous seront facturés. La page d\u0026rsquo;explication officielle indique également « Comment annuler l\u0026rsquo;abonnement Google One ».\n👉 Annuler l\u0026rsquo;abonnement Google One (officiel)\nCependant, lorsque j\u0026rsquo;y ai réellement accédé, je me suis retrouvé dans une situation où « pour une raison quelconque, je ne peux pas annuler ». J\u0026rsquo;étais confus en me disant « Eh, à partir d\u0026rsquo;où dois-je l\u0026rsquo;arrêter ? ».\nVoici la bonne façon d\u0026rsquo;annuler ! Après diverses recherches, la page à partir de laquelle j\u0026rsquo;ai pu réellement annuler était la suivante.\n👉 Compte Google – Supprimer des services\nSi vous sélectionnez « Google One » à partir d\u0026rsquo;ici et que vous le supprimez, l\u0026rsquo;annulation sera terminée.\nRésumé L\u0026rsquo;essai gratuit de Gemini dure 1 mois Après la fin, 2 900 yens par mois seront automatiquement facturés Dans certains cas, l\u0026rsquo;annulation ne peut pas être effectuée à partir de la page d\u0026rsquo;explication officielle Vous pouvez réellement annuler sur la page « Suppression de services » Si vous pensez « C\u0026rsquo;est bon parce que c\u0026rsquo;est un essai gratuit », vous pourriez être facturé sans vous en rendre compte, alors soyez prudent !\n👉 Si vous lisez cet article, vous pourriez vous demander en ce moment même « Où puis-je annuler ? ». Veuillez vérifier le lien ci-dessus pour l\u0026rsquo;instant.\n","date":"2025-09-27T10:02:59+09:00","image":"http://kenji.blog/p/google-one-gemini%E3%81%8C%E8%A7%A3%E7%B4%84%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img_hue118597de1df33c0e1a19ecde6d4d33f_1730014_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/google-one-gemini%E3%81%8C%E8%A7%A3%E7%B4%84%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/","title":"Que faire lorsque vous ne pouvez pas résilier Google One (Gemini)"},{"content":"🎬 Script de diffusion YouTube (Développement de l\u0026rsquo;application de cartes de vœux - Partie 1) Début de la diffusion (2 à 3 premières minutes) Salutation rapide \u0026ldquo;Bonjour. À partir d\u0026rsquo;aujourd\u0026rsquo;hui, je vais commencer une diffusion où je construirai régulièrement une application de création de cartes de vœux en C++.\u0026rdquo; \u0026ldquo;Je ne sais pas combien de diffusions il faudra avant l\u0026rsquo;achèvement, mais nous avancerons petit à petit comme une série.\u0026rdquo; \u0026ldquo;Fondamentalement, je travaillerai en silence, j\u0026rsquo;espère donc que vous pourrez le regarder comme une musique de fond pour votre travail.\u0026rdquo;\nAperçu de l\u0026rsquo;application visée \u0026ldquo;Dans cette application, j\u0026rsquo;aimerais qu\u0026rsquo;il soit possible de concevoir le dos des cartes de vœux.\u0026rdquo; \u0026ldquo;Je prévois d\u0026rsquo;inclure l\u0026rsquo;insertion de photos, la disposition des polices, et l\u0026rsquo;édition d\u0026rsquo;images ou la génération d\u0026rsquo;illustrations à l\u0026rsquo;aide de l\u0026rsquo;IA, et finalement de la télécharger sur le Microsoft Store.\u0026rdquo;\nObjectifs de travail d\u0026rsquo;aujourd\u0026rsquo;hui \u0026ldquo;Pour la première session d\u0026rsquo;aujourd\u0026rsquo;hui, nous allons préparer l\u0026rsquo;environnement et créer les fondations.\u0026rdquo; \u0026ldquo;Plus précisément, j\u0026rsquo;aimerais procéder avec :\nCréation du dépôt GIT Création de la fenêtre principale Affichage de la boîte de dialogue des informations de version Création du menu et implémentation de la commande de sortie Traitement d\u0026rsquo;initialisation/libération de Direct2D et affichage de HelloWorld \u0026quot;\nÀ propos de la publication du code source \u0026ldquo;Le code source est publié sur GitHub. Si vous êtes intéressé, n\u0026rsquo;hésitez pas à y jeter un coup d\u0026rsquo;œil.\u0026rdquo; → https://github.com/kenjinote/NengaCardApp/\nPartie travail (Silence) Création du dépôt GitHub → Commit initial\nCréation du modèle de la fenêtre principale\nCréation de la boîte de dialogue de version, du menu et implémentation de la commande de sortie\nTraitement d\u0026rsquo;initialisation et de libération de Direct2D → Confirmation de l\u0026rsquo;affichage de HelloWorld\nPush sur GitHub de manière appropriée\n※ Fondamentalement silencieux, ajoutant de brèves explications uniquement lorsque cela est nécessaire\nAvant la fin de la diffusion (1 à 2 dernières minutes) Résumé de l\u0026rsquo;avancement du jour \u0026ldquo;Aujourd\u0026rsquo;hui, nous avons créé un dépôt GIT et implémenté la fenêtre, le bouton de sortie et la boîte de dialogue de version.\u0026rdquo; \u0026ldquo;Nous avons pu aller jusqu\u0026rsquo;à afficher HelloWorld avec Direct2D.\u0026rdquo;\nLien pour la prochaine fois \u0026ldquo;À partir de la prochaine fois, j\u0026rsquo;espère organiser la partie interface utilisateur (UI) et passer à l\u0026rsquo;objectivation des chaînes de caractères, etc.\u0026rdquo;\nGuider à nouveau vers le lien GitHub → https://github.com/kenjinote/NengaCardApp/\nClôture \u0026ldquo;Merci d\u0026rsquo;avoir regardé. Je continuerai régulièrement la prochaine fois, alors je compte sur vous.\u0026rdquo;\n","date":"2025-08-31T20:24:49+09:00","image":"http://kenji.blog/p/%E5%B9%B4%E8%B3%80%E7%8A%B6%E4%BD%9C%E6%88%90%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E9%85%8D%E4%BF%A1-vol.1/img_hu403d76b87feb7669f72c38243c5cb621_1021075_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E5%B9%B4%E8%B3%80%E7%8A%B6%E4%BD%9C%E6%88%90%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E9%85%8D%E4%BF%A1-vol.1/","title":"Diffusion de développement d'application de cartes de vœux VOL.1 (Script)"},{"content":"Permettre l\u0026rsquo;installation de msix avec un certificat auto-signé Lors de la distribution d\u0026rsquo;applications sous Windows, l\u0026rsquo;utilisation d\u0026rsquo;un package MSIX est pratique car elle unifie les mécanismes d\u0026rsquo;installation et de mise à jour. Cependant, MSIX a la restriction qu\u0026rsquo;\u0026ldquo;un certificat signé est toujours requis\u0026rdquo;. Lorsque vous souhaitez distribuer pour test une application développée par une entreprise ou un particulier, il peut y avoir des situations où \u0026ldquo;l\u0026rsquo;achat d\u0026rsquo;un certificat de signature de code commercial est exagéré\u0026rdquo;.\nC\u0026rsquo;est là qu\u0026rsquo;un certificat auto-signé (Self-Signed Certificate) s\u0026rsquo;avère utile. Dans cet article, nous résumerons les étapes pour joindre un certificat auto-signé à MSIX et permettre son installation dans un environnement local.\n1. Créer un certificat auto-signé Tout d\u0026rsquo;abord, démarrez PowerShell en mode administrateur et exécutez la commande suivante.\n1 2 // Créer un certificat auto-signé New-SelfSignedCertificate -Type CodeSigningCert -Subject \u0026#34;CN=035A9AAC-915B-4CE1-AE39-1A101BED42F5\u0026#34; -CertStoreLocation Cert:\\CurrentUser\\My -NotAfter (Get-Date).AddYears(10) -KeyUsage DigitalSignature -FriendlyName \u0026#34;kenjinote\u0026#34; Ce qui est créé ici est un certificat pour la \u0026ldquo;signature de code\u0026rdquo;.\nLui donner un nom facile à comprendre avec -FriendlyName facilite sa recherche ultérieure. Vous pouvez ajuster la date d\u0026rsquo;expiration avec -NotAfter. Cette fois, elle est fixée à 10 ans. 2. Exporter le fichier PFX Exportez le certificat créé au format PFX afin qu\u0026rsquo;il puisse être utilisé avec signtool.\n1 2 3 4 // Créer pfx $cert = Get-ChildItem Cert:\\CurrentUser\\My | Where-Object { $_.FriendlyName -eq \u0026#34;kenjinote\u0026#34; } $password = ConvertTo-SecureString -String \u0026#34;password\u0026#34; -Force -AsPlainText Export-PfxCertificate -Cert $cert -FilePath \u0026#34;D:\\pfx\\cert.pfx\u0026#34; -Password $password Le mot de passe défini à ce moment-là (dans l\u0026rsquo;exemple, password) sera requis pour l\u0026rsquo;opération de signature ultérieure.\n3. Installer le certificat auto-signé dans les Autorités de certification racines de confiance Le certificat créé n\u0026rsquo;est pas approuvé par Windows tel quel. Pour l\u0026rsquo;installer, vous devez l\u0026rsquo;importer de certmgr.msc vers [Autorités de certification racines de confiance] -\u0026gt; [Certificats] .\nSi vous importez le certificat exporté ( .cer ou .pfx ), il sera traité comme un certificat de confiance sur le PC cible. Cela empêche l\u0026rsquo;avertissement de \u0026ldquo;certificat non approuvé\u0026rdquo; d\u0026rsquo;apparaître même si vous signez le MSIX.\n4. Signer le programme d\u0026rsquo;installation (MSIX) Enfin, utilisez le certificat PFX créé pour signer le MSIX. signtool est inclus dans Visual Studio et le SDK Windows.\n1 2 // Signer le programme d\u0026#39;installation signtool sign /fd SHA256 /f \u0026#34;D:\\pfx\\cert.pfx\u0026#34; /p \u0026#34;password\u0026#34; \u0026#34;C:\\installer\\installer.msix\u0026#34; /fd SHA256 spécifie l\u0026rsquo;algorithme de signature. Spécifiez le fichier PFX avec /f et transmettez le mot de passe avec /p. Enfin, spécifiez le chemin d\u0026rsquo;accès au fichier MSIX. Si le chemin d\u0026rsquo;accès à signtool n\u0026rsquo;est pas défini, spécifiez le chemin complet. Dans mon environnement, il se trouvait à l\u0026rsquo;emplacement suivant. 1 \u0026#34;C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages\\microsoft.windows.sdk.buildtools\\10.0.26100.1742\\bin\\10.0.26100.0\\x64\\signtool.exe\u0026#34; Cela conclut la signature et complète un MSIX qui peut être installé sur le PC cible.\nRésumé Créer un certificat auto-signé avec New-SelfSignedCertificate Exporter le PFX avec Export-PfxCertificate Installer le certificat dans les Autorités de certification racines de confiance Signer le MSIX avec signtool En suivant ce flux, vous pouvez vérifier le fonctionnement et distribuer pour test dans l\u0026rsquo;environnement local sans acheter de certificat commercial. Bien sûr, un certificat émis par une autorité de certification est essentiel pour la distribution commerciale réelle, mais cette méthode est très pratique dans les étapes de développement et de vérification.\n👉 Cette fois, nous avons utilisé installer.msix comme exemple, mais vous pouvez appliquer la même procédure à votre propre application.\n","date":"2025-08-30T04:18:04+09:00","image":"http://kenji.blog/p/msix%E3%81%AB%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%81%A4%E3%81%91%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/img_hu193aeacbbfca091956fdf9aac7d139a2_495432_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/msix%E3%81%AB%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E3%81%A4%E3%81%91%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B/","title":"Permettre l'installation de msix avec un certificat auto-signé"},{"content":"Un outil pour \u0026ldquo;ceux qui ne peuvent pas coder, mais qui ont de la logique\u0026rdquo;. La raison pour laquelle j\u0026rsquo;ai créé LogicPad Bonjour, je suis kenji. Je suis le créateur de l\u0026rsquo;outil low-code \u0026quot; LogicPad \u0026ldquo;. Cette fois, il ne s\u0026rsquo;agit pas d\u0026rsquo;une présentation du produit, mais je voudrais écrire sur les coulisses du développement, \u0026ldquo;Pourquoi ai-je décidé de créer cela ?\u0026rdquo;, et sur mes propres pensées d\u0026rsquo;un point de vue un peu personnel.\nHonnêtement, ce n\u0026rsquo;était pas seulement le développement d\u0026rsquo;un outil. Mon passé, les frustrations au travail, mes compétences et le désir ardent de \u0026ldquo;créer un jour mon propre produit\u0026rdquo; — LogicPad est né du résultat de la convergence de toutes ces choses.\nEn d\u0026rsquo;autres termes, c\u0026rsquo;est aussi le \u0026ldquo;projet d\u0026rsquo;une vie\u0026rdquo; pour moi. Je vais écrire ce contexte aussi honnêtement et passionnément que possible.\nJe voulais un produit pour lequel je pourrais dire fièrement \u0026ldquo;C\u0026rsquo;est moi qui l\u0026rsquo;ai fait\u0026rdquo; Pour être honnête, c\u0026rsquo;était ma première motivation.\nDepuis toujours, j\u0026rsquo;ai aimé écrire du code, que ce soit pour le travail ou comme passe-temps. J\u0026rsquo;ai également été impliqué dans divers développements. Mais, un jour, j\u0026rsquo;ai soudainement réalisé. \u0026ldquo;Je n\u0026rsquo;ai aucun produit que j\u0026rsquo;ai lancé dans le monde sous mon nom, sous ma responsabilité.\u0026rdquo;\nBien sûr, il y a de la valeur dans ce que nous créons en équipe, et il y a eu beaucoup de travaux dont je suis fier. Mais quelque part, il y avait aussi un sentiment de vide, \u0026ldquo;Vais-je terminer ma carrière sous le nom de quelqu\u0026rsquo;un d\u0026rsquo;autre comme ça ?\u0026rdquo;.\nJuste une fois suffirait. Je veux laisser quelque chose dont je puisse dire fièrement, \u0026ldquo;C\u0026rsquo;est moi qui l\u0026rsquo;ai fait\u0026rdquo;. C\u0026rsquo;est dans cet esprit que j\u0026rsquo;ai commencé à concevoir LogicPad. C\u0026rsquo;était il y a environ 6 ans (vers 2019). (L\u0026rsquo;idée originale elle-même remonte à 2015 environ, lorsque j\u0026rsquo;ai découvert Blueprint, le langage de programmation visuelle d\u0026rsquo;Unreal Engine.)\nJe ne peux pas m\u0026rsquo;y mettre car je ne sais pas coder. N\u0026rsquo;est-ce pas dommage ? Il y avait beaucoup de personnes excellentes sur mon lieu de travail.\nElles peuvent construire de la logique. Elles maîtrisent les fonctions Excel et peuvent voir l\u0026rsquo;essence du problème. Mais — à l\u0026rsquo;étape \u0026ldquo;écrire du code\u0026rdquo;, leurs mains s\u0026rsquo;arrêtent.\n\u0026ldquo;Je fais cette tâche à chaque fois en regardant le manuel de procédure, mais n\u0026rsquo;y a-t-il pas moyen de l\u0026rsquo;automatiser ?\u0026rdquo; \u0026ldquo;Oui, c\u0026rsquo;est possible. Mais\u0026hellip; pour cela, il faut écrire du code\u0026hellip;\u0026rdquo;\nNous avons eu de telles conversations à maintes reprises.\nÀ chaque fois, je pensais : \u0026ldquo;C\u0026rsquo;est un tel gâchis de s\u0026rsquo;arrêter au mur du code alors qu\u0026rsquo;on comprend la logique.\u0026rdquo;\nL\u0026rsquo;option d\u0026rsquo;un éditeur low-code En fait, dans mon emploi précédent, je développais un logiciel de CAO 2D fonctionnant via une interface graphique (GUI). Avec la CAO, vous utilisez la souris pour assembler des formes, n\u0026rsquo;est-ce pas ? En d\u0026rsquo;autres termes, c\u0026rsquo;est un monde où \u0026ldquo;la logique est construite par l\u0026rsquo;opération\u0026rdquo; .\nJ\u0026rsquo;ai pensé : \u0026ldquo;C\u0026rsquo;est très compatible avec le low-code\u0026rdquo;.\nEn remontant encore plus loin, depuis mon époque étudiante, j\u0026rsquo;ai toujours écrit du code et produit en masse de petits programmes dès qu\u0026rsquo;une idée me venait, comme le traitement d\u0026rsquo;images, le traitement numérique, des outils Windows et des outils de publication automatique sur les réseaux sociaux. Je pense qu\u0026rsquo;il y en a plus de 600. Ils sont toujours sur mon GitHub aujourd\u0026rsquo;hui.\nÀ l\u0026rsquo;époque, je ne pensais pas à la signification. C\u0026rsquo;était juste \u0026ldquo;Je le fais parce que j\u0026rsquo;ai envie de le faire\u0026rdquo;. C\u0026rsquo;était tout.\nMais maintenant, en créant LogicPad\u0026hellip;\nJ\u0026rsquo;ai eu l\u0026rsquo;impression que les points s\u0026rsquo;étaient enfin rejoints.\nFacile à utiliser, mais puissant. La difficulté de l\u0026rsquo;équilibre Ce à quoi je pensais constamment en faisant avancer le développement, c\u0026rsquo;était \u0026ldquo;En faire un outil intuitif à utiliser, mais en même temps robuste.\u0026rdquo;\nSi vous ajoutez des fonctions, vous pouvez faire plus de choses. Mais cela devient plus difficile à utiliser. Si vous simplifiez, n\u0026rsquo;importe qui peut l\u0026rsquo;utiliser. Mais il y aura alors des personnes qui ne seront pas satisfaites.\nPour qu\u0026rsquo;on ne dise pas : \u0026ldquo;Les outils low-code ne sont que des jouets, n\u0026rsquo;est-ce pas ?\u0026rdquo;. Mais je ne veux pas non plus qu\u0026rsquo;on dise : \u0026ldquo;En fin de compte, ça ne sert à rien si on ne code pas.\u0026rdquo;\nJe me battais constamment sur la ligne de démarcation entre l\u0026rsquo;intuition et l\u0026rsquo;expressivité.\nJ\u0026rsquo;ai reconstruit l\u0026rsquo;interface utilisateur à maintes reprises, je l\u0026rsquo;ai jetée à maintes reprises, Et quand je me suis enfin approché d\u0026rsquo;une forme où je me suis dit \u0026ldquo;Ça va le faire\u0026rdquo;, j\u0026rsquo;étais vraiment heureux.\nJ\u0026rsquo;ai été sauvé par les mots de ma première \u0026ldquo;utilisatrice\u0026rdquo; La première fois que j\u0026rsquo;ai donné LogicPad, c\u0026rsquo;était à une ancienne collègue. Elle n\u0026rsquo;est pas douée en informatique, et elle a peur du code. Mais elle est douée pour la logique.\nAprès lui avoir expliqué un peu et l\u0026rsquo;avoir laissée manipuler\u0026hellip; Je ne peux pas oublier la phrase qu\u0026rsquo;elle a dite quelques minutes plus tard.\n\u0026ldquo;Avec ça, je pense que même moi, je pourrais le faire !\u0026rdquo;\nÀ ce moment-là, j\u0026rsquo;ai failli pleurer. C\u0026rsquo;est ce que je voulais lui offrir.\nNon pas un outil qui fonctionne, mais le sentiment de \u0026ldquo;Je l\u0026rsquo;ai créé moi-même !\u0026rdquo; . J\u0026rsquo;étais convaincu que c\u0026rsquo;était là la véritable valeur de LogicPad.\nQuand le nombre de créateurs augmente, la société devient bien plus intéressante Je pense que la \u0026ldquo;démocratisation de la technologie\u0026rdquo; est vraiment importante.\nLa technologie a le pouvoir de changer le monde. Mais le nombre de personnes qui peuvent la manipuler est limité.\nEt si on pouvait créer une application simplement \u0026ldquo;en comprenant la logique\u0026rdquo; ?\nDavantage de personnes pourraient passer du \u0026ldquo;côté de la création\u0026rdquo;. Et je pense que ce qui naîtra de là dépassera notre imagination actuelle.\nSi LogicPad pouvait devenir cette porte d\u0026rsquo;entrée. Je veux que ce soit un outil qui transforme le \u0026ldquo;je veux créer\u0026rdquo; en \u0026ldquo;je peux créer\u0026rdquo;.\nC\u0026rsquo;est mon souhait.\nEn conclusion LogicPad est encore en version bêta et n\u0026rsquo;est pas terminé. Il y a encore des tonnes d\u0026rsquo;améliorations à apporter et de choses que je veux faire.\nMais, je mets tous les \u0026ldquo;points\u0026rdquo; de ma vie dans cet outil. Maintenant, je peux dire avec fierté :\n\u0026ldquo;C\u0026rsquo;est le produit que j\u0026rsquo;ai créé.\u0026rdquo;\n👇 Bonus : Ce que vous pouvez faire avec LogicPad Construir des processus par glisser-déposer Les branchements conditionnels et les variables peuvent également être gérés dans l\u0026rsquo;interface graphique Divers nœuds de collaboration IA sont disponibles L\u0026rsquo;extension pour les utilisateurs avancés est également possible grâce à l\u0026rsquo;insertion de scripts Fonctions mathématiques et traitement de données de haute précision (calculs numériques avec une précision infinie, etc.) Une multitude de raccourcis clavier pour les utilisateurs avancés Prend en charge les langues de plus de 90 pays Ce que je veux faire à l\u0026rsquo;avenir Générer de la logique à partir du langage naturel en collaboration avec l\u0026rsquo;IA Un système qui permet aux utilisateurs de créer des nœuds personnalisés Construire une plateforme où les nœuds et la logique créés peuvent être partagés ✍️ Postface Merci beaucoup d\u0026rsquo;avoir lu jusqu\u0026rsquo;ici. Ce n\u0026rsquo;était pas seulement le développement d\u0026rsquo;un outil, mais un défi dans lequel j\u0026rsquo;ai mis ma propre expérience, ma passion et des fragments de ma vie.\n\u0026ldquo;Je ne sais pas coder, mais j\u0026rsquo;ai de la logique.\u0026rdquo; Un avenir où ces personnes pourront \u0026ldquo;créer\u0026rdquo; par elles-mêmes. C\u0026rsquo;est ce que je veux continuer à viser à travers LogicPad.\nJe serais très heureux si vous pensiez, ne serait-ce qu\u0026rsquo;un peu, \u0026ldquo;J\u0026rsquo;ai envie de l\u0026rsquo;utiliser\u0026rdquo;. Si vous êtes intéressé, n\u0026rsquo;hésitez pas à essayer LogicPad.\nEt si vous avez des impressions ou des remarques après l\u0026rsquo;avoir utilisé, même les plus petites, n\u0026rsquo;hésitez pas. Votre voix sera une force majeure pour façonner la prochaine étape de ce produit.\nMerci pour votre soutien continu.\n","date":"2025-07-30T23:51:35+09:00","image":"http://kenji.blog/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/img_hu2f3df13f20424b87da3515770faf1b1c_1676910_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/logicpad-%E9%96%8B%E7%99%BA%E7%A7%98%E8%A9%B1/","title":"L'histoire secrète du développement de LogicPad"},{"content":"\u0026ldquo;Comment supprimer par lots les métadonnées (informations personnelles) d\u0026rsquo;Excel, Word, etc. avec PowerShell\u0026rdquo; Les fichiers Office comme Excel enregistrent automatiquement des « métadonnées (informations personnelles) » telles que le créateur, la dernière personne à avoir modifié le fichier et le nom de l\u0026rsquo;entreprise. Il y a de nombreux cas où vous souhaitez supprimer ces informations, par exemple lors du partage d\u0026rsquo;un fichier à l\u0026rsquo;extérieur de l\u0026rsquo;entreprise.\nDans cet article, nous expliquerons en détail comment supprimer les métadonnées Excel à l\u0026rsquo;aide de PowerShell, en nous concentrant sur ** le traitement par lots dans un dossier ** et ** l\u0026rsquo;application à d\u0026rsquo;autres fichiers Office tels que Word et PowerPoint ** .\n1. Supprimer les métadonnées d\u0026rsquo;un seul fichier Excel Il s\u0026rsquo;agit du script le plus basique pour supprimer les informations personnelles d\u0026rsquo;un seul fichier Excel. Il appelle l\u0026rsquo;objet COM d\u0026rsquo;Excel, définit la propriété RemovePersonalInformation sur $true et l\u0026rsquo;enregistre en écrasant le fichier.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 # Démarrer l\u0026#39;application Excel de manière invisible $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false # Ouvrir le fichier (*veuillez spécifier le chemin absolu) $filePath = \u0026#34;C:\\Path\\To\\Your\\File.xlsx\u0026#34; $wb = $excel.Workbooks.Open($filePath) # Activer le paramètre pour supprimer les métadonnées (informations personnelles) $wb.RemovePersonalInformation = $true # Écraser et fermer $wb.Save() $wb.Close($false) # Quitter Excel et libérer la mémoire $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null ** Attention : ** Assurez-vous de spécifier le ** chemin absolu (chemin complet) ** pour le chemin passé à Workbooks.Open(). Un chemin relatif peut entraîner une erreur.\n2. Traiter par lots tous les fichiers Excel dans un dossier Dans la pratique, vous voudrez souvent « supprimer d\u0026rsquo;un coup toutes les métadonnées de dizaines de fichiers Excel dans un dossier spécifique ». Cela peut être réalisé en utilisant un traitement en boucle combiné à Get-ChildItem.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 $targetFolder = \u0026#34;C:\\Path\\To\\Your\\Folder\u0026#34; # Obtenir tous les fichiers .xlsx et .xls dans le dossier $excelFiles = Get-ChildItem -Path $targetFolder -Include \u0026#34;*.xlsx\u0026#34;, \u0026#34;*.xls\u0026#34; -Recurse if ($excelFiles.Count -eq 0) { Write-Host \u0026#34;Aucun fichier Excel trouvé.\u0026#34; exit } $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false foreach ($file in $excelFiles) { Write-Host \u0026#34;Suppression des métadonnées de $($file.Name)...\u0026#34; # Ouvrir le fichier $wb = $excel.Workbooks.Open($file.FullName) # Supprimer les métadonnées et enregistrer $wb.RemovePersonalInformation = $true $wb.Save() $wb.Close($false) } $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null Write-Host \u0026#34;Tout le traitement est terminé !\u0026#34; 3. Supprimer les métadonnées d\u0026rsquo;autres fichiers Office (Word / PowerPoint) Les métadonnées peuvent être supprimées avec exactement la même logique non seulement dans Excel, mais aussi dans Word et PowerPoint. Seul le nom de l\u0026rsquo;objet COM à appeler est différent, et il est courant que la propriété RemovePersonalInformation soit fournie.\nPour Word 1 2 3 4 5 6 7 8 9 10 11 $word = New-Object -ComObject Word.Application $word.Visible = $false $word.DisplayAlerts = 0 $doc = $word.Documents.Open(\u0026#34;C:\\Path\\To\\Your\\File.docx\u0026#34;) $doc.RemovePersonalInformation = $true $doc.Save() $doc.Close() $word.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null Pour PowerPoint Pour PowerPoint, le réglage de la propriété RemovePersonalInformation est similaire, mais le comportement du démarrage invisible est légèrement différent.\n1 2 3 4 5 6 7 8 9 10 $ppt = New-Object -ComObject PowerPoint.Application # Ouvrir en spécifiant le mode caché (msoFalse) etc. avec les 2ème à 4ème arguments $presentation = $ppt.Presentations.Open(\u0026#34;C:\\Path\\To\\Your\\File.pptx\u0026#34;, $false, $false, $false) $presentation.RemovePersonalInformation = $true $presentation.Save() $presentation.Close() $ppt.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($ppt) | Out-Null Conclusion En utilisant PowerShell et des objets COM, vous pouvez automatiser entièrement la suppression des métadonnées des fichiers Office. Il est très utile d\u0026rsquo;avoir sous la main un script de traitement par lots avant la livraison afin d\u0026rsquo;éviter la fuite involontaire d\u0026rsquo;informations confidentielles ou de noms personnels.\n","date":"2025-07-30T02:42:40+09:00","image":"http://kenji.blog/p/powershell-%E3%81%A7-excel-%E3%81%AE%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%80%8B%E4%BA%BA%E6%83%85%E5%A0%B1%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/powershell_metadata_eyecatch_1788588033601_hud95a00206aa1dcf32de9cdc0ccb17972_952041_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/comment-supprimer-les-m%C3%A9tadonn%C3%A9es-informations-personnelles-dexcel-avec-powershell/","title":"Comment supprimer par lots les métadonnées (informations personnelles) d'Excel, Word, etc. avec PowerShell"},{"content":"Explication Simple de la Conjecture de Kepler ! La meilleure façon d\u0026rsquo;emballer des pastèques Bonjour, c\u0026rsquo;est kenji !\nAujourd\u0026rsquo;hui, je voudrais essayer d\u0026rsquo;expliquer aussi simplement que possible un sujet mathématique dont le nom semble un peu compliqué : la \u0026ldquo;Conjecture de Kepler\u0026rdquo;.\nÀ première vue, cela peut sembler un sujet pour les geeks, mais c\u0026rsquo;est aussi un problème très proche de nous : \u0026ldquo;Comment emballer les pastèques le plus densément possible dans une boîte ?\u0026rdquo;. Cela a également à voir avec les réfrigérateurs des supérettes et la façon dont les marchandises sont empilées.\nEt, dans le monde des mathématiques, il y a une histoire super romantique derrière tout cela : que cela n\u0026rsquo;a pas pu être prouvé pendant plus de 400 ans .\nAllons-y !\nQui était Kepler, au fait ? Tout d\u0026rsquo;abord, qui est le \u0026ldquo;Kepler\u0026rdquo; de la \u0026ldquo;Conjecture de Kepler\u0026rdquo; ?\nC\u0026rsquo;est le nom d\u0026rsquo;un astronome et mathématicien allemand appelé Johannes Kepler .\nCe type était incroyable. Par exemple, c\u0026rsquo;est lui qui a découvert que les orbites planétaires sont elliptiques. Aujourd\u0026rsquo;hui, c\u0026rsquo;est de notoriété publique, mais à l\u0026rsquo;époque (vers 1600), c\u0026rsquo;était une époque où même l\u0026rsquo;héliocentrisme était à peine cru.\nGalilée = génie de l\u0026rsquo;observation Kepler = le génie qui a expliqué l\u0026rsquo;univers avec des formules mathématiques Newton = le super génie qui a résumé cette théorie en lois physiques Avec ce positionnement, Kepler était un pionnier pour \u0026ldquo;parler de l\u0026rsquo;univers avec des formules mathématiques\u0026rdquo;.\nEt, à un moment donné, il a dit ceci :\nQu\u0026rsquo;est-ce que la Conjecture de Kepler ? En bref, la \u0026ldquo;Conjecture de Kepler\u0026rdquo; ressemble à ceci.\nLors de l\u0026rsquo;emballage de sphères de même taille (pastèques ou oranges) dans une boîte, quel est l\u0026rsquo;arrangement qui permet l\u0026rsquo;emballage le plus dense ?\nC\u0026rsquo;est le problème.\nEt ce que Kepler a conjecturé dans les années 1600 était :\nNe serait-il pas plus efficace de les empiler comme des triangles, un peu comme les marchands de légumes présentent les oranges ?\nDans le langage mathématique, cela s\u0026rsquo;appelle le \u0026ldquo;problème de l\u0026rsquo;empilement le plus dense\u0026rdquo; (Sphere Packing), qui cherche la méthode pour empiler des sphères le plus densément possible dans l\u0026rsquo;espace.\nKepler a conjecturé que l\u0026rsquo;arrangement appelé \u0026ldquo;structure cubique à faces centrées (FCC)\u0026rdquo; (comme empiler des pastèques en triangle) serait le plus efficace.\nTout le monde a pensé : \u0026ldquo;Ah, ça a du sens\u0026hellip;\u0026rdquo;, mais prouver mathématiquement que \u0026ldquo;c\u0026rsquo;est absolument le meilleur !\u0026rdquo; était extrêmement difficile.\n400 ans pour le prouver !?! Alors, quand cela a-t-il été réellement prouvé\u0026hellip; ?\nÉtonnamment, entre 1998 et 2005 environ . C\u0026rsquo;est-à-dire que personne n\u0026rsquo;a pu le prouver pendant près de 400 ans . C\u0026rsquo;est trop fou.\nDe plus, la personne qui l\u0026rsquo;a prouvé était un mathématicien américain nommé Thomas Hales .\nIl s\u0026rsquo;est rendu compte qu\u0026rsquo;il serait impossible de le faire uniquement par des calculs manuels, il a donc utilisé des ordinateurs pour le prouver . Cependant, un problème est apparu : la preuve était si complexe que les humains ne pouvaient pas la vérifier correctement !\nAinsi, un grand débat a éclaté dans le monde mathématique : \u0026ldquo;Alors, pouvons-nous vraiment faire confiance à une preuve faite par des ordinateurs ?\u0026rdquo;.\nFinalement, la preuve (officiellement appelée \u0026ldquo;preuve formelle\u0026rdquo;) qui disait \u0026ldquo;Je l\u0026rsquo;ai rigoureusement vérifiée, y compris avec des ordinateurs !\u0026rdquo; a été achevée en 2014 .\nEn d\u0026rsquo;autres termes, il a fallu plus de 400 ans pour prouver que l\u0026rsquo;intuition de Kepler était correcte . Quel romantisme.\nTrès utilisé dans la vraie vie Vous pourriez penser que \u0026ldquo;comment arranger des sphères\u0026rdquo; est un sujet pour les intellos des mathématiques, mais en réalité, c\u0026rsquo;est très pratique.\nPour emballer efficacement les boissons dans les réfrigérateurs des supérettes Lors de l\u0026rsquo;empilement de boîtes de conserve sur des palettes de transport C\u0026rsquo;est également appliqué aux communications (compression de signaux numériques, etc.) Utilisé dans la conception d\u0026rsquo;imprimantes 3D et de structures cristallines Etc., c\u0026rsquo;est en fait une théorie qui est largement utilisée en coulisses dans notre vie.\nConclusion : l\u0026rsquo;intuition humaine est incroyable Alors, résumons.\nConjecture de Kepler = Le problème de savoir comment emballer les sphères le plus densément Monsieur Kepler = Mathématicien et astronome qui a découvert les orbites planétaires Conjecturée dans les années 1600 ! Mais prouvée dans les années 2000 ! Très appliquée dans la vraie vie ! Et le point le plus intéressant est : \u0026ldquo;La façon d\u0026rsquo;empiler que les primeurs faisaient par intuition était mathématiquement la plus forte\u0026rdquo; .\nEn d\u0026rsquo;autres termes, l\u0026rsquo;intuition humaine est incroyable . Et le fait que cela puisse prendre 400 ans pour le prouver est une histoire vraiment romantique, n\u0026rsquo;est-ce pas ?\nSi vous êtes intéressé, assurez-vous de rechercher \u0026ldquo;Thomas Hales\u0026rdquo;, \u0026ldquo;preuve formelle\u0026rdquo;, \u0026ldquo;Sphere Packing\u0026rdquo;. C\u0026rsquo;est très amusant d\u0026rsquo;approfondir le sujet.\nÀ bientôt !\n[PR]\n今すぐ購入 ","date":"2025-07-21T22:53:03+09:00","image":"http://kenji.blog/p/%E3%82%B1%E3%83%97%E3%83%A9%E3%83%BC%E4%BA%88%E6%83%B3%E3%82%92%E3%82%8F%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%8F%E8%A7%A3%E8%AA%AC/img_huc7f0a2c79b029796989bdbbe22e755bc_619919_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/explication-simple-conjecture-de-kepler/","title":"Explication Simple de la Conjecture de Kepler"},{"content":"Le Mur du Développement de l\u0026rsquo;IA ~ Je suis arrivé à la 8ème station, mais à partir de là, ce fut l\u0026rsquo;enfer ~\nBonjour, c\u0026rsquo;est kenji.\nDernièrement, j\u0026rsquo;ai entendu beaucoup de gens dire : \u0026ldquo;J\u0026rsquo;ai demandé à l\u0026rsquo;IA et j\u0026rsquo;ai pu créer une application !\u0026rdquo; Nous avons dépassé l\u0026rsquo;ère du no-code et du low-code pour entrer dans la phase du \u0026ldquo;vibe coding\u0026rdquo; (coder à l\u0026rsquo;intuition).\nPar exemple, si vous dites \u0026ldquo;crée une application pour éditer des images et les publier sur les réseaux sociaux\u0026rdquo;, l\u0026rsquo;IA va générer le code et même l\u0026rsquo;interface utilisateur. Incroyable, on n\u0026rsquo;a plus besoin d\u0026rsquo;humains, non ? On pourrait le penser.\nMais en réalité, c\u0026rsquo;est comme atterrir à la 8ème station du Mont Fuji en tongs .\nJusqu\u0026rsquo;à la 8ème station, ça a l\u0026rsquo;air \u0026ldquo;facile\u0026rdquo; Au début, le développement avec l\u0026rsquo;IA est vraiment facile. Entrées/Sorties de fichiers ? Ça marche. Réseau ? Eh bien, ça se connecte. Base de données ? Du JSON suffira. Interface utilisateur (UI) ? ChatGPT a généré du code React pour moi. Paiement ? L\u0026rsquo;API de Stripe peut se régler par un simple copier-coller.\nÀ ce stade, on se fait l\u0026rsquo;illusion : \u0026ldquo;Je suis ingénieur maintenant, non ?\u0026rdquo; Mais le véritable enfer commence ici.\nPourquoi reste-t-on bloqué ? La raison est simple : \u0026ldquo;L\u0026rsquo;IA crée quelque chose qui semble terminé, mais les ajustements finaux sont entièrement laissés aux humains.\u0026rdquo;\nLes données disparaissent à cause des I/O de fichiers La normalisation de la base de données est faible et les recherches sont lentes L\u0026rsquo;UI n\u0026rsquo;est pas intuitive Aucun test de charge, donc crash en cas de pic de trafic Rejet lors de l\u0026rsquo;examen par Apple/Google Problèmes avec les exigences légales (frôlant la catastrophe) En d\u0026rsquo;autres termes, l\u0026rsquo;IA excelle à créer \u0026ldquo;des prototypes qui ressemblent à des produits finis\u0026rdquo; , mais en faire un \u0026ldquo;produit fonctionnel dans le monde réel\u0026rdquo; reste, aujourd\u0026rsquo;hui encore, le travail de l\u0026rsquo;homme .\nMais, il y a un paradoxe Ici, on remarque un paradoxe .\nEt si l\u0026rsquo;IA pouvait vraiment tout faire à l\u0026rsquo;avenir ? En d\u0026rsquo;autres termes, si \u0026ldquo;la sécurité, la facturation et le design étaient parfaitement gérés par l\u0026rsquo;IA\u0026rdquo; ?\nÀ ce moment-là, la nécessité même pour les humains de créer des applications pourrait disparaître .\nCar si les utilisateurs disent directement à l\u0026rsquo;IA \u0026ldquo;je veux faire ça\u0026rdquo;, les tâches seront exécutées instantanément sans avoir besoin d\u0026rsquo;une application.\n🌀 Par exemple Autrefois, on \u0026ldquo;ouvrait une application calculatrice pour calculer\u0026rdquo;, mais aujourd\u0026rsquo;hui, on dit juste \u0026ldquo;Dis Siri, combien font 12 x 32 ?\u0026rdquo; et c\u0026rsquo;est tout.\nDe la même manière, si on dit \u0026ldquo;Hé l\u0026rsquo;IA, modifie et partage cette photo\u0026rdquo;, la tâche peut être accomplie sans même passer par l\u0026rsquo;UI ou l\u0026rsquo;API d\u0026rsquo;une application.\nEn bref, lorsque l\u0026rsquo;objectif de \u0026ldquo;créer des applications avec l\u0026rsquo;IA\u0026rdquo; sera atteint, nous pourrions entrer dans un monde où les applications elles-mêmes ne sont plus nécessaires .\nEn fin de compte, que pouvons-nous faire maintenant ? Alors, que devons-nous faire ?\nPour l\u0026rsquo;instant, \u0026ldquo;au-dessus de la 8ème station\u0026rdquo; reste le domaine de l\u0026rsquo;humain, alors perfectionnons-le. Concentrez-vous sur la compréhension essentielle des utilisateurs et la conception de services. Pensez à \u0026ldquo;ce qui a de la valeur\u0026rdquo; plutôt qu\u0026rsquo;à \u0026ldquo;ce qui peut être créé\u0026rdquo;. Explorez plutôt des moyens d\u0026rsquo;apporter de la valeur \u0026ldquo;sans être restreint par le format d\u0026rsquo;une application\u0026rdquo;. L\u0026rsquo;IA est un outil, un ascenseur, et parfois un concurrent. Mais \u0026ldquo;quoi créer\u0026rdquo; et \u0026ldquo;pourquoi le créer\u0026rdquo; restent des questions pour nous, les humains .\nRésumé : Le mur du développement de l\u0026rsquo;IA n\u0026rsquo;est pas technologique, c\u0026rsquo;est un paradoxe structurel.\nUne époque où n\u0026rsquo;importe qui peut atteindre la 8ème station du Mont Fuji. Mais le vrai défi commence à partir de là.\nEt quand nous atteindrons le sommet, un avenir où nous nous demanderons \u0026ldquo;Avions-nous vraiment besoin de gravir la montagne ?\u0026rdquo; nous attendra peut-être.\n","date":"2025-07-20T21:52:42+09:00","image":"http://kenji.blog/p/ai%E9%96%8B%E7%99%BA%E3%81%AE%E5%A3%81/img_1_hu929f602c53dcc1c0d00e8a53b025b29e_1978511_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/le-mur-du-developpement-de-l-ia/","title":"Le Mur du Développement de l'IA"},{"content":"🎯 Comment appeler Microsoft.Windows.AI depuis C++ 【Avec code d\u0026rsquo;exemple】 Depuis Windows 10, Windows inclut en standard un runtime capable d\u0026rsquo;exécuter des modèles d\u0026rsquo;IA au format ONNX . Il s\u0026rsquo;agit de Windows ML (Windows.AI.MachineLearning) .\nDans cet article, nous expliquerons concrètement comment appeler Microsoft.Windows.AI.MachineLearning depuis C++ (basé sur une application Win32) avec du code d\u0026rsquo;exemple .\n✅ Préparation ◾ Environnement requis Windows 10 (1809+) ou Windows 11 Visual Studio 2019 ou ultérieur (l\u0026rsquo;édition Community suffit) Prise en charge de C++/WinRT (Microsoft.Windows.CppWinRT) Windows SDK 10.0.17763.0 ou supérieur ✅ Structure du projet Créez un projet avec la structure suivante dans Visual Studio.\nType : Application de bureau Windows C++ (projet vide)\nSous-système : Windows (WinMain)\nAjoutez le package suivant via NuGet\n1 Microsoft.Windows.CppWinRT ✅ Code d\u0026rsquo;exemple Voici un exemple minimal utilisant WinMain qui combine l\u0026rsquo;API Win32 et Windows.AI.MachineLearning.\n※ Le modèle ONNX utilisé sera nommé model.onnx et doit être placé dans le même dossier que le fichier exécutable.\nmain.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include \u0026lt;windows.h\u0026gt; #include \u0026lt;winrt/Windows.AI.MachineLearning.h\u0026gt; #include \u0026lt;winrt/Windows.Storage.h\u0026gt; #pragma comment(lib, \u0026#34;windowsapp\u0026#34;) // Pour le lien WinRT using namespace winrt; using namespace Windows::AI::MachineLearning; using namespace Windows::Storage; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { // Initialisation WinRT (MTA ou STA sont acceptés) winrt::init_apartment(); try { // Charger le fichier du modèle auto modelFile = StorageFile::GetFileFromPathAsync(L\u0026#34;model.onnx\u0026#34;).get(); LearningModel model = LearningModel::LoadFromStorageFileAsync(modelFile).get(); // Créer une session LearningModelSession session(model); LearningModelBinding binding(session); // Entrée/Sortie du modèle (ici une entrée vide à titre d\u0026#39;exemple) // En pratique, une liaison avec TensorFloat etc. est nécessaire // Exécution de l\u0026#39;inférence auto result = session.EvaluateAsync(binding, L\u0026#34;\u0026#34;).get(); MessageBox(nullptr, L\u0026#34;Inférence terminée\u0026#34;, L\u0026#34;Windows ML (C++)\u0026#34;, MB_OK); } catch (winrt::hresult_error const\u0026amp; ex) { MessageBox(nullptr, ex.message().c_str(), L\u0026#34;Erreur\u0026#34;, MB_ICONERROR); } return 0; } ✅ Supplément : Comment spécifier les tenseurs d\u0026rsquo;entrée et de sortie Selon le modèle, il est nécessaire de créer et lier un tenseur (Tensor) avant l\u0026rsquo;inférence.\nExemple :\n1 2 3 4 5 6 7 8 // Convertir un tableau float 1D en Tenseur std::vector\u0026lt;float\u0026gt; inputData = {0.5f, 0.3f, 0.2f}; std::vector\u0026lt;int64_t\u0026gt; shape = {1, 3}; // Forme : [1, 3] auto tensor = TensorFloat::CreateFromArray(shape, inputData); // Liaison d\u0026#39;entrée (doit correspondre au nom d\u0026#39;entrée du modèle) binding.Bind(L\u0026#34;input_0\u0026#34;, tensor); La sortie peut également être obtenue de la même manière avec result.Outputs().Lookup(L\u0026quot;output_0\u0026quot;).\n✅ Points d\u0026rsquo;attention lors du débogage Si le fichier du modèle n\u0026rsquo;est pas dans le dossier d\u0026rsquo;exécution, une FileNotFoundException sera levée. Si les noms d\u0026rsquo;entrée et de sortie ne correspondent pas, une erreur invalid_argument se produira. Les spécifications exactes des E/S du modèle peuvent être vérifiées avec des outils comme Netron. ✅ Résumé Élément Contenu API utilisée Windows.AI.MachineLearning (WinRT) Langage C++ (basé sur Win32) Méthode recommandée Via l\u0026rsquo;en-tête C++/WinRT Avantages Les modèles ONNX fonctionnent nativement, prise en charge du GPU possible Attention Faites attention aux noms d\u0026rsquo;entrée du modèle et à la forme du tenseur ✅ Alternative : Pour ceux qui ne veulent pas utiliser WinRT En utilisant ONNX Runtime de Microsoft, vous pouvez gérer des modèles ONNX depuis C++ sans utiliser WinRT du tout . Il est multiplateforme, permettant d\u0026rsquo;utiliser un code commun sur Windows/Linux. 📌 En conclusion Windows ML (Microsoft.Windows.AI) est un moteur d\u0026rsquo;inférence d\u0026rsquo;IA puissant qui peut être utilisé de manière robuste même depuis C++. Si vous avez besoin d\u0026rsquo;une inférence native sous Windows, n\u0026rsquo;hésitez pas à l\u0026rsquo;essayer.\nSi vous souhaitez des exemples concrets de création de modèles ONNX ou de liaison de tenseurs, nous prévoyons de les expliquer dans un prochain article !\n","date":"2025-07-19T10:03:51+09:00","image":"http://kenji.blog/p/c-%E3%81%8B%E3%82%89microsoft.windows.ai%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E6%96%B9%E6%B3%95/img_hub9c7b00735e02a7f33c50dd8006e2228_376811_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-appeler-microsoft-windows-ai-depuis-c-/","title":"Comment appeler Microsoft.Windows.AI depuis C++"},{"content":"✅ Configuration de TinyLLaMA × C++ (en utilisant llama.cpp) 🔧 Étape 1 : Préparer llama.cpp 1-1. Environnement requis (minimum) Système d\u0026rsquo;exploitation : Windows / Linux / macOS Environnement de développement : g++ / clang / MSVC Git / CMake 1-2. Obtenir et compiler llama.cpp 1 2 3 4 5 6 git clone https://github.com/ggerganov/llama.cpp cd llama.cpp mkdir build cd build cmake .. cmake --build . --config Release Sur Windows, il est plus facile d\u0026rsquo;utiliser l\u0026rsquo;invite Visual Studio Developer Command Prompt avec cmake --build . --config Release.\n📦 Étape 2 : Télécharger et convertir le modèle TinyLLaMA 2-1. Obtenir le modèle d\u0026rsquo;origine depuis HuggingFace Exemple : TinyLLaMA-1.1B\n1 2 3 4 5 6 7 # Installer transformers pour le téléchargement si nécessaire pip install transformers huggingface_hub python3 -m transformers.models.llama.convert_llama_weights_to_hf \\ --input_dir ./TinyLlama-1.1B-Chat \\ --model_size 1B \\ --output_dir ./hf_model C\u0026rsquo;est l\u0026rsquo;étape pour convertir au format Hugging Face.\n2-2. Convertir au format GGUF (pour llama.cpp) 1 2 cd llama.cpp python3 convert.py ./hf_model --outfile tinyllama.gguf 2-3. Quantification du modèle (réduction de taille) 1 ./quantize ./tinyllama.gguf ./tinyllama-q4.gguf q4_0 q4_0 est une quantification 4 bits. La taille du modèle est réduite à environ ** 350MB ** .\n🧪 Étape 3 : Appeler le modèle depuis C++ (Exemple de code) 3-1. Code C++ simple (Inférence) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include \u0026#34;llama.h\u0026#34; #include \u0026lt;iostream\u0026gt; int main() { llama_model_params model_params = llama_model_default_params(); llama_context_params ctx_params = llama_context_default_params(); llama_model *model = llama_load_model_from_file(\u0026#34;tinyllama-q4.gguf\u0026#34;, model_params); llama_context *ctx = llama_new_context_with_model(model, ctx_params); std::string prompt = \u0026#34;L\u0026#39;utilisateur indique qu\u0026#39;il souhaite charger des données Excel, les filtrer et les sauvegarder. Quelle est la configuration des nœuds ?\u0026#34;; llama_batch batch = llama_batch_init(512, 0, 1); llama_token BOS = llama_token_bos(model); batch.token[0] = BOS; // Tokenisation std::vector\u0026lt;llama_token\u0026gt; tokens(prompt.size() + 8); int n = llama_tokenize(model, prompt.c_str(), tokens.data(), tokens.size(), true); tokens.resize(n); for (size_t i = 0; i \u0026lt; tokens.size(); ++i) { batch.token[i + 1] = tokens[i]; } batch.n_tokens = tokens.size() + 1; llama_decode(ctx, batch); // Récupérer le résultat de l\u0026#39;inférence for (int i = 0; i \u0026lt; 50; ++i) { llama_token next = llama_sample_token(ctx, nullptr); std::cout \u0026lt;\u0026lt; llama_token_to_str(model, next); llama_batch next_batch = llama_batch_init(1, 0, 1); next_batch.token[0] = next; next_batch.n_tokens = 1; llama_decode(ctx, next_batch); } llama_free(ctx); llama_free_model(model); return 0; } 🧱 Étape 4 : Méthode de compilation (Exemple) 1 g++ -I./llama.cpp main.cpp ./llama.cpp/build/libllama.a -o tiny_infer -pthread -std=c++11 libllama.a est créé dans le répertoire build/ après la compilation.\n✅ Exemple de structure des artefacts (Organisation) 1 2 3 4 5 6 my_app/ ├── tinyllama-q4.gguf # Modèle quantifié (~350MB) ├── main.cpp # Code C++ ci-dessus ├── llama.cpp/ # Répertoire source de llama.cpp └── build/ └── libllama.a # Bibliothèque compilée 🧠 Notes complémentaires pour l\u0026rsquo;application aux cas d\u0026rsquo;usage Avoir du code en C++ pour vérifier et sélectionner le modèle de nœud en fonction de la sortie. Exemple : Si les termes \u0026ldquo;Excel\u0026rdquo;, \u0026ldquo;filtre\u0026rdquo;, \u0026ldquo;sauvegarder\u0026rdquo; sont inclus → générer les groupes de nœuds correspondants. Cette partie peut avoir une structure simple de type instructions if + chargement d'un modèle JSON. 📌 Résumé Élément Description Modèle recommandé TinyLLaMA-1.1B-Chat v1.0 (GGUF + Quantification) Taille ~350 à 450MB (Quantification 4 bits) Intégration C++ Possible grâce à llama.cpp, presque aucune dépendance externe Capacité de traitement Suffisante pour la compréhension simple des intentions et la génération de phrases (Phrase naturelle → Structure) Extensibilité Peut devenir une IA de génération de nœuds lorsqu\u0026rsquo;elle est combinée avec le remplissage d\u0026rsquo;emplacements et l\u0026rsquo;appel de modèles ","date":"2025-07-19T09:40:53+09:00","image":"http://kenji.blog/p/tinyllama-%E3%82%92-c-%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%9B%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86llama.cpp%E4%BD%BF%E7%94%A8/img_huf78e5769214ace33fee09d1baa98793b_1915663_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%C3%A9tapes-pour-appeler-tinyllama-depuis-c-en-utilisant-llama.cpp/","title":"Étapes pour appeler TinyLLaMA depuis C++ (en utilisant llama.cpp)"},{"content":"✅ Méthode de publication à l\u0026rsquo;aide d\u0026rsquo;un jeton d\u0026rsquo;accès (Slack Web API) Le \u0026ldquo;OAuth Token\u0026rdquo; (comme xoxb-\u0026hellip;) de Slack est une clé pour publier des messages à l\u0026rsquo;aide de l\u0026rsquo; API Web de Slack. Dans ce cas, contrairement à un Webhook, vous effectuez une requête POST vers le point de terminaison API Slack avec un en-tête Authorization: Bearer.\n🔑 Prérequis nécessaires Vous devez inclure chat:write dans les portées OAuth de l\u0026rsquo;application Slack :\nProcédure de configuration Accédez à https://api.slack.com/apps Créez une application ou sélectionnez une application existante Sous \u0026ldquo;OAuth \u0026amp; Permissions\u0026rdquo; \u0026gt; Scopes → Ajoutez chat:write Cliquez sur \u0026ldquo;Install to Workspace\u0026rdquo; ou \u0026ldquo;Reinstall\u0026rdquo; et obtenez l\u0026rsquo;Access Token (ex : xoxb-xxxxxxxxxx) 💻 Code C++ (Publication sur l\u0026rsquo;API Slack avec WinHTTP) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 #include \u0026lt;windows.h\u0026gt; #include \u0026lt;winhttp.h\u0026gt; #include \u0026lt;iostream\u0026gt; #pragma comment(lib, \u0026#34;winhttp.lib\u0026#34;) bool PostSlackMessage(const std::wstring\u0026amp; accessToken, const std::string\u0026amp; channel, const std::string\u0026amp; text) { const wchar_t* host = L\u0026#34;slack.com\u0026#34;; const wchar_t* path = L\u0026#34;/api/chat.postMessage\u0026#34;; HINTERNET hSession = WinHttpOpen(L\u0026#34;SlackPoster/1.0\u0026#34;, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); if (!hSession) return false; HINTERNET hConnect = WinHttpConnect(hSession, host, INTERNET_DEFAULT_HTTPS_PORT, 0); if (!hConnect) return false; HINTERNET hRequest = WinHttpOpenRequest(hConnect, L\u0026#34;POST\u0026#34;, path, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); // En-têtes Authorization et Content-Type std::wstring headers = L\u0026#34;Content-Type: application/json\\r\\n\u0026#34;; headers += L\u0026#34;Authorization: Bearer \u0026#34; + accessToken + L\u0026#34;\\r\\n\u0026#34;; // Corps JSON std::string body = R\u0026#34;({\u0026#34;channel\u0026#34;:\u0026#34;)\u0026#34; + channel + R\u0026#34;(\u0026#34;,\u0026#34;text\u0026#34;:\u0026#34;)\u0026#34; + text + R\u0026#34;(\u0026#34;})\u0026#34;; BOOL result = WinHttpSendRequest(hRequest, headers.c_str(), (DWORD)-1, (LPVOID)body.c_str(), body.length(), body.length(), 0); if (!result || !WinHttpReceiveResponse(hRequest, NULL)) { std::cerr \u0026lt;\u0026lt; \u0026#34;Erreur d\u0026#39;envoi\\n\u0026#34;; return false; } // Vérification du code d\u0026#39;état DWORD statusCode = 0; DWORD size = sizeof(statusCode); WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_HEADER_NAME_BY_INDEX, \u0026amp;statusCode, \u0026amp;size, WINHTTP_NO_HEADER_INDEX); WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return (statusCode == 200); } int main() { std::wstring token = L\u0026#34;xoxb-votre_jeton_d_acces\u0026#34;; // Jeton d\u0026#39;accès std::string channel = \u0026#34;ID_DU_CANAL_ou_#general\u0026#34;; // Ex : \u0026#34;#general\u0026#34; ou \u0026#34;C0123456789\u0026#34; std::string message = \u0026#34;Test de publication sur Slack depuis C++ !\u0026#34;; if (PostSlackMessage(token, channel, message)) { std::cout \u0026lt;\u0026lt; \u0026#34;Publication réussie !\\n\u0026#34;; } else { std::cerr \u0026lt;\u0026lt; \u0026#34;Échec de la publication.\\n\u0026#34;; } return 0; } 📌 Comment obtenir l\u0026rsquo;ID du canal Utiliser uniquement le nom du canal (ex : #general) peut provoquer une erreur. La méthode fiable consiste à utiliser l\u0026rsquo;ID trouvé dans l\u0026rsquo;URL de la page du canal Slack.\n1 2 https://app.slack.com/client/Txxxxx/C0123456789 ↑Cette partie est l\u0026#39;ID du canal ✅ À propos des types de jetons (Supplément) Format du jeton Utilisation Exemple xoxb-... Bot Token (Recommandé) Publier, modifier, supprimer xoxp-... User Token (Non recommandé) Opérations non liées aux bots Refresh Token Pour le renouvellement de jeton à long terme Normalement non utilisé 📝 Résumé Pour publier sur Slack depuis C++, la méthode Slack Web API + Bearer Token est fiable Utilisez le point de terminaison chat.postMessage avec HTTPS POST Le jeton doit être envoyé dans l\u0026rsquo;en-tête Bearer La spécification de l\u0026rsquo;ID pour le canal est fiable ","date":"2025-07-16T23:36:27+09:00","image":"http://kenji.blog/p/slack-app--oauth2-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-slack-%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_huc0fc953b24035d17918192b772178b43_75467_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/slack-app--oauth2-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-slack-%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment publier un message sur Slack à l'aide de Slack App + OAuth2"},{"content":"Comment publier un message sur Slack en C++ (API Win32 + WinHTTP) 【Support Webhook】 Je veux publier un message sur Slack depuis le C++. C\u0026rsquo;est très courant en Node.js ou en Python, mais les cas d\u0026rsquo;utilisation de « C++ × API Win32 × WinHTTP » sont rares.\nDans cet article, je vais expliquer étape par étape, de manière claire, comment envoyer un message à Slack depuis le C++ en utilisant une URL Webhook.\n✅ Flux global Pour publier sur Slack, suivez ces étapes :\nObtenir l\u0026rsquo;URL Webhook (clé API) de Slack Envoyer une requête POST en utilisant WinHTTP Construire le corps du message au format JSON Vérifier le résultat et c\u0026rsquo;est terminé ! 🔑 Étape 1 : Comment obtenir l\u0026rsquo;URL Webhook de Slack Sur Slack, vous pouvez facilement publier des messages à partir de services externes en utilisant une fonctionnalité appelée Incoming Webhooks.\nProcédure d\u0026rsquo;obtention Accédez à https://api.slack.com/apps Cliquez sur Create New App Sélectionnez From scratch, choisissez un nom d\u0026rsquo;application et l\u0026rsquo;espace de travail cible Dans le menu de gauche, sélectionnez « Incoming Webhooks » et activez-le Cliquez sur « Add New Webhook to Workspace » et sélectionnez un canal Copiez l\u0026rsquo;URL générée (ex : https://hooks.slack.com/services/xxx/yyy/zzz) Cette URL fonctionne comme une clé API.\n💻 Étape 2 : Envoyer un message à Slack avec du code C++ Technologies utilisées API Win32 WinHTTP (bibliothèque standard) Message au format JSON Code d\u0026rsquo;exemple (Publication sur Slack) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 #include \u0026lt;windows.h\u0026gt; #include \u0026lt;winhttp.h\u0026gt; #include \u0026lt;iostream\u0026gt; #pragma comment(lib, \u0026#34;winhttp.lib\u0026#34;) bool PostToSlack(const std::wstring\u0026amp; webhookUrl, const std::string\u0026amp; messageJson) { // Décomposition de l\u0026#39;URL URL_COMPONENTS urlComp{}; wchar_t hostName[256]; wchar_t urlPath[1024]; urlComp.dwStructSize = sizeof(urlComp); urlComp.lpszHostName = hostName; urlComp.dwHostNameLength = _countof(hostName); urlComp.lpszUrlPath = urlPath; urlComp.dwUrlPathLength = _countof(urlPath); if (!WinHttpCrackUrl(webhookUrl.c_str(), 0, 0, \u0026amp;urlComp)) { std::wcerr \u0026lt;\u0026lt; L\u0026#34;Échec de la décomposition de l\u0026#39;URL\\n\u0026#34;; return false; } // Session HTTP et connexion HINTERNET hSession = WinHttpOpen(L\u0026#34;SlackPoster/1.0\u0026#34;, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); HINTERNET hConnect = WinHttpConnect(hSession, hostName, urlComp.nPort, 0); HINTERNET hRequest = WinHttpOpenRequest(hConnect, L\u0026#34;POST\u0026#34;, urlPath, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); std::wstring headers = L\u0026#34;Content-Type: application/json\\r\\n\u0026#34;; BOOL result = WinHttpSendRequest(hRequest, headers.c_str(), -1, (LPVOID)messageJson.c_str(), messageJson.length(), messageJson.length(), 0); if (!result) { std::cerr \u0026lt;\u0026lt; \u0026#34;Échec de la requête d\u0026#39;envoi\\n\u0026#34;; return false; } WinHttpReceiveResponse(hRequest, NULL); DWORD statusCode = 0; DWORD size = sizeof(statusCode); WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_HEADER_NAME_BY_INDEX, \u0026amp;statusCode, \u0026amp;size, WINHTTP_NO_HEADER_INDEX); // Libération des ressources WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return (statusCode == 200); } int main() { std::wstring webhookUrl = L\u0026#34;https://hooks.slack.com/services/xxx/yyy/zzz\u0026#34;; // Remplacez par votre Webhook std::string message = R\u0026#34;({ \u0026#34;text\u0026#34;: \u0026#34;Hello from C++ :rocket:\u0026#34;, \u0026#34;username\u0026#34;: \u0026#34;C++ Bot\u0026#34;, \u0026#34;icon_emoji\u0026#34;: \u0026#34;:robot_face:\u0026#34; })\u0026#34;; if (PostToSlack(webhookUrl, message)) { std::cout \u0026lt;\u0026lt; \u0026#34;Publication réussie !\\n\u0026#34;; } else { std::cerr \u0026lt;\u0026lt; \u0026#34;Échec de la publication.\\n\u0026#34;; } return 0; } 🧪 Personnalisation du message JSON Dans les Webhooks de Slack, vous pouvez inclure les paramètres suivants :\n1 2 3 4 5 6 { \u0026#34;text\u0026#34;: \u0026#34;Contenu de la notification\u0026#34;, \u0026#34;username\u0026#34;: \u0026#34;Nom du bot\u0026#34;, \u0026#34;icon_emoji\u0026#34;: \u0026#34;:rocket:\u0026#34;, \u0026#34;channel\u0026#34;: \u0026#34;#Nom du canal souhaité\u0026#34; } 📌 Remarques supplémentaires Assurez-vous de spécifier \u0026quot;application/json\u0026quot; pour Content-Type L\u0026rsquo;URL Webhook est passée telle quelle en tant que wstring (l\u0026rsquo;encodage URL n\u0026rsquo;est pas nécessaire) N\u0026rsquo;oubliez pas WINHTTP_FLAG_SECURE car il s\u0026rsquo;agit d\u0026rsquo;une communication HTTPS 🎉 Bonus : Exemple de vérification de publication sur Slack Cela s\u0026rsquo;affichera ainsi sur Slack :\n1 2 [C++ Bot] Hello from C++ :rocket: ✍️ Résumé Élément Contenu Méthode de publication Webhook (Incoming Webhooks) Bibliothèque réseau WinHTTP Format des données JSON Paramètres utilisables text, username, icon_emoji, channel, etc. Même vous qui pensiez que l\u0026rsquo;intégration Slack en C++ était difficile, vous pouvez intégrer un bot de notification dès aujourd\u0026rsquo;hui !\n🚀 Prochainement ? Si vous êtes intéressé, la prochaine fois :\nPièces jointes de fichiers Interface utilisateur avec des boutons Manipulation flexible de l\u0026rsquo;API avec Slack App + OAuth2 Je peux également présenter une intégration Slack un peu plus avancée !\n","date":"2025-07-16T19:42:56+09:00","image":"http://kenji.blog/p/c-win32-api--winhttp%E3%81%A7slack%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95webhook%E5%AF%BE%E5%BF%9C/img_huc0fc953b24035d17918192b772178b43_75467_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-publier-un-message-sur-slack-en-cpp-api-win32-winhttp-support-webhook/","title":"Comment publier un message sur Slack en C++ (API Win32 + WinHTTP) 【Support Webhook】"},{"content":"Market-in et Product-out Bonjour, c\u0026rsquo;est kenji.\nParfois, dans des livres de business ou des propositions de projets,\n\u0026ldquo;Notre stratégie est market-in.\u0026rdquo; \u0026ldquo;C\u0026rsquo;est plutôt du product-out.\u0026rdquo;\nJe vois des gens dire ce genre de choses, mais\u0026hellip;\nAttendez, Market-in ? Product-out ? Lequel est le meilleur ???\nNe vous posez-vous pas la question ?\nAlors cette fois, je vais essayer d\u0026rsquo;expliquer ces concepts de \u0026ldquo;market-in\u0026rdquo; et de \u0026ldquo;product-out\u0026rdquo; aussi simplement que possible, avec un regard un peu critique.\nPour faire simple\u0026hellip; Market-in : Écouter la voix du marché (market) et créer des produits qui y répondent. Product-out : Créer ce que nous pensons être bon (product) et le lancer dans le monde. C\u0026rsquo;est tout. C\u0026rsquo;est simple.\nPar exemple, dans un restaurant de ramen\u0026hellip; Un restaurant de ramen market-in dirait : \u0026ldquo;Les ramen de style Iekei sont à la mode en ce moment. D\u0026rsquo;accord, mettons plein de gras et d\u0026rsquo;ail !\u0026rdquo;\nUn restaurant de ramen product-out dirait : \u0026ldquo;Ce ramen au lait de soja, basilic et sel que j\u0026rsquo;ai fait est vraiment incroyable, alors mangez-le !\u0026rdquo;\nQuelle est la bonne réponse\u0026hellip; les deux ont raison Le market-in a une \u0026ldquo;forte probabilité de se vendre\u0026rdquo; car il se rapproche des besoins du client, mais il est difficile de générer des idées révolutionnaires ou des percées.\nLe product-out consiste à \u0026ldquo;donner forme à la justice en laquelle nous croyons\u0026rdquo;, il est donc audacieux et attrayant, mais s\u0026rsquo;il manque sa cible, il ne résonnera avec personne.\nL\u0026rsquo;iPhone ressemble à du product-out À une époque où les gens disaient \u0026ldquo;Nous n\u0026rsquo;avons pas besoin de smartphones\u0026rdquo;, Apple a sorti l\u0026rsquo;iPhone.\nC\u0026rsquo;est un exemple de succès totalement product-out .\nS\u0026rsquo;ils avaient écouté la voix des utilisateurs, on leur aurait dit \u0026ldquo;Un téléphone portable sans clavier ? Impossible\u0026rdquo; et ça se serait arrêté là.\nMais le product-out peut facilement devenir une \u0026ldquo;satisfaction personnelle\u0026rdquo; Parfois, certaines entreprises ou personnes disent : \u0026ldquo;Nous sommes de type product-out\u0026rdquo;, mais\u0026hellip;\nAttendez, n\u0026rsquo;est-ce pas juste ignorer l\u0026rsquo;utilisateur ?\nC\u0026rsquo;est ce que je pense parfois.\n\u0026ldquo;Nous l\u0026rsquo;avons fait parce que nous voulions le faire. Mais ça ne s\u0026rsquo;est pas vendu.\u0026rdquo; Ce n\u0026rsquo;est pas du product-out, c\u0026rsquo;est du \u0026ldquo;monologue-out\u0026rdquo;.\nLe market-in a aussi ses pièges D\u0026rsquo;un autre côté, le market-in n\u0026rsquo;est pas non plus tout-puissant.\nSi vous dites : \u0026ldquo;Nous ferons tout ce que les utilisateurs demandent !\u0026rdquo;, le cœur du produit se perdra, et au final, il n\u0026rsquo;attirera personne.\nVous continuez à ajouter des fonctionnalités, et avant même de vous en rendre compte, c\u0026rsquo;est devenu un outil chaotique.\nCeux qui sont vraiment incroyables, ce sont \u0026ldquo;ceux qui font les deux\u0026rdquo; Les produits incroyables présentent brillamment \u0026ldquo;ce que les utilisateurs voulaient vraiment, mais ne pouvaient pas exprimer avec des mots\u0026rdquo;.\nEn d\u0026rsquo;autres termes, c\u0026rsquo;est \u0026ldquo;obtenir l\u0026rsquo;empathie du market-in avec la mentalité du product-out\u0026rdquo;.\nC\u0026rsquo;est facile à dire, mais c\u0026rsquo;est extrêmement difficile à réaliser. Mais, si vous y parvenez, cela devient instantanément un \u0026ldquo;produit divin\u0026rdquo;.\nConclusion : Plus que les mots, la réaction des utilisateurs est tout Market-in ou product-out. Savoir lequel est le bon est une question qui n\u0026rsquo;a pas beaucoup de sens.\n\u0026ldquo;Est-ce que cela a vraiment touché le cœur des utilisateurs ?\u0026rdquo; c\u0026rsquo;est tout ce qui compte, je pense.\n\u0026ldquo;Avec quel type de stratégie nous travaillons\u0026rdquo; Je pense que c\u0026rsquo;est très bien tant que vous pouvez l\u0026rsquo;écrire dans vos documents marketing plus tard.\nVoilà, c\u0026rsquo;était l\u0026rsquo;histoire du market-in et du product-out !\nJe pense que le plus sain est de ne pas se laisser distraire par des mots compliqués et de se dire \u0026ldquo;Finalement, comment pouvons-nous rendre les gens heureux ?\u0026rdquo;.\nÀ plus tard~.\n","date":"2025-07-15T20:18:22+09:00","image":"http://kenji.blog/p/%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%83%E3%83%88%E3%82%A4%E3%83%B3%E3%81%A8%E3%83%97%E3%83%AD%E3%83%80%E3%82%AF%E3%83%88%E3%82%A2%E3%82%A6%E3%83%88/img_hu9af708a897f548be4a7980daec441f8f_1946278_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/market-in-and-product-out/","title":"Market-in et Product-out"},{"content":"\u0026ldquo;Est-il vrai que n\u0026rsquo;importe quel nombre finit par devenir 1 ?\u0026rdquo; ── Jouer avec la Conjecture de Collatz Bonjour ! C\u0026rsquo;est kenji.\nSoudain, si vous entendez \u0026ldquo;une règle où n\u0026rsquo;importe quel nombre devient finalement 1\u0026rdquo;, cela ne semble-t-il pas un peu étrange ?\nPar exemple, 19, 87 ou même 1000000. Si vous manipulez les nombres selon une règle simple, pour une raison quelconque, cela converge vers \u0026ldquo;1\u0026rdquo; à la fin.\nCette histoire de rêve est la ** Conjecture de Collatz (Collatz Conjecture) **.\nAprès tout, qu\u0026rsquo;est-ce que la Conjecture de Collatz ? Tout d\u0026rsquo;abord, je vais présenter les règles.\nDébut : Choisissez n\u0026rsquo;importe quel ** entier positif **.\nOpération :\nSi c\u0026rsquo;est pair → divisez par deux (n → n / 2) Si c\u0026rsquo;est impair → multipliez par 3 et ajoutez 1 (n → 3n + 1) En répétant cela encore et encore, c\u0026rsquo;est une conjecture selon laquelle ** n\u0026rsquo;importe quel nombre finira par atteindre 1 **.\nPar exemple, en commençant par 6 :\n1 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 Il est devenu \u0026ldquo;1\u0026rdquo; proprement. Bon retour !\nFaisons-le avec du code : Collatz en Python Eh bien, dans ces moments-là, il est plus rapide de tester avec du code ! Imprimons la \u0026ldquo;Séquence de Collatz\u0026rdquo; en Python.\n1 2 3 4 5 6 7 8 9 10 11 12 def collatz(n): steps = [n] while n != 1: if n % 2 == 0: n = n // 2 else: n = 3 * n + 1 steps.append(n) return steps # Exemple : commencer par 19 print(collatz(19)) Lors de l\u0026rsquo;exécution :\n1 [19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1] Il atteint 1 brillamment. Même s\u0026rsquo;il fait beaucoup de détours, il atteint finalement son but !\nAu fait, si vous commencez avec 29, vous atteindrez également 1 de la même manière.\n1 print(collatz(29)) Lors de l\u0026rsquo;exécution\n1 2 3 4 5 6 7 8 [27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1] Waouh, ça prend 111 étapes !\nEt aussi, il y a des scènes où ça gonfle à plus de 9000 en cours de route. C\u0026rsquo;est un modèle où l\u0026rsquo;on fait un détour fou avant d\u0026rsquo;atteindre le but.\nEt donc, qu\u0026rsquo;est-ce qui est si incroyable à ce sujet ? Ce qui est incroyable avec cette conjecture, c\u0026rsquo;est que,\n** Bien que cela n\u0026rsquo;ait pas été prouvé, il semble que n\u0026rsquo;importe quel nombre que vous essayez deviendra 1 **\nC\u0026rsquo;est ça.\nHein ? Et qu\u0026rsquo;en est-il de 1 billion, ou 10 billiards\u0026hellip; ?\nPour ceux qui pensaient cela, très perspicace. En fait, à l\u0026rsquo;aide d\u0026rsquo;ordinateurs, cela a été confirmé jusqu\u0026rsquo;à environ \u0026ldquo;2 à la puissance 68\u0026rdquo;, et ** tous ont atteint 1 **. Incroyable\u0026hellip;\nMais, ** il n\u0026rsquo;a pas été théoriquement prouvé que \u0026ldquo;tous seront comme ça\u0026rdquo; **. C\u0026rsquo;est ce qu\u0026rsquo;on appelle un \u0026ldquo;problème non résolu\u0026rdquo; dans le monde des mathématiques.\nQui est M. Collatz ? Donc, en lisant jusqu\u0026rsquo;ici, vous vous demandez probablement \u0026ldquo;Qui est Collatz, après tout ?\u0026rdquo;. Je vais vous le présenter correctement !\nNom : ** Lothar Collatz (Lothar Collatz) ** Nationalité : Allemagne Année de naissance : 1910 à 1990 Titre : Mathématicien (actif dans les domaines de l\u0026rsquo;analyse fonctionnelle et de la théorie des nombres) Il a proposé cette conjecture en 1937, et depuis lors, pendant plus de 80 ans, ** personne n\u0026rsquo;a été capable de la prouver ou de la réfuter **.\nAu fait, ce problème est si simple mais si profond que même Paul Erdős (mathématicien super célèbre) a dit quelque chose comme ça.\n\u0026ldquo;Les mathématiques sont encore trop immatures pour traiter la conjecture de Collatz\u0026rdquo;\nEn d\u0026rsquo;autres termes, la théorie selon laquelle les mathématiques de l\u0026rsquo;humanité n\u0026rsquo;ont pas encore rattrapé ce mystère\u0026hellip;\n\u0026ldquo;Des formules mathématiques difficiles\u0026rdquo; ne sont pas nécessaires La bonne chose à propos de la Conjecture de Collatz est que ** tout le monde peut jouer **.\nVous pouvez le faire avec du papier et un stylo. Si vous écrivez le code en Python, vous pouvez le tester automatiquement. Et pourtant, ** les meilleurs mathématiciens s\u0026rsquo;y attaquent sérieusement **.\nD\u0026rsquo;une manière ou d\u0026rsquo;une autre, n\u0026rsquo;est-ce pas excitant ?\nBonus : Code pour tout tester à la fois Je vais également publier un code pour tester plusieurs nombres en même temps.\n1 2 3 for n in range(1, 21): steps = collatz(n) print(f\u0026#34;{n} : {steps} (Étapes : {len(steps)-1})\u0026#34;) Cela nous donnera les séquences de Collatz de \u0026ldquo;1 à 20\u0026rdquo; d\u0026rsquo;un seul coup.\nConclusion : Ce monde est, après tout, mystérieux Donc, c\u0026rsquo;est la Conjecture de Collatz.\nMême si c\u0026rsquo;est super simple Personne ne peut la prouver Un gros problème dans le monde des mathématiques C\u0026rsquo;était une existence comme une masse de mystères.\nMême les débutants en programmation peuvent l\u0026rsquo;essayer, alors n\u0026rsquo;hésitez pas à jouer avec !\nLiens recommandés (pour ceux qui sont intéressés) Wikipedia : Conjecture de Collatz Article de Terence Tao (Anglais) C\u0026rsquo;est aussi amusant de créer une version visualisée en Python ! (J\u0026rsquo;en ferai une s\u0026rsquo;il y a de la demande) Si vous voulez en savoir plus sur ce genre de matériel \u0026ldquo;Mathématiques mystérieuses x Programmation\u0026rdquo;, n\u0026rsquo;hésitez pas à demander et à dire \u0026ldquo;Apprenez-m\u0026rsquo;en plus\u0026rdquo;. Finalement, j\u0026rsquo;introduirai diverses choses comme l\u0026rsquo;Hypothèse de Riemann et les nombres premiers !\n📮Fin !\n","date":"2025-07-15T18:03:03+09:00","image":"http://kenji.blog/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/img_hu1a59efae05835f74694145ebf674f295_4369684_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/","title":"コラッツ予想"},{"content":"Comment publier un message dans Microsoft Teams depuis C++ (WinHTTP + Graph API) Vous souhaitez publier automatiquement dans une conversation Microsoft Teams —\nC\u0026rsquo;est là que l\u0026rsquo; API Microsoft Graph s\u0026rsquo;avère utile.\nDans cet article, nous présenterons un exemple de code C++ utilisant WinHTTP et les étapes de configuration d\u0026rsquo;authentification API nécessaires étape par étape.\n🔧 Préparation requise (Configuration de l\u0026rsquo;authentification de l\u0026rsquo;API Microsoft Graph) 1. Inscription de l\u0026rsquo;application sur le portail Azure Tout d\u0026rsquo;abord, pour utiliser l\u0026rsquo;API Microsoft Graph, vous devez enregistrer une application sur Azure.\nAccédez au Portail Azure Microsoft Entra ID \u0026gt; + Ajouter \u0026gt; Inscriptions d\u0026rsquo;applications \u0026gt; Nouvelle inscription Entrez un nom d\u0026rsquo;application arbitraire et cliquez sur \u0026ldquo;S\u0026rsquo;inscrire\u0026rdquo; 2. Ajouter des autorisations d\u0026rsquo;API Allez dans le menu de gauche \u0026ldquo;Autorisations de l\u0026rsquo;API\u0026rdquo; Microsoft Graph \u0026gt; Sélectionner les autorisations, recherchez les portées ci-dessous et cliquez sur Mettre à jour les autorisations Chat.ReadWrite User.Read ※ Si vous souhaitez publier sur un canal, ChannelMessage.Send est également requis\n3. Notez l\u0026rsquo;ID client et l\u0026rsquo;ID locataire Gardez une trace des deux éléments suivants affichés dans l\u0026rsquo;onglet \u0026ldquo;Vue d\u0026rsquo;ensemble\u0026rdquo; :\nID d\u0026rsquo;application (client) ID de répertoire (locataire) 4. Créer un secret client Allez dans l\u0026rsquo;onglet \u0026ldquo;Certificats et secrets\u0026rdquo; \u0026ldquo;Nouveau secret client\u0026rdquo; \u0026gt; définissez une date d\u0026rsquo;expiration et cliquez sur \u0026ldquo;Ajouter\u0026rdquo; Assurez-vous de noter la valeur (secret) affichée à ce moment-là 🔐 Obtention du jeton d\u0026rsquo;accès (OAuth2) Nous utiliserons le flux client_credentials pour l\u0026rsquo;obtention.\nExécutez la commande ci-dessous avec curl pour obtenir le jeton d\u0026rsquo;accès.\n1 2 3 4 5 6 7 curl -X POST ^ https://login.microsoftonline.com/{ID_locataire}/oauth2/v2.0/token ^ -H \u0026#34;Content-Type: application/x-www-form-urlencoded\u0026#34; ^ -d \u0026#34;client_id={ID_client}\u0026#34; ^ -d \u0026#34;scope=https%3A%2F%2Fgraph.microsoft.com%2F.default\u0026#34; ^ -d \u0026#34;client_secret={Secret_client}\u0026#34; ^ -d \u0026#34;grant_type=client_credentials\u0026#34; Exemple de réponse 1 2 3 4 5 6 { \u0026#34;token_type\u0026#34;:\u0026#34;Bearer\u0026#34;, \u0026#34;expires_in\u0026#34;:3599, \u0026#34;ext_expires_in\u0026#34;:3599, \u0026#34;access_token\u0026#34;: \u0026#34;eyJ0eXAiOiJKV1QiLCJub... (omis)\u0026#34; } Utilisez cet access_token pour appeler l\u0026rsquo;API Microsoft Graph.\n💬 Exemple C++ pour publier dans une conversation Teams Voici un exemple C++ qui utilise WinHTTP pour publier dans une conversation.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #include \u0026lt;windows.h\u0026gt; #include \u0026lt;winhttp.h\u0026gt; #include \u0026lt;iostream\u0026gt; #include \u0026lt;string\u0026gt; #pragma comment(lib, \u0026#34;winhttp.lib\u0026#34;) void PostToTeamsChat(const std::wstring\u0026amp; accessToken, const std::wstring\u0026amp; chatId, const std::wstring\u0026amp; message) { HINTERNET hSession = WinHttpOpen(L\u0026#34;TeamsPoster/1.0\u0026#34;, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); HINTERNET hConnect = WinHttpConnect(hSession, L\u0026#34;graph.microsoft.com\u0026#34;, INTERNET_DEFAULT_HTTPS_PORT, 0); std::wstring endpoint = L\u0026#34;/v1.0/chats/\u0026#34; + chatId + L\u0026#34;/messages\u0026#34;; HINTERNET hRequest = WinHttpOpenRequest(hConnect, L\u0026#34;POST\u0026#34;, endpoint.c_str(), NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); std::wstring jsonBody = L\u0026#34;{\\\u0026#34;body\\\u0026#34;: {\\\u0026#34;content\\\u0026#34;: \\\u0026#34;\u0026#34; + message + L\u0026#34;\\\u0026#34;}}\u0026#34;; std::wstring headers = L\u0026#34;Authorization: Bearer \u0026#34; + accessToken + L\u0026#34;\\r\\nContent-Type: application/json\\r\\n\u0026#34;; BOOL bResult = WinHttpSendRequest(hRequest, headers.c_str(), (DWORD)-1L, (LPVOID)jsonBody.c_str(), (DWORD)(jsonBody.length() * sizeof(wchar_t)), (DWORD)(jsonBody.length() * sizeof(wchar_t)), 0); if (bResult) WinHttpReceiveResponse(hRequest, NULL); DWORD dwSize = 0; WinHttpQueryDataAvailable(hRequest, \u0026amp;dwSize); if (dwSize \u0026gt; 0) { std::wstring response(dwSize / sizeof(wchar_t), 0); DWORD dwDownloaded = 0; WinHttpReadData(hRequest, \u0026amp;response[0], dwSize, \u0026amp;dwDownloaded); std::wcout \u0026lt;\u0026lt; L\u0026#34;Response: \u0026#34; \u0026lt;\u0026lt; response \u0026lt;\u0026lt; std::endl; } WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); } int main() { std::wstring access; std::wstring chatId = L\u0026#34;19:\u0026#34;; std::wstring message = L\u0026#34;Hello from C++!\u0026#34;; std::wcout \u0026lt;\u0026lt; L\u0026#34;Enter your access token: \u0026#34;; std::getline(std::wcin, access); std::wcout \u0026lt;\u0026lt; L\u0026#34;Enter chat ID: \u0026#34;; std::getline(std::wcin, chatId); PostToTeamsChat(access, chatId, message); return 0; } 🔍 Comment obtenir l\u0026rsquo;ID de conversation L\u0026rsquo;ID de conversation peut être vérifié avec GET /v1.0/me/chats.\n1 2 3 4 curl -X GET ^ https://graph.microsoft.com/v1.0/me/chats ^ -H \u0026#34;Authorization: Bearer {access_token}\u0026#34; ^ -H \u0026#34;Content-Type: application/json\u0026#34; Exemple de réponse 1 2 3 4 5 6 7 8 9 { \u0026#34;value\u0026#34;: [ { \u0026#34;id\u0026#34;: \u0026#34;19:abc123xyz@thread.v2\u0026#34;, \u0026#34;topic\u0026#34;: null, \u0026#34;chatType\u0026#34;: \u0026#34;oneOnOne\u0026#34; } ] } 📌 Points d\u0026rsquo;attention Cet exemple est une implémentation minimale. En production : Gestion de l\u0026rsquo;expiration des jetons Vérification des certificats HTTPS Amélioration de la gestion des erreurs Les publications de canal utilisent teams/{team-id}/channels/{channel-id}/messages. L\u0026rsquo;envoi de pièces jointes nécessite un traitement multipart ou l\u0026rsquo;API Graph Drive. Résumé 📎 Résumé Fonctionnalité Aperçu Graph API API officielle pour interagir avec Teams Inscription de l\u0026rsquo;application Procédures d\u0026rsquo;authentification requises sur Azure Jeton d\u0026rsquo;accès Obtenu via OAuth2 et utilisé pour les requêtes Implémentation C++ Appelle l\u0026rsquo;API Graph en utilisant WinHTTP 🚀 Prochaines étapes Pour des exemples plus avancés, les éléments suivants sont également possibles :\nPublication sur un canal d\u0026rsquo;équipe (/teams/{team-id}/channels/...) Publication avec pièces jointes Basculement entre les comptes bot et les comptes utilisateurs Implémentation C++ complète, y compris l\u0026rsquo;obtention de jetons N\u0026rsquo;hésitez pas à commenter si vous avez des demandes !\n","date":"2025-07-14T23:40:15+09:00","image":"http://kenji.blog/p/c-%E3%81%8B%E3%82%89-microsoft-teams-%E3%81%AB%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%92%E6%8A%95%E7%A8%BF%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95winhttp--graph-api/img_hu9dbe154e21530b21fd6a41dcbc040106_90767_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-publier-un-message-dans-microsoft-teams-depuis-c-winhttp-graph-api/","title":"Comment publier un message dans Microsoft Teams depuis C++ (WinHTTP + Graph API)"},{"content":"Nous avons résumé les informations concernant la marque \u0026ldquo;obligatoire\u0026rdquo; sur les interfaces utilisateur (formulaires) à l\u0026rsquo;étranger, accompagnées de documents de directives UI.\n📌 Principales Marques Obligatoires et Meilleures Pratiques Utilisation de l\u0026rsquo;Astérisque (*)\nC\u0026rsquo;est généralement la méthode la plus répandue ; on ajoute \u0026ldquo;*\u0026rdquo; aux champs obligatoires. Cependant, une explication telle que \u0026quot; * indique un champ obligatoire\u0026quot; au début du formulaire est indispensable (Nielsen Norman Group, California State University, Northridge). Il y a aussi des exemples utilisant la couleur pour souligner (comme du texte en rouge). Indiquer \u0026ldquo;Required\u0026rdquo; ou \u0026ldquo;(required)\u0026rdquo; dans l\u0026rsquo;étiquette\nEn ajoutant le texte \u0026ldquo;Required\u0026rdquo; dans l\u0026rsquo;étiquette, on peut l\u0026rsquo;indiquer clairement aux lecteurs d\u0026rsquo;écran, ce qui améliore l\u0026rsquo;accessibilité (Deque). Utilisation combinée des attributs ARIA et de l\u0026rsquo;attribut HTML5 required\nEn plus de l\u0026rsquo;affichage visuel, l\u0026rsquo;utilisation de aria-required=\u0026quot;true\u0026quot; et \u0026lt;input required\u0026gt; permet d\u0026rsquo;indiquer l\u0026rsquo;obligation de manière programmatique (Deque). Utiliser \u0026ldquo;(optional)\u0026rdquo; pour indiquer les champs facultatifs\nIl y a aussi la méthode qui consiste à marquer explicitement les champs facultatifs par \u0026ldquo;(optional)\u0026rdquo; au lieu de marquer les obligatoires, ce qui est efficace lorsqu\u0026rsquo;il y a un mélange. Toutefois, Nielsen-Norman souligne qu\u0026rsquo;il \u0026ldquo;est plus facile de juger si les champs obligatoires sont également spécifiés\u0026rdquo; (TPGi). ✅ Résumé des Documents de Directives UI Source Contenu NN/g: Marking Required Fields in Forms La combinaison de l\u0026rsquo;astérisque et du texte d\u0026rsquo;explication est recommandée ; afficher uniquement les champs facultatifs est considéré comme peu convivial (Nielsen Norman Group). Deque (Anatomy of Accessible Forms) ・Utilise la chaîne \u0026ldquo;Required\u0026rdquo; ou une image au sein de l\u0026rsquo;étiquette.\n・Il est clairement stipulé que l\u0026rsquo;indication par la couleur seule est insuffisante. W3C Techniques (H90) Il y a des exemples d\u0026rsquo;inclusion d\u0026rsquo;un astérisque ou de \u0026ldquo;(required)\u0026rdquo; dans l\u0026rsquo;étiquette et de la définition de sa signification au début du formulaire. TPGi (Doing what\u0026rsquo;s required) Compte tenu de l\u0026rsquo;accessibilité, la combinaison astérisque + attributs ARIA + texte dans l\u0026rsquo;étiquette est évaluée comme optimale. Guide UX des Formulaires Contensis Organisé de manière concise : un marquage cohérent (* ou (optional)) est important. ✅ Approches Recommandées pour l\u0026rsquo;Implémentation Ajouter un texte d\u0026rsquo;explication au début du formulaire :\nFields marked with * are required. (Ou \u0026ldquo;All fields are required\u0026rdquo; pour tous, ou \u0026ldquo;unless marked optional\u0026rdquo; s\u0026rsquo;il y a des champs facultatifs)\nAttribution d\u0026rsquo;Étiquette :\nÉcrit comme First Name * ou Email (required). Attributs ARIA et Attributs HTML5 :\n1 2 \u0026lt;label for=\u0026#34;email\u0026#34;\u0026gt;Email \u0026lt;abbr title=\u0026#34;required\u0026#34;\u0026gt;*\u0026lt;/abbr\u0026gt;\u0026lt;/label\u0026gt; \u0026lt;input id=\u0026#34;email\u0026#34; required aria-required=\u0026#34;true\u0026#34;\u0026gt; Ne vous fiez pas uniquement à la couleur : Assurez une compatibilité à la fois visuelle et programmatique.\n🔗 Liens de Référence (Documents de Directives UI) NN/g: Marking Required Fields in Forms (California State University, Northridge, Nielsen Norman Group, Deque) Deque: Anatomy of Accessible Forms (Deque) W3C Techniques: H90 Indicating required form controls (W3C) TPGi: Indicating mandatory fields accessibly (TPGi) Contensis: UX Forms Guidelines (Contensis) Si nécessaire, je peux également fournir des exemples spécifiques de code HTML/CSS, ou des modèles de conception de composants UI pour Sketch et Figma. N\u0026rsquo;hésitez pas à demander !\n","date":"2025-07-14T13:47:51+09:00","image":"http://kenji.blog/p/%E5%85%A5%E5%8A%9B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%BF%85%E9%A0%88%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img_hu551d2409ec5a7ae3c7367fc3f969286e_18058_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E5%85%A5%E5%8A%9B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E5%BF%85%E9%A0%88%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/","title":"À propos des Marques Obligatoires dans les Formulaires de Saisie"},{"content":"[Pour débutants] Comment installer Gemini CLI sur Windows \u0026ldquo;Gemini CLI\u0026rdquo; vous permet d\u0026rsquo;utiliser l\u0026rsquo;IA générative \u0026ldquo;Gemini\u0026rdquo; de Google à partir de la ligne de commande. Dans cet article, nous expliquerons les étapes d\u0026rsquo;installation de Gemini CLI dans un environnement Windows de la manière la plus simple possible.\n1. Préparation : Installer Node.js et npm Tout d\u0026rsquo;abord, puisque Gemini CLI s\u0026rsquo;exécute sur un environnement appelé \u0026ldquo;Node.js\u0026rdquo;, vous devez installer ce qui suit :\nNode.js npm (Outil de gestion de paquets inclus avec Node.js) npx (Outil d\u0026rsquo;exécution de commandes inclus dans npm) Téléchargez la version Windows de Node.js depuis le site officiel ci-dessous (la version LTS est recommandée) :\n👉 Site officiel de Node.js\nUne fois l\u0026rsquo;installation terminée, vérifiez qu\u0026rsquo;elle a été correctement effectuée avec la commande suivante :\n1 2 node -v npm -v 2. Démarrez PowerShell Pour utiliser Gemini CLI sous Windows, PowerShell est généralement utilisé. Tapez \u0026ldquo;PowerShell\u0026rdquo; dans le menu Démarrer pour l\u0026rsquo;ouvrir.\n3. Installer Gemini CLI Copiez et collez la commande suivante dans PowerShell pour l\u0026rsquo;exécuter :\n1 npx @google/gemini-cli Cette commande exécute temporairement le paquet Gemini CLI publié par Google. Il se peut que l\u0026rsquo;on vous demande de procéder à la configuration initiale et de vous connecter, si nécessaire.\nRemarque : la première fois peut prendre quelques minutes. Si une erreur se produit, veuillez revérifier Node.js et votre environnement réseau. 4. Installation terminée ! Que faire ensuite Gemini CLI est maintenant installé sur votre Windows. À partir de maintenant, vous pouvez utiliser Gemini à partir de la ligne de commande pour diverses opérations, comme la génération de texte et la complétion de code.\nSi vous souhaitez vérifier la documentation officielle ou l\u0026rsquo;aide, vous pouvez également utiliser des commandes comme celle-ci :\n1 npx @google/gemini-cli --help Résumé Revoyons les étapes pour installer Gemini CLI sur Windows :\nInstaller Node.js et npm Démarrer PowerShell Exécuter npx @google/gemini-cli Et vous êtes prêt ! Si vous souhaitez utiliser l\u0026rsquo;IA générative localement, n\u0026rsquo;hésitez pas à essayer ces étapes comme référence.\n","date":"2025-07-13T23:49:56+09:00","image":"http://kenji.blog/p/gemini-cli-%E3%82%92-windows-%E7%92%B0%E5%A2%83%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu68d4fe037447f15938887bf6c4d85b87_249642_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-installer-gemini-cli-sur-windows/","title":"Comment installer Gemini CLI sur Windows"},{"content":"J\u0026rsquo;ai été récompensé en tant que Microsoft MVP (2025-2026) à nouveau ! Bonjour, je suis kenji.\nJ\u0026rsquo;ai une annonce à faire. J\u0026rsquo;ai été récompensé en tant que Microsoft MVP (Most Valuable Professional) à nouveau cette année. C\u0026rsquo;est la 9ème fois que je reçois ce prix.\nMerci beaucoup à tous ceux qui me soutiennent toujours.\nQu\u0026rsquo;est-ce que le Microsoft MVP ? Quand on entend \u0026ldquo;MVP\u0026rdquo;, beaucoup de gens peuvent penser au joueur le plus utile dans le sport, mais ici, le MVP est un titre décerné à ceux qui ont contribué à la communauté technique de Microsoft .\nPlus précisément,\nDiffusion d\u0026rsquo;informations sur des blogs techniques et les réseaux sociaux Publication d\u0026rsquo;exemples de code sur GitHub Interventions dans des groupes d\u0026rsquo;étude et des conférences Réponses sur les sites de questions-réponses Échanges techniques et collaboration avec des développeurs étrangers Participation et publications dans des communautés où les ingénieurs se connectent Il s\u0026rsquo;agit d\u0026rsquo;un système qui évalue les activités consistant à \u0026ldquo;partager ses propres connaissances et son expérience pour le bénéfice de quelqu\u0026rsquo;un\u0026rdquo;.\nIl y a des lauréats dans le monde entier, mais le nombre de personnes sélectionnées chaque année est limité, et recevoir à nouveau ce prix n\u0026rsquo;est jamais facile. C\u0026rsquo;est pourquoi c\u0026rsquo;est un véritable honneur d\u0026rsquo;être reconnu de cette manière.\nSur quoi je me suis concentré cette année Cette année, je me suis concentré sur la diffusion d\u0026rsquo;informations en mettant l\u0026rsquo;accent sur la \u0026ldquo;clarté\u0026rdquo; et \u0026ldquo;l\u0026rsquo;accessibilité\u0026rdquo; de la technologie.\nPublication d\u0026rsquo;exemples de code pratiques sur GitHub Interventions dans des groupes d\u0026rsquo;étude et des conférences (au niveau national et international) Diffusion régulière d\u0026rsquo;informations via des blogs techniques et les réseaux sociaux Activité de réponse continue sur les sites de questions-réponses Partage de connaissances sur les sites de la communauté des ingénieurs Interaction et vérification conjointe avec des ingénieurs étrangers En particulier, la publication de code sur GitHub m\u0026rsquo;a laissé une forte impression, car j\u0026rsquo;ai reçu des commentaires tels que \u0026ldquo;Je luttais avec la même chose, ça m\u0026rsquo;a sauvé !\u0026rdquo;, et j\u0026rsquo;ai pu sentir que mes efforts aidaient au développement d\u0026rsquo;autres personnes.\nDe plus, lors de mes interventions lors d\u0026rsquo;événements, j\u0026rsquo;ai parfois reçu des commentaires indiquant que \u0026ldquo;c\u0026rsquo;était facile à comprendre, même pour les débutants\u0026rdquo;, ce qui m\u0026rsquo;a donné une bonne occasion de réfléchir à \u0026ldquo;qu\u0026rsquo;est-ce qu\u0026rsquo;une explication technique que les gens comprennent ?\u0026rdquo;.\nEn vue de l\u0026rsquo;année prochaine L\u0026rsquo;évolution de la technologie est vraiment rapide, et il est difficile de suivre le rythme. Malgré cela, je pense qu\u0026rsquo;il est très utile de fournir des connaissances réelles en tant qu\u0026rsquo;\u0026ldquo;informations primaires\u0026rdquo; , telles que les expériences pratiques que j\u0026rsquo;ai acquises et les points sur lesquels j\u0026rsquo;ai buté en essayant les choses par moi-même.\nL\u0026rsquo;année prochaine, j\u0026rsquo;aimerais essayer de publier un \u0026ldquo;contenu technique visuellement compréhensible\u0026rdquo; qui intègre des vidéos et des diagrammes . J\u0026rsquo;espère augmenter mes résultats afin d\u0026rsquo;aider à soulager quelqu\u0026rsquo;un de son sentiment d\u0026rsquo;être bloqué, même un petit peu.\nEnfin Le titre de MVP n\u0026rsquo;est qu\u0026rsquo;une étape.\nÀ partir de maintenant, sans en faire trop, à mon propre rythme. Mais d\u0026rsquo;une manière qui soit utile à quelqu\u0026rsquo;un.\n\u0026ldquo;J\u0026rsquo;ai été sauvé en cherchant ça\u0026rdquo; \u0026ldquo;Cet exemple a fonctionné !\u0026rdquo; \u0026ldquo;Cette histoire était facile à comprendre\u0026rdquo;\nJe voudrais continuer à être le genre d\u0026rsquo;ingénieur à qui on dit ces choses.\nMerci beaucoup pour votre soutien continu.\nGitHub: https://github.com/kenjinote Blog technique: https://hack.jp X: https://twitter.com/kenjinote ","date":"2025-07-13T22:01:15+09:00","image":"http://kenji.blog/p/microsoft-mvp2025-2026%E3%82%92%E5%86%8D%E5%8F%97%E8%B3%9E%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/img_hu79b11b7d0311d1cf72d88f77ae4d2c9a_139280_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/j-ai-ete-recompense-en-tant-que-microsoft-mvp-2025-2026-a-nouveau/","title":"J'ai été récompensé en tant que Microsoft MVP (2025-2026) à nouveau"},{"content":"L\u0026rsquo;Attrait et les Défis du Développement avec Win32API + C++ Pour ceux qui souhaitent maîtriser le développement d\u0026rsquo;applications Windows, Win32API + C++ reste une option puissante. Cette combinaison, qui permet l\u0026rsquo;interaction la plus proche possible avec le système d\u0026rsquo;exploitation, offre à la fois vitesse et flexibilité.\nD\u0026rsquo;un autre côté, elle requiert de la détermination pour être maîtrisée, car elle diffère considérablement des styles de développement modernes.\nSur cette page, nous expliquerons clairement les avantages et les inconvénients du point de vue d\u0026rsquo;un développeur actif d\u0026rsquo;applications Windows .\nAvantages Exécution Native Ultra-Rapide Étant donné que C++ et Win32API fonctionnent sur la couche la plus proche du système d\u0026rsquo;exploitation, il n\u0026rsquo;y a presque pas de surcharge inutile. L\u0026rsquo;utilisation du processeur et de la mémoire est extrêmement efficace, offrant une vitesse d\u0026rsquo;exécution écrasante .\nHaute Flexibilité et Liberté Vous pouvez contrôler finement par vous-même tous les comportements de l\u0026rsquo;application, tels que le contrôle des fenêtres, le traitement asynchrone, l\u0026rsquo;intégration COM et la gestion des processus. Il est également possible de créer des outils spécialisés et vos propres frameworks originaux.\nFacile à Distribuer Sans Besoin d\u0026rsquo;Exécution Comme aucun runtime externe tel que .NET ou Java n\u0026rsquo;est requis, il peut être distribué sous forme de fichier exécutable unique . Il est moins sujet aux problèmes lors de la redistribution et est facile à exécuter sans installateur.\nPeut Créer des Applications Légères Puisqu\u0026rsquo;il ne nécessite que la configuration minimale, sa caractéristique est d\u0026rsquo;avoir une empreinte mémoire très petite . Il fonctionne confortablement même sur des PC peu performants ou des environnements de machines virtuelles.\nContrôle Avancé au Niveau du Système d\u0026rsquo;Exploitation Possible Vous pouvez également réaliser des contrôles qui sont difficiles avec des langages et des bibliothèques normaux , tels que les crochets globaux de la souris et du clavier, le réglage fin des styles de fenêtres et les opérations du menu système.\nInconvénients Faible Efficacité de Développement Même la construction de l\u0026rsquo;interface graphique doit être entièrement réalisée en code, et parfois des dizaines de lignes de code sont nécessaires juste pour créer un seul bouton . La modification de la conception est également compliquée, et la productivité est plus faible par rapport au développement utilisant des frameworks d\u0026rsquo;interface utilisateur.\nFacile de Réduire la Maintenabilité Il y a beaucoup de codes avec des structures spéciales , tels que les boucles de messages et les procédures de fenêtres, ce qui entrave la lisibilité et la réutilisation. Il a également des aspects inadaptés au développement en équipe et à la maintenance à long terme.\nDifficile de Supporter l\u0026rsquo;Interface Utilisateur Moderne Il est difficile de supporter l\u0026rsquo;UX requise ces dernières années , telle que la prise en charge des DPI élevés, les interfaces tactiles, l\u0026rsquo;accessibilité et le mode sombre. Vous devez traiter chacun manuellement, ce qui demande beaucoup d\u0026rsquo;efforts.\nNe Supporte Pas le Multiplateforme Comme il s\u0026rsquo;agit d\u0026rsquo;une API entièrement exclusive à Windows, elle ne peut pas être portée sur macOS ou Linux . Si vous prévoyez un déploiement sur plusieurs plates-formes, vous devrez sélectionner d\u0026rsquo;autres technologies.\nCoût d\u0026rsquo;Apprentissage Extrêmement Élevé Vous devez comprendre des concepts et des mécanismes rarement utilisés aujourd\u0026rsquo;hui , tels que les handles, GDI, COM et OLE. De nombreux documents sont anciens, nécessitant du temps et de la patience pour apprendre.\nUtilisations Appropriées Outils légers tels que les lanceurs de fichiers et les aides aux raccourcis clavier Utilitaires système tels que la manipulation du presse-papiers et le contrôle de l\u0026rsquo;IME Applications basées sur le contrôle natif telles que les crochets globaux et la capture de fenêtres Outils de support de pilote étroitement liés au matériel Utilisations Inappropriées Applications destinées au grand public où les interfaces utilisateur et expériences utilisateur modernes sont importantes Prototypage et développement de MVP conçus dans un souci de rapidité Projets à grande échelle basés sur une exploitation à long terme et un développement en équipe Produits multiplateformes qui doivent prendre en charge plusieurs systèmes d\u0026rsquo;exploitation Résumé de l\u0026rsquo;Évaluation Point de Vue Évaluation Vitesse d\u0026rsquo;Exécution ◎ Très Rapide Efficacité de la Mémoire ◎ Excellente Vitesse de Développement × Lente Maintenabilité × Faible Support Multiplateforme × Non Supporté Support de l\u0026rsquo;Interface Utilisateur Moderne × Faible Liberté de Contrôle du Système d\u0026rsquo;Exploitation ◎ Écrasante Haute Conclusion Win32API + C++ est un outil pour les développeurs qui \u0026ldquo;veulent tout gérer dans le système d\u0026rsquo;exploitation par eux-mêmes\u0026rdquo;. Bien que sa puissance soit immense, l\u0026rsquo;apprentissage et le fonctionnement nécessitent une détermination correspondante.\nLe fait que cela vaille la peine de \u0026ldquo;choisir audacieusement\u0026rdquo; dépend de la nature de l\u0026rsquo;application que vous visez.\nPlonger dans le monde de #include \u0026lt;windows.h\u0026gt; sans dépendre de frameworks GUI ou de langages modernes ―― Ce choix est toujours significatif aujourd\u0026rsquo;hui.\n","date":"2025-07-12T12:30:35+09:00","image":"http://kenji.blog/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/img_1_huda4a374969e448ba98e0798d75e2e435_4729_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/","title":"Avantages et Inconvénients de la Création de Programmes avec Win32API + C++"},{"content":"Si vous souhaitez utiliser libcurl (avec support OpenSSL) dans Visual Studio, l\u0026rsquo;installation de vcpkg est facile et recommandée Lorsqu\u0026rsquo;on souhaite gérer des communications HTTP en C++, libcurl est souvent utilisé. Mais la compilation et la gestion des dépendances sont étonnamment fastidieuses, n\u0026rsquo;est-ce pas ?\nDans de tels moments, l\u0026rsquo;outil de gestion de bibliothèques C++ de Microsoft, ** \u0026ldquo;vcpkg\u0026rdquo; ** , s\u0026rsquo;avère très utile. Cette fois-ci, nous allons vous présenter les étapes depuis l\u0026rsquo;installation de libcurl (compatible OpenSSL) en utilisant cpkg, jusqu\u0026rsquo;à ce qu\u0026rsquo;il puisse être utilisé sans problème dans Visual Studio.\nInstallation de vcpkg (uniquement pour ceux qui ne l\u0026rsquo;ont pas encore installé) Tout d\u0026rsquo;abord, installons cpkg. Veuillez exécuter les étapes suivantes dans PowerShell.\npowershell git clone https://github.com/microsoft/vcpkg cd vcpkg .\bootstrap-vcpkg.bat ※Si Git n\u0026rsquo;est pas encore installé, veuillez l\u0026rsquo;installer depuis le Site officiel de Git.\nInstallation de libcurl (compatible OpenSSL) Ensuite, nous allons utiliser vcpkg pour installer libcurl. Pour spécifier la version 64 bits prenant en charge OpenSSL, exécutez la commande suivante.\npowershell vcpkg install curl[ssl] --triplet x64-windows L\u0026rsquo;exécution de cette commande configurera automatiquement les dépendances nécessaires (telles que OpenSSL).\nParamètres d\u0026rsquo;intégration avec Visual Studio Afin de pouvoir utiliser facilement les bibliothèques installées avec vcpkg à partir d\u0026rsquo;un projet Visual Studio, définissez les paramètres d\u0026rsquo;intégration avec la commande suivante.\npowershell vcpkg integrate install Une fois ceci configuré, #include \u0026lt;curl/curl.h\u0026gt; sera automatiquement disponible dans les projets Visual Studio, et vous n\u0026rsquo;aurez plus besoin de configurer manuellement les chemins des bibliothèques ou les paramètres de l\u0026rsquo;éditeur de liens.\nConclusion Ainsi, la préparation pour introduire libcurl (compatible OpenSSL) dans Visual Studio est terminée.\nAvec vcpkg, vous pouvez gérer toutes les dépendances complexes en une seule fois Introduisez facilement libcurl avec cpkg install curl[ssl] \u0026ndash;triplet x64-windows L\u0026rsquo;intégration automatique avec Visual Studio est possible avec cpkg integrate install Ensuite, il ne vous reste plus qu\u0026rsquo;à inclure l\u0026rsquo;en-tête dans votre projet et à utiliser l\u0026rsquo;API libcurl pour commencer le développement. Tirez parti de cet outil pratique qu\u0026rsquo;est vcpkg et améliorez considérablement votre efficacité de développement.\n","date":"2025-07-07T21:46:08+09:00","image":"http://kenji.blog/p/vcpkg-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-visual-studio-%E3%81%AB-curl-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/img_hub03488d3cca2b78b7b08dd6d749f5d1e_294355_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/vcpkg-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6-visual-studio-%E3%81%AB-curl-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/","title":"【Pour les débutants】Guide d'installation de libcurl (avec support OpenSSL) dans Visual Studio à l'aide de vcpkg"},{"content":"La « sécurité mentale » nécessaire pour ne pas se laisser entraîner par les théories du complot En naviguant sur Internet, il nous arrive parfois de tomber sur des histoires relevant de la « théorie du complot ».\n« Quelqu\u0026rsquo;un ne manipulerait-il pas cet événement en coulisses ? » « La véritable vérité n\u0026rsquo;est-elle pas cachée ? » Beaucoup d\u0026rsquo;entre vous ont probablement déjà vu ce genre de discours se propager de manière plausible.\nPour ne pas être trop absorbé par ces informations, il ne suffit pas d\u0026rsquo;avoir de la « connaissance » ou de la « capacité de réflexion », il est très important d\u0026rsquo;ajuster son état d\u0026rsquo;esprit , c\u0026rsquo;est-à-dire sa « sécurité mentale ».\nCi-dessous, nous vous présentons 6 façons de penser efficaces à cet effet.\nNe liez pas immédiatement l\u0026rsquo;anxiété à une « réponse » Une caractéristique majeure des théories du complot est qu\u0026rsquo;elles présentent une « réponse » claire et facile à comprendre aux anxiétés et aux doutes.\nPar exemple, face à des questions telles que :\n« Pourquoi un tel incident se produit-il ? » « À qui cela profite-t-il ? » Lorsqu\u0026rsquo;on nous présente un scénario comme « En réalité, un tel tire les ficelles en coulisses », il est facile de s\u0026rsquo;en convaincre.\nMais c\u0026rsquo;est justement lorsqu\u0026rsquo;on se sent anxieux qu\u0026rsquo;il est important de suspendre son jugement sans tirer de conclusion immédiate .\nLa « capacité à rester dans l\u0026rsquo;incertitude » est également un signe de maturité intellectuelle.\nÉlargissez intentionnellement vos sources d\u0026rsquo;information Beaucoup de ceux qui plongent dans les théories du complot ont tendance à ne consulter de manière intensive que des « informations partageant des idées similaires ».\nC\u0026rsquo;est ce qu\u0026rsquo;on appelle le « biais de confirmation », une tendance psychologique à ne s\u0026rsquo;exposer qu\u0026rsquo;à des informations qui renforcent les croyances que l\u0026rsquo;on possède déjà.\nEn particulier, les algorithmes des réseaux sociaux et des sites vidéo proposent continuellement des publications qui semblent correspondre à vos goûts, ce qui peut naturellement rétrécir votre champ de vision.\nConsciemment :\nConsulter des médias ayant des perspectives différentes Regarder des actualités internationales ou des sources académiques Écouter des opinions différentes des siennes S\u0026rsquo;efforcer de diversifier ses sources d\u0026rsquo;information permet d\u0026rsquo;éviter les risques.\nNe pensez pas que « vous ne vous ferez pas avoir » Les personnes cultivées ou logiques sont parfois, en réalité, plus facilement attirées par les théories du complot.\nCela s\u0026rsquo;explique par le fait que penser « Je suis capable de remarquer la vérité que les autres ne voient pas » devient un facteur qui trouble le jugement.\nPeu importe l\u0026rsquo;attention que l\u0026rsquo;on y prête, les êtres humains font des erreurs. C\u0026rsquo;est pourquoi, partir du principe que l\u0026rsquo;on peut soi-même être trompé est en fait une attitude plus rationnelle.\n« Douter tout en évitant les conclusions hâtives » devient votre moyen de défense.\nRegardez la structure, sans vous laisser happer par l\u0026rsquo;histoire Les théories du complot s\u0026rsquo;accompagnent toujours d\u0026rsquo;une « histoire dramatique ».\nDes dichotomies simples telles que :\nLa structure d\u0026rsquo;opposition entre le bien et le mal Les dirigeants et les dirigés Moi, l\u0026rsquo;éveillé contre les autres, victimes d\u0026rsquo;un lavage de cerveau Bien qu\u0026rsquo;elles soient attrayantes en tant qu\u0026rsquo;histoires, elles ne reflètent pas toujours correctement la réalité.\nLes événements réels et les mouvements sociaux impliquent de nombreux facteurs entremêlés, tels que des relations de cause à effet complexes, des contextes historiques et des structures institutionnelles.\nIl est important de ne pas se laisser trop emporter par les émotions de l\u0026rsquo;histoire et d\u0026rsquo;avoir une perspective de compréhension structurelle de « Pourquoi en est-on arrivé là ? ».\nNe laissez pas la solitude s\u0026rsquo;installer Derrière une forte attirance pour les théories du complot se cachent parfois « l\u0026rsquo;isolement » et le « manque d\u0026rsquo;appartenance ».\nLorsque les gens se sentent seuls, ils ont tendance à devenir profondément dépendants des personnes ou des groupes qui les comprennent. Les communautés autour des théories du complot remplissent parfois cette fonction de « refuge ».\nC\u0026rsquo;est pourquoi faire l\u0026rsquo;effort de ne pas rester seul participe également à la sécurité mentale.\nPar exemple, des actions telles que :\nDiscuter régulièrement avec des gens Participer à des communautés partageant les mêmes loisirs ou intérêts Avoir des liens hors ligne, et pas seulement en ligne Conduisent à une stabilité mentale.\nPrivilégiez le dialogue plutôt que la négation Même si un de vos proches penche pour les théories du complot, les rejeter catégoriquement peut avoir l\u0026rsquo;effet inverse.\nLorsque les croyances d\u0026rsquo;une personne sont niées, sa tendance psychologique à vouloir les protéger se renforce (c\u0026rsquo;est ce qu\u0026rsquo;on appelle la « cognition défensive »).\nÀ la place :\nDemandez doucement : « Pourquoi as-tu pensé cela ? » Présentez calmement votre propre point de vue : « Il est aussi possible de voir les choses de cette façon. » En adoptant une telle approche fondée sur le dialogue , il devient possible que la perspective de l\u0026rsquo;autre s\u0026rsquo;élargisse naturellement.\nConclusion : Ce que vous pouvez faire pour garder vos distances avec les théories du complot Avoir la capacité de suspendre son jugement sans lier immédiatement anxiété et réponse Diversifier ses sources d\u0026rsquo;information et prendre conscience de ses biais Reconnaître que son propre jugement n\u0026rsquo;est pas absolu Analyser les choses à travers les structures et les relations de cause à effet, plutôt que par l\u0026rsquo;histoire Éviter la solitude et maintenir des liens Faire face aux théories du complot des autres par le dialogue plutôt que par la négation On dit que l\u0026rsquo;attrait pour les théories du complot est davantage influencé par l\u0026rsquo;état psychologique et l\u0026rsquo;environnement que par la quantité de connaissances.\nC\u0026rsquo;est pourquoi, sans présumer que « tout va bien pour moi », s\u0026rsquo;efforcer petit à petit, au quotidien, d\u0026rsquo;augmenter sa sécurité mentale sera un atout majeur pour vivre avec flexibilité dans la société de l\u0026rsquo;information de demain.\n","date":"2025-05-26T22:23:34+09:00","image":"http://kenji.blog/p/%E9%99%B0%E8%AC%80%E8%AB%96%E3%81%AB%E3%81%AF%E3%81%BE%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%95%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%8B/img_hu51c98705e3e626ac0eb85c430c7c7e5c_195663_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E9%99%B0%E8%AC%80%E8%AB%96%E3%81%AB%E3%81%AF%E3%81%BE%E3%82%89%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%95%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%8B/","title":"Ce qu'il faut pour ne pas tomber dans les théories du complot"},{"content":"Histoire du développement Low-Code / No-Code (des années 1980 à nos jours) Le développement low-code / no-code est une approche qui permet de créer des applications, des sites web et des bases de données sans avoir besoin de connaissances spécialisées en programmation. Cette idée a vu le jour dans les années 1980 et, avec la popularisation des PC, l\u0026rsquo;évolution d\u0026rsquo;Internet et l\u0026rsquo;expansion des technologies cloud, elle s\u0026rsquo;est transformée en une grande variété de plateformes. Dans cet article, nous présenterons des outils et services représentatifs de chaque décennie, en soulignant leurs caractéristiques et leurs prix.\nAnnées 1980 : Les débuts HyperCard (Apple, 1987) Outil de création d\u0026rsquo;applications pour Macintosh. L\u0026rsquo;écran était configuré sous forme de cartes, et l\u0026rsquo;interface graphique (GUI) était créée par glisser-déposer. Un contrôle simple des comportements était également possible en utilisant son propre langage de script, \u0026ldquo;HyperTalk\u0026rdquo;. Il était très apprécié pour le prototypage. Le prix de lancement était de 49,95 dollars et, plus tard, il a été fourni gratuitement aux nouveaux acheteurs de Mac. La dernière version remonte à 1998, sans prise en charge de Mac OS X ou supérieur.\nFileMaker (Claris/Apple, 1985) Logiciel de base de données graphique. En plus d\u0026rsquo;afficher des données sous forme de tableau, c\u0026rsquo;est un outil de base de données relationnelle doté d\u0026rsquo;une édition de mise en page flexible et de fonctionnalités de script. Actuellement proposé sous le nom de \u0026ldquo;Claris FileMaker Pro\u0026rdquo;, la version sous licence complète coûte 594 dollars (en 2024).\nAnnées 1990 : L\u0026rsquo;essor des applications GUI et du développement d\u0026rsquo;entreprise Visual Basic (Microsoft, 1991) Un IDE dédié au développement d\u0026rsquo;applications Windows. En glissant et déposant des composants GUI tels que des boutons et des étiquettes, on pouvait facilement créer des applications événementielles. Avec VB6.0 en 1998 comme dernière version, l\u0026rsquo;ère est passée à .NET.\nMicrosoft Access (1992) Outil de développement de bases de données pour Windows. Il permettait la conception de bases de données relationnelles et la création de formulaires via une interface graphique, et a été largement utilisé pour le développement d\u0026rsquo;applications d\u0026rsquo;entreprise générales. Actuellement proposé dans le cadre de Microsoft 365.\nPowerBuilder (PowerSoft/Sybase, 1991) Outil de développement 4GL pour les applications d\u0026rsquo;entreprise. Il prenait en charge l\u0026rsquo;architecture client/serveur et excellait dans l\u0026rsquo;intégration de bases de données. Il continue d\u0026rsquo;être fourni actuellement sous la bannière SAP.\nDreamweaver (Macromedia, 1997) Un outil WYSIWYG permettant la création visuelle de pages web. Il permettait de basculer entre l\u0026rsquo;édition HTML et la vue conception, et prenait également en charge ASP et PHP. Actuellement fourni par Adobe et disponible par abonnement (environ 34,49 dollars par mois).\nFlash (Macromedia, 1996) Développé à l\u0026rsquo;origine sous le nom de FutureSplash Animator, un outil de création d\u0026rsquo;animations vectorielles. Il a ensuite été utilisé pour créer du contenu interactif pour le web, mais le support a pris fin en 2020 pour des raisons de sécurité.\nGameMaker (1999) Outil de création de jeux 2D pour débutants. Le placement des objets et le contrôle des événements peuvent se faire par glisser-déposer. Plus tard, il a également pris en charge les scripts (GML), et plusieurs forfaits sont actuellement proposés pour un usage commercial.\nAnnées 2000 : L\u0026rsquo;expansion du Web et de l\u0026rsquo;Open Source WordPress (2003) CMS open source utilisant PHP et MySQL. Permet de créer des blogs et des sites d\u0026rsquo;entreprise en utilisant des thèmes et des plugins sans aucune connaissance en programmation. Distribué gratuitement, c\u0026rsquo;est l\u0026rsquo;un des CMS les plus utilisés au monde.\nWix (2006) Un service no-code qui permet de créer des sites web dans un navigateur. Vous pouvez choisir un modèle et le modifier par glisser-déposer. En plus du forfait gratuit, les forfaits payants permettent l\u0026rsquo;utilisation de domaines personnalisés et de fonctionnalités e-commerce.\nOutSystems (2001) Plateforme low-code pour les entreprises. Comme elle permet le développement rapide de systèmes métiers, son adoption progresse dans les grandes entreprises et les agences gouvernementales. Prend en charge à la fois le cloud et l\u0026rsquo;infrastructure locale (on-premises).\nScratch (MIT, 2007) Outil d\u0026rsquo;apprentissage de la programmation développé pour les enfants. En combinant des blocs colorés, il est possible de créer des jeux et des animations, ce qui le rend très populaire dans le milieu éducatif. Fourni gratuitement.\nAirtable (2013) Un service cloud combinant feuilles de calcul et bases de données. L\u0026rsquo;apparence est similaire à Excel, mais permet des relations, un affichage Kanban et l\u0026rsquo;intégration d\u0026rsquo;API. Largement utilisé, des particuliers aux grandes entreprises.\nAnnées 2010 - 2020 : L\u0026rsquo;ère du Cloud et de l\u0026rsquo;Automatisation Ces dernières années, les outils low-code / no-code basés sur le cloud ont évolué rapidement.\nPower Platform (Microsoft) Une plateforme intégrée de développement d\u0026rsquo;applications d\u0026rsquo;entreprise et d\u0026rsquo;automatisation comprenant \u0026ldquo;Power Apps\u0026rdquo;, \u0026ldquo;Power Automate\u0026rdquo;, etc. Les processus métiers des entreprises peuvent être construits visuellement par glisser-déposer.\nSalesforce Lightning Platform La base de développement d\u0026rsquo;applications fournie par Salesforce, un CRM. Les applications métiers peuvent être créées via une interface graphique, et l\u0026rsquo;intégration avec d\u0026rsquo;autres services Salesforce est facile.\nZapier / IFTTT Des outils d\u0026rsquo;automatisation qui permettent de créer des connexions entre plusieurs services cloud sans coder. Par exemple, des flux de travail comme \u0026ldquo;Notifier Slack lors d\u0026rsquo;une saisie dans Google Forms\u0026rdquo; peuvent être facilement mis en place.\nNotion (Années 2010) Un espace de travail tout-en-un qui intègre la gestion de documents, la gestion des tâches, un Wiki, etc. Il dispose également d\u0026rsquo;une fonction de base de données personnalisée, utile pour l\u0026rsquo;amélioration des processus sans code.\nConstruct 3 / GameSalad Des outils pour créer des jeux par glisser-déposer. Construct 3 prend en charge HTML5 et fonctionne également dans un navigateur, et est populaire dans le milieu éducatif et parmi les développeurs indépendants.\nSources d\u0026rsquo;informations et suppléments Cet article a été structuré sur la base des sites web officiels de chaque produit, de Wikipédia et de documents/articles fiables (Apple, Microsoft, Adobe, etc.). Les informations sur les prix font référence à l\u0026rsquo;époque ou aux informations officielles les plus récentes possibles (répertoriées principalement en dollars américains). La plupart des outils depuis les années 2000 sont basés sur des abonnements, et les frais varient selon le forfait choisi.\n","date":"2025-04-26T16:46:11+09:00","image":"http://kenji.blog/p/%E3%83%AD%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8A%E3%82%88%E3%81%B3%E3%83%8E%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%AD%B4%E5%8F%B2/img_hu615c889fe1afb242f7436bdb2a6d534f_388471_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/histoire-du-low-code-et-no-code/","title":"Histoire du No-Code dans les environnements locaux"},{"content":"Au fait, qu\u0026rsquo;est-ce que FizzBuzz ? Bonjour !\nAujourd\u0026rsquo;hui, j\u0026rsquo;aimerais parler de « FizzBuzz ».\nQue vous soyez de ceux qui se disent « Ah, je connais ça ! » ou de ceux qui disent « J\u0026rsquo;en ai entendu parler, mais je ne comprends pas vraiment », restez avec moi un instant. Cela ne prend que quelques minutes à lire, et peut-être vous direz-vous : « C\u0026rsquo;est logique ».\nEst-il vrai que « si vous ne pouvez pas écrire FizzBuzz, vous êtes un mauvais programmeur » ? FizzBuzz, pour faire simple, c\u0026rsquo;est ça.\n1 2 3 4 5 6 7 8 9 for i in range(1, 101): if i % 15 == 0: print(\u0026#34;FizzBuzz\u0026#34;) elif i % 3 == 0: print(\u0026#34;Fizz\u0026#34;) elif i % 5 == 0: print(\u0026#34;Buzz\u0026#34;) else: print(i) Oui, c\u0026rsquo;est le fameux « Problème FizzBuzz ».\nVous regardez les nombres de 1 à 100 dans l\u0026rsquo;ordre,\nsi c\u0026rsquo;est un multiple de 3, vous affichez « Fizz », si c\u0026rsquo;est un multiple de 5, vous affichez « Buzz »,\nsi c\u0026rsquo;est un multiple des deux, vous affichez « FizzBuzz » – c\u0026rsquo;est extrêmement simple.\nEt pourtant, pour une raison quelconque, c\u0026rsquo;est souvent traité comme « le test minimum pour un programmeur ». Il apparaît lors des entretiens, et sur les réseaux sociaux, vous verrez des commentaires du genre « Quelqu\u0026rsquo;un qui ne peut même pas écrire FizzBuzz\u0026hellip; ».\nMais, attendez une minute.\nPouvons-nous vraiment affirmer que « ne pas savoir écrire FizzBuzz = ne pas savoir programmer » ?\nIl ne s\u0026rsquo;agit pas de savoir si on peut le faire, mais si on a l\u0026rsquo;« état » pour le faire Il est vrai que FizzBuzz exige une compréhension de la syntaxe et de la pensée logique de base. Il est donc logique qu\u0026rsquo;il soit utilisé pour « vérifier les bases ».\nMais, voilà.\nSi l\u0026rsquo;environnement est différent, les résultats seront différents.\nPar exemple,\nQuand vous êtes nerveux devant un recruteur que vous venez de rencontrer Quand on vous tend soudainement un tableau blanc et que vous n\u0026rsquo;avez pas d\u0026rsquo;éditeur sous la main Quand vous n\u0026rsquo;arrivez pas à vous souvenir immédiatement de « Au fait, c\u0026rsquo;est quoi le modulo ? » \u0026hellip;Cela n\u0026rsquo;arrive-t-il pas ? Nous sommes humains. Je pense que cela arrive.\nPar conséquent, plutôt que de dire « pouvez-vous écrire FizzBuzz », je pense qu\u0026rsquo;il est en fait beaucoup plus important de se demander « pouvez-vous vous mettre dans un état où vous pouvez écrire FizzBuzz ».\nLe piège du conseil habituel « Il suffit de s\u0026rsquo;entraîner et tout ira bien » Quand ce sujet est abordé, le conseil « Alors entraîne-toi tous les jours ! » a tendance à surgir.\nIl est vrai qu\u0026rsquo;une pratique répétée vous permettra de l\u0026rsquo;écrire couramment, et c\u0026rsquo;est en soi une bonne chose. Mais si nous partons du principe que « si vous ne pouvez pas écrire FizzBuzz, vous êtes disqualifié », cela peut facilement se transformer en simple peur.\nEn d\u0026rsquo;autres termes, cela tend à créer une structure où vous ressentez que « j\u0026rsquo;ai fait une erreur = je suis inutile ».\nPar exemple, le jour où vous vous réveillez tard, n\u0026rsquo;avez-vous pas tendance à penser « Je suis un paresseux\u0026hellip; » ? Mais il se peut simplement que votre corps ait été fatigué à ce moment-là.\nFizzBuzz, c\u0026rsquo;est la même chose.\nCela dit, FizzBuzz reste une bonne question Cela dit, FizzBuzz n\u0026rsquo;est pas une mauvaise chose.\nAu contraire, je pense que c\u0026rsquo;est une question très bien conçue. Les règles sont simples et il est facile de la développer. Par exemple, si vous la modifiez de cette façon, votre réflexion s\u0026rsquo;approfondira.\n1 2 3 4 5 6 7 for i in range(1, 101): output = \u0026#34;\u0026#34; if i % 3 == 0: output += \u0026#34;Fizz\u0026#34; if i % 5 == 0: output += \u0026#34;Buzz\u0026#34; print(output or i) C\u0026rsquo;est un exemple qui montre que « vous pouvez l\u0026rsquo;écrire même sans if-elif-else ». C\u0026rsquo;est plutôt astucieux, n\u0026rsquo;est-ce pas ?\nEn d\u0026rsquo;autres termes, FizzBuzz ne consiste pas seulement à savoir « si vous avez réussi à le faire », mais sert également de point d\u0026rsquo;entrée pour voir « comment vous l\u0026rsquo;écrivez » et « jusqu\u0026rsquo;à quel point vous comprenez ».\nEn résumé Je pense que nous ne devrions pas accorder trop d\u0026rsquo;importance au fait de savoir si vous pouvez ou non faire FizzBuzz.\nMême si vous n\u0026rsquo;avez pas réussi à l\u0026rsquo;écrire, c\u0026rsquo;est peut-être simplement que « vous ne vous sentiez pas bien sur le moment », et souvent, vous y parviendrez si vous y réfléchissez attentivement plus tard.\nNe vous précipitez pas, avançons lentement.\nLe code est écrit par des humains. En tant qu\u0026rsquo;humains, il nous arrive d\u0026rsquo;oublier des choses et d\u0026rsquo;être nerveux. En acceptant cela, je pense qu\u0026rsquo;il suffit de pouvoir avancer petit à petit.\nAlors, écrivons du code de manière détendue aujourd\u0026rsquo;hui aussi.\n","date":"2025-04-18T00:58:11+09:00","image":"http://kenji.blog/p/fizzbuzz/img_hu0b23239076c3049a7d4382dec6ccfba6_85967_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/fizzbuzz/","title":"FizzBuzz"},{"content":"Tour de Hanoï Bonjour !\nAujourd\u0026rsquo;hui, j\u0026rsquo;aimerais vous expliquer la \u0026ldquo;Tour de Hanoï\u0026rdquo;, à l\u0026rsquo;aide d\u0026rsquo;un exemple de programme en Python.\nQu\u0026rsquo;est-ce que la Tour de Hanoï ? La Tour de Hanoï est un puzzle qui utilise 3 tiges et plusieurs disques. Les disques sont de tailles différentes et, au début, ils sont empilés sur une tige par ordre décroissant de taille. Les règles sont les suivantes :\nUn seul disque peut être déplacé à la fois. Un grand disque ne peut pas être placé sur un petit disque. Ce puzzle est considéré comme un excellent matériel pédagogique pour apprendre la pensée récursive. La récursivité est une méthode de résolution d\u0026rsquo;un problème en le décomposant en problèmes plus petits du même type. Dans la Tour de Hanoï, pour déplacer n disques, nous répétons l\u0026rsquo;opération de déplacement de n-1 disques.\nRésolvons la Tour de Hanoï avec Python Voici un exemple de code pour résoudre la Tour de Hanoï en Python.\n1 2 3 4 5 6 7 8 9 10 def hanoi(n, source, target, auxiliary): if n == 1: print(f\u0026#34;Move disk 1 from {source} to {target}\u0026#34;) return hanoi(n - 1, source, auxiliary, target) print(f\u0026#34;Move disk {n} from {source} to {target}\u0026#34;) hanoi(n - 1, auxiliary, target, source) # Exemple : Déplacer 3 disques de A vers C hanoi(3, \u0026#39;A\u0026#39;, \u0026#39;C\u0026#39;, \u0026#39;B\u0026#39;) Dans ce code, la fonction hanoi est appelée de manière récursive, et les étapes pour déplacer les disques sont affichées. Par exemple, dans le cas de 3 disques, on obtient le résultat suivant :\n1 2 3 4 5 6 7 Move disk 1 from A to C Move disk 2 from A to B Move disk 1 from C to B Move disk 3 from A to C Move disk 1 from B to A Move disk 2 from B to C Move disk 1 from A to C De cette façon, en utilisant une approche récursive, les problèmes complexes peuvent être résolus simplement.\nCombien de temps faut-il pour déplacer 64 disques ? Le nombre de mouvements dans la Tour de Hanoï nécessite un minimum de 2^n - 1 fois. En d\u0026rsquo;autres termes, pour déplacer 64 disques, 2^64 - 1 mouvements, soit environ 1,84×10^19 mouvements sont nécessaires. Même si vous pouviez effectuer un mouvement par seconde, cela prendrait environ 584,9 milliards d\u0026rsquo;années. C\u0026rsquo;est environ 42 fois l\u0026rsquo;âge de l\u0026rsquo;univers (environ 13,7 milliards d\u0026rsquo;années).\nAinsi, au fur et à mesure que le nombre de disques augmente, le nombre de mouvements nécessaires augmente de manière exponentielle. Par conséquent, déplacer 64 disques dans la pratique n\u0026rsquo;est pas réaliste.\nRésumé La Tour de Hanoï est un puzzle parfait pour apprendre la pensée récursive. Avec Python, vous pouvez facilement implémenter sa solution. Cependant, soyez prudent, car au fur et à mesure que le nombre de disques augmente, le nombre de mouvements nécessaires augmente considérablement.\nEn comprenant l\u0026rsquo;approche récursive et en essayant d\u0026rsquo;écrire du code, vous pouvez améliorer vos compétences en programmation. N\u0026rsquo;hésitez pas à relever le défi de la Tour de Hanoï.\n","date":"2025-04-17T22:23:14+09:00","image":"http://kenji.blog/p/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94/img_hub916bf71b02b2ffc8b3c247adaa061ec_2314383_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/tour-de-hanoi/","title":"Tour de Hanoï"},{"content":"Nombre de Lignes de Code Source Bonjour !\nAujourd\u0026rsquo;hui, j\u0026rsquo;aimerais vous parler d\u0026rsquo;un sujet un peu différent.\nLe sujet est : \u0026ldquo;Dans quelle mesure le nombre de lignes de code source a-t-il augmenté par rapport au passé ?\u0026rdquo;\nPar exemple, le logiciel de la navette spatiale était composé d\u0026rsquo;environ 420 000 lignes de code. Ce code a été développé selon un processus très rigoureux pour répondre aux normes de qualité élevées de la NASA. D\u0026rsquo;autre part, dans les grands projets de logiciels modernes, il n\u0026rsquo;est pas rare que le nombre de lignes de code dépasse des dizaines de millions. Par exemple, on dit que la base de code de Google atteint environ 2 milliards de lignes.\nComme nous pouvons le voir, l\u0026rsquo;échelle des logiciels a augmenté avec le temps.\nMais attendez une minute.\nUne augmentation du nombre de lignes de code n\u0026rsquo;est pas nécessairement une mauvaise chose. Il est naturel que le code augmente pour ajouter de nouvelles fonctionnalités et répondre aux besoins des utilisateurs. Cependant, à mesure que le code augmente, le risque de bugs augmente également. En fait, certaines recherches montrent que les projets open source ont tendance à voir leur taux de bugs augmenter lorsqu\u0026rsquo;ils dépassent le million de lignes.\nCependant, tous les projets n\u0026rsquo;augmentent pas leur code de la même manière.\nPar exemple, le noyau Linux comptait environ 200 000 lignes dans la version 1.0 en 1994, mais a atteint environ 20 millions de lignes dans la version 4.2 en 2015. Cette augmentation est due à la nécessité de prendre en charge l\u0026rsquo;évolution du matériel et l\u0026rsquo;ajout de nouvelles fonctionnalités.\nPar conséquent, le nombre de lignes de code source varie considérablement en fonction de la taille et de l\u0026rsquo;objectif du projet, ainsi que du contexte de l\u0026rsquo;époque.\nL\u0026rsquo;augmentation des lignes de code en elle-même n\u0026rsquo;est pas un problème, mais elle nécessite une gestion appropriée pour maintenir la qualité et la maintenabilité. Il est important de comprendre les risques associés à la croissance du code et de prendre les mesures appropriées.\nEnfin, je pense qu\u0026rsquo;il est important de ne pas trop se focaliser sur les lignes de code, mais plutôt de privilégier l\u0026rsquo;objectif et la qualité du projet.\nEh bien, à la prochaine fois !\n","date":"2025-04-17T10:33:02+09:00","image":"http://kenji.blog/p/%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E8%A1%8C%E6%95%B0/img_1_hu5eec8f3e01b611d6fcced12ecef63fb0_956545_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/nombre-de-lignes-de-code-source/","title":"Nombre de Lignes de Code Source"},{"content":"\u0026ldquo;Principe de Kerckhoffs\u0026rdquo; Bonjour !\nAujourd\u0026rsquo;hui, j\u0026rsquo;aimerais parler de quelque chose d\u0026rsquo;un peu intéressant et, en fait, d\u0026rsquo;extrêmement important, appelé le \u0026ldquo;principe de Kerckhoffs\u0026rdquo;.\nAh, attendez, attendez.\nCertains d\u0026rsquo;entre vous pourraient penser : \u0026ldquo;Je n\u0026rsquo;ai jamais entendu parler du \u0026lsquo;principe de Kerckhoffs\u0026rsquo;, et ça a l\u0026rsquo;air un peu technique\u0026hellip;\u0026rdquo;. Ne vous inquiétez pas. Cet article est exactement ce que je veux que les personnes comme vous lisent.\nQue signifie \u0026ldquo;cryptographie sûre\u0026rdquo; ? Par exemple, supposons que quelqu\u0026rsquo;un dise : \u0026ldquo;Ce coffre-fort ne peut être ouvert que par quelqu\u0026rsquo;un qui connaît la méthode secrète pour l\u0026rsquo;ouvrir\u0026rdquo;.\nÀ première vue, cela semble très sûr, n\u0026rsquo;est-ce pas ?\nMais, si vous y réfléchissez, n\u0026rsquo;est-ce pas un peu inquiétant ?\nDu genre, \u0026ldquo;Si ce secret est découvert, c\u0026rsquo;est fini ?\u0026rdquo;.\nEn fait, c\u0026rsquo;est ce qui a déclenché l\u0026rsquo;apparition du principe de Kerckhoffs.\nQu\u0026rsquo;est-ce que le \u0026ldquo;principe de Kerckhoffs\u0026rdquo; au juste ? Pour le dire très simplement, c\u0026rsquo;est l\u0026rsquo;idée que\n\u0026ldquo;La cryptographie doit être sûre même si son fonctionnement est découvert.\u0026rdquo;\nPour être plus précis, \u0026ldquo;La sécurité ne doit reposer que sur la \u0026lsquo;clé secrète\u0026rsquo;, et la méthode de cryptographie elle-même peut être publique !\u0026rdquo;.\nÀ l\u0026rsquo;inverse, \u0026ldquo;Un état dans lequel l\u0026rsquo;algorithme (le mécanisme) de chiffrement est gardé secret est considéré comme peu fiable\u0026rdquo;.\n\u0026ldquo;Si le mécanisme est secret, c\u0026rsquo;est sûr\u0026rdquo; peut être un peu dangereux C\u0026rsquo;est une façon de penser courante :\n\u0026ldquo;Je n\u0026rsquo;ai montré l\u0026rsquo;intérieur de cette application à personne, donc la sécurité est bonne\u0026rdquo;\nJe comprends le sentiment.\nMais cela revient à dire : \u0026ldquo;Personne ne regarde, donc aucun point faible ne sera trouvé, n\u0026rsquo;est-ce pas ?\u0026rdquo;.\nEn réalité, le fait même que \u0026ldquo;personne ne regarde\u0026rdquo; peut devenir un risque.\nMais pourquoi ce principe est-il important ? Parce que, si quelqu\u0026rsquo;un met la main sur le mécanisme et peut facilement le déchiffrer, cette cryptographie est finie.\nPour utiliser une analogie, c\u0026rsquo;est comme si la serrure d\u0026rsquo;une porte avait un mécanisme très complexe, mais qu\u0026rsquo;elle pouvait en fait être ouverte avec une clé de rechange fabriquée dans un magasin à un dollar.\nCe n\u0026rsquo;est pas \u0026ldquo;La clé est secrète donc c\u0026rsquo;est bon\u0026rdquo;, mais \u0026ldquo;Même si vous montrez tout le mécanisme, il ne peut pas être ouvert sans la bonne clé\u0026rdquo; qui est important.\nLe sentiment de \u0026ldquo;Mais n\u0026rsquo;est-ce pas un peu effrayant ?\u0026rdquo; Ce que beaucoup de gens ressentent ici, c\u0026rsquo;est de l\u0026rsquo;anxiété :\n\u0026ldquo;N\u0026rsquo;est-ce pas un peu effrayant d\u0026rsquo;exposer tout le mécanisme ?\u0026rdquo;\nJe comprends.\nParce que vous vous dites : \u0026ldquo;Si je montre tout l\u0026rsquo;intérieur, ne sera-t-il pas imité ou utilisé à mauvais escient ?\u0026rdquo;.\nMais c\u0026rsquo;est exactement le cœur du principe de Kerckhoffs.\nLa \u0026ldquo;force qui ne s\u0026rsquo;effondre pas même quand on montre l\u0026rsquo;intérieur\u0026rdquo; est la véritable sécurité.\nCela dit, il faut un peu de courage au début Du point de vue du développeur, il semble que \u0026ldquo;publier le mécanisme = exposer ses faiblesses\u0026rdquo;, donc c\u0026rsquo;est bien sûr angoissant.\nMais pensez-y.\nQuelque chose que vous pouvez montrer correctement en disant : \u0026ldquo;N\u0026rsquo;importe qui peut vérifier\u0026rdquo;, finira par être plus fiable.\nC\u0026rsquo;est semblable aux relations humaines.\n\u0026ldquo;Une personne qui s\u0026rsquo;entend bien avec vous après avoir montré votre vrai moi\u0026rdquo; est finalement la plus rassurante.\nEn conclusion Le principe de Kerckhoffs peut sembler un peu théorique, mais son essence est très simple.\nIl s\u0026rsquo;agit simplement de \u0026ldquo;Créons un mécanisme qui ne se brisera pas, peu importe à qui vous le montrez.\u0026rdquo;\nUne conception appropriée plutôt que des secrets superficiels.\nUn code que vous n\u0026rsquo;avez pas honte de montrer, plutôt qu\u0026rsquo;un code que vous ne voulez montrer à personne.\nPeut-être que ce type de \u0026ldquo;force\u0026rdquo; sera de plus en plus nécessaire dans l\u0026rsquo;ère à venir.\nMerci beaucoup de m\u0026rsquo;avoir lu !\nLa sécurité est un sujet un peu difficile, mais certaines parties sont également liées aux \u0026ldquo;relations avec les personnes\u0026rdquo; et à la \u0026ldquo;tranquillité d\u0026rsquo;esprit quotidienne\u0026rdquo;.\nSi vous apprenez petit à petit sans vous sentir accablé, je suis sûr que de bonnes choses arriveront.\n","date":"2025-04-16T23:53:08+09:00","image":"http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_2_hu71b6c82ab9eb0ac0abd797e00918df90_2573611_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/principe-de-kerckhoffs/","title":"Principe de Kerckhoffs"},{"content":"🎯 Étapes pour exécuter PowerShell depuis C++ via une DLL C++/CLI (Visual Studio 2022 / C++) ✅ Architecture globale 🔹 ① DLL Wrapper CLI (C++/CLI) Fournit la fonctionnalité pour exécuter des scripts PowerShell.\n🔹 ② Appelant C++ Natif Appelle la DLL CLI pour exécuter le script PowerShell.\n🔧 Étape 1 : Création du projet DLL Wrapper CLI 1. Créer le projet [Créer un nouveau projet] → [C++] → Bibliothèque de classes CLR (.NET Framework) Nom : PowerShellWrapper 💡 Si ce modèle n\u0026rsquo;est pas affiché, installez la charge de travail \u0026ldquo;Développement de bureau .NET\u0026rdquo;.\n2. Ajouter le package NuGet Clic droit sur le projet → [Gérer les packages NuGet] Recherchez et installez System.Management.Automation\n(Version 5.x ou 7.x) 3. Implémentation du code côté CLI PowerShellWrapper.h 1 2 3 4 5 6 7 8 9 10 #pragma once using namespace System; namespace PowerShellWrapper { public ref class PowerShellExecutor { public: String^ Execute(String^ script); }; } PowerShellWrapper.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include \u0026#34;PowerShellWrapper.h\u0026#34; using namespace System; using namespace System::Management::Automation; using namespace System::Collections::ObjectModel; String^ PowerShellWrapper::PowerShellExecutor::Execute(String^ script) { PowerShell^ ps = PowerShell::Create(); ps-\u0026gt;AddScript(script); Collection\u0026lt;PSObject^\u0026gt;^ results = ps-\u0026gt;Invoke(); System::Text::StringBuilder^ sb = gcnew System::Text::StringBuilder(); for each (PSObject^ result in results) { sb-\u0026gt;AppendLine(result-\u0026gt;ToString()); } return sb-\u0026gt;ToString(); } 🔧 Étape 2 : Appel depuis le C++ natif 1. Création du projet d\u0026rsquo;application console C++ Nom : NativeApp 2. Configuration des références Clic droit sur le projet → [Ajouter] → [Référence] → Projets → Ajouter PowerShellWrapper [Propriétés de configuration] → [C/C++] → [Prise en charge du Common Language Runtime] → Remplacer par /clr 3. Code d\u0026rsquo;exécution (main.cpp) 1 2 3 4 5 6 7 8 9 10 11 12 13 #using \u0026lt;System.dll\u0026gt; #using \u0026#34;..\\\\PowerShellWrapper\\\\Debug\\\\PowerShellWrapper.dll\u0026#34; using namespace System; using namespace PowerShellWrapper; int main() { PowerShellExecutor^ executor = gcnew PowerShellExecutor(); String^ result = executor-\u0026gt;Execute(\u0026#34;Get-Process | Select-Object -First 1\u0026#34;); Console::WriteLine(result); return 0; } 💡 Informations complémentaires (IDL / TLB / Enregistrement COM) Cette configuration fait directement référence à la DLL .NET plutôt qu\u0026rsquo;à COM, donc l\u0026rsquo;enregistrement IDL, TLB ou COM n\u0026rsquo;est pas nécessaire . ✅ Structure finale 1 2 3 4 5 Solution ├── PowerShellWrapper (C++/CLI DLL) │ └── PowerShellExecutor ├── NativeApp (C++ EXE) └── main.cpp → Appel DLL ","date":"2025-04-16T01:58:03+09:00","image":"http://kenji.blog/p/c-%E3%81%8B%E3%82%89-powershell-%E3%82%92-c-cli-dll-%E7%B5%8C%E7%94%B1%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/img_hu7575b218a6ea53bc902a4f89abde2058_17844_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/c-%E3%81%8B%E3%82%89-powershell-%E3%82%92-c-cli-dll-%E7%B5%8C%E7%94%B1%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86/","title":"Étapes pour exécuter PowerShell depuis C++ via une DLL C++/CLI"},{"content":"【Windows】Comment vérifier l\u0026rsquo;état de la licence (1 commande suffit) Vous êtes-vous déjà demandé si votre licence Windows est correctement authentifiée ?\nDans ces moments-là, une méthode pour vérifier les informations de licence avec une seule commande est très pratique. Vous pouvez facilement vérifier l\u0026rsquo;état actuel de votre licence en exécutant simplement les étapes ci-dessous.\nCommande pour vérifier l\u0026rsquo;état de la licence Vous pouvez afficher les informations de votre licence en utilisant un outil de script intégré à Windows. La commande à utiliser est la suivante :\n1 slmgr /dli Lorsque vous exécutez cette commande, certaines informations sur la licence s\u0026rsquo;afficheront dans une fenêtre.\nMéthode d\u0026rsquo;exécution Depuis le « Menu Démarrer », tapez « cmd », faites un clic droit sur Invite de commandes → « Exécuter en tant qu\u0026rsquo;administrateur » .\nTapez ce qui suit dans l\u0026rsquo;invite de commandes et appuyez sur Entrée :\n1 slmgr /dli Après avoir attendu quelques secondes, des informations de licence telles que les suivantes s\u0026rsquo;afficheront.\nPrincipales informations affichées Une partie de la clé de produit Type de licence (Détail, OEM, etc.) État de la licence (Active, expirée, non authentifiée, etc.) Et si vous souhaitez connaître des informations plus détaillées ? Il existe également des commandes telles que les suivantes :\nslmgr /dlv : Affiche des informations de licence plus détaillées slmgr /xpr : Affiche la date d\u0026rsquo;expiration de la licence (si elle est permanente, etc.) Résumé L\u0026rsquo;état de la licence Windows peut être facilement vérifié avec une seule commande.\nVérification simple : slmgr /dli Vérification détaillée : slmgr /dlv Vérification de la date d\u0026rsquo;expiration : slmgr /xpr S\u0026rsquo;il y a un problème avec votre licence, il peut y avoir des restrictions sur les mises à jour et certaines fonctionnalités, il est donc sûr de la vérifier régulièrement.\n","date":"2025-04-14T00:41:45+09:00","image":"http://kenji.blog/p/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img_1_hudcf97514836ad006a409bb9b34fbe340_111425_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/windows-%E3%81%AE%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E7%8A%B6%E6%85%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/","title":"Commande pour vérifier l'état de la licence de Windows"},{"content":"Paramètres de conversion ffmpeg optimisés pour iOS Voici la commande ffmpeg pour convertir des vidéos afin qu\u0026rsquo;elles puissent être lues de manière fluide sur les appareils iOS (iPhone et iPad).\n1 2 3 4 5 6 ffmpeg -i input.mp4 \\ -c:v libx264 -profile:v high -level 4.1 \\ -vf \u0026#34;scale=1920:-2\u0026#34; -r 30 \\ -crf 20 -preset slow \\ -c:a aac -b:a 128k -ar 48000 \\ -movflags +faststart output.mp4 Signification de chaque option (explication brève) Option Description -i input.mp4 Fichier d\u0026rsquo;entrée (vidéo à convertir) -c:v libx264 Encodage vidéo avec H.264 (compatible iOS) -profile:v high -level 4.1 Profil et niveau largement compatibles avec iOS -vf \u0026quot;scale=1920:-2\u0026quot; Redimensionnement à 1920 px de large, la hauteur est ajustée automatiquement en conservant le ratio -r 30 Conversion à une fréquence d\u0026rsquo;images de 30 fps -crf 20 Qualité vidéo (des valeurs plus faibles signifient une meilleure qualité, recommandé 18–23) -preset slow Équilibre entre la vitesse d\u0026rsquo;encodage et le taux de compression (slow signifie haute compression et haute qualité) -c:a aac L\u0026rsquo;audio est encodé au format AAC -b:a 128k Définir le débit binaire audio à 128 kbps -ar 48000 Définir le taux d\u0026rsquo;échantillonnage audio à 48 kHz (recommandé pour iOS) -movflags +faststart Place un index au début de la vidéo pour accélérer la lecture en streaming sur le Web et iOS Les vidéos converties avec ces paramètres devraient offrir une grande compatibilité et une lecture fluide sur les appareils Apple tels que l\u0026rsquo;iPhone et l\u0026rsquo;iPad.\nSi nécessaire, vous pouvez ajuster la taille du fichier et la qualité de l\u0026rsquo;image en modifiant la résolution et le débit binaire. Si une haute qualité d\u0026rsquo;image est requise, essayez de définir -crf autour de 18 ; si vous souhaitez réduire la taille du fichier, définissez-le entre 22 et 25.\n","date":"2025-03-02T04:16:07+09:00","image":"http://kenji.blog/p/ios-%E5%90%91%E3%81%91%E3%81%AE-ffmpeg-%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF/img_hu6ca6c354dba8425c4a9e54b9842ad89b_30790_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/ios-%E5%90%91%E3%81%91%E3%81%AE-ffmpeg-%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF/","title":"Paramètres ffmpeg pour iOS"},{"content":"Procédure de Restauration pour les Appareils Android (Google Pixel) Si votre appareil Google Pixel rencontre de graves problèmes système tels que des \u0026ldquo;redémarrages en boucle (bootloop)\u0026rdquo;, un \u0026ldquo;blocage sur l\u0026rsquo;écran du logo\u0026rdquo; ou un \u0026ldquo;fonctionnement extrêmement instable\u0026rdquo;, vous pouvez réparer (restaurer) le logiciel de l\u0026rsquo;appareil de manière sécurisée via votre navigateur en utilisant l\u0026rsquo;outil officiel \u0026ldquo;Pixel Update and Software Repair\u0026rdquo; fourni par Google.\nDans cet article, nous expliquerons en détail les procédures spécifiques et les points d\u0026rsquo;attention.\n1. Accéder à l\u0026rsquo;outil de restauration Tout d\u0026rsquo;abord, depuis le navigateur de votre PC (Windows ou Mac) (Google Chrome ou Microsoft Edge recommandé), accédez à la page officielle de l\u0026rsquo;outil de réparation suivante :\n🔗 Site officiel Pixel Update and Software Repair\n※ Attention ※ Lors de l\u0026rsquo;exécution du processus de restauration, les données de l\u0026rsquo;appareil (photos, applications, contacts, etc.) peuvent être entièrement effacées (réinitialisées) . Si l\u0026rsquo;appareil est encore utilisable, assurez-vous d\u0026rsquo;effectuer une sauvegarde sur Google Drive ou autre au préalable.\n2. Préparation avant la restauration Pour que le processus se déroule sans problème, préparez les éléments suivants :\nChargement de la batterie Si l\u0026rsquo;appareil s\u0026rsquo;éteint en cours de processus, il risque de se briquer (devenir complètement inutilisable). Assurez-vous d\u0026rsquo;avoir au moins 50 % de batterie, voire une charge complète. Utilisation du câble USB d\u0026rsquo;origine Pour assurer un transfert de données stable, il est fortement recommandé d\u0026rsquo;utiliser le câble USB-C d\u0026rsquo;origine fourni avec l\u0026rsquo;appareil. Installation des pilotes (si nécessaire) Si vous utilisez un PC Windows, l\u0026rsquo;appareil peut ne pas être reconnu correctement. Dans ce cas, veuillez installer les Pilotes USB Google. 3. Étapes de restauration spécifiques Une fois prêt, suivez les instructions à l\u0026rsquo;écran pour procéder à la restauration.\nÉtape 1 : Sélection de l\u0026rsquo;opérateur et connexion de l\u0026rsquo;appareil Lors de l\u0026rsquo;ouverture du site, un écran de sélection de l\u0026rsquo;opérateur de téléphonie mobile s\u0026rsquo;affiche en premier. S\u0026rsquo;il s\u0026rsquo;agit d\u0026rsquo;un appareil débloqué ou sans restriction d\u0026rsquo;opérateur, sélectionnez \u0026ldquo;Autre (Other)\u0026rdquo;, etc. Ensuite, connectez le PC et l\u0026rsquo;appareil Pixel à l\u0026rsquo;aide d\u0026rsquo;un câble USB.\nÉtape 2 : Mettre l\u0026rsquo;appareil en \u0026ldquo;Mode de Secours (Mode Fastboot)\u0026rdquo; Suivez les instructions à l\u0026rsquo;écran, et avec l\u0026rsquo;appareil éteint, maintenez enfoncés simultanément le bouton d\u0026rsquo;alimentation et le bouton de réduction du volume pour lancer le mode Fastboot (un écran noir avec un robot Android couché).\nÉtape 3 : Faire reconnaître l\u0026rsquo;appareil par le PC En cliquant sur le bouton \u0026ldquo;Connecter l\u0026rsquo;appareil\u0026rdquo; dans le navigateur, une fenêtre pop-up s\u0026rsquo;ouvrira avec la liste des appareils Pixel connectés. Sélectionnez l\u0026rsquo;appareil cible et autorisez la connexion.\nÉtape 4 : Téléchargement et installation du logiciel Une fois l\u0026rsquo;appareil reconnu, la version optimale du système d\u0026rsquo;exploitation Android (firmware) sera automatiquement sélectionnée. En cliquant sur \u0026ldquo;Installer\u0026rdquo;, le logiciel sera téléchargé sur le PC, et l\u0026rsquo;écriture (flash) sur l\u0026rsquo;appareil commencera.\n⚠️ Avertissement : Pendant ce processus, ne débranchez jamais le câble USB et n\u0026rsquo;éteignez pas le PC.\nÉtape 5 : Achèvement et configuration initiale Lorsque la barre de progression atteint 100 % et que le message \u0026ldquo;Terminé\u0026rdquo; s\u0026rsquo;affiche, la restauration est réussie. L\u0026rsquo;appareil redémarrera automatiquement et l\u0026rsquo;écran de configuration initiale (l\u0026rsquo;écran \u0026ldquo;Bonjour\u0026rdquo;), identique à celui de l\u0026rsquo;achat, s\u0026rsquo;affichera.\nRésumé L\u0026rsquo;outil de réparation officiel du Google Pixel est un excellent outil qui vous permet de flasher des firmwares en toute sécurité par de simples clics dans un navigateur, sans avoir à exécuter directement des commandes spéciales (adb ou fastboot).\nAvant d\u0026rsquo;apporter votre appareil dans une boutique en raison d\u0026rsquo;un dysfonctionnement, essayer cette procédure peut facilement résoudre le problème. N\u0026rsquo;hésitez pas à l\u0026rsquo;essayer.\n","date":"2025-02-28T01:20:41+09:00","image":"http://kenji.blog/p/androidgoogle-pixel%E7%AB%AF%E6%9C%AB%E3%81%AE%E5%BE%A9%E5%85%83%E6%89%8B%E9%A0%86/pixel_restore_eyecatch_1788588727945_hu9d405d830ed3e56e9e703ab601cf6c0a_776052_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/androidgoogle-pixel%E7%AB%AF%E6%9C%AB%E3%81%AE%E5%BE%A9%E5%85%83%E6%89%8B%E9%A0%86/","title":"Procédure de Restauration Logicielle (Initialisation/Réparation) pour les Appareils Android (Google Pixel)"},{"content":"Envoyer un Gmail avec curl 1. Obtenir un mot de passe d\u0026rsquo;application https://myaccount.google.com/apppasswords Cliquez sur le lien ci-dessus et entrez le nom de l\u0026rsquo;application. Enregistrez le mot de passe généré.\n2. Envoyer un e-mail avec la commande curl Exécutez la commande suivante.\nDans l\u0026rsquo;exemple ci-dessous, le contenu de l\u0026rsquo;e-mail est écrit dans mail.txt.\n1 2 3 4 5 6 From: from@gmail.com To: to@gmail.com Subject: E-mail de test Content-Type: text/plain; charset=\u0026#34;UTF-8\u0026#34; Ceci est un e-mail de test. Créez le fichier ci-dessus et exécutez la commande suivante.\n1 curl --url \u0026#34;smtps://smtp.gmail.com:465\u0026#34; --ssl-reqd --mail-from \u0026#34;from@gmail.com\u0026#34; --mail-rcpt \u0026#34;to@gmail.com\u0026#34; --user \u0026#34;from@gmail.com:xxxxxxxxxxxxxxxx\u0026#34; --upload-file mail.txt ※ Veuillez remplacer xxxxxxxxxxxxxxxx par votre mot de passe d\u0026rsquo;application.\n","date":"2025-02-27T02:13:31+09:00","image":"http://kenji.blog/p/gmail%E3%82%92curl%E3%81%8B%E3%82%89%E9%80%81%E3%82%8B/img_hua1028a8ea194106f3853f4bdf4e1e991_75790_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/envoyer-un-gmail-avec-curl/","title":"Envoyer un Gmail avec curl"},{"content":"Présentation d\u0026rsquo;exemples de code utilisant la bibliothèque standard.\nTélécharger et afficher une image 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import urllib.request import tempfile import os import webbrowser import time url = \u0026#34;https://www.aomori-ringo.or.jp/kids/wp-content/uploads/2021/11/apple.png\u0026#34; try: with urllib.request.urlopen(url) as response: img_data = response.read() # Enregistrer dans un fichier temporaire et afficher with tempfile.NamedTemporaryFile(delete=False, suffix=\u0026#34;.png\u0026#34;) as tmp: tmp.write(img_data) print(f\u0026#34;file://{tmp.name}\u0026#34;) webbrowser.open(f\u0026#34;file://{tmp.name}\u0026#34;) time.sleep(3) except Exception as e: print(f\u0026#34;Une erreur s\u0026#39;est produite : {e}\u0026#34;) finally: if \u0026#39;tmp\u0026#39; in locals(): os.unlink(tmp.name) # Supprimer le fichier temporaire ","date":"2025-02-24T18:21:14+09:00","image":"http://kenji.blog/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/img_hu6807d8c9816a78d77990562cff91e319_70806_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/","title":"Extraits de code Python"},{"content":"Appeler l\u0026rsquo;API ChatGPT depuis curl Il est supposé que l\u0026rsquo;appel est effectué depuis l\u0026rsquo;invite de commande Windows.\n1 2 curl https://api.openai.com/v1/chat/completions -H \u0026#34;Content-Type: application/json\u0026#34; -H \u0026#34;Authorization: Bearer sk-proj-XXXXXXXXXXXXXXXXXXXX\u0026#34; -d \u0026#34;{\u0026#34;\u0026#34;model\u0026#34;\u0026#34;: \u0026#34;\u0026#34;gpt-3.5-turbo\u0026#34;\u0026#34;,\u0026#34;\u0026#34;messages\u0026#34;\u0026#34;: [{\u0026#34;\u0026#34;role\u0026#34;\u0026#34;: \u0026#34;\u0026#34;system\u0026#34;\u0026#34;, \u0026#34;\u0026#34;content\u0026#34;\u0026#34;: \u0026#34;\u0026#34;Veuillez répondre dans le dialecte du Kansai.\u0026#34;\u0026#34;}, {\u0026#34;\u0026#34;role\u0026#34;\u0026#34;: \u0026#34;\u0026#34;user\u0026#34;\u0026#34;, \u0026#34;\u0026#34;content\u0026#34;\u0026#34;: \u0026#34;\u0026#34;Insérez le message que vous souhaitez envoyer ici\u0026#34;\u0026#34;}]}\u0026#34; ","date":"2025-02-01T17:15:34+09:00","image":"http://kenji.blog/p/chatgpt-api%E3%82%92curl%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/img_huc9cfad0a382aa812189dd7635d7709f2_1078030_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/chatgpt-api%E3%82%92curl%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/","title":"Appeler l'API ChatGPT depuis curl"},{"content":"Résumé des Actions à Haut Dividende Mitsubishi UFJ Financial Group (8306) Sumitomo Mitsui Financial Group (8316) Mitsubishi Corporation (8058) Itochu Corporation (8001) NTT (9432) KDDI (9433) Okinawa Cellular Telephone (9436) Tokio Marine Holdings (8766) Toyota Motor (7203) Yamaha Motor (7272) Asahi Group Holdings (2502) Kirin Holdings (2503) JT (2914) Bridgestone (5108) Daiwa House Industry (1925) Sekisui House (1928) Kyocera (6971) Shin-Etsu Chemical (4063) Nitto Denko (6988) Orix (8591) Mitsubishi HC Capital (8593) Hulic (3003) ","date":"2024-12-22T00:56:14+09:00","image":"http://kenji.blog/p/%E9%AB%98%E9%85%8D%E5%BD%93%E6%A0%AA%E3%81%BE%E3%81%A8%E3%82%81/img_huf2943e4fc5463d0d6e36ddd1be1ac839_1663544_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E9%AB%98%E9%85%8D%E5%BD%93%E6%A0%AA%E3%81%BE%E3%81%A8%E3%82%81/","title":"Résumé des Actions à Haut Dividende"},{"content":"Objectifs à long terme Dans 1 an Lancer l\u0026rsquo;entreprise Créer un site web et lancer un logiciel (gratuit) Dans 2 ans Chiffre d\u0026rsquo;affaires annuel de 10 millions de yens Publier un livre Lancer un logiciel (payant) Dans 3 ans Chiffre d\u0026rsquo;affaires annuel de 100 millions de yens Dans 5 ans Chiffre d\u0026rsquo;affaires annuel de 1 milliard de yens Dans 10 ans Chiffre d\u0026rsquo;affaires annuel de 10 milliards de yens Objectifs à court terme Dans 1 mois Rédiger un plan d\u0026rsquo;affaires Dans 3 mois Lever des fonds pour lancer l\u0026rsquo;entreprise (environ 5 millions de yens) Dans 6 mois Lancer l\u0026rsquo;entreprise Dans 1 an Mettre l\u0026rsquo;entreprise sur la bonne voie Tâches récentes Clarification des objectifs et de la vision\nObjectif: Pourquoi créer le logiciel ? Exemple: Résoudre un problème, apporter une nouvelle valeur, cibler un marché de niche spécifique, etc. Vision: Quel type d\u0026rsquo;avenir souhaitez-vous réaliser avec le logiciel ? Exemple: Efficacité commerciale, confort au quotidien, amélioration de la qualité de l\u0026rsquo;éducation, etc. Étude de marché et analyse des besoins\nPublic cible: Qui utilisera le logiciel ? Précisez la tranche d\u0026rsquo;âge, la profession, les intérêts, etc. Analyse de la concurrence: Y a-t-il des concurrents dans le même domaine ? Analysez leurs forces et faiblesses. Identification des besoins: Comprendre les problèmes non résolus et les demandes du public cible. Conception et fonctionnalités du logiciel\nFonctionnalités de base: Listez les fonctionnalités essentielles. Exemple: authentification des utilisateurs, stockage de données, fonctions d\u0026rsquo;analyse, etc. Points de différenciation: Clarifiez ce qui le rend unique par rapport aux produits d\u0026rsquo;autres entreprises. Exemple: interface utilisateur simple, utilisation de l\u0026rsquo;IA, haut niveau de personnalisation. Spécifications techniques: Langage de programmation à utiliser, framework, base de données, etc. Plan de développement et allocation des ressources\nCalendrier de développement: Définissez un calendrier pour chaque étape du projet. Exemple: développement de prototypes, tests, lancement officiel. Composition de l\u0026rsquo;équipe: Talents et compétences requis (programmeur, concepteur, spécialiste du marketing, etc.). Budget: Estimez les coûts de développement, de marketing et d\u0026rsquo;exploitation. Marketing et modèle de revenus\nMéthodes de promotion: Utilisez les réseaux sociaux, les sites web, les publicités, etc. pour accroître la notoriété. Stratégie de monétisation: Envisagez des options telles que la version gratuite + payante, l\u0026rsquo;abonnement mensuel, les revenus publicitaires, etc. Stratégie d\u0026rsquo;acquisition d\u0026rsquo;utilisateurs: Proposez des essais gratuits, encouragez le bouche-à-oreille, créez une communauté d\u0026rsquo;utilisateurs, etc. Opération et mise à l\u0026rsquo;échelle\nOpération après le lancement: Collecte des retours des utilisateurs, correction des bugs, ajout de nouvelles fonctionnalités. Stratégie de croissance: Planifiez la manière d\u0026rsquo;augmenter le nombre d\u0026rsquo;utilisateurs, de vous développer dans d\u0026rsquo;autres pays et de développer de nouvelles fonctionnalités. Gestion des risques: Préparez des contre-mesures pour les problèmes juridiques et techniques. ","date":"2024-12-08T03:32:34+09:00","image":"http://kenji.blog/p/%E7%9B%AE%E6%A8%99/img_huc6a3627da74a1082cbdd433fea41830c_4007614_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/objectifs/","title":"Objectifs"},{"content":"Récemment, je me suis intéressé aux produits en cuir et j\u0026rsquo;ai acheté divers articles. Ce faisant, mon intérêt pour l\u0026rsquo;entretien des produits en cuir a également grandi, et j\u0026rsquo;ai préparé quelques articles liés à vous présenter.\nProduits d\u0026rsquo;Entretien du Cuir Achetés Récemment M.MOWBRAY DELICATE CREAM Prix : environ 1 320 yens\nCette crème apporte nutrition, hydratation et effet de souplesse. Elle ne donne pas de brillance, mais convient au cuir qui a besoin de beaucoup d\u0026rsquo;humidité et d\u0026rsquo;hydratation. L\u0026rsquo;odeur n\u0026rsquo;est pas désagréable, mais elle a une légère senteur. Comme elle est incolore, je pense qu\u0026rsquo;elle est très polyvalente. Étant donné que c\u0026rsquo;est une crème plutôt fluide, il peut être bon d\u0026rsquo;en utiliser un peu plus par rapport à d\u0026rsquo;autres crèmes.\nCollonil 1909 Supreme Creme de Luxe Prix : environ 1 777 yens\nUne crème célèbre, standard et polyvalente qui ne tache pas facilement. C\u0026rsquo;est une crème qui restaure la couleur du cuir et le garde hydraté. Elle donne un peu de brillance. Étant blanche, on peut également s\u0026rsquo;attendre à un effet hydrofuge.\nM.MOWBRAY SHOE CREAM (Noir) Prix : environ 1 000 yens\nCrème pour chaussures. Contient de la cire, de l\u0026rsquo;huile et des solvants organiques. Restaure la couleur du cuir et donne de la brillance. Étant noire, elle s\u0026rsquo;applique sur le cuir noir. Je l\u0026rsquo;utilise pour mes chaussures de costume.\nM.MOWBRAY STAIN REMOVER Prix : environ 700 yens\nC\u0026rsquo;est un produit qui était inclus lorsque j\u0026rsquo;ai acheté une brosse. Nettoyant à base d\u0026rsquo;eau pour chaussures. Enlève la saleté du cuir. En imbibant généreusement un chiffon et en frottant doucement le cuir, la saleté est éliminée.\n","date":"2024-10-30T00:31:46+09:00","image":"http://kenji.blog/p/%E9%9D%A9%E8%A3%BD%E5%93%81%E3%81%AE%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9/img_hu3ddba03af9cef883a82321d0a762e708_211817_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/entretien-des-produits-en-cuir/","title":"Entretien des Produits en Cuir"},{"content":"Bonjour ! Aujourd\u0026rsquo;hui, nous parlons du \u0026ldquo;Rasoir de Hanlon\u0026rdquo; Aujourd\u0026rsquo;hui, j\u0026rsquo;aimerais écrire sur une façon de penser au nom un peu particulier appelée \u0026ldquo;Le Rasoir de Hanlon\u0026rdquo;. Rien qu\u0026rsquo;en entendant le nom, vous pourriez vous dire : \u0026ldquo;Ça a l\u0026rsquo;air effrayant\u0026hellip; ?\u0026rdquo;, mais en réalité, c\u0026rsquo;est une idée qui offre une perspective très familière et bienveillante.\nAvez-vous déjà pensé : \u0026ldquo;Je crois que cette personne ne m\u0026rsquo;aime pas\u0026hellip;\u0026rdquo; ? Par exemple, avez-vous déjà vécu cela ?\nUne réponse tardive sur WhatsApp ou Line Nos regards se sont croisés, mais la personne ne m\u0026rsquo;a pas salué Ma demande a été ignorée Dans ces moments-là, on s\u0026rsquo;inquiète en se disant : \u0026ldquo;Est-ce qu\u0026rsquo;on me déteste ?\u0026rdquo;. Ça m\u0026rsquo;arrive souvent aussi. Et je finis par me déprimer tout seul.\nQu\u0026rsquo;est-ce que le Rasoir de Hanlon ? C\u0026rsquo;est là qu\u0026rsquo;intervient \u0026ldquo;Le Rasoir de Hanlon\u0026rdquo;.\nL\u0026rsquo;expression originale en anglais est \u0026ldquo;Hanlon\u0026rsquo;s Razor\u0026rdquo;. La signification générale est la suivante :\n\u0026ldquo;Ne jamais attribuer à la malveillance ce qui s\u0026rsquo;explique adéquatement par la bêtise.\u0026rdquo;\n\u0026hellip;C\u0026rsquo;est une façon un peu abrupte de le dire, n\u0026rsquo;est-ce pas ? Pour le dire un peu plus doucement :\n\u0026ldquo;Même si on a l\u0026rsquo;impression que l\u0026rsquo;autre personne est méchante, il peut s\u0026rsquo;agir d\u0026rsquo;une simple maladresse ou d\u0026rsquo;une inattention.\u0026rdquo;\nC\u0026rsquo;est l\u0026rsquo;idée.\nQui l\u0026rsquo;a inventé ? Qui est Robert J. Hanlon ? On dit que ce terme est apparu pour la première fois dans le livre \u0026ldquo;Murphy\u0026rsquo;s Law Book Two\u0026rdquo;, publié en 1980.\nL\u0026rsquo;idée soumise par l\u0026rsquo;un des auteurs, Robert J. Hanlon , a été utilisée telle quelle, ce qui lui a valu le nom de \u0026ldquo;Rasoir de Hanlon\u0026rdquo;.\nÀ propos, ce terme de \u0026ldquo;Rasoir\u0026rdquo; (Razor) est utilisé dans le sens d\u0026rsquo;un outil philosophique pour \u0026ldquo;éliminer l\u0026rsquo;inutile et penser simplement\u0026rdquo;, et c\u0026rsquo;est une expression employée pour organiser les pensées, tout comme le rasoir d\u0026rsquo;Ockham et d\u0026rsquo;autres.\nPenser qu\u0026rsquo;il \u0026ldquo;y avait une mauvaise intention\u0026rdquo; nous épuise Par exemple, quand un e-mail est ignoré au travail.\nSi vous vous dites : \u0026ldquo;Pourquoi on ne me répond pas ? Est-ce qu\u0026rsquo;on me déteste ?\u0026rdquo;, vous devenez de plus en plus négatif.\nMais, en y réfléchissant bien :\nLa personne l\u0026rsquo;a tout simplement manqué par hasard Elle a écrit la réponse mais a oublié de l\u0026rsquo;envoyer La notification sur le téléphone a été noyée sous d\u0026rsquo;autres Des raisons comme celles-ci sont étonnamment courantes. Et nous faisons aussi ce genre d\u0026rsquo;erreurs nous-mêmes.\nC\u0026rsquo;est étrange comme nous sommes indulgents avec nos propres erreurs, mais sévères avec celles des autres Par exemple, lorsque nous oublions de répondre au message d\u0026rsquo;un ami.\nNous répondons sur un ton sans aucune malveillance : \u0026ldquo;Ah, désolé ! Je n\u0026rsquo;avais pas vu la notification~\u0026rdquo;.\nMais quand l\u0026rsquo;autre personne nous fait la même chose, nous pensons : \u0026ldquo;J\u0026rsquo;ai été ignoré\u0026rdquo;.\nC\u0026rsquo;est très courant. Les gens sont très compréhensifs envers leurs propres circonstances, mais ont du mal à voir celles des autres.\nCroire qu\u0026rsquo;il y a \u0026ldquo;de la mauvaise intention\u0026rdquo; est en fait une perte pour soi Quand quelqu\u0026rsquo;un fait quelque chose, si vous supposez \u0026ldquo;qu\u0026rsquo;il y a une mauvaise intention\u0026rdquo;, vous transformez cette personne en ennemie dans votre esprit.\nMais en réalité, elle pourrait juste être maladroite ou débordée par d\u0026rsquo;autres choses.\nBien sûr, il y a des gens vraiment impolis, et il est naturel de se sentir blessé si on est maltraité.\nMais ne pas supposer que \u0026ldquo;c\u0026rsquo;est sûrement de la malveillance\u0026rdquo; rendra votre propre cœur un peu plus léger.\nCela dit, ça ne veut pas dire qu\u0026rsquo;il faut tout supporter Ce que je ne veux pas que vous compreniez mal ici, c\u0026rsquo;est que je ne dis pas que \u0026ldquo;c\u0026rsquo;est juste vous qui vous inquiétez trop\u0026rdquo;.\nQuand on vous fait une crasse, vous avez le droit de penser : \u0026ldquo;C\u0026rsquo;était vraiment méchant\u0026rdquo;.\nCependant, au lieu de supposer que \u0026ldquo;cette personne a une mauvaise personnalité\u0026rdquo; ou \u0026ldquo;qu\u0026rsquo;elle a fait exprès de me blesser\u0026rdquo;,\nma proposition est d\u0026rsquo;avoir un peu de souplesse et de se dire : \u0026ldquo;Peut-être qu\u0026rsquo;elle avait ses raisons\u0026rdquo;.\nEn conclusion : Regarder les choses avec un peu plus de bienveillance peut changer votre monde Je crois que le Rasoir de Hanlon, c\u0026rsquo;est moins \u0026ldquo;être gentil avec les autres\u0026rdquo; qu\u0026rsquo;une \u0026ldquo;façon de protéger son propre cœur\u0026rdquo;.\nQuand vous ressentez de la malveillance dans les actes des gens, vos propres sentiments se tendent.\nMais si vous arrivez à penser : \u0026ldquo;C\u0026rsquo;était probablement juste une erreur, ou ils n\u0026rsquo;avaient pas le temps\u0026rdquo;, vous vous sentirez un peu mieux.\nC\u0026rsquo;est une façon de penser que vous pouvez utiliser pour votre propre bien.\nPour finir : S\u0026rsquo;il vous plaît, partagez aussi votre expérience Merci beaucoup d\u0026rsquo;avoir lu jusqu\u0026rsquo;ici.\nSi vous avez une histoire du genre \u0026ldquo;je me suis senti contrarié dans ce genre de moment\u0026rdquo;, n\u0026rsquo;hésitez pas à me la raconter.\nLe simple fait de mettre des mots sur son expérience peut aider à se sentir un peu soulagé, n\u0026rsquo;est-ce pas ?\nÀ la prochaine !\n","date":"2024-09-24T18:14:34+09:00","image":"http://kenji.blog/p/%E3%83%8F%E3%83%B3%E3%83%AD%E3%83%B3%E3%81%AE%E5%89%83%E5%88%80/img_hu0c32762ee7cb281fb24d789425dae55e_82924_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/le-rasoir-de-hanlon/","title":"Le Rasoir de Hanlon"},{"content":"Connaissances de Base sur les Ordinateurs Cette page explique ce qu\u0026rsquo;est un ordinateur.\nDéfinition d\u0026rsquo;un ordinateur Un ordinateur est une machine composée des 5 unités suivantes :\nPériphérique d\u0026rsquo;entrée Périphérique de sortie Périphérique de stockage Unité de contrôle Unité arithmétique et logique En gros, un ordinateur est une machine qui effectue un traitement spécifique pour une entrée donnée et produit le résultat. Il peut stocker les données saisies, effectuer des opérations et produire des sorties. Le contrôle a pour rôle de contrôler les 4 unités mentionnées ci-dessus.\nCe qui est nécessaire pour faire fonctionner un ordinateur Pour faire fonctionner un ordinateur, des programmes (logiciels) sont nécessaires en plus des dispositifs (matériel).\nDans un programme, nous indiquons à l\u0026rsquo;ordinateur le type de traitement à effectuer. Les programmes sont écrits dans un format que l\u0026rsquo;ordinateur peut comprendre.\nUn exemple de programme est présenté ci-dessous : Un programme qui calcule la somme de 1 à un entier saisi.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include \u0026lt;iostream\u0026gt; using namespace std; int main() { // Allocation de l\u0026#39;espace mémoire nécessaire int n, sum = 0; // Sortie cout \u0026lt;\u0026lt; \u0026#34;Veuillez entrer un entier : \u0026#34;; // Entrée cin \u0026gt;\u0026gt; n; // Opération for (int i = 1; i \u0026lt;= n; i++) { // Opération sum += i; } // Sortie cout \u0026lt;\u0026lt; \u0026#34;La somme de 1 à \u0026#34; \u0026lt;\u0026lt; n \u0026lt;\u0026lt; \u0026#34; est \u0026#34; \u0026lt;\u0026lt; sum \u0026lt;\u0026lt; \u0026#34;.\u0026#34; \u0026lt;\u0026lt; endl; // Fin return 0; } Le programme est converti en code machine par un compilateur, dans un format que l\u0026rsquo;ordinateur peut exécuter.\n","date":"2024-09-19T01:10:20+09:00","image":"http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9F%A5%E8%AD%98/img_hubc9c51905d797e9d57f0ff169cf73b36_367819_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9F%A5%E8%AD%98/","title":"Connaissances de Base sur les Ordinateurs"},{"content":"Applications iOS recommandées X Instagram facebook youtube TikTok Microsoft Edge Firefox Google Chrome ChatGPT LINE Microsoft Teams Notion Goodnotes 6 TeamViewer DropBox GitHub Amazon PayPay WolframAlpha Mercari ","date":"2024-09-18T23:31:20+09:00","image":"http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81ios%E3%82%A2%E3%83%97%E3%83%AA/img_huad2df38b51218b64bee99f031553dd91_79847_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/applications-ios-recommandees/","title":"Applications iOS recommandées"},{"content":"Le vieux couple, l\u0026rsquo;âne et notre problème de \u0026ldquo;qui écouter\u0026rdquo; Bonjour !\nAujourd\u0026rsquo;hui, je veux parler de quelque chose qui m\u0026rsquo;a fait réfléchir après avoir entendu \u0026ldquo;L\u0026rsquo;histoire du vieux couple et de l\u0026rsquo;âne\u0026rdquo;.\nJe suis sûr que beaucoup d\u0026rsquo;entre vous l\u0026rsquo;ont déjà entendue. C\u0026rsquo;est l\u0026rsquo;une de ces célèbres fables.\nQu\u0026rsquo;est-ce que \u0026ldquo;L\u0026rsquo;histoire du vieux couple et de l\u0026rsquo;âne\u0026rdquo; ? Il était une fois, un vieux couple et un âne.\nAu début, le vieil homme était monté sur l\u0026rsquo;âne et sa femme marchait. Puis, quelqu\u0026rsquo;un qui passait par là a dit :\n\u0026ldquo;Quel homme, faire marcher sa vieille femme pendant qu\u0026rsquo;il monte !\u0026rdquo;\nEn entendant cela, le couple a décidé que la femme devait monter sur l\u0026rsquo;âne. Ensuite, une autre personne a dit :\n\u0026ldquo;C\u0026rsquo;est scandaleux qu\u0026rsquo;une femme monte sur l\u0026rsquo;âne et laisse l\u0026rsquo;homme marcher !\u0026rdquo;\nAlors, ils ont décidé qu\u0026rsquo;ils devaient tous les deux monter sur l\u0026rsquo;âne. Puis ils ont entendu :\n\u0026ldquo;Pauvre âne, c\u0026rsquo;est beaucoup trop lourd avec deux personnes !\u0026rdquo;\nSi c\u0026rsquo;est ainsi, les deux sont descendus de l\u0026rsquo;âne et ont commencé à marcher. Mais ensuite\u0026hellip;\n\u0026ldquo;Pourquoi personne ne monte alors que vous avez un âne ?\u0026rdquo;\nÀ la fin, le couple était complètement perdu.\n\u0026ldquo;Écouter l\u0026rsquo;opinion de tout le monde\u0026rdquo; est un argument valable, mais\u0026hellip; Cette histoire est souvent prise comme une leçon : \u0026ldquo;Si tu te soucies trop de ce que les autres pensent, tu n\u0026rsquo;en finiras jamais.\u0026rdquo;\nMais la réalité n\u0026rsquo;est pas si simple.\nIl y a beaucoup de gens qui disent : \u0026ldquo;Ne te soucie pas du regard des autres !\u0026rdquo;\nCependant, tout ignorer est un peu difficile. Par exemple, quand on poste quelque chose sur les réseaux sociaux. Ou quand on réfléchit à ce qu\u0026rsquo;on va dire à une soirée d\u0026rsquo;entreprise. On s\u0026rsquo;inquiète inévitablement de la réaction de quelqu\u0026rsquo;un.\nC\u0026rsquo;est parce que \u0026ldquo;l\u0026rsquo;opinion des autres\u0026rdquo; concerne souvent notre sécurité et notre réputation.\nMalgré tout, être trop influencé rend la vie difficile Je pense qu\u0026rsquo;au début, ce couple se demandait simplement \u0026ldquo;que devons-nous faire ?\u0026rdquo;.\nMais quoi qu\u0026rsquo;ils fassent, quelqu\u0026rsquo;un finissait toujours par se plaindre.\nEt puis ils ont commencé à tourner en rond : \u0026ldquo;Alors faisons comme ça\u0026rdquo;, \u0026ldquo;Peut-être que c\u0026rsquo;est mieux ?\u0026rdquo;, et avant de s\u0026rsquo;en rendre compte, ils ont perdu de vue ce qu\u0026rsquo;ils voulaient vraiment faire.\nC\u0026rsquo;est quelque chose qui arrive souvent dans notre vie quotidienne.\nLes attentes du patron, les mots des parents, le nombre de \u0026ldquo;likes\u0026rdquo; sur les réseaux sociaux. En essayant de vous conformer à tout cela, ne vous arrive-t-il jamais d\u0026rsquo;oublier ce que vous voulez vraiment faire ?\nIl est important de choisir \u0026ldquo;qui écouter\u0026rdquo; Alors, que devrions-nous faire ? Il n\u0026rsquo;y a pas de bonne réponse.\nCependant, \u0026ldquo;suivre l\u0026rsquo;opinion de tout le monde\u0026rdquo; est réalistement impossible.\nC\u0026rsquo;est pourquoi je crois qu\u0026rsquo;il est important de choisir par soi-même \u0026ldquo;qui écouter\u0026rdquo;.\nPar exemple, \u0026ldquo;n\u0026rsquo;écouter que les conseils des personnes que vous respectez\u0026rdquo; ou \u0026ldquo;utiliser comme critère ce que votre \u0026lsquo;vous\u0026rsquo; du passé pourrait accepter\u0026rdquo;.\nSi vous avez ne serait-ce qu\u0026rsquo;un seul critère auquel vous vous tenez et vous dites \u0026ldquo;je veux y croire\u0026rdquo;, le bruit du monde diminuera un peu.\nDonc, quand vous vous sentez un peu fatigué Il pourrait être bon de se souvenir de l\u0026rsquo;histoire du \u0026ldquo;vieux couple et de l\u0026rsquo;âne\u0026rdquo;.\nIl est facile de s\u0026rsquo;inquiéter du regard des autres.\nMais si vous essayez de plaire à tout le monde, vous finirez par descendre de l\u0026rsquo;âne, vous aussi.\nParfois, se dire : \u0026ldquo;C\u0026rsquo;est peut-être une bonne idée de donner la priorité à mes propres sentiments\u0026rdquo; peut alléger un peu le cœur.\n","date":"2024-09-18T00:56:59+09:00","image":"http://kenji.blog/p/%E8%80%81%E5%A4%AB%E5%A9%A6%E3%81%A8%E3%83%AD%E3%83%90%E3%81%AE%E8%A9%B1/img_hu4e12b653e0413f37819b2904ce683e39_500631_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/l-histoire-du-vieux-couple-et-de-l-ane/","title":"L'histoire du vieux couple et de l'âne"},{"content":"Pourquoi il était presque impossible de fabriquer la LED bleue Introduction à un documentaire en anglais. Très intéressant. On a la forte impression que le Japonais qui a résolu ce problème extrêmement difficile n\u0026rsquo;a pas été très apprécié au Japon au début.\n","date":"2024-09-15T00:43:52+09:00","image":"http://kenji.blog/p/%E3%81%AA%E3%81%9C%E9%9D%92%E8%89%B2led%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%BB%E3%81%BC%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B/img_hu003acf083dbe465265af012766f30af7_1201686_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%81%AA%E3%81%9C%E9%9D%92%E8%89%B2led%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%BB%E3%81%BC%E4%B8%8D%E5%8F%AF%E8%83%BD%E3%81%A0%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B/","title":"Pourquoi il était presque impossible de fabriquer la LED bleue"},{"content":"Commencer le développement Qt dans VSCode : Comment installer le Qt Extension Pack Bonjour, c\u0026rsquo;est Kenji. Cette fois-ci, je vais vous présenter « comment configurer l\u0026rsquo;environnement de développement Qt dans Visual Studio Code (ci-après VSCode) ».\nRécemment, en plus du Qt Creator officiel, il y a de plus en plus de personnes qui souhaitent développer des applications Qt en utilisant VSCode, qui est léger et hautement extensible. Pour ces personnes, je recommande le \u0026ldquo;Qt Extension Pack\u0026rdquo; . En installant simplement ce pack d\u0026rsquo;extensions, vous obtiendrez les principales extensions liées à Qt d\u0026rsquo;un seul coup.\nPublic cible Ceux qui souhaitent commencer le développement d\u0026rsquo;applications GUI en utilisant Qt Ceux qui souhaitent développer dans VSCode plutôt que dans Qt Creator Ceux qui trouvent fastidieux de chercher les extensions une par une Prérequis VSCode doit être installé (Vous pouvez le télécharger gratuitement sur le site officiel) La bibliothèque Qt elle-même doit être installée (Site officiel de Qt) Qu\u0026rsquo;est-ce que le Qt Extension Pack ? Le Qt Extension Pack est un pack d\u0026rsquo;extensions pour VSCode. En l\u0026rsquo;installant, les fonctionnalités suivantes sont automatiquement ajoutées :\nPrise en charge des fichiers .ui (Qt Designer) Coloration syntaxique pour les fichiers .pro et .qrc Complétion de code C++, prise en charge de la compilation et du débogage pour Qt Qt Resource Browser (référence des ressources) Instructions d\u0026rsquo;installation 1. Ouvrir VSCode Tout d\u0026rsquo;abord, démarrez VSCode.\n2. Ouvrir la vue des extensions Cliquez sur la barre d\u0026rsquo;activité sur le côté gauche (icône de blocs carrés) pour afficher les « Extensions ».\nOu vous pouvez appuyer sur le raccourci Ctrl + Shift + X .\n3. Rechercher \u0026ldquo;Qt Extension Pack\u0026rdquo; Entrez le mot-clé suivant dans la barre de recherche :\n1 Qt Extension Pack 4. Cliquer sur le bouton d\u0026rsquo;installation Lorsque le pack cible s\u0026rsquo;affiche, cliquez sur le bouton « Installer ». Cela installera plusieurs extensions en une seule fois, telles que :\nQt Language Support QML Support Qt Designer Integration CMake Tools (essentiel pour le développement Qt compatible avec CMake) Supplément de configuration du projet (Exemple CMake + Qt) Si vous utilisez Qt basé sur CMake, nous vous recommandons de le combiner avec les extensions suivantes :\nCMake Tools CMake Language Support De plus, si vous incluez la description suivante dans CMakeLists.txt, l\u0026rsquo;intégration avec Qt sera fluide :\n1 2 find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(MyApp PRIVATE Qt6::Widgets) Bonus : Comment ouvrir les fichiers .ui ? Les fichiers .ui peuvent être édités dans Qt Designer. Dans VSCode, vous pourrez faire un clic droit sur le fichier .ui → sélectionner Open with Qt Designer (Qt Designer doit être inclus dans la variable d\u0026rsquo;environnement PATH).\nRésumé Étape Contenu 1 Démarrer VSCode 2 Ouvrir le panneau des extensions 3 Rechercher \u0026ldquo;Qt Extension Pack\u0026rdquo; 4 Cliquer sur le bouton d\u0026rsquo;installation Construire un environnement Qt dans VSCode est devenu beaucoup plus facile qu\u0026rsquo;auparavant. Il possède suffisamment de fonctionnalités comme alternative à Qt Creator et est recommandé pour ceux qui veulent travailler de manière légère.\nCollection de liens recommandés Site officiel de Qt Qt Extension Pack - Visual Studio Marketplace Site officiel de VSCode Extension CMake Tools Pour finir À l\u0026rsquo;avenir, je prévois de poursuivre le développement en utilisant les outils UI de Qt et QML dans cet environnement. La prochaine fois, j\u0026rsquo;expliquerai comment compiler et exécuter une application Hello World en Qt depuis VSCode .\nÀ bientôt !\n","date":"2024-09-13T00:53:53+09:00","image":"http://kenji.blog/p/visual-studio-code-%E3%81%AB-qt-extension-pack-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/img_1_hu3662f535d644da02b1919ea56b7b16c2_319254_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/visual-studio-code-%E3%81%AB-qt-extension-pack-%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%BF%E3%81%9F/","title":"J'ai essayé d'installer le Qt Extension Pack dans Visual Studio Code"},{"content":"Comment vérifier si votre iPhone est verrouillé par la carte SIM Écran d'accueil \u0026gt; Réglages \u0026gt; Général \u0026gt; Informations \u0026gt; Verrouillage de l'opérateur\nVérifiez s\u0026rsquo;il affiche \u0026ldquo;Aucune restriction de SIM\u0026rdquo; ou s\u0026rsquo;il y a un verrouillage.\n","date":"2024-09-12T00:32:11+09:00","image":"http://kenji.blog/p/iphone%E3%81%ABsim%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_huadfe7e53f677430d2790fc209a2a5361_107562_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/iphone%E3%81%ABsim%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8C%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment vérifier si votre iPhone est verrouillé par la carte SIM"},{"content":"Aperçu 1 La classe P est la classe des problèmes qui peuvent être décidés en temps polynomial par une machine de Turing déterministe, et la classe NP est la classe des problèmes pour lesquels, étant donné une preuve (appelée Témoin ou Witness) que la réponse est Oui, la validité du Témoin peut être jugée (cela s\u0026#39;appelle la vérification) en temps polynomial. Étant donné que les problèmes décidables en temps polynomial peuvent être vérifiés en temps polynomial, il est évident que P⊆NP, mais il n\u0026#39;est pas clair si P est un sous-ensemble propre de NP. Il n\u0026#39;y a pas encore de preuve, mais de nombreux chercheurs pensent que P≠NP. La conjecture selon laquelle la classe P et la classe NP ne sont pas égales est appelée la \u0026#34;Conjecture P≠NP\u0026#34;. Site de référence : https://daigakudenki.com/np-hard/\n","date":"2024-09-11T02:22:39+09:00","permalink":"http://kenji.blog/fr/p/pnp%E4%BA%88%E6%83%B3/","title":"Conjecture P≠NP"},{"content":"J\u0026rsquo;ai été de nouveau récompensé par le titre de Microsoft MVP (2024-2025) Bonjour, je suis kenji. J\u0026rsquo;ai le plaisir de vous annoncer que j\u0026rsquo;ai de nouveau reçu le prix Microsoft MVP (Most Valuable Professional) cette année. C\u0026rsquo;est la 8ème fois que je reçois cette distinction.\nPuisque l\u0026rsquo;occasion se présente, j\u0026rsquo;aimerais écrire un peu sur ce qu\u0026rsquo;est un MVP.\nQu\u0026rsquo;est-ce que le Microsoft MVP ? Même si on l\u0026rsquo;appelle MVP, il ne s\u0026rsquo;agit pas du meilleur joueur de sport (bien qu\u0026rsquo;on me le demande parfois\u0026hellip;). Le Microsoft MVP (Most Valuable Professional) est un titre décerné à ceux qui partagent activement leurs connaissances et leurs expériences sur les technologies Microsoft avec la communauté.\nÉcrire des blogs techniques, répondre à des questions sur des sites de Q\u0026amp;A, publier des exemples de code, ou faire des présentations lors d\u0026rsquo;événements. \u0026ldquo;Partager ce que l\u0026rsquo;on sait d\u0026rsquo;une manière utile aux autres\u0026rdquo; ―― ces efforts constants sont évalués.\nIl y a des lauréats dans le monde entier, mais leur nombre est limité chaque année, et il n\u0026rsquo;est pas facile d\u0026rsquo;être à nouveau récompensé. Dans ces conditions, je suis vraiment reconnaissant d\u0026rsquo;avoir été reconnu une fois de plus.\nRaison de la récompense Cette récompense est un renouvellement dans la catégorie \u0026ldquo;Developer Technologies\u0026rdquo;. Au cours de l\u0026rsquo;année écoulée, j\u0026rsquo;ai participé aux activités suivantes :\nRédaction d\u0026rsquo;articles de blog sur les technologies liées à Microsoft Publication de réponses sur des sites techniques de Q\u0026amp;A Publication d\u0026rsquo;exemples de code sur GitHub Conférences lors de groupes d\u0026rsquo;étude et d\u0026rsquo;événements technologiques Rien de tout cela n\u0026rsquo;est extraordinaire, mais j\u0026rsquo;ai toujours essayé de partager \u0026ldquo;ce que j\u0026rsquo;ai essayé et qui a marché\u0026rdquo; et \u0026ldquo;là où j\u0026rsquo;ai buté mais où j\u0026rsquo;ai pu résoudre le problème\u0026rdquo; d\u0026rsquo;une manière qui puisse être utile.\nJe suis sincèrement heureux que cela ait pris cette forme.\nPerspectives d\u0026rsquo;avenir Le monde de la technologie évolue à une telle vitesse que le simple fait d\u0026rsquo;essayer de suivre est difficile. Mais c\u0026rsquo;est pour cette raison que je pense que partager de \u0026ldquo;vraies informations\u0026rdquo; — comment c\u0026rsquo;était de l\u0026rsquo;utiliser en pratique, et ce qui était difficile à comprendre — a beaucoup de sens.\nJe prévois de continuer à mon propre rythme, sans trop me forcer. Je serais heureux de pouvoir continuer à fournir des informations qui feront penser à quelqu\u0026rsquo;un : \u0026ldquo;Ah, ça m\u0026rsquo;a aidé\u0026rdquo;.\nMerci beaucoup pour votre soutien continu.\n","date":"2024-09-03T21:25:20+09:00","image":"http://kenji.blog/p/microsoft-mvp2024-2025%E3%82%92%E5%86%8D%E5%8F%97%E8%B3%9E%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/img_hu90bf51ced9d60993f005bc037644a192_1013423_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/jai-ete-de-nouveau-recompense-par-le-titre-de-microsoft-mvp-2024-2025/","title":"J'ai été de nouveau récompensé par le titre de Microsoft MVP (2024-2025)"},{"content":"Qu\u0026rsquo;est-ce que yt-dlp yt-dlp est un outil en ligne de commande pour télécharger des vidéos YouTube. En plus de télécharger des vidéos, vous pouvez également les télécharger sous forme de fichiers musicaux au format mp3.\nTéléchargement et Installation Téléchargez le dernier yt-dlp.exe depuis la page des versions de yt-dlp. Placez yt-dlp.exe dans n\u0026rsquo;importe quel dossier. Ajoutez le chemin du dossier de yt-dlp.exe à la variable d\u0026rsquo;environnement Path. Comment utiliser Exécutez yt-dlp.exe dans l\u0026rsquo;invite de commande et spécifiez l\u0026rsquo;URL de la vidéo YouTube.\n1 yt-dlp.exe \u0026#34;https://www.youtube.com/watch?v=VIDEO_ID\u0026#34; ※ L\u0026rsquo;argument peut être uniquement la partie VIDEO_ID.\nPour télécharger sous forme de fichier musical mp3, exécutez la commande suivante :\n1 yt-dlp.exe --extract-audio --audio-format mp3 --embed-thumbnail --add-metadata \u0026#34;https://www.youtube.com/watch?v=VIDEO_ID\u0026#34; Avec cela, la vidéo sera téléchargée dans le répertoire courant où la commande a été exécutée.\nC\u0026rsquo;est tout.\n","date":"2024-09-03T14:09:26+09:00","image":"http://kenji.blog/p/yt-dlp.exe-%E3%81%AB%E3%82%88%E3%82%8B-youtube-%E5%8B%95%E7%94%BB%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95/img_1_hu05024a06b03b28eb7dbfa3d8c8b493fd_22080_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/yt-dlp.exe-%E3%81%AB%E3%82%88%E3%82%8B-youtube-%E5%8B%95%E7%94%BB%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95/","title":"Comment télécharger des vidéos YouTube avec yt-dlp.exe"},{"content":" Ramasseur de balles de football @gg211204 『Le jour où le ramasseur de balles est devenu un héros』 Le ramasseur de balles qui a sauvé l'équipe ce jour-là a été invité plus tard au club et a dîné avec les joueurs. #トッテナム #スパーズ #モウリーニョ #ボールボーイ ♬ original sound - じょり Starbucks ","date":"2024-08-25T16:24:35+09:00","image":"http://kenji.blog/p/%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E5%8B%95%E7%94%BB%E3%83%AA%E3%83%B3%E3%82%AF/img_hu6a40cd72b9cd9a636c4c642d7bc2c778_3354885_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/liens-de-videos-courtes/","title":"Liens de vidéos courtes"},{"content":"Bonjour !\nAujourd\u0026rsquo;hui, je voudrais parler des citations d\u0026rsquo;Einstein.\nLe monde ne valorise-t-il pas vos bonnes actions ? 1 2 3 4 5 6 Le monde n\u0026#39;évaluera jamais le million de bonnes choses que vous faites. Mais ils critiqueront la seule mauvaise chose que vous faites... Mais ne vous découragez pas. \u0026#34;Élevez-vous toujours au-dessus de tous les rires et critiques. Restez fort.\u0026#34; - Albert Einstein Ce sont des mots qui auraient été prononcés par Einstein. Ils soulignent avec acuité la dureté de la société que nous ressentons tous les jours et les préjugés dans les évaluations des gens.\nPourtant, continuez à vous lever \u0026ldquo;Élevez-vous toujours au-dessus de tous les rires et critiques. Restez fort.\u0026rdquo;\nCes mots suivants peuvent être considérés comme la réponse d\u0026rsquo;Einstein à la dure réalité mentionnée ci-dessus. Ils nous enseignent l\u0026rsquo;importance de ne pas céder à la critique ou au ridicule, et de continuer à avancer avec foi en nous-mêmes.\nAppliquer les enseignements d\u0026rsquo;Einstein à la vie quotidienne Cette citation est profondément liée à notre vie quotidienne. Par exemple, il peut y avoir des moments où vos efforts au travail ne sont pas reconnus et où seules des erreurs insignifiantes ressortent. De plus, vos déclarations sur les réseaux sociaux peuvent être sorties de leur contexte et critiquées.\nDans ces moments-là, essayez de vous souvenir des mots d\u0026rsquo;Einstein. Il est important de maintenir ses propres croyances plutôt que d\u0026rsquo;être heureux ou triste à cause de l\u0026rsquo;évaluation des autres.\nConclusion Cette citation d\u0026rsquo;Einstein nous enseigne l\u0026rsquo;importance de \u0026ldquo;vivre en croyant en soi sans être influencé par les évaluations des autres\u0026rdquo;. Ayons le courage de suivre le chemin auquel nous croyons, sans succomber à la critique ou au ridicule.\nEnfin, les mots d\u0026rsquo;Einstein une fois de plus.\n\u0026ldquo;Élevez-vous toujours au-dessus de tous les rires et critiques. Restez fort.\u0026rdquo;\nJ\u0026rsquo;espère que ces mots résonneront dans votre cœur et vous inspireront à faire un pas positif en avant.\n","date":"2024-08-24T18:38:47+09:00","image":"http://kenji.blog/p/%E3%82%A2%E3%82%A4%E3%83%B3%E3%82%B7%E3%83%A5%E3%82%BF%E3%82%A4%E3%83%B3%E3%81%AE%E5%90%8D%E8%A8%80/Solvay_conference_1927_hu5334df7b0e2e62905cb44adbbbde85ad_2671814_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/citations-de-einstein/","title":"Citations d'Einstein"},{"content":"Voici un code C simple qui génère des nombres premiers dans une plage spécifiée. Dans cet exemple, nous énumérons les nombres premiers de 1 à n.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include \u0026lt;stdio.h\u0026gt; #include \u0026lt;stdbool.h\u0026gt; bool isPrime(int num) { if (num \u0026lt;= 1) return false; if (num \u0026lt;= 3) return true; if (num % 2 == 0 || num % 3 == 0) return false; for (int i = 5; i * i \u0026lt;= num; i += 6) { if (num % i == 0 || num % (i + 2) == 0) return false; } return true; } void printPrimes(int n) { printf(\u0026#34;2 \u0026#34;); for (int i = 3; i \u0026lt;= n; i += 2) { if (isPrime(i)) { printf(\u0026#34;%d \u0026#34;, i); } } printf(\u0026#34;\\n\u0026#34;); } int main() { int n; printf(\u0026#34;Veuillez entrer la valeur maximale de la plage pour générer des nombres premiers : \u0026#34;); scanf(\u0026#34;%d\u0026#34;, \u0026amp;n); printf(\u0026#34;Les nombres premiers de 1 à %d sont les suivants :\\n\u0026#34;, n); printPrimes(n); return 0; } Ce code fonctionne de la manière suivante :\nFonction isPrime : Détermine si un nombre donné est premier. Par souci d\u0026rsquo;efficacité, on vérifie d\u0026rsquo;abord s\u0026rsquo;il est divisible par 2 et 3, puis on procède à la vérification par multiples de 6. Fonction printPrimes : Produit les nombres premiers dans une plage spécifiée. Le 2 est affiché en premier, puis seuls les nombres impairs sont vérifiés. Fonction main : Demande à l\u0026rsquo;utilisateur de saisir la valeur maximale de la plage et affiche les nombres premiers dans cette plage. Si vous compilez et exécutez ce code, les nombres premiers dans la plage spécifiée seront affichés.\n","date":"2024-08-24T09:38:10+09:00","image":"http://kenji.blog/p/%E7%B4%A0%E6%95%B0%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8Bc%E8%A8%80%E8%AA%9E%E3%82%B3%E3%83%BC%E3%83%89/img_hu31b8bd853d4750e84615619ef286e5d3_22034_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/code-c-pour-generer-des-nombres-premiers/","title":"Code C pour générer des nombres premiers"},{"content":"\nAkiko Yosano ** \u0026ldquo;Ne meurs pas\u0026rdquo; **\n―― Pleurant mon jeune frère dans l\u0026rsquo;armée assiégeant Port-Arthur\nAh, mon frère, je pleure pour toi,\nNe meurs pas,\nToi qui es le plus jeune\nL\u0026rsquo;amour de nos parents pour toi fut le plus grand,\nNos parents t\u0026rsquo;ont-ils fait tenir une lame\nEt t\u0026rsquo;ont-ils appris à tuer des gens ?\nT\u0026rsquo;ont-ils élevé jusqu\u0026rsquo;à vingt-quatre ans\nPour que tu tues et que tu meures ?\nToi, le fier maître de l\u0026rsquo;ancienne maison\nDes marchands de la ville de Sakai,\nPuisque tu portes le nom de nos parents,\nNe meurs pas,\nQue la forteresse de Port-Arthur tombe,\nOu qu\u0026rsquo;elle ne tombe pas, qu\u0026rsquo;importe ?\nTu ne le sais peut-être pas, mais\nCela n\u0026rsquo;existe pas dans les lois d\u0026rsquo;une maison de marchand.\nNe meurs pas,\nL\u0026rsquo;Empereur ne va pas lui-même\nÀ la bataille,\nFaire en sorte que les gens versent le sang les uns des autres,\nMeurent sur le chemin des bêtes,\nEt que mourir soit la gloire d\u0026rsquo;un homme,\nSon Grand Cœur étant si profond,\nComment pourrait-il penser une telle chose ?\nAh, mon frère, dans la bataille\nNe meurs pas,\nNotre mère qui a perdu\nNotre père l\u0026rsquo;automne dernier,\nAu milieu de son chagrin, douloureusement\nA vu son fils appelé, et garde la maison,\nMême dans cette grande ère de paix dont on parle,\nLes cheveux blancs de notre mère n\u0026rsquo;ont fait qu\u0026rsquo;augmenter.\nPleurant prostrée à l\u0026rsquo;ombre du rideau\nLa fragile et jeune nouvelle épouse,\nL\u0026rsquo;as-tu oubliée ? Penses-tu à elle ?\nPense au cœur de la jeune fille\nSéparée avant même dix mois de vie commune,\nÀ part toi, le seul au monde pour elle,\nAh, sur qui d\u0026rsquo;autre peut-elle compter ?\nNe meurs pas.\n","date":"2024-07-25T13:16:47+09:00","permalink":"http://kenji.blog/fr/p/ne-meurs-pas/","title":"Ne meurs pas"},{"content":"\n🔹 Aperçu du profil Yosano Akiko (1878-1942) était une poétesse, écrivaine et penseuse japonaise active de l\u0026rsquo;ère Meiji au début de l\u0026rsquo;ère Showa. Elle est particulièrement connue pour ses poèmes courts (tanka) passionnés et originaux, et est une figure qui a ouvert de nouveaux horizons pour l\u0026rsquo;indépendance des femmes et l\u0026rsquo;expression de l\u0026rsquo;amour dans la littérature japonaise moderne.\nVrai nom : Yosano (nom de jeune fille : Hō) Shō\nLieu de naissance : Sakai (ville de Sakai, préfecture d\u0026rsquo;Osaka)\nMari : Yosano Tekkan (poète)\nPériode d\u0026rsquo;activité principale : Fin de l\u0026rsquo;ère Meiji au début de l\u0026rsquo;ère Showa\nCaractéristiques :\nRemarquée pour ses tanka qui expriment franchement les sentiments amoureux des femmes. Possédait des idées féministes, promouvant l\u0026rsquo;éducation et l\u0026rsquo;indépendance des femmes. A fait preuve d\u0026rsquo;une attitude pacifiste en critiquant la guerre russo-japonaise. Membre central de la revue littéraire \u0026ldquo;Myōjō\u0026rdquo;. 🔹 Œuvres principales, synopsis et caractéristiques 1. \u0026ldquo;Midaregami\u0026rdquo; (Cheveux emmêlés) (1901) Aperçu : Son premier recueil de poèmes. Publié au début de la vingtaine, il a eu un impact majeur sur le monde littéraire japonais. Caractéristiques : Elle exprime franchement les sentiments d\u0026rsquo;amour et de désir physique du point de vue d\u0026rsquo;une femme. Poème célèbre : Yawa hada no atsuki chishio ni fure mo mide sabishikarazu ya michi o toku kimi\n→ Cela a fait grand bruit car elle exprimait des opinions sur l\u0026rsquo;amour considérées comme audacieuses pour la morale de l\u0026rsquo;époque, avec les mots propres des femmes.\n2. \u0026ldquo;Kimi Shinitamō Koto Nakare\u0026rdquo; (Toi, ne meurs pas) (1904) Format : Poésie (pas un tanka, mais de la poésie libre) Contenu : Un poème anti-guerre adressé à son frère cadet parti combattre pendant la guerre russo-japonaise. Extrait : Kimi shinitamō koto nakare sue ni umareshi kimi nareba hahaue namida shigeku shite kimi no tamoto o shiboritsutsu\u0026hellip;\u0026hellip;\nSignification : Révolutionnaire car elle dénonce la guerre du point de vue d\u0026rsquo;une femme s\u0026rsquo;inquiétant de la mort de son frère, à une époque où la tendance à glorifier la guerre était très forte. 🔹 Influence et évaluation A mené des activités socialement avancées telles que la libération des femmes, le pacifisme et la promotion de l\u0026rsquo;éducation. Dans ses dernières années, elle s\u0026rsquo;est consacrée à l\u0026rsquo;éducation des femmes et s\u0026rsquo;est impliquée dans la création d\u0026rsquo;une université pour femmes (comme le Bunka Gakuin). L\u0026rsquo;une des intellectuelles et figures littéraires féminines les plus importantes du Japon d\u0026rsquo;avant-guerre. 🔹 Résumé Élément Contenu Nom Yosano Akiko Domaines d\u0026rsquo;activité Tanka, poésie, critique, éducation Œuvres principales \u0026ldquo;Midaregami\u0026rdquo;, \u0026ldquo;Kimi Shinitamō Koto Nakare\u0026rdquo; Caractéristiques Liberté amoureuse, indépendance des femmes, expression du pacifisme Influence moderne Littérature féministe, innovation dans le tanka moderne, pionnière de la poésie anti-guerre ","date":"2024-07-25T13:08:36+09:00","permalink":"http://kenji.blog/fr/p/a-propos-de-yosano-akiko/","title":"À propos de Yosano Akiko"},{"content":"Introduction à Mathematica Résoudre des équations 1 Solve[x^2 - 3 x + 2 == 0, x] Sortie\n1 {{x -\u0026gt; 1}, {x -\u0026gt; 2}} Trouver les solutions d\u0026rsquo;une équation dans les entiers 1 Solve[x^2 - 3 x + 2 == 0 \u0026amp;\u0026amp; 0 \u0026lt;= x \u0026lt;= 2, x, Integers] Sortie\n1 {{x -\u0026gt; 1}, {x -\u0026gt; 2}} Résoudre un système d\u0026rsquo;équations 1 Solve[{x + y == 3, x - y == 1}, {x, y}] Sortie\n1 {{x -\u0026gt; 2, y -\u0026gt; 1}} Résoudre des inéquations 1 Reduce[x^2 - 3 x + 2 \u0026gt; 0, x] Sortie\n1 x \u0026lt; 1 || x \u0026gt; 2 Dériver 1 D[x^2, x] Sortie\n1 2 x Intégrer 1 Integrate[x^2, x] Sortie\n1 x^3/3 Calculer une limite 1 Limit[1/x, x -\u0026gt; 0] Sortie\n1 Infinity Calculer une série 1 Sum[1/n^2, {n, 1, Infinity}] Sortie\n1 π^2/6 Créer une matrice 1 m = {{1, 2}, {3, 4}} Calculer le produit de matrices 1 m . m Sortie\n1 {{7, 10}, {15, 22}} Calculer la matrice inverse 1 Inverse[m] Sortie\n1 {{-2, 1}, {1.5, -0.5}} Calculer les valeurs propres et les vecteurs propres 1 Eigensystem[m] Sortie\n1 {{5, 0}, {{1, 1}, {1, -1}}} Calculer le produit scalaire de vecteurs 1 {1, 2} . {3, 4} Sortie\n1 11 Calculer le produit vectoriel 1 Cross[{1, 2, 3}, {4, 5, 6}] Sortie\n1 {-3, 6, -3} Calculer la norme d\u0026rsquo;un vecteur 1 Norm[{1, 2, 3}] Sortie\n1 √14 Calculer l\u0026rsquo;angle entre des vecteurs 1 ArcCos[{1, 2} . {3, 4}/(Norm[{1, 2}] Norm[{3, 4}])] Sortie\n1 ArcCos[11/(√5 √25)] Calculer la projection d\u0026rsquo;un vecteur 1 {1, 2} . {3, 4}/Norm[{3, 4}] {3, 4}/Norm[{3, 4}] Sortie\n1 {11/5, 22/5} Calculer la rotation d\u0026rsquo;un vecteur 1 RotationMatrix[π/2].{1, 0} Sortie\n1 {0, 1} Calculer la translation d\u0026rsquo;un vecteur 1 TranslationTransform[{1, 2}][{3, 4}] Sortie\n1 {4, 6} Calculer la mise à l\u0026rsquo;échelle d\u0026rsquo;un vecteur 1 ScalingTransform[{2, 3}][{1, 1}] Sortie\n1 {2, 3} Calculer la réflexion d\u0026rsquo;un vecteur 1 ReflectionTransform[{1, 1}][{1, 1}] Sortie\n1 {0, 0} Générer des nombres aléatoires 1 RandomReal[] Sortie\n1 0.123456 Générer des nombres aléatoires (entiers) 1 RandomInteger[] Sortie\n1 123456 Générer des nombres aléatoires (plage spécifiée) 1 RandomReal[{1, 10}] Sortie\n1 5.6789 Générer des nombres aléatoires (entiers, plage spécifiée) 1 RandomInteger[{1, 10}] Sortie\n1 5 Générer des nombres aléatoires (distribution spécifiée) 1 RandomVariate[NormalDistribution[0, 1]] Sortie\n1 0.123456 Générer des nombres aléatoires (distribution, quantité spécifiées) 1 RandomVariate[NormalDistribution[0, 1], 10] Sortie\n1 {0.123456, 0.234567, ..., 0.987654} Générer des nombres aléatoires (distribution, quantité, graine spécifiées) 1 2 SeedRandom[12345] RandomVariate[NormalDistribution[0, 1], 10] Sortie\n1 {0.123456, 0.234567, ..., 0.987654} Appliquer une fonction aux éléments d\u0026rsquo;un tableau 1 2 3 Map[Sqrt, {1, 4, 9}] Sqrt /@ {1, 4, 9} Map[#^(1/2)\u0026amp;, {1, 4, 9}] Sortie\n1 {1, 2, 3} Définir une fonction avec des expressions lambda 1 2 f = Function[x, x^2] f[3] Sortie\n1 9 Composer des fonctions 1 2 3 4 f = Function[x, x^2] g = Function[x, x + 1] h = Function[x, f[g[x]]] h[3] Sortie\n1 16 Faire référence au résultat du calcul précédent 1 % + 1 Sortie\n1 17 Fonction pure 1 (#+3)\u0026amp;[5] Sortie\n1 8 Extraction de tableau 1 2 Select[{1, 2, 3, 4, 5}, EvenQ] Select[{1, 2, 3, 4, 5}, Mod[#,2]==0\u0026amp;] Sortie\n1 {2, 4} ","date":"2024-07-25T01:36:19+09:00","image":"http://kenji.blog/p/mathematica%E5%85%A5%E9%96%80/img_hucba782cf2f6047b30fd8084b4d887659_22760_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/mathematica%E5%85%A5%E9%96%80/","title":"Introduction à Mathematica"},{"content":"Qu\u0026rsquo;est-ce que Hugo Hugo est l\u0026rsquo;un des générateurs de sites statiques. Vous pouvez créer un site Web en convertissant des fichiers Markdown en HTML. Hugo est écrit en langage Go et fonctionne très rapidement.\nCe blog est également créé avec Hugo.\nInstallation de la CLI Hugo Pour installer la CLI Hugo, exécutez la commande ci-dessous.\n※ Ceci est un exemple pour macOS. Pour les autres systèmes d\u0026rsquo;exploitation, veuillez vous référer à la documentation officielle.\n1 brew install hugo Vous pouvez l\u0026rsquo;installer en utilisant Homebrew.\nListe des Commandes Hugo Hugo propose diverses commandes. Les commandes fréquemment utilisées sont résumées ci-dessous.\nCréer un nouveau site 1 hugo new site \u0026lt;nom-du-site\u0026gt; Commande pour créer un nouveau site. Dans \u0026lt;nom-du-site\u0026gt;, spécifiez le nom du site.\nCréer un nouvel article 1 hugo new \u0026lt;nom-de-l\u0026#39;article\u0026gt;.md Commande pour créer un nouvel article. Dans \u0026lt;nom-de-l'article\u0026gt;, spécifiez le nom de l\u0026rsquo;article.\nDémarrer le serveur 1 hugo server Commande pour démarrer le serveur local. Il est accessible à l\u0026rsquo;adresse http://localhost:1313.\nConstruire (Build) 1 hugo Commande pour construire le site. Les fichiers HTML seront générés dans le répertoire public.\nDéployer 1 hugo deploy Commande pour déployer le site. Les paramètres de destination du déploiement sont configurés dans le fichier config.toml.\nAfficher la liste des articles 1 hugo list all Commande pour afficher la liste des articles.\nVérifier la configuration 1 hugo config Commande pour vérifier la configuration.\nAfficher l\u0026rsquo;aide 1 hugo help Commande pour afficher l\u0026rsquo;aide.\nAfficher la version 1 hugo version Commande pour afficher la version.\nCeci est la liste des commandes Hugo. Comme il existe de nombreuses autres commandes disponibles, veuillez vous référer à la documentation officielle.\nRéférence Documentation Officielle Hugo ","date":"2024-05-31T01:36:00+09:00","image":"http://kenji.blog/p/hugo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7/img_hu415dc7e70376ac350673d0366f70ca4b_19909_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/hugo%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7/","title":"Liste des Commandes Hugo"},{"content":"Liste des Extensions Recommandées pour Visual Studio Code Catégorie Nom Fournisseur Description Gestion de Machines Virtuelles et Conteneurs Remote Devlopment Microsoft Prend en charge le développement à distance en se connectant aux conteneurs virtuels/WSL via SSH Gestion de Machines Virtuelles et Conteneurs Docker Microsoft Prend en charge la gestion des conteneurs Docker Gestion de Code GitHub Pull Requests GitHub Gère les Pull Requests GitHub dans VSCode Gestion de Code GitHub Copilot GitHub Prend en charge la complétion de code par IA Gestion de Code Git Graph mhutchie Affiche graphiquement les branches et commits Git Gestion de Code Git History Don Jayamanne Affiche l\u0026rsquo;historique Git Navigateur et Développement Web Debugger for Firefox Firefox DevTools Utilise le débogueur Firefox dans VSCode Navigateur et Développement Web Microsoft Edge Tool For VScode Microsoft Utilise les outils de développement Edge dans VSCode Navigateur et Développement Web Vue Language Features(Volar) Vue Prend en charge les fonctionnalités linguistiques de Vue Navigateur et Développement Web JavaScript (ES6) code snippets charalampos karypidis Fournit des snippets JavaScript Navigateur et Développement Web Tailwind CSS IntelliSense Tailwind Labs Fournit des snippets Tailwind CSS Développement Cloud AWS Toolkit Amazon Web Services Prend en charge le développement AWS Développement Cloud Azure Tools Microsoft Prend en charge le développement Azure Développement Cloud Google Cloud Tools Google Cloud Prend en charge le développement Google Cloud Base de Données MySQL Jun Han Prend en charge le développement MySQL Base de Données SQL Server(mssql) Microsoft Prend en charge le développement SQL Server Base de Données PostgreSQL Chris Kolkman Prend en charge le développement PostgreSQL Systèmes Embarqués PlatformIO PlatformIO Prend en charge le développement PlatformIO Systèmes Embarqués Arduino Microsoft Prend en charge le développement Arduino Systèmes Embarqués WorkBench Particle Prend en charge le développement pour l\u0026rsquo;IoT, incluant l\u0026rsquo;environnement de développement fourni par Particle, le firmware, les bibliothèques et l\u0026rsquo;intégration cloud C/C++ C/C++ Extension Pack Microsoft Prend en charge le développement C/C++ C/C++ C/C++ Runner franneck94 Exécute le code C/C++ (prend en charge les compilateurs gcc, msvc et cuda nvcc) C/C++ Cortex-Debug marus25 Prend en charge le débogage des microcontrôleurs Cortex-A/R/M Python Python Extension Pack Microsoft Prend en charge le développement Python Python jupyter Microsoft Prend en charge le développement Jupyter Notebook Utilitaires et Extensions UI Makrdown All in One Yu Zhang Prend en charge l\u0026rsquo;écriture en Markdown Utilitaires et Extensions UI Hex Editor Microsoft Édite les fichiers binaires Utilitaires et Extensions UI vscode-pdf tomoki1207 Affiche les fichiers PDF Utilitaires et Extensions UI Rainbow CSV mechatroner Affiche les fichiers CSV de manière colorée Utilitaires et Extensions UI Draw.io Integration Henning Dieterichs Utilise Draw.io dans VSCode Utilitaires et Extensions UI Japanese Language Pack for Visual Studio Code Microsoft Pack de langue Japonaise Utilitaires et Extensions UI Live Share Microsoft Prend en charge la collaboration en temps réel ","date":"2024-05-29T17:20:19+09:00","image":"http://kenji.blog/p/visual-studio-code%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD/img_hu9f3ce3d75e92e9f1ca11d3e7a3c7b710_108332_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/visual-studio-code%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD/","title":"Extensions Recommandées pour Visual Studio Code"},{"content":"Qu\u0026rsquo;est-ce que mermaid.js mermaid.js est une bibliothèque JavaScript qui vous permet d\u0026rsquo;afficher graphiquement des diagrammes complexes tels que des organigrammes, des diagrammes et des diagrammes de Gantt en écrivant une syntaxe originale basée sur du texte (syntaxe Mermaid). Il est également adopté dans divers services tels que GitHub, Qiita et Notion. Cette fois, nous allons essayer d\u0026rsquo;utiliser mermaid.js dans hugo.\nActiver mermaid.js dans hugo Les étapes sont les suivantes :\nAjoutez ce qui suit dans layouts/partials/extend_footer.html. 1 2 3 4 5 6 7 8 9 10 11 12 13 {{ if or .Params.mermaid .Site.Params.mermaid }} \u0026lt;script src=\u0026#34;https://cdn.jsdelivr.net/npm/mermaid@10.3.0/dist/mermaid.min.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; {{- $loadmermaid := resources.Get \u0026#34;js/load-mermaid.js\u0026#34; }} \u0026lt;script src=\u0026#34;{{ $loadmermaid.RelPermalink }}\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script\u0026gt; window.initMermaid(); if (isDarkTheme()) { setPrefTheme(\u0026#39;dark\u0026#39;); } else { setPrefTheme(\u0026#39;light\u0026#39;); } \u0026lt;/script\u0026gt; {{ end }} ※ mermaid.min.js n\u0026rsquo;est chargé que lorsque mermaid: true est défini dans la condition if. Cette bibliothèque pèse environ 3 Mo et est étonnamment volumineuse.\nCréez assets/js/load-mermaid.js. Ce processus est utilisé pour initialiser et redessiner dynamiquement lorsque le thème est modifié. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 (function(window){ \u0026#39;use strict\u0026#39; const elementCode = \u0026#39;.mermaid\u0026#39; const loadMermaid = function(theme) { window.mermaid.initialize({theme}) window.mermaid.init({theme}, document.querySelectorAll(elementCode)) } const saveOriginalData = function(){ return new Promise((resolve, reject) =\u0026gt; { try { var els = document.querySelectorAll(elementCode), count = els.length; els.forEach(element =\u0026gt; { element.setAttribute(\u0026#39;data-original-code\u0026#39;, element.innerHTML) count-- if(count == 0){ resolve() } }); } catch (error) { reject(error) } }) } const resetProcessed = function(){ return new Promise((resolve, reject) =\u0026gt; { try { var els = document.querySelectorAll(elementCode), count = els.length; els.forEach(element =\u0026gt; { if(element.getAttribute(\u0026#39;data-original-code\u0026#39;) != null){ element.removeAttribute(\u0026#39;data-processed\u0026#39;) element.innerHTML = element.getAttribute(\u0026#39;data-original-code\u0026#39;) } count-- if(count == 0){ resolve() } }); } catch (error) { reject(error) } }) } const init = ()=\u0026gt;{ saveOriginalData() .catch( console.error ) document.body.addEventListener(\u0026#39;dark-theme-set\u0026#39;, ()=\u0026gt;{ resetProcessed() .then(loadMermaid(\u0026#39;dark\u0026#39;)) .catch(console.error) }) document.body.addEventListener(\u0026#39;light-theme-set\u0026#39;, ()=\u0026gt;{ resetProcessed() .then(loadMermaid(\u0026#39;default\u0026#39;)) .catch(console.error) }) } window.initMermaid = init })(window); Le code de base pour cela a été référencé à partir de ce qui suit :\nReinitialize with new theme #1945 Modifiez le processus lors du changement de thèmes dans header.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 function switchTheme(theme) { switch (theme) { case \u0026#39;light\u0026#39;: {{ if or .Params.mermaid .Site.Params.mermaid }} document.body.dispatchEvent(new CustomEvent(\u0026#39;light-theme-set\u0026#39;)); {{ end }} document.body.classList.remove(\u0026#39;dark\u0026#39;); break; case \u0026#39;dark\u0026#39;: {{ if or .Params.mermaid .Site.Params.mermaid }} document.body.dispatchEvent(new CustomEvent(\u0026#39;dark-theme-set\u0026#39;)); {{ end }} document.body.classList.add(\u0026#39;dark\u0026#39;); break; // auto default: if (window.matchMedia(\u0026#39;(prefers-color-scheme: dark)\u0026#39;).matches) { {{ if or .Params.mermaid .Site.Params.mermaid }} document.body.dispatchEvent(new CustomEvent(\u0026#39;dark-theme-set\u0026#39;)); {{ end }} document.body.classList.add(\u0026#39;dark\u0026#39;); } } } Créez layouts/shortcodes/mermaid.html 1 2 3 \u0026lt;div class=\u0026#34;mermaid\u0026#34; align=\u0026#34;{{ if .Get \u0026#34;align\u0026#34; }}{{ .Get \u0026#34;align\u0026#34; }}{{ else }}center{{ end }}\u0026#34;\u0026gt; {{ safeHTML .Inner }} \u0026lt;/div\u0026gt; Avec les étapes ci-dessus, la préparation pour utiliser mermaid.js est terminée.\nEssayer mermaid.js Ajoutez ce qui suit à la définition de l\u0026rsquo;article 1 marmaid: true Ajoutez ce qui suit au corps de l\u0026rsquo;article Organigramme\n1 2 3 4 5 6 {{\u0026lt;mermaid align=\u0026#34;center\u0026#34;\u0026gt;}} graph TD A[Début] --\u0026gt;|Condition 1| B(Condition 2) B --\u0026gt; C{Condition 3} C --\u0026gt;|Condition 4| D[Fin] {{\u0026lt;/mermaid\u0026gt;}} Résultat de la sortie\ngraph TD A[Début] --\u003e|Condition 1| B(Condition 2) B --\u003e C{Condition 3} C --\u003e|Condition 4| D[Fin] Diagramme de Gantt\n1 2 3 4 5 6 7 8 9 10 11 12 {{\u0026lt;mermaid align=\u0026#34;center\u0026#34;\u0026gt;}} gantt section Project Définition des exigences :done, a, 2024-05-25, 5d Conception de base :done, b, after a, 5d Conception détaillée :done, c, after b, 5d Fabrication :active, d, after c, 10d Test unitaire :crit, e, after d, 5d Test d\u0026#39;intégration : f, after e, 5d Test système : g, after f, 5d Version :milestone, h, after g, 1d {{\u0026lt;/mermaid\u0026gt;}} Résultat de la sortie\ngantt section Project Définition des exigences :done, a, 2024-05-25, 5d Conception de base :done, b, after a, 5d Conception détaillée :done, c, after b, 5d Fabrication :active, d, after c, 10d Test unitaire :crit, e, after d, 5d Test d'intégration : f, after e, 5d Test système : g, after f, 5d Version :milestone, h, after g, 1d Diagramme de séquence\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 {{\u0026lt;mermaid align=\u0026#34;center\u0026#34;\u0026gt;}} sequenceDiagram participant user participant view participant controller participant model participant database user-\u0026gt;\u0026gt;view: Entrer ID/PW view-\u0026gt;\u0026gt;controller: Demande d\u0026#39;authentification controller-\u0026gt;\u0026gt;model: Demande d\u0026#39;authentification model-\u0026gt;\u0026gt;database: Demande d\u0026#39;authentification database--\u0026gt;\u0026gt;model: Renvoyer le résultat de l\u0026#39;authentification model--\u0026gt;\u0026gt;controller: Renvoyer le résultat de l\u0026#39;authentification controller--\u0026gt;\u0026gt;view: Renvoyer le résultat de l\u0026#39;authentification view--\u0026gt;\u0026gt;user: Afficher le résultat de l\u0026#39;authentification {{\u0026lt;/mermaid\u0026gt;}} Résultat de la sortie\nsequenceDiagram participant user participant view participant controller participant model participant database user-\u003e\u003eview: Entrer ID/PW view-\u003e\u003econtroller: requête ajax controller-\u003e\u003emodel: Demande d'authentification model-\u003e\u003edatabase: Émission de SQL database--\u003e\u003emodel: Renvoyer le résultat SQL model--\u003e\u003econtroller: Renvoyer le résultat de la demande controller--\u003e\u003eview: Renvoyer le résultat de la requête ajax view--\u003e\u003euser: Afficher le résultat de l'authentification C\u0026rsquo;est tout.\nRéférences Site officiel de mermaid.js Site de démonstration où vous pouvez prévisualiser la syntaxe Mermaid ","date":"2024-05-25T02:18:09+09:00","image":"http://kenji.blog/p/mermaid.js%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/img_2_huc7c099ec3ef9a6ce3efa5818e1489313_12585_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/mermaid.js%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/","title":"Essayer mermaid.js"},{"content":"Comment annuler un git reset Après avoir effectué un git commit, si vous exécutez accidentellement un git reset, voici comment annuler le git reset (comment restaurer l\u0026rsquo;état au moment du git commit).\nVérifiez l\u0026rsquo;ID du commit avant le reset avec git reflog Revenez à l\u0026rsquo;état avant le reset avec git reset --hard HEAD@{numéro} C\u0026rsquo;est tout sur la façon d\u0026rsquo;annuler un git reset.\n","date":"2024-05-15T23:32:43+09:00","image":"http://kenji.blog/p/git-reset%E3%82%92%E5%8F%96%E3%82%8A%E6%B6%88%E3%81%99%E6%96%B9%E6%B3%95/img_hu1637c23702d7aac8be6c2641e62ebc1a_73066_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-annuler-un-git-reset/","title":"Comment annuler un git reset"},{"content":"Mise en Open Source de MS-DOS 4.0 Microsoft a publié le code source de MS-DOS 4.0, sorti il y a près de 40 ans. Il est écrit presque entièrement en code assembleur 8086.\nDépôt GitHub https://github.com/microsoft/MS-DOS\nSite de Référence Open Sourcing MS-DOS 4.0 ","date":"2024-05-05T16:44:28+09:00","image":"http://kenji.blog/p/ms-dos-4.0-%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E5%8C%96/img_hu44e977c98e405f06fee0746ba6885217_23034_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/ms-dos-4.0-%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E5%8C%96/","title":"Mise en Open Source de MS-DOS 4.0"},{"content":" The Art of Readable Code Principes de Programmation Le Programmeur Pragmatique Technologies supportant le Web Comment créer des applications Web sécurisées Comment les réseaux se connectent Guide complet SQL par des experts Guide pratique Docker Guide complet Kubernetes Code Complete 2ème édition Clean Code : Artisanat logiciel agile Clean Architecture : Structure et conception logicielle Technologies à connaître avant de devenir programmeur de jeux Being Geek Pourquoi créer avec l\u0026rsquo;orienté objet ? ","date":"2024-05-05T16:03:33+09:00","image":"http://kenji.blog/p/%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E5%88%9D%E5%AD%A6%E8%80%85%E3%81%AB%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E6%9B%B8%E7%B1%8D/img_huefc28c3d74f521b3206dda9fd272911e_636136_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/livres-recommand%C3%A9s-pour-les-ing%C3%A9nieurs-d%C3%A9butants/","title":"Livres recommandés pour les ingénieurs débutants"},{"content":"J\u0026rsquo;ai créé un Modèle de Calendrier Excel (Version avec Jours Fériés) ! J\u0026rsquo;ai créé un modèle Excel où, en entrant l\u0026rsquo;année et le mois, les jours fériés de ce mois s\u0026rsquo;affichent sur le calendrier.\nN\u0026rsquo;hésitez pas à le télécharger et à l\u0026rsquo;utiliser. Calendrier.xlsx\n","date":"2024-05-01T00:15:57+09:00","image":"http://kenji.blog/p/excel%E3%81%AE%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E4%BC%91%E6%97%A5%E5%AF%BE%E5%BF%9C%E7%89%88/img_hu8d7d9eeba53cb2329139f98aded52558_13893_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/excel%E3%81%AE%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E4%BC%91%E6%97%A5%E5%AF%BE%E5%BF%9C%E7%89%88/","title":"Modèle de Calendrier Excel (Version avec Jours Fériés)"},{"content":"※ Il s\u0026rsquo;agit de la procédure de configuration pour Windows 11.\nOuvrez le Panneau de configuration Sélectionnez Options d\u0026rsquo;alimentation Cliquez sur \u0026ldquo;Choisir l\u0026rsquo;action des boutons d\u0026rsquo;alimentation\u0026rdquo; Cliquez sur \u0026ldquo;Modifier des paramètres actuellement non disponibles\u0026rdquo; Décochez \u0026ldquo;Activer le démarrage rapide (recommandé)\u0026rdquo; Cliquez sur \u0026ldquo;Enregistrer les modifications\u0026rdquo; Référence \\[Windows 10\\] Comment désactiver le démarrage rapide.\n","date":"2024-04-29T19:42:20+09:00","image":"http://kenji.blog/p/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A2%E3%83%8B%E3%82%BF%E3%81%A7%E6%AF%8E%E5%9B%9E%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%ABdpi%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%8C%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/img_huc496c8f1febcd28bf66466cd5e2648a0_37147_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-corriger-la-reinitialisation-des-parametres-dpi-au-demarrage-avec-plusieurs-moniteurs/","title":"Comment corriger la réinitialisation des paramètres DPI au démarrage avec plusieurs moniteurs"},{"content":"Obtenir uniquement la dernière version du dépôt git Vous pouvez obtenir uniquement la dernière version du dépôt avec la commande suivante. C\u0026rsquo;est utile lorsque vous souhaitez obtenir le dépôt rapidement pour économiser de l\u0026rsquo;espace disque.\n1 git clone --depth 1 \u0026lt;URL du dépôt\u0026gt; ","date":"2024-04-27T02:54:12+09:00","image":"http://kenji.blog/p/git%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AE%E6%9C%80%E6%96%B0%E3%81%A0%E3%81%91%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/img_hu2ecde82e40aa31a994850b70302683b4_5304_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/obtenir-uniquement-la-derniere-version-du-depot-git/","title":"Obtenir uniquement la dernière version du dépôt git"},{"content":"Que faire lorsque l\u0026rsquo;erreur suivante s\u0026rsquo;affiche dans GitHub Copilot Depuis environ le 19/04/2024, GitHub Copilot a cessé de fonctionner. Le message d\u0026rsquo;erreur est le suivant :\n1 2 [ERROR] [ghostText] [2024-04-21T04:06:46.900Z] Error on ghost text request: (FetchError) unable to verify the first certificate [ERROR] [certificates] [2024-04-21T04:06:46.901Z] Your current Copilot license doesn\u0026#39;t support proxy connections with custom certificates. Please visit https://gh.io/copilot-network-errors to learn more. Original cause: {\u0026#34;type\u0026#34;:\u0026#34;system\u0026#34;,\u0026#34;_name\u0026#34;:\u0026#34;FetchError\u0026#34;,\u0026#34;code\u0026#34;:\u0026#34;UNABLE_TO_VERIFY_LEAF_SIGNATURE\u0026#34;} Solution Il semble que ce soit un bug de ESET. Dans les paramètres avancés de ESET, désactivez \u0026ldquo;Activer SSL/TLS\u0026rdquo;. Référence Il semble que la même erreur se produise également dans AWS CDK.\nAWS CDK bootstrap certificate warning-error ","date":"2024-04-21T18:47:26+09:00","image":"http://kenji.blog/p/%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7github-copilot%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img_hue52485515660c172702881501d13c34d_319675_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-resoudre-erreur-certificat-github-copilot/","title":"Comment résoudre l'erreur de certificat empêchant l'utilisation de GitHub Copilot"},{"content":"\nIntroduction à vim Téléchargement et Installation https://www.vim.org/download.php\nÀ partir du site ci-dessus, téléchargez et installez le module approprié pour votre système d\u0026rsquo;exploitation.\nPour Windows, choisir gvim_X.X.X_x64_signed.exe est une bonne option.\nComment Démarrer Sous Windows, il est nécessaire d\u0026rsquo;enregistrer le dossier contenant vim.exe dans la variable d\u0026rsquo;environnement Path.\nComment démarrer :\n1 vim Pour démarrer en spécifiant un nom de fichier :\n1 vim filename.txt Comment Quitter Pour quitter, tapez : (deux-points), puis q, et appuyez sur Entrée.\n1 :q Si le fichier a été modifié, le message Aucune écriture depuis la dernière modification (ajoutez ! pour forcer) s\u0026rsquo;affichera. Vous pouvez forcer la fermeture en abandonnant les modifications.\n1 :q! Pour sauvegarder le fichier et quitter :\n1 :wq Ce qui suit a également la même signification :\n1 :x Vous pouvez également quitter en maintenant Shift et en appuyant deux fois sur z. (Équivalent à :wq)\nModes Le vim possède un Mode Commande et un Mode Insertion. Au démarrage de vim, il est en Mode Commande, et appuyer sur la touche i passe en Mode Insertion.\nEn Mode Insertion, comme son nom l\u0026rsquo;indique, vous pouvez saisir du texte. Pour revenir du Mode Insertion au Mode Commande, appuyez sur la touche ESC.\nCette bascule entre les modes d\u0026rsquo;insertion est une caractéristique clé de vim.\nDéplacement du Curseur et Défilement Résumé des déplacements du curseur et du défilement en Mode Commande.\nTouche Description h (ou Ctrl+H, BackSpace, ←) Déplacer vers la gauche j (ou Ctrl+J / N, ↓) Déplacer vers le bas k (ou Ctrl+P, ↑) Déplacer vers le haut l (ou Space, →) Déplacer vers la droite + (ou Enter) Déplacer au début de la ligne suivante - Déplacer au début de la ligne précédente Ctrl+B (ou PageUp) Faire défiler vers le haut (page) Ctrl+F (ou PageDown) Faire défiler vers le bas (page) Ctrl+U Faire défiler d\u0026rsquo;une demi-page vers le haut Ctrl+D Faire défiler d\u0026rsquo;une demi-page vers le bas Ctrl+Y Faire défiler d\u0026rsquo;une ligne vers le haut Ctrl+E Faire défiler d\u0026rsquo;une ligne vers le bas z Enter Faire défiler la ligne du curseur vers le haut de l\u0026rsquo;écran z . Faire défiler la ligne du curseur vers le centre de l\u0026rsquo;écran z - Faire défiler la ligne du curseur vers le bas de l\u0026rsquo;écran 0 (ou |) Déplacer le curseur au début de la ligne $ Déplacer le curseur à la fin de la ligne ^ (ou _) Déplacer le curseur au début de la ligne (hors espaces et Tab) G (ou :$) Déplacer le curseur à la dernière ligne :numéro_de_ligne Enter Déplacer à la ligne spécifiée En tapant un chiffre avant les touches de déplacement ci-dessus, vous pouvez vous déplacer de cette quantité plusieurs fois. (Par exemple, taper 3j vous déplacera de 3 lignes vers le bas à partir de la position actuelle du curseur.)\nAutres Commandes Touche Description Ctrl+L Redessiner l\u0026rsquo;écran Ctrl+G Afficher le nombre total de lignes, la position du curseur, etc. ","date":"2024-04-19T22:06:34+09:00","image":"http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img_hu70487bce4333a61ad5b3ba8ed7939499_17904_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/vim%E5%85%A5%E9%96%80/","title":"Introduction à vim"},{"content":"À propos de la nécessité d\u0026rsquo;appeler DestroyIcon Il est nécessaire d\u0026rsquo;appeler DestroyIcon dans les cas suivants :\nCreateIconFromResourceEx (si appelé sans l\u0026rsquo;indicateur LR_SHARED) CreateIconIndirect CopyIcon Lorsqu\u0026rsquo;il est créé par les fonctions ci-dessus.\nLoadIcon LoadImage (si l\u0026rsquo;indicateur LR_SHARED est utilisé) CopyImage (si l\u0026rsquo;indicateur LR_COPYRETURNORG est utilisé et que le paramètre hImage est une icône partagée) CreateIconFromResource CreateIconFromResourceEx (si l\u0026rsquo;indicateur LR_SHARED est utilisé) Les icônes créées et chargées dans les cas ci-dessus ne doivent pas appeler DestroyIcon.\nRéférence Fonction DestroyIcon (winuser.h) ","date":"2024-04-19T01:55:17+09:00","permalink":"http://kenji.blog/fr/p/loadicon-na-pas-besoin-dappeler-destroyicon/","title":"LoadIcon n'a pas besoin d'appeler DestroyIcon"},{"content":"Vidéos de conférences sur l\u0026rsquo;IA générative \u0026ldquo;IA générative\u0026rdquo; (1) Masayuki Nakao, Professeur à l\u0026rsquo;Université de Tokyo 2023.9.8 \u0026ldquo;IA générative\u0026rdquo; (2) Kuniyoshi Sakai, Professeur à l\u0026rsquo;Université de Tokyo 2023.10.11 \u0026ldquo;IA générative\u0026rdquo; (3) Yutaka Matsuo, Professeur à l\u0026rsquo;Université de Tokyo 2024.3.15 ","date":"2024-04-16T02:13:56+09:00","image":"http://kenji.blog/p/%E7%94%9F%E6%88%90ai%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img_hu1a8581c4b72be646476cf90db2209d32_686551_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/a-propos-de-l-ia-generative/","title":"À propos de l'IA générative"},{"content":"Générer un code QR avec curl Attention : Les méthodes présentées renvoient un code QR généré côté serveur, il est donc possible que des journaux soient enregistrés. Soyez prudent lorsque vous convertissez des informations confidentielles, telles que des informations personnelles, en code QR.\nMéthode 1 Il s\u0026rsquo;agit d\u0026rsquo;une méthode pour générer un code QR dans l\u0026rsquo;invite de commandes. qrenco.de renvoie une réponse sous forme de texte.\n1 curl qrenco.de/kenji.blog Résultat de sortie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 █████████████████████████████ █████████████████████████████ ████ ▄▄▄▄▄ █ ▄ ▄ █ ▄▄▄▄▄ ████ ████ █ █ █ ▀▀▀██ █ █ ████ ████ █▄▄▄█ █▀▀█▀▄█ █▄▄▄█ ████ ████▄▄▄▄▄▄▄█▄▀ ▀ █▄▄▄▄▄▄▄████ ████▄ █▀▄ ▄▀█▄▀ ▀██▄▀ ▄████ ████▀▀▀█ ▄▄ ▄█▄█▀█▀▄██ ▀████ ████▄▄▄██▄▄█ █▀█ ▄██▀▀█ █████ ████ ▄▄▄▄▄ █▀█ ▀ ▄▀▄▄▄ ▀████ ████ █ █ █▄▄ ▄▀▄▀▄ ██ ▀████ ████ █▄▄▄█ █▀▀█ ▀▄▄▄ ▄▄██████ ████▄▄▄▄▄▄▄█▄▄███▄▄█▄███▄████ █████████████████████████████ █████████████████████████████ Référence qrenco.de Méthode 2 api.qrserver.com renvoie une image.\n1 curl -o qr.png \u0026#34;https://api.qrserver.com/v1/create-qr-code/?size=150x150\u0026amp;data=HelloWorld\u0026#34; Résultat de sortie Référence QR Code Generator ","date":"2024-04-16T00:42:27+09:00","image":"http://kenji.blog/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/img_hub03976e78daddb607d3d46f69887db4b_11127_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/curl%E3%81%A7qr%E3%82%B3%E3%83%BC%E3%83%89%E7%94%9F%E6%88%90/","title":"Générer un code QR avec curl"},{"content":"Liste des raccourcis Raccourci clavier Description Ctrl + B Mettre en gras Ctrl + I Mettre en italique Ctrl + U Souligner Ctrl + E Centrer Ctrl + L Aligner à gauche Ctrl + R Aligner à droite Ctrl + ] Augmenter la taille de la police Ctrl + [ Diminuer la taille de la police Ctrl + C Copier Ctrl + V Coller Ctrl + X Couper Ctrl + Z Annuler Ctrl + Y Rétablir Ctrl + A Tout sélectionner Shift + Flèches Sélectionner une plage Ctrl + F Rechercher du texte Ctrl + H Remplacer du texte Ctrl + P Aperçu avant impression Ctrl + S Enregistrer le document F12 Enregistrer sous Ctrl + Home Aller au début du document Ctrl + End Aller à la fin du document Référence Raccourcis clavier dans Word ","date":"2024-04-07T14:18:51+09:00","image":"http://kenji.blog/p/microsoft-word%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/img_hu52c1b9e3b4195e8df02b1851180b33b3_10388_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/microsoft-word%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/","title":"Liste des raccourcis Microsoft Word"},{"content":"Voici \u0026ldquo;Tab Auto Refresh\u0026rdquo;, une extension de navigateur Edge qui actualise automatiquement les pages Web.\nInstallation de Tab Auto Refresh Tab Auto Refresh\nAccédez au site ci-dessus et cliquez sur Installer.\nCliquez sur Ajouter l'extension.\nComment l\u0026rsquo;utiliser Une fois l\u0026rsquo;installation terminée, une icône sera ajoutée dans le coin supérieur droit d\u0026rsquo;Edge.\nOuvrez la page Web que vous souhaitez rafraîchir automatiquement et cliquez sur l\u0026rsquo;icône pour lancer le rafraîchissement automatique.\nLa zone encadrée en vert indique l\u0026rsquo;intervalle de rafraîchissement automatique. Sélectionnez le moment où vous souhaitez que le rafraîchissement automatique se produise.\nPour arrêter le rafraîchissement automatique, cliquez sur l\u0026rsquo;icône et cliquez sur Stop reloading this tab.\n","date":"2024-04-06T15:36:54+09:00","image":"http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/img_hu57eb7510f8ab42d5a8107b2d3db76a45_3448_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E6%8B%A1%E5%BC%B5edge%E3%82%A2%E3%83%89%E3%82%AA%E3%83%B3/","title":"Extension de rafraîchissement automatique des pages Web (Module complémentaire Edge)"},{"content":"Liste des raccourcis de Visual Studio J\u0026rsquo;ai fait une liste des raccourcis de Visual Studio que j\u0026rsquo;utilise fréquemment personnellement. En mémorisant les raccourcis clavier de Visual Studio, vous pouvez effectuer des tâches de développement plus efficacement. N\u0026rsquo;hésitez pas à les utiliser.\n※Vérifié sur Visual Studio 2022.\nTouche de raccourci Description F1 Afficher l\u0026rsquo;aide pour le mot sélectionné F2 Accéder au signet Ctrl + F2 Ajouter un signet Ctrl + Shift + F2 Supprimer tous les signets F5 Générer et exécuter (avec débogage) Ctrl + F5 Générer et exécuter (sans débogage) F7 Générer F9 Ajouter un point d\u0026rsquo;arrêt à la ligne du curseur Ctrl + F9 Désactiver le point d\u0026rsquo;arrêt sur la ligne du curseur Shift + Ctrl + F9 Supprimer tous les points d\u0026rsquo;arrêt F10 Pas à pas principal (Step over) F11 Pas à pas détaillé (Step in) F12 Accéder à la définition Ctrl + D Dupliquer la ligne du curseur Ctrl + X Couper la ligne (sans sélection) Ctrl + Shift + ] Sélectionner jusqu\u0026rsquo;à la parenthèse/accolade correspondante Alt + Flèches haut/bas Déplacer la ligne du curseur vers le haut ou vers le bas Alt + Shift + Flèches Multi-curseur/Sélection de bloc Ctrl + Tab Basculer la vue code source/fenêtre Ctrl + Shift + V Afficher l\u0026rsquo;historique du presse-papiers Ctrl + K puis Ctrl + C Commenter la ligne du curseur Ctrl + K puis Ctrl + U Décommenter la ligne du curseur Ctrl + G Accéder au numéro de ligne spécifié Ctrl + F Rechercher Ctrl + Shift + F Recherche globale Ctrl + H Remplacer Ctrl + Shift + F Remplacement global Ctrl + Tab Basculer la vue code source/fenêtre Ctrl + Space Autocomplétion de mots Ctrl + Alt + L Ouvrir la fenêtre de l\u0026rsquo;Explorateur de solutions Ctrl + Shift + E Ouvrir la fenêtre de l\u0026rsquo;Affichage des ressources Ctrl + 0 puis Ctrl + G Ouvrir la fenêtre de validation Git Référence Raccourcis clavier par défaut dans Visual Studio ","date":"2024-04-06T11:27:37+09:00","image":"http://kenji.blog/p/visual-studio-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E4%B8%80%E8%A6%A7/img_hue1a55f22c15dca7427db7cd2dfd89735_223690_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/liste-des-raccourcis-de-visual-studio/","title":"Liste des raccourcis de Visual Studio"},{"content":"Voici comment ajouter le grep de Hidemaru Editor au menu contextuel (clic droit) de l\u0026rsquo;Explorateur sous Windows 10/11.\nAvertissement : La procédure suivante modifie le registre. Veuillez le faire à vos propres risques.\nProcédure Ouvrez le lien ci-dessous et enregistrez-le dans n\u0026rsquo;importe quel dossier. 秀丸レジストリ登録.reg\nDouble-cliquez sur le fichier 秀丸レジストリ登録.reg pour l\u0026rsquo;ajouter au registre. Référence 秀丸grepをフォルダの右クリックメニューから行う ","date":"2024-04-03T00:00:46+09:00","image":"http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%AB%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFgrep%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/img_hu1bfa3588f39c8e6af312f48159d52b67_932_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/ajouter-hidemaru-editor-grep-au-menu-contextuel-de-l-explorateur/","title":"Ajouter Hidemaru Editor grep au menu contextuel de l'Explorateur"},{"content":"Connaissez-vous le paradoxe des anniversaires ? Je vais vous raconter une histoire un peu étrange. À votre avis, combien de personnes faut-il réunir pour que \u0026ldquo;la probabilité d\u0026rsquo;avoir des personnes nées le même jour\u0026rdquo; soit élevée ?\nPar exemple, il y a 365 jours dans une année, donc quand on vous dit que \u0026ldquo;si 23 personnes se réunissent, la probabilité que quelqu\u0026rsquo;un partage le même anniversaire est de plus de 50 %\u0026rdquo;\u0026hellip; cela semble un peu contre-intuitif, n\u0026rsquo;est-ce pas ?\nMais c\u0026rsquo;est réellement plus de 50 %.\nPourquoi cela se produit-il ? Ce phénomène s\u0026rsquo;appelle le \u0026ldquo;paradoxe des anniversaires\u0026rdquo;. Le nom contient \u0026ldquo;paradoxe\u0026rdquo;, mais il y a une raison mathématique tout à fait valable.\nLorsque le nombre de personnes est \u0026ldquo;n\u0026rdquo;, la probabilité que personne ne partage le même anniversaire est calculée par la formule suivante :\n1 P(personne ne partage) = 365/365 × 364/365 × 363/365 × ... × (365 - n + 1)/365 En soustrayant cela de 1, on obtient \u0026ldquo;la probabilité de partager avec quelqu\u0026rsquo;un\u0026rdquo;.\nEn regardant les résultats\u0026hellip; Nombre de personnes Probabilité d\u0026rsquo;avoir la même date d\u0026rsquo;anniversaire 10 personnes Environ 11.7% 20 personnes Environ 41.1% 23 personnes Environ 50.7% (C\u0026rsquo;est le point clé !) 30 personnes Environ 70.6% 70 personnes Incroyable : environ 99.9% ! En d\u0026rsquo;autres termes, avec seulement 23 personnes , il y a plus d\u0026rsquo;une chance sur deux que quelqu\u0026rsquo;un partage le même anniversaire. Cela s\u0026rsquo;applique tout à fait à une salle de classe ou à une réunion de travail.\nRésumé : Le décalage entre l\u0026rsquo;intuition et les mathématiques est fascinant Le \u0026ldquo;paradoxe des anniversaires\u0026rdquo; est un exemple intéressant où notre intuition s\u0026rsquo;écarte de la probabilité mathématique réelle. Connaître ce genre d\u0026rsquo;anecdote peut animer vos petites discussions et vos quiz !\nLiens de référence Paradoxe des anniversaires (Wikipedia) ","date":"2024-04-02T01:20:50+09:00","image":"http://kenji.blog/p/%E3%83%90%E3%83%BC%E3%82%B9%E3%83%87%E3%82%A4%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A8%E3%81%AF/img_huf1a218b90023063d558c5c810438e753_117620_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%83%90%E3%83%BC%E3%82%B9%E3%83%87%E3%82%A4%E3%83%91%E3%83%A9%E3%83%89%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A8%E3%81%AF/","title":"Qu'est-ce que le paradoxe des anniversaires ?"},{"content":"Qu\u0026rsquo;est-ce que l\u0026rsquo;outil Capture d\u0026rsquo;écran L\u0026rsquo;outil Capture d\u0026rsquo;écran (Snipping Tool) est un outil de capture d\u0026rsquo;écran intégré à Windows. Vous pouvez l\u0026rsquo;utiliser pour découper et enregistrer une partie de l\u0026rsquo;écran, capturer l\u0026rsquo;écran entier ou l\u0026rsquo;enregistrer.\nComment démarrer l\u0026rsquo;outil Capture d\u0026rsquo;écran Il y a principalement 3 façons de le démarrer :\nAppuyez sur la Touche Win, tapez Snipping Tool et appuyez sur la Touche Entrée. Appuyez sur les touches Win + Shift + S. Appuyez sur les touches Win + R, tapez snippingtool et appuyez sur la Touche Entrée. Comment utiliser l\u0026rsquo;outil Capture d\u0026rsquo;écran Les étapes pour enregistrer une image capturée sont les suivantes : Sélectionnez l\u0026rsquo;icône Appareil photo. Cliquez sur le bouton Nouveau. Sélectionnez la zone que vous souhaitez capturer. Cliquez sur le bouton Enregistrer sous. Saisissez l\u0026rsquo;emplacement d\u0026rsquo;enregistrement et le nom du fichier, puis enregistrez. Les étapes pour enregistrer une vidéo capturée sont les suivantes : Sélectionnez l\u0026rsquo;icône Vidéo. Cliquez sur le bouton Nouveau. Sélectionnez la zone que vous souhaitez capturer. Cliquez sur le bouton Démarrer. Enregistrez l\u0026rsquo;écran. Cliquez sur le bouton Arrêter. Cliquez sur le bouton Enregistrer sous. Saisissez l\u0026rsquo;emplacement d\u0026rsquo;enregistrement et le nom du fichier, puis enregistrez. Référence Utiliser l\u0026rsquo;outil Capture d\u0026rsquo;écran pour effectuer des captures d\u0026rsquo;écran ","date":"2024-04-01T23:19:45+09:00","image":"http://kenji.blog/p/snipping-tool%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/img_hu405fe4bbcac8bf4b2046262eb8f35d4a_18613_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-utiliser-loutil-capture-d%C3%A9cran-snipping-tool/","title":"Comment utiliser l'outil Capture d'écran (Snipping Tool)"},{"content":"Voici comment créer un raccourci pour verrouiller votre ordinateur.\nC\u0026rsquo;est pratique car vous pouvez verrouiller votre ordinateur en double-cliquant simplement sur le raccourci créé sur votre bureau.\nComment créer 1. Faites un clic droit sur le bureau, sélectionnez Nouveau \u0026gt; Raccourci 2. L\u0026rsquo;écran de création de raccourci apparaîtra, entrez rundll32.exe user32.dll,LockWorkStation et cliquez sur Suivant 3. Entrez le nom du raccourci Verrouiller l'ordinateur et cliquez sur Terminer 4. Modifier l\u0026rsquo;icône du raccourci créé Faites un clic droit sur le raccourci créé et sélectionnez Propriétés\nCliquez sur Changer d'icône\nSélectionnez l\u0026rsquo;icône de cadenas jaune et cliquez sur OK, puis cliquez à nouveau sur OK pour fermer les propriétés\nC\u0026rsquo;est tout.\nDouble-cliquer sur le raccourci créé verrouillera l\u0026rsquo;ordinateur.\nVous pouvez également appuyer sur Touche Win + L pour verrouiller l\u0026rsquo;ordinateur de la même manière.\n※ Remarque : Aucune boîte de dialogue de confirmation ne s\u0026rsquo;affichera lors du verrouillage de l\u0026rsquo;ordinateur.\n","date":"2024-04-01T01:37:49+09:00","image":"http://kenji.blog/p/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%92%E3%83%AD%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hud14aa91db8f19c318807d0f2f72ee0fc_128434_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-creer-un-raccourci-pour-verrouiller-votre-ordinateur/","title":"Comment créer un raccourci pour verrouiller votre ordinateur"},{"content":"Qu\u0026rsquo;est-ce que le problème de Monty Hall ? Le problème de Monty Hall est l\u0026rsquo;un des jeux présentés dans l\u0026rsquo;émission de télévision américaine \u0026ldquo;Let\u0026rsquo;s Make a Deal\u0026rdquo;, et se présente comme suit :\nPrérequis : Derrière l\u0026rsquo;une des 3 portes se trouve un prix, et les 2 autres sont perdantes.\nLe participant choisit l\u0026rsquo;une des 3 portes. Le présentateur ouvre une des 2 portes non choisies par le participant, révélant qu\u0026rsquo;elle est perdante. On demande alors au participant s\u0026rsquo;il souhaite changer la porte qu\u0026rsquo;il a choisie. Le problème est de déterminer s\u0026rsquo;il est préférable pour le participant de changer de porte ou non.\nSolution La solution au problème de Monty Hall est la suivante :\nSi le participant ne change pas la porte initialement choisie\nProbabilité de gagner : 1/3 Probabilité de perdre : 2/3 Après que le présentateur a ouvert une porte perdante\nS\u0026rsquo;il ne change pas, probabilité de gagner : 1/3 (la même qu\u0026rsquo;à l\u0026rsquo;étape 1) S\u0026rsquo;il change, probabilité de gagner : 2/3 (la probabilité restante de l\u0026rsquo;étape 1) Par conséquent, la probabilité de gagner est plus élevée si le participant change de porte.\nRéférence Wikipédia Monty Hall problem ","date":"2024-03-31T23:41:51+09:00","image":"http://kenji.blog/p/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C/img_1_hu20d98afb87b485a440eb6d6beaf3ac5e_189614_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%83%A2%E3%83%B3%E3%83%86%E3%82%A3%E3%83%9B%E3%83%BC%E3%83%AB%E5%95%8F%E9%A1%8C/","title":"Le Problème de Monty Hall"},{"content":"Télécharger micro https://github.com/zyedidia/micro/releases\nOuvrez le lien ci-dessus, cliquez sur Show all XX assets (où X est un nombre) et téléchargez micro-X.X.XX-win64.zip (où X est un nombre). Décompressez le fichier zip et placez tous les fichiers dans un dossier de votre choix.\nConfigurer les variables d\u0026rsquo;environnement Pour utiliser micro.exe depuis l\u0026rsquo;Invite de commandes, vous devez configurer les variables d\u0026rsquo;environnement.\nAppuyez sur la Touche Win + Touche R, tapez sysdm.cpl et appuyez sur Entrée. Cliquez sur Paramètres système avancés dans les Propriétés système. Cliquez sur Variables d'environnement. Sélectionnez Path dans les Variables système et cliquez sur Modifier. Cliquez sur Nouveau et ajoutez le chemin du dossier contenant micro.exe. Cliquez sur OK pour fermer toutes les boîtes de dialogue. Redémarrez l\u0026rsquo;Invite de commandes et tapez nano pour vérifier si vous pouvez l\u0026rsquo;exécuter. Comment utiliser micro Lorsque vous tapez micro dans l\u0026rsquo;Invite de commandes et l\u0026rsquo;exécutez, l\u0026rsquo;écran suivant s\u0026rsquo;affiche. Les principales opérations et les raccourcis clavier sont les suivants :\nRaccourci clavier Opération Ctrl+Q Fermer le fichier Ctrl+S Enregistrer le fichier Ctrl+O Ouvrir un fichier Ctrl+A Tout sélectionner Ctrl+X Couper la sélection Ctrl+C Copier la sélection Ctrl+V Coller Ctrl+Z Annuler Ctrl+Y Rétablir Ctrl+E Exécuter la commande de l\u0026rsquo;éditeur Référence micro ","date":"2024-03-31T21:50:39+09:00","image":"http://kenji.blog/p/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFmicro%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu5c724e25c36dcf3781d5276f98286fd4_13721_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-installer-l-editeur-de-texte-micro-sur-windows/","title":"Comment installer l'éditeur de texte micro sur Windows"},{"content":"Télécharger nano.exe https://sourceforge.net/projects/nano-for-windows/\nOuvrez le lien ci-dessus, cliquez sur Download et téléchargez GNU-Nano_Win32(static).zip. Extrayez le fichier zip et placez nano.exe dans n\u0026rsquo;importe quel dossier.\nLa saisie en japonais n\u0026rsquo;est pas prise en charge (au 31/03/2024). Configurer les variables d\u0026rsquo;environnement Pour utiliser nano.exe à partir de l\u0026rsquo;invite de commande, vous devez configurer les variables d\u0026rsquo;environnement.\nAppuyez sur la Touche Win + Touche R, tapez sysdm.cpl et appuyez sur Entrée. Cliquez sur Paramètres système avancés dans la fenêtre Propriétés système. Cliquez sur Variables d'environnement. Sélectionnez Path sous Variables système et cliquez sur Modifier. Cliquez sur Nouveau et ajoutez le chemin vers nano.exe. Cliquez sur OK pour fermer toutes les boîtes de dialogue. Redémarrez l\u0026rsquo;invite de commande, tapez nano et vérifiez s\u0026rsquo;il s\u0026rsquo;exécute. Comment utiliser nano Lorsque vous tapez nano et l\u0026rsquo;exécutez, l\u0026rsquo;écran suivant s\u0026rsquo;affiche.\nLes descriptions des raccourcis sont affichées au bas de l\u0026rsquo;écran.\nLa signification des symboles est la suivante :\n^ représente la touche Ctrl. M- représente la touche Alt. Pour enregistrer et fermer, appuyez sur Ctrl + S, puis sur Ctrl + X.\nRéférence GNU nano ","date":"2024-03-31T18:09:32+09:00","image":"http://kenji.blog/p/cli%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFnano%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hud0bad6678c124835195c96dbf5908709_45668_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/cli%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BFnano%E3%82%92windows%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment installer l'éditeur de texte CLI nano sur Windows"},{"content":"Comment résoudre l\u0026rsquo;erreur \u0026lsquo;Temporary failure resolving\u0026hellip;\u0026rsquo; dans wsl 1 2 3 4 kenji@MyComputer:~$ sudo apt update [sudo] password for kenji: Err:1 http://archive.ubuntu.com/ubuntu focal InRelease Temporary failure resolving \u0026#39;archive.ubuntu.com\u0026#39; Lorsque l\u0026rsquo;erreur ci-dessus s\u0026rsquo;affiche dans wsl, les paramètres du serveur DNS peuvent être incorrects. Dans mon environnement, cela a été résolu en suivant les étapes suivantes.\nDémarrez wsl. Exécutez sudo nano /etc/resolv.conf. Modifiez la ligne nameserver comme suit : 1 nameserver 8.8.8.8 Enregistrez avec Ctrl + S, et quittez avec Ctrl + X. Exécutez sudo apt update. Si l\u0026rsquo;erreur ne s\u0026rsquo;affiche plus, c\u0026rsquo;est résolu. Si les étapes ci-dessus ne résolvent pas le problème Il semble qu\u0026rsquo;il y ait des cas où les étapes ci-dessus ne suffisent pas. Veuillez consulter l\u0026rsquo;article suivant.\nComment résoudre \u0026lsquo;Temporary failure resolving\u0026hellip;\u0026rsquo; lors d\u0026rsquo;un apt update dans WSL ","date":"2024-03-31T16:57:33+09:00","image":"http://kenji.blog/p/wsl-%E3%81%A7temporary-failure-resolving%E3%81%A8%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img_hu6b9065bcca76a2739d7c532080d71efa_118604_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/wsl-%E3%81%A7temporary-failure-resolving%E3%81%A8%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/","title":"Comment résoudre l'erreur 'Temporary failure resolving...' dans wsl"},{"content":"Comment fermer depuis le menu du clic droit de la barre des tâches Cette méthode fonctionne sous Windows 10. Il semble que le menu ne s\u0026rsquo;affiche pas sous Windows 11. Si vous maintenez les touches Shift et Ctrl enfoncées et faites un clic droit sur la barre des tâches, Quitter l'Explorateur apparaîtra dans le menu.\nComment fermer depuis le Gestionnaire des tâches Appuyez sur les touches Ctrl + Shift + Esc pour ouvrir le Gestionnaire des tâches. Sélectionnez Détails. Sélectionnez explorer.exe, appuyez sur la touche Suppr, et lorsqu\u0026rsquo;on vous demande Voulez-vous mettre fin à explorer.exe ?, sélectionnez Fin de tâche. Comment fermer depuis l\u0026rsquo;Invite de commandes Appuyez sur les touches Win + R, tapez cmd, et appuyez sur Entrée. Tapez taskkill /f /im explorer.exe, et appuyez sur Entrée. Comment démarrer l\u0026rsquo;Explorateur depuis le Gestionnaire des tâches Appuyez sur les touches Ctrl + Shift + Esc pour ouvrir le Gestionnaire des tâches. Dans le menu Fichier, sélectionnez Exécuter une nouvelle tâche. Tapez explorer.exe, et appuyez sur Entrée. ","date":"2024-03-30T15:40:24+09:00","image":"http://kenji.blog/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/img_2_hue735828bd961ff4973e3abea5e21f198_20142_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC%E3%81%AE%E7%B5%82%E4%BA%86%E5%86%8D%E8%B5%B7%E5%8B%95%E6%96%B9%E6%B3%95/","title":"Comment fermer et redémarrer l'Explorateur"},{"content":"Comment restaurer le menu contextuel classique dans Windows 11 Voici comment restaurer le menu contextuel classique (clic droit) dans Windows 11.\nOuvrez l\u0026rsquo;Éditeur du Registre. Appuyez sur Touche Win + R, tapez regedit et appuyez sur Entrée. Accédez à HKEY_CURRENT_USER\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}. Si cette clé n\u0026rsquo;existe pas, créez-la.\nAccédez à HKEY_CURRENT_USER\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\\InprocServer32. Si cette clé n\u0026rsquo;existe pas, créez-la.\nVérifiez que (Par défaut) dans InprocServer32 n\u0026rsquo;a pas de valeur.\nRedémarrez l\u0026rsquo;ordinateur. Confirmez que le menu contextuel est revenu à la version classique. ","date":"2024-03-30T13:13:36+09:00","image":"http://kenji.blog/p/windows-11%E3%81%AE%E5%8F%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%92%E5%BE%93%E6%9D%A5%E7%89%88%E3%81%AB%E6%88%BB%E3%81%99%E6%96%B9%E6%B3%95/img_hub131b7dada89fffcdae45f20639b1ab3_50623_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-restaurer-le-menu-contextuel-classique-dans-windows-11/","title":"Comment restaurer le menu contextuel classique dans Windows 11"},{"content":"JetBrains Mono Il s\u0026rsquo;agit d\u0026rsquo;une police de programmation open source fournie par JetBrains.\nTélécharger : https://www.jetbrains.com/ja-jp/lp/mono/\nHackGen Hakugen (HackGen) est une police de programmation qui combine la police anglaise orientée programmation Hack avec GenJyuu Gothic, une police dérivée de Source Han Sans.\nTélécharger : https://github.com/yuru7/HackGen/releases\nRicty Diminished Ricty Diminished est une police sœur de Ricty, créée en combinant Inconsolata et Circle M+ 1m avec le script de génération Ricty, plutôt que Inconsolata et Migu 1M. Comme elle n\u0026rsquo;inclut pas les glyphes de la police IPA Gothic, elle comporte moins de glyphes kanji utilisables, mais en contrepartie elle peut être distribuée sous la SIL Open Font License.\nTélécharger : https://rictyfonts.github.io/diminished\nCica Les caractères alphanumériques et les symboles utilisent Hack + DejaVu Sans Mono. Pour les autres caractères, c\u0026rsquo;est une police de programmation qui utilise Rounded Mgen+.\nTélécharger : https://github.com/miiton/Cica/releases\nRéférence :\nHack DejaVu Sans Mono Rounded Mgen+ Migu Il s\u0026rsquo;agit d\u0026rsquo;une police composite de M+ et IPA.\nTélécharger : https://itouhiro.github.io/mixfont-mplus-ipa/migu/\nOsaka C\u0026rsquo;est une police qui permet d\u0026rsquo;utiliser la police standard de Mac OS, Osaka, sur Windows.\nTélécharger : http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/\nPlemolJP C\u0026rsquo;est une police de programmation qui combine la police japonaise open source IBM Plex Sans JP publiée par IBM avec IBM Plex Mono de la série Plex d\u0026rsquo;IBM.\nTélécharger : https://github.com/yuru7/PlemolJP/releases\n","date":"2024-03-30T02:21:31+09:00","image":"http://kenji.blog/p/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E9%9B%86/img_hu5455a1c7ae52190ddcafb3051b00c15b_52757_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/collection-de-polices-pour-la-programmation/","title":"Collection de Polices pour la Programmation"},{"content":"Voici comment lancer l\u0026rsquo;éditeur Hidemaru avec la commande \u0026lsquo;hide\u0026rsquo;. Remarque : Cette méthode a été testée sur Windows 10/11.\nOuvrez l\u0026rsquo;Éditeur du Registre. Accédez à HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths. Créez une clé nommée hide.exe sous App Paths. La partie avant .exe dans le nom de cette clé devient le nom de la commande. Définissez la valeur (par défaut) de la clé hide.exe sur le chemin du fichier exécutable de l\u0026rsquo;éditeur Hidemaru. Dans mon environnement, c\u0026rsquo;était \u0026quot;C:\\Program Files (x86)\\Hidemaru\\Hidemaru.exe\u0026quot;. Créez une valeur Chaîne nommée Path dans la clé hide.exe. Définissez les données de Path sur le chemin du dossier contenant le fichier exécutable de l\u0026rsquo;éditeur Hidemaru. Dans mon environnement, c\u0026rsquo;était \u0026quot;C:\\Program Files (x86)\\Hidemaru\u0026quot;. Maintenant, dans la boîte de dialogue Exécuter (ouverte en appuyant sur la touche Win + R), vous pouvez lancer l\u0026rsquo;éditeur Hidemaru en utilisant la commande hide. De plus, dans l\u0026rsquo;Invite de commandes, vous pouvez le lancer avec la commande start hide. 1 2 3 4 5 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\hide.exe] @=\u0026#34;\\\u0026#34;C:\\\\Program Files (x86)\\\\Hidemaru\\\\Hidemaru.exe\\\u0026#34;\u0026#34; \u0026#34;Path\u0026#34;=\u0026#34;\\\u0026#34;C:\\\\Program Files (x86)\\\\Hidemaru\\\\\\\u0026#34;\u0026#34; Si vous enregistrez le contenu ci-dessus dans un fichier .reg et que vous l\u0026rsquo;exécutez, les paramètres seront ajoutés au registre.\n","date":"2024-03-29T23:45:37+09:00","image":"http://kenji.blog/p/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89hide%E3%81%A7%E7%A7%80%E4%B8%B8%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hu43898a3aaad9ace099d9a060bc7203e5_68153_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-lancer-l-editeur-hidemaru-avec-la-commande-hide/","title":"Comment lancer l'éditeur Hidemaru avec la commande 'hide'"},{"content":"Problèmes non résolus en mathématiques Nous allons expliquer les problèmes non résolus en mathématiques. Bien que les problèmes eux-mêmes soient simples, il y a encore de nombreux problèmes qui n\u0026rsquo;ont pas été prouvés.\nY a-t-il une infinité de nombres parfaits ? Un nombre parfait est un entier naturel dont la somme de ses diviseurs stricts positifs (c\u0026rsquo;est-à-dire à l\u0026rsquo;exclusion de lui-même) est égale à lui-même. Par exemple,\nLes diviseurs de 6 sont 1, 2 et 3. Comme 1+2+3=6, c\u0026rsquo;est un nombre parfait. Les diviseurs de 28 sont 1, 2, 4, 7 et 14. Comme 1+2+4+7+14=28, c\u0026rsquo;est un nombre parfait. Actuellement, seuls 51 ont été découverts. On suppose qu\u0026rsquo;il y en a une infinité, mais cela n\u0026rsquo;a pas encore été prouvé.\nConjecture de Goldbach La conjecture de Goldbach affirme que tout nombre pair strictement supérieur à 2 peut s\u0026rsquo;écrire comme la somme de deux nombres premiers. (Un nombre premier est un entier naturel qui n\u0026rsquo;a d\u0026rsquo;autres diviseurs que 1 et lui-même.)\nPar exemple,\n4=2+2 6=3+3 8=3+5 10=3+7=5+5 Le problème en lui-même est très simple, mais il n\u0026rsquo;a toujours pas été prouvé.\nHypothèse de Riemann L\u0026rsquo;hypothèse de Riemann est la conjecture selon laquelle les zéros de la fonction zêta de Riemann sont limités aux entiers pairs négatifs et aux nombres complexes dont la partie réelle est 1/2.\nLa fonction zêta de Riemann est la fonction $\\zeta$ définie, pour $s$ un nombre complexe et $n$ un entier naturel, par :\n$$\\zeta(s):=\\sum _{n=1}^{\\infty }{\\frac {1}{n^{s}}}=1+{\\frac {1}{2^{s}}}+{\\frac {1}{3^{s}}}+{\\frac {1}{4^{s}}}+\\cdots$$ ","date":"2024-03-02T22:57:36+09:00","image":"http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%9C%AA%E8%A7%A3%E6%B1%BA%E5%95%8F%E9%A1%8C/img_hub174c33a50b5d9de07ec5dc9c7de1bd4_731181_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/problemes-non-resolus-en-mathematiques/","title":"Problèmes non résolus en mathématiques"},{"content":"J\u0026rsquo;ai essayé de rassembler diverses boîtes de dialogue d\u0026rsquo;informations de version Windows 11 Tout d\u0026rsquo;abord, voici les informations de version de Windows 11 que j\u0026rsquo;utilise actuellement. IntelliJ IDEA (Community Edition) C\u0026rsquo;est l\u0026rsquo;environnement dans lequel j\u0026rsquo;écris ce blog. Visual Studio Code C\u0026rsquo;est aussi un éditeur que j\u0026rsquo;utilise souvent. C\u0026rsquo;est étonnamment simple. Visual Studio C\u0026rsquo;est l\u0026rsquo;environnement de développement que j\u0026rsquo;utilise pour le C++. LINE (Windows) Il s\u0026rsquo;agit de la version Windows de LINE. Paint.NET C\u0026rsquo;est un logiciel de retouche d\u0026rsquo;image. sakura editor C\u0026rsquo;est un éditeur de texte. Google Chrome C\u0026rsquo;est Google Chrome. Depuis l\u0026rsquo;introduction d\u0026rsquo;Edge, je ne l\u0026rsquo;utilise plus beaucoup. Firefox C\u0026rsquo;est Firefox. Ces derniers temps, je ne l\u0026rsquo;utilise plus beaucoup. Microsoft Edge C\u0026rsquo;est Microsoft Edge. Récemment, j\u0026rsquo;ai tendance à utiliser davantage celui-ci. OBS Studio C\u0026rsquo;est OBS Studio. Ces derniers temps, je ne l\u0026rsquo;utilise plus beaucoup. TradingView C\u0026rsquo;est TradingView. Dernièrement, je l\u0026rsquo;utilise pour consulter le graphique dollar-yen. Spy++ C\u0026rsquo;est Spy++. C\u0026rsquo;est un outil inclus dans le SDK Windows. dependency walker C\u0026rsquo;est dependency walker. C\u0026rsquo;est un outil inclus dans le SDK Windows. resource hacker C\u0026rsquo;est resource hacker. C\u0026rsquo;est un outil permettant d\u0026rsquo;éditer et d\u0026rsquo;extraire les ressources des fichiers exécutables. Microsoft Excel C\u0026rsquo;est Microsoft Excel. bandicam C\u0026rsquo;est bandicam. C\u0026rsquo;est un outil de capture vidéo. winmerge C\u0026rsquo;est winmerge. C\u0026rsquo;est un outil pour visualiser les différences entre les fichiers. iTunes C\u0026rsquo;est iTunes. Ces derniers temps, je ne l\u0026rsquo;utilise plus beaucoup. Hidemaru Editor C\u0026rsquo;est Hidemaru Editor. C\u0026rsquo;est un éditeur de texte. Adobe Photoshop CS6 C\u0026rsquo;est Adobe Photoshop CS6. Adobe Illustrator CS6 C\u0026rsquo;est Adobe Illustrator CS6. ESET NOD32 C\u0026rsquo;est ESET NOD32. NotePad++ C\u0026rsquo;est NotePad++. C\u0026rsquo;est un éditeur de texte. MIFES C\u0026rsquo;est MIFES. Ces derniers temps, je ne l\u0026rsquo;utilise plus beaucoup. ","date":"2024-03-02T21:32:11+09:00","image":"http://kenji.blog/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/img_hub829fc9858068bdd622cbafca10cd245_20954_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%81%84%E3%82%8D%E3%82%93%E3%81%AA%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E9%9B%86%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F/","title":"J'ai essayé de rassembler diverses boîtes de dialogue d'informations de version"},{"content":"Outil d\u0026rsquo;enregistrement d\u0026rsquo;écran en GIF animé J\u0026rsquo;ai créé un outil pour enregistrer l\u0026rsquo;écran et le transformer en GIF animé. Avec cet outil, vous pouvez enregistrer les opérations à l\u0026rsquo;écran et les partager sur des outils de communication tels que Microsoft Teams.\nComment utiliser Lancez l\u0026rsquo;outil Spécifiez la zone à enregistrer. Si aucune zone n\u0026rsquo;est spécifiée, l\u0026rsquo;écran entier sera enregistré. Appuyez sur le bouton d\u0026rsquo;enregistrement Appuyez sur le bouton d\u0026rsquo;arrêt de l\u0026rsquo;enregistrement Le GIF animé sera généré au même endroit que le fichier exécutable Télécharger Télécharger\nOuvrez le lien ci-dessus et cliquez sur le lien GIFScreenRecorder.exe pour télécharger le fichier exécutable.\nCode source GitHub\n","date":"2024-02-08T01:23:01+09:00","image":"http://kenji.blog/p/gif%E3%82%A2%E3%83%8B%E3%83%A1%E7%94%BB%E9%9D%A2%E9%8C%B2%E7%94%BB%E3%83%84%E3%83%BC%E3%83%AB/img_hua1d1e581d2290ce1c516887dff1e6eb0_11957_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/outil-denregistrement-d%C3%A9cran-en-gif-anim%C3%A9/","title":"Outil d'enregistrement d'écran en GIF animé"},{"content":"Résumé des études pour l\u0026rsquo;examen PMP Voici un résumé des études pour l\u0026rsquo;examen PMP.\nAperçu Le PMP est une certification en gestion de projet. C\u0026rsquo;est une certification basée sur un guide appelé PMBOK (7e édition, la plus récente). L\u0026rsquo;examen PMP est composé de 180 questions à répondre en 230 minutes, mais comme 5 questions sont factices, il faut répondre correctement à au moins 106 questions sur 175 pour réussir. Les réponses sont sous forme de choix multiples, la plupart étant à 4 choix, mais certaines sont à 5 choix ou à choix multiples.\nLeadership serviteur (Servant Leadership) Un style de leadership qui soutient depuis le bas plutôt que de donner des ordres depuis le haut.\nLes 10 principes (caractéristiques) du leadership serviteur L\u0026rsquo;écoute L\u0026rsquo;empathie La guérison La prise de conscience La persuasion La conceptualisation La clairvoyance L\u0026rsquo;intendance L\u0026rsquo;engagement envers la croissance des personnes La construction de communauté Les 4 valeurs du Manifeste Agile Nous découvrons de meilleures façons de développer des logiciels par la pratique et en aidant les autres à le faire. Ces expériences nous ont amenés à valoriser :\nLes individus et leurs interactions plus que les processus et les outils, Des logiciels opérationnels plus qu\u0026rsquo;une documentation exhaustive, La collaboration avec les clients plus que la négociation contractuelle, L\u0026rsquo;adaptation au changement plus que le suivi d\u0026rsquo;un plan, C\u0026rsquo;est-à-dire que, bien qu\u0026rsquo;il y ait de la valeur dans les éléments situés à droite, nous valorisons davantage les éléments situés à gauche.\nManifeste Agile\nAgile : Les 12 principes sous-jacents au Manifeste Agile Notre plus haute priorité est de satisfaire le client en livrant rapidement et régulièrement des logiciels utiles. Accueillez favorablement les changements de besoins, même tard dans le développement. Les processus agiles exploitent le changement pour l\u0026rsquo;avantage compétitif du client. Livrez fréquemment un logiciel opérationnel avec des cycles de quelques semaines à quelques mois et une préférence pour les plus courts. Les utilisateurs ou leurs représentants et les développeurs doivent travailler ensemble quotidiennement tout au long du projet. Réalisez les projets avec des personnes motivées. Fournissez-leur l\u0026rsquo;environnement et le soutien dont elles ont besoin et faites-leur confiance pour atteindre les objectifs fixés. La méthode la plus simple et la plus efficace pour transmettre de l\u0026rsquo;information à l\u0026rsquo;équipe de développement et à l\u0026rsquo;intérieur de celle-ci est le dialogue en face à face. Un logiciel opérationnel est la principale mesure de progression. Les processus agiles encouragent un rythme de développement soutenable. Les commanditaires, les développeurs et les utilisateurs devraient pouvoir maintenir indéfiniment un rythme constant. Une attention continue à l\u0026rsquo;excellence technique et à une bonne conception renforce l\u0026rsquo;agilité. La simplicité – c\u0026rsquo;est-à-dire l\u0026rsquo;art de maximiser la quantité de travail qui n\u0026rsquo;est pas fait – est essentielle. Les meilleures architectures, spécifications et conceptions émergent d\u0026rsquo;équipes auto-organisées. À intervalles réguliers, l\u0026rsquo;équipe réfléchit aux moyens de devenir plus efficace, puis accorde et ajuste son comportement dans ce sens. Principes sous-jacents au Manifeste Agile\nTerminologie Épopée (Epic - Vue d\u0026rsquo;ensemble) User Story (Unité d\u0026rsquo;enregistrement dans le Product Backlog, unité de priorisation) Tâche (Élément de travail technique, sujet de l\u0026rsquo;estimation de durée) Product Backlog / Élément du Product Backlog Product Owner (Propriétaire du produit) Parties prenantes (Stakeholders) Guide de pratique Agile (Livre) Développement Lean Kanban Chaîne de valeur AC (Actual Cost - Coût réel) EV (Earned Value - Valeur acquise) PV (Planned Value - Valeur planifiée) EVA (Earned Value Analysis - Analyse de la valeur acquise) SPI (Schedule Performance Index = EV / PV) CPI (Cost Performance Index = EV / AC) EVM (Earned Value Management - Gestion de la valeur acquise) BAC (Budget at Completion - Budget à l\u0026rsquo;achèvement) ETC (Estimate To Complete - Estimation pour achever) EAC (Estimate At Completion - Estimation à l\u0026rsquo;achèvement) Structure fonctionnelle Structure matricielle Structure par projet Leadership serviteur (Servant Leadership) Modèle de Tuckman (Formation, Tension, Normalisation, Exécution, Dissolution) Charte d\u0026rsquo;équipe Planning Poker (Suite de Fibonacci) Rétrospective (Activité de réflexion) Équipe virtuelle Charte de projet Conflit (6 méthodes de résolution : confrontation/résolution de problème, collaboration, compromis, apaisement/accommodation, force, retrait/évitement) Cartographie de la chaîne de valeur (Value Stream Mapping) Mentorat (Mentoring) Coaching Formation Théorie X et Y de Douglas McGregor Analyse SWOT : Strengths (Forces), Weaknesses (Faiblesses), Opportunities (Opportunités), Threats (Menaces) Modèle SECI (Socialisation, Externalisation, Combinaison, Internalisation) PDCA, PDSA PESTLE (Politique, Économique, Social, Technologique, Légal, Environnemental) VUCA (Volatilité, Incertitude, Complexité, Ambiguïté) Méthode de Monte-Carlo Analyse par arbre de décision Valeur monétaire attendue (EMV) Net Promoter Score (NPS) Analyse coûts-avantages Revue de Sprint Gestion des versions (Release Management) SOW (Statement of Work) - Énoncé des travaux : \u0026ldquo;Document détaillant la portée du projet, les objectifs, les livrables, la durée, les ressources, etc.\u0026rdquo; P-SOW (Procurement Statement of Work - Énoncé des travaux d\u0026rsquo;approvisionnement) RFI (Request For Information - Demande d\u0026rsquo;information) RFP (Request For Proposal - Demande de proposition) Contrat à prix fixe (FP : Fixed Price) Contrat en régie (T\u0026amp;M : Time and Material) Contrat à coûts remboursables (CR : Cost Reimbursable) Contrat à prix fixe avec intéressement (FPIF) Dérive du contenu (Scope creep) Modèle de Kano Méthode d\u0026rsquo;allocation de fonds Méthode des 100 points Méthode MoSCoW (Must, Should, Could, Won\u0026rsquo;t) Matrice de traçabilité Dictionnaire de l\u0026rsquo;OTP (WBS Dictionary) Vélocité (Nombre de points de story atteints à chaque itération) Graphique de vélocité Matrice d\u0026rsquo;évaluation de l\u0026rsquo;engagement (Inconscient, Réticent, Neutre, Partisan, Leader) Phase Gate (Revue de fin de phase) Radiateur d\u0026rsquo;information Graphique d\u0026rsquo;avancement (Burndown chart) Graphique de progression (Burnup chart) Diagramme de flux cumulé QCD (Qualité, Coût, Délai) Modèle en spirale Chaîne critique Fonctionnalité (Feature) Itération / Sprint Itératif Incrémental Incrément (Livrable ajouté) Résilience Intendance (Stewardship) - Comportement intègre, digne de confiance et responsable (prise de décision) Escalade KPT (Keep, Problem, Try) RACI (Responsible, Accountable, Consulted, Informed) PMO (Project Management Office) - Soutien, Contrôle, Directif Cadence Adaptation (Tailoring) Niveaux logiques (Environnement, Comportement, Capacité, Croyances/Valeurs, Identité) Analyse de rentabilisation (Business Case) - Document détaillant l\u0026rsquo;objectif, les bénéfices, les risques, le retour sur investissement du projet Analyse des tendances (Exécutée à l\u0026rsquo;aide de graphiques d\u0026rsquo;exécution et de méthodes mathématiques pour prévoir les résultats futurs) Plan de gestion de la qualité (Définit la stratégie et l\u0026rsquo;approche concernant la qualité des livrables du projet) Processus de gouvernance Product Owner (Vision du produit, priorisation du Product Backlog, sortie du produit) Sponsor du projet (Commanditaire) Chef de projet (Project Manager - Gère l\u0026rsquo;ensemble du projet) Chef d\u0026rsquo;équipe (Project Leader - Dirige sur le terrain) Membre du projet (Project Member - Fait avancer le projet) Approche hybride Produit minimum viable (MVP) Revue d\u0026rsquo;itération Atelier (Workshop) Plan de gestion des bénéfices du projet (Bénéfices cibles, stratégie de réalisation et délais de réalisation) Indicateur clé de performance (KPI) Sur site (Sur le terrain, localement) Estimation analogue Estimation à trois points Estimation paramétrique Revue de projet Approche Big Bang DSDM (Dynamic Systems Development Method) Loi de Brooks Approche Big Bang (Introduction simultanée et totale) Registre des risques (Document utilisé comme outil de gestion des risques pour identifier les revers potentiels du projet) Registre des risques Théorie du leadership situationnel (SL) (4 comportements adaptés à la situation de l\u0026rsquo;interlocuteur) Compétence Engagement (Commitment) Références Le Guide Scrum (Ken Schwaber \u0026amp; Jeff Sutherland) Contenu de l\u0026rsquo;examen PMP (ECO) Guide de pratique Agile Code d\u0026rsquo;éthique et de conduite professionnelle du PMI Matériel d\u0026rsquo;étude Objectif premier coup à la \u0026ldquo;Certification PMP®\u0026rdquo; ! Cours de stratégie pour une préparation efficace à l\u0026rsquo;examen (2021) Compatible Agile ","date":"2024-02-04T18:41:31+09:00","image":"http://kenji.blog/p/pmp%E5%8B%89%E5%BC%B7/img_hu67a0961bf8e284d45690ac9cdb09e5b3_16702_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/pmp%E5%8B%89%E5%BC%B7/","title":"Étude PMP"},{"content":"Aperçu Notes sur les catastrophes naturelles survenues au Japon.\n1er janvier 2024 Tremblement de terre de la péninsule de Noto ","date":"2024-01-07T00:50:09+09:00","image":"http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/img_hue649e8d0b3bd837ea85e155e108b15fd_273208_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E6%97%A5%E6%9C%AC%E3%81%AE%E7%81%BD%E5%AE%B3/","title":"Catastrophes au Japon"},{"content":"Les Sept Herbes Oenanthe de Java (Seri) Bourse à pasteur (Nazuna) Cotonnière (Gogyo) Stellaire (Hakobera) Lapsane (Hotokenoza) Navet (Suzuna) Radis blanc (Suzushiro) ","date":"2024-01-06T22:22:00+09:00","image":"http://kenji.blog/p/%E4%B8%83%E8%8D%89%E7%B2%A5%E3%81%AE%E3%83%AC%E3%82%B7%E3%83%94/img_hu3e148c57f6499065259203ce3bd1c8c5_295252_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/recette-du-nanakusa-gayu/","title":"Recette du Nanakusa-gayu (bouillie aux sept herbes)"},{"content":"Musique Japonaise Recommandée チューリップ - 青春の影 イルカ - なごり雪 河島英五 - 酒と泪と男と女 Orangestar - Surges 竹内まりや - Plastic Love RADWIMPS - 前前前世 BEGIN - 島人ぬ宝 ザ・ブルーハーツ - 情熱の薔薇 荒井由実 - ルージュの伝言 Begin - 海の声 荒井由実 - ひこうき雲 Love is Over - 欧陽菲菲 クラムボン - 波よせて RADWIMPS - スパークル かりゆし58 - アンマー かりゆし58 - オワリはじまり テレサ・テン - 時の流れに身をまかせ 宇多田ヒカル『One Last Kiss』 不可思議/wonderboy - Pellicule (Official Music Video) Kamen Rider Black RX - Opening Song たしかなこと / 小田和正 - Covered by パクユナ 【Japanese healing song】Hana／Kosuke Atari（covered by Leah） 「真夜中のドア〜stay with me」/ 松原みき Official Lyric Video Midnight Pretenders Anri - Last Summer Whisper 1985 - The Blue Hearts BUMP OF CHICKEN - supernova チューリップ　心の旅　1972 小さな恋のうた ASKA - はじまりはいつも雨 (Official Music Video) キリンジ - エイリアンズ あの日の空よ - 南こうせつ ","date":"2024-01-06T04:11:01+09:00","image":"http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E9%82%A6%E6%A5%BD/img_hub840e0bd8da1fd2845b1fe157b13d9d8_1067024_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/musique-japonaise-preferee/","title":"Musique Japonaise Préférée"},{"content":"Musique Occidentale Recommandée Keane - Somewhere Only We Know Ben E. King - Stand By Me The Beatles - Hey Jude The Mamas \u0026amp; The Papas - California Dreamin' Ed Sheeran - Shape of You Mark Ronson ft. Bruno Mars – Uptown Funk Sugar - Maroon 5 Bette Midler - The Rose Green Day - Basket Case Coldplay - Viva La VidaViva La Vida Maroon 5 - Memories (Lyrics) Dido - Thank You (Official Video) Bob Dylan - Blowin\u0026rsquo;The Wind(Dans le vent) Coldplay - Yellow Eric Clapton - Tears In Heaven B. J. Thomas - Raindrops Keep Fallin\u0026rsquo; on My Head (Stereo / Lyrics) Take Me Home, Country Roads Simon \u0026amp; Garfunkel - Mrs. Robinson (Audio) Taylor Swift - Love Story (Live on Letterman) Wiz Khalifa - See You Again ft. Charlie Puth [Official Video] Furious 7 Soundtrack The Top (Extended Mix) Something Just Like This Feelings Yesterday Once More Carpenters - Top Of The World I Need To Be In Love [Avec traduction japonaise] Carpenters Bob Marley \u0026amp; The Wailers \u0026ldquo;Three Little Birds\u0026rdquo; Alan Walker - All Falls Down (feat. Noah Cyrus with Digital Farm Animals) Alan Walker - Darkside (feat. Au/Ra and Tomine Harket) Alan Walker - Alone Alan Walker - Sing Me To Sleep Alan Walker - Faded killing me softly with his song a-ha - Take On Me (Official Video) ","date":"2024-01-05T00:14:22+09:00","image":"http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%B4%8B%E6%A5%BD/img_hued679cc884753e5576b95c5f8e6f029a_283063_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%B4%8B%E6%A5%BD/","title":"Musiques Occidentales Préférées"},{"content":"Installer PowerToys via l\u0026rsquo;Invite de commandes Voici comment installer PowerToys à l\u0026rsquo;aide de l\u0026rsquo;Invite de commandes.\n1 winget install Microsoft.PowerToys --source winget Désinstaller PowerToys via l\u0026rsquo;Invite de commandes 1 winget uninstall --name PowerToys ","date":"2023-09-30T21:23:00+09:00","image":"http://kenji.blog/p/powertoys%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/img_hud87e455d0958ca41a83ffdf977dac7c2_37972_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/powertoys%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/","title":"Installer PowerToys via l'Invite de commandes"},{"content":"Montrons du respect Respectons les personnes qui peuvent faire des choses dont nous sommes incapables.\nDans la société, il y a étonnamment beaucoup de personnes qui hiérarchisent les emplois et les postes, et qui ne parviennent pas à faire preuve de respect.\nFaisons preuve de respect envers ceux qui accomplissent des tâches que nous ne pouvons pas faire, quel que soit le travail.\nJe veux garder cela à l\u0026rsquo;esprit.\n","date":"2023-08-01T23:42:31+09:00","image":"http://kenji.blog/p/%E8%87%AA%E5%88%86%E3%81%AB%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E4%BA%BA%E3%81%AB%E6%95%AC%E6%84%8F%E3%82%92%E6%89%95%E3%81%8A%E3%81%86/img_hu0ec845f1b3d93c1f1262f8f9c2fb19a8_357395_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/respectons-ceux-qui-peuvent-faire-ce-que-nous-ne-pouvons-pas/","title":"Respectons ceux qui peuvent faire ce que nous ne pouvons pas"},{"content":"Splatoon 2 Le jeu auquel j\u0026rsquo;ai joué le plus longtemps dans ma vie est probablement Splatoon 2. Je n\u0026rsquo;ai presque pas joué au mode histoire, mais le matchmaking en ligne à 4 contre 4 est très bien conçu. Comme vous pouvez jouer contre des personnes du même niveau, c\u0026rsquo;est amusant et on ne s\u0026rsquo;en lasse jamais. De plus, il est très divertissant d\u0026rsquo;anticiper les mouvements des alliés et des adversaires pour concevoir des stratégies gagnantes.\nArmes Les armes que j\u0026rsquo;utilise le plus souvent sont, dans l\u0026rsquo;ordre : \u0026ldquo;Arroseur léger griffé\u0026rdquo;, \u0026ldquo;Liquidateur Jr.\u0026rdquo;, \u0026ldquo;Rouleau\u0026rdquo; et \u0026ldquo;Flexi-rouleau alu\u0026rdquo;. Le \u0026ldquo;Liquidateur Jr.\u0026rdquo; est une arme pour débutants, et je l\u0026rsquo;utilisais beaucoup à mes débuts.\nLes points d\u0026rsquo;encrage pour chacun sont les suivants :\nArme Points d\u0026rsquo;encrage Flexi-rouleau alu 6 636 594p Rouleau 6 200 629p Liquidateur Jr. 4 211 759p Arroseur léger griffé 744 678p Liquidateur 301 238p À propos du niveau J\u0026rsquo;ai l\u0026rsquo;impression de faire des allers-retours entre A+ et S+, et je n\u0026rsquo;arrive pas à atteindre le sommet du rang S+ depuis un moment, mais je joue plus pour m\u0026rsquo;amuser que pour monter en grade. (Si le niveau devient trop élevé, les adversaires deviennent trop forts, ce qui crée de la tension et rend le jeu moins amusant)\nTemps de jeu Mon temps de jeu a dépassé les 2500 heures.\nObjectifs futurs Mon objectif est de maintenir mon niveau de jeu et de continuer à m\u0026rsquo;amuser, mais j\u0026rsquo;aimerais aussi atteindre la limite maximum (cap) pour l\u0026rsquo;argent et les équipements. Depuis la sortie de Splatoon 3, le matchmaking prend plus de temps et il arrive de plus en plus souvent qu\u0026rsquo;il soit impossible de trouver une partie, alors j\u0026rsquo;espère continuer à jouer en priant pour que le nombre de joueurs ne diminue pas davantage.\n","date":"2023-08-01T00:26:30+09:00","image":"http://kenji.blog/p/%E3%82%B9%E3%83%97%E3%83%A9%E3%83%88%E3%82%A5%E3%83%BC%E3%83%B32/img_hu177387d05aedc7553df9576fd3706d02_192717_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/splatoon-2/","title":"Splatoon 2"},{"content":"À propos de la récompense Microsoft MVP (2023-2024) J\u0026rsquo;ai le plaisir d\u0026rsquo;annoncer que j\u0026rsquo;ai reçu le prix Microsoft MVP (2023-2024). C\u0026rsquo;est ma 7ème année consécutive de réception de ce prix depuis 2017.\nLa catégorie récompensée est Developer Technologies .\nEn repensant à mes activités passées, j\u0026rsquo;ai participé aux éléments suivants :\nPublication de code sur GitHub Partage d\u0026rsquo;informations techniques sur le blog et les réseaux sociaux (comme Twitter) Contributions sur le forum MSDN Retours d\u0026rsquo;expérience sur les produits Microsoft Je continuerai à faire de mon mieux pour écrire de meilleurs articles et partager des informations à l\u0026rsquo;avenir.\nMerci pour votre soutien continu.\n","date":"2023-07-31T19:15:14+09:00","image":"http://kenji.blog/p/microsoft-mvp%E5%8F%97%E8%B3%9E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A62023-2024/img_hua5cba2ce9936d80b2181232333db0622_19957_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%C3%A0-propos-de-la-r%C3%A9compense-microsoft-mvp-2023-2024/","title":"À propos de la récompense Microsoft MVP (2023-2024)"},{"content":"Les trois problèmes classiques de l\u0026rsquo;Antiquité grecque Étant donné un cercle, construire un carré de même aire (Quadrature du cercle) Étant donné un angle arbitraire, le diviser en trois parties égales (Trisection de l\u0026rsquo;angle) Étant donné un cube, construire un cube de volume double (Duplication du cube) Spirale d\u0026rsquo;Archimède Dans un plan, une demi-droite OB tourne autour d\u0026rsquo;un point fixe O à une vitesse uniforme. Si la position initiale est OA, et qu\u0026rsquo;en même temps un point P part de O et se déplace le long de OB à une vitesse constante, la courbe tracée par le point P est la spirale d\u0026rsquo;Archimède.\nThéorème de Pappus Cycloïde Conchoïde de Nicomède Cissoïde de Dioclès Méthode des tangentes de Fermat Méthode des normales de Descartes Chronologie Année Événement Vers 3400 av. J.-C. Les Sumériens utilisent des jetons d\u0026rsquo;argile pour la comptabilité Vers 3000 av. J.-C. Apparition des mathématiques hiéroglyphiques en Égypte Vers 2800 av. J.-C. La civilisation de la vallée de l\u0026rsquo;Indus utilise des poids et mesures décimaux Vers 2700 av. J.-C. Les Égyptiens utilisent des cordes et des triplets pythagoriciens pour vérifier les angles Vers 2500 av. J.-C. L\u0026rsquo;abaque, un outil utilisé pour le calcul, est découvert Vers 2500 av. J.-C. Référence Histoire des Mathématiques ","date":"2023-07-22T15:25:10+09:00","image":"http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%AD%B4%E5%8F%B2/img_hu67324d5a4a949c1841dc5158adcb7086_428375_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/histoire-des-mathematiques/","title":"Histoire des Mathématiques"},{"content":"À propos du Trackball Elecom Deft Pro M-DPT1MRBK Cela fait environ une semaine que j\u0026rsquo;ai acheté le trackball \u0026ldquo;Deft Pro M-DPT1MRBK\u0026rdquo; d\u0026rsquo;Elecom, alors voici une revue de mes impressions d\u0026rsquo;utilisation.\nCaractéristiques principales\nGrand nombre de boutons : 8 Connectivité de trois manières : filaire, récepteur sans fil et Bluetooth Grande taille de la boule (diamètre moyen 44 mm) Prix d\u0026rsquo;achat sur Amazon : ￥7 012 (au 2 mai 2021) Points positifs Comme il n\u0026rsquo;est pas nécessaire de bouger le poignet par rapport à une souris, la tension sur le poignet est réduite. Comme le nombre de boutons est important, vous pouvez leur attribuer diverses fonctions. Actuellement, ils sont attribués comme ci-dessus. Vous pouvez également modifier l\u0026rsquo;attribution des boutons pour chaque application. L\u0026rsquo;installation d\u0026rsquo;un logiciel dédié est requise pour l\u0026rsquo;attribution des boutons. La boule étant grande, il est relativement facile de faire des mouvements précis pour un trackball. Points négatifs La saleté s\u0026rsquo;accumule autour du trackball, il est donc nécessaire de retirer la boule et de la nettoyer régulièrement (environ une fois tous les quelques jours). Il faut un certain temps pour s\u0026rsquo;y habituer car la sensation de fonctionnement est différente de celle d\u0026rsquo;une souris : déplacement du curseur avec l\u0026rsquo;index ou le majeur, et fonctionnement de la molette avec le pouce. Bien que j\u0026rsquo;aie écrit ci-dessus qu\u0026rsquo;il est facile de faire des mouvements précis, il est toujours difficile de déplacer le curseur pixel par pixel avec un trackball. Impossible d\u0026rsquo;utiliser la molette tout en appuyant sur le bouton gauche (par exemple, si vous souhaitez zoomer/dézoomer lors de la sélection d\u0026rsquo;une zone dans Paint). Dans l\u0026rsquo;ensemble, même si je pense que c\u0026rsquo;est un trackball cher, il est globalement assez facile à utiliser et je sens que mon travail est devenu plus productif. J\u0026rsquo;espère que cela sera utile à ceux qui envisagent de l\u0026rsquo;acheter.\n","date":"2023-05-02T23:28:33+09:00","image":"http://kenji.blog/p/%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%ABdeft-prom-dpt1mrbk%E3%81%AE%E3%81%99%E3%81%99%E3%82%81/img_hue224b6b6b3d7da0ebda5f0b37d429b68_231359_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/recommandation-trackball-deft-pro-m-dpt1mrbk/","title":"Recommandation du Trackball Deft Pro (M-DPT1MRBK)"},{"content":"Qu\u0026rsquo;est-ce que wxWidgets wxWidgets est une bibliothèque GUI C++ qui fonctionne sur des plateformes telles que Windows, Mac, Linux, Android, iOS, etc.\nInstallation de wxWidgets Ouvrez https://www.wxwidgets.org/downloads/ et téléchargez le Windows Installer. Exécutez wxMSW-3.2.2.1-Setup.exe pour l\u0026rsquo;installer. Ouvrez \u0026ldquo;C:\\wxWidgets-3.2.2.1\\build\\msw\\wx_vc17.sln\u0026rdquo; à partir du dossier installé. Après avoir ouvert wx_vc17.sln, sélectionnez Générer \u0026gt; Générer par lots. Appuyez sur le bouton Sélectionner tout, puis sur le bouton Régénérer. Une fois la compilation terminée, fermez temporairement Visual Studio. Création du projet d\u0026rsquo;exemple Ouvrez Visual Studio. Sélectionnez Fichier \u0026gt; Nouveau \u0026gt; Projet. Sélectionnez Application de bureau Windows (les onglets sont C++, Windows, Bureau). Entrez wxWidgetsSample dans Nom du projet. Cliquez sur Créer. Faites un clic droit sur wxWidgetsSample et sélectionnez Propriétés. Dans Propriétés de configuration \u0026gt; C/C++ \u0026gt; Autres répertoires Include, ajoutez C:\\wxWidgets-3.2.2.1\\include et C:\\wxWidgets-3.2.2.1\\include\\msvc. Dans Propriétés de configuration \u0026gt; Éditeur de liens \u0026gt; Répertoires de bibliothèques supplémentaires, ajoutez C:\\wxWidgets-3.2.2.1\\lib\\vc_x64_lib. Ouvrez wxWidgetsSample.cpp et remplacez-le par le code ci-dessous. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 #pragma comment(linker,\u0026#34;\\\u0026#34;/manifestdependency:type=\u0026#39;win32\u0026#39; name=\u0026#39;Microsoft.Windows.Common-Controls\u0026#39; version=\u0026#39;6.0.0.0\u0026#39; processorArchitecture=\u0026#39;*\u0026#39; publicKeyToken=\u0026#39;6595b64144ccf1df\u0026#39; language=\u0026#39;*\u0026#39;\\\u0026#34;\u0026#34;) #include \u0026lt;wx/wxprec.h\u0026gt; #ifndef WX_PRECOMP #include \u0026lt;wx/wx.h\u0026gt; #endif class MyApp : public wxApp { public: virtual bool OnInit(); }; class MyFrame : public wxFrame { public: MyFrame(); private: void OnHello(wxCommandEvent\u0026amp; event); void OnExit(wxCommandEvent\u0026amp; event); void OnAbout(wxCommandEvent\u0026amp; event); }; enum { ID_Hello = 1 }; wxIMPLEMENT_APP(MyApp); bool MyApp::OnInit() { MyFrame* frame = new MyFrame(); frame-\u0026gt;Show(true); return true; } MyFrame::MyFrame() : wxFrame(NULL, wxID_ANY, \u0026#34;Hello World\u0026#34;) { wxMenu* menuFile = new wxMenu; menuFile-\u0026gt;Append(ID_Hello, \u0026#34;\u0026amp;Hello...\\tCtrl-H\u0026#34;, \u0026#34;Help string shown in status bar for this menu item\u0026#34;); menuFile-\u0026gt;AppendSeparator(); menuFile-\u0026gt;Append(wxID_EXIT); wxMenu* menuHelp = new wxMenu; menuHelp-\u0026gt;Append(wxID_ABOUT); wxMenuBar* menuBar = new wxMenuBar; menuBar-\u0026gt;Append(menuFile, \u0026#34;\u0026amp;File\u0026#34;); menuBar-\u0026gt;Append(menuHelp, \u0026#34;\u0026amp;Help\u0026#34;); SetMenuBar(menuBar); wxButton* button1 = new wxButton(this, ID_Hello, _(\u0026#34;Hello\u0026#34;), wxPoint(20, 20), wxSize(100, 32)); Connect(ID_Hello, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnHello)); wxButton* button2 = new wxButton(this, wxID_ABOUT, _(\u0026#34;About\u0026#34;), wxPoint(20, 60), wxSize(100, 32)); Connect(wxID_ABOUT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnAbout)); wxButton* button3 = new wxButton(this, wxID_EXIT, _(\u0026#34;Exit\u0026#34;), wxPoint(20, 100), wxSize(100, 32)); Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnExit)); CreateStatusBar(); SetStatusText(\u0026#34;Welcome to wxWidgets!\u0026#34;); Bind(wxEVT_MENU, \u0026amp;MyFrame::OnHello, this, ID_Hello); Bind(wxEVT_MENU, \u0026amp;MyFrame::OnAbout, this, wxID_ABOUT); Bind(wxEVT_MENU, \u0026amp;MyFrame::OnExit, this, wxID_EXIT); } void MyFrame::OnExit(wxCommandEvent\u0026amp; event) { Close(true); } void MyFrame::OnAbout(wxCommandEvent\u0026amp; event) { wxMessageBox(\u0026#34;This is a wxWidgets\u0026#39; Hello world sample\u0026#34;, \u0026#34;About Hello World\u0026#34;, wxOK | wxICON_INFORMATION); } void MyFrame::OnHello(wxCommandEvent\u0026amp; event) { wxLogMessage(\u0026#34;Hello world from wxWidgets!\u0026#34;); } Lors de la compilation et de l\u0026rsquo;exécution, une fenêtre comme celle ci-dessous s\u0026rsquo;ouvrira. Références Le projet d\u0026rsquo;exemple est disponible ci-dessous. wxWidgetsSample\nSite officiel Jeux utilisant C++ et wxWidgets C\u0026rsquo;est tout.\n","date":"2023-04-18T00:18:22+09:00","image":"http://kenji.blog/p/wxwidgets-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/img_hud707912b3d08e9053ad61da0782a9b23_168133_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/wxwidgets-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB/","title":"Exemple utilisant wxWidgets"},{"content":"Films à voir (cochez après avoir vu) Maquia: When the Promised Flower Blooms La Formule préférée du professeur Summer Wars Les Figures de l\u0026rsquo;ombre Will Hunting Un homme d\u0026rsquo;exception Une merveilleuse histoire du temps L\u0026rsquo;Homme qui défiait l\u0026rsquo;infini Hawking (Benedict Cumberbatch) Tenchi Meisatsu Pi Las Vegas 21 L\u0026rsquo;Amour en équation Proof 3 Idiots Buffalo \u0026lsquo;66 Orange Mécanique Backdraft Asakusa Kid Top Gun Matrix Resurrections Je suis une légende Da Vinci Code The Social Network STEINS;GATE Planetes Gravity Violet Evergarden Psycho-Pass Demon Slayer Princesse Mononoké Winny Zéro Foyer Zootopie Your Name. Les Enfants du Temps Retour vers le futur (1, 2, 3) Shin Godzilla Shin Ultraman Shin Kamen Rider Suzume THE FIRST SLAM DUNK ","date":"2023-04-17T00:34:13+09:00","image":"http://kenji.blog/p/%E6%98%A0%E7%94%BBtodo%E3%83%AA%E3%82%B9%E3%83%88/image_hu831a556e644f698f06f7bab476f01bf6_248271_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/%E6%98%A0%E7%94%BBtodo%E3%83%AA%E3%82%B9%E3%83%88/","title":"Liste de Films TODO"},{"content":"Modèle de page Web cool\nhtml5up https://html5up.net/ J\u0026rsquo;ai pensé que j\u0026rsquo;aimerais l\u0026rsquo;utiliser, donc voici une note.\n","date":"2023-04-17T00:26:55+09:00","image":"http://kenji.blog/p/%E3%81%8B%E3%81%A3%E3%81%93%E3%81%84%E3%81%84-web-%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88html5up/img_huc021190a6647c74fdf17f0c26cf7f09d_324732_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%81%8B%E3%81%A3%E3%81%93%E3%81%84%E3%81%84-web-%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88html5up/","title":"Modèle de page Web cool (html5up)"},{"content":"Prérequis Norme ISO C++ 20 (/std:c++20) Code 1 2 3 4 #include \u0026lt;chrono\u0026gt; #include \u0026lt;format\u0026gt; std::string datetime = std::format(\u0026#34;{:%FT%TZ}\u0026#34;, system_clock::now()); Voici comment afficher l\u0026rsquo;heure actuelle au format ISO 8601 en C++.\nRéférences std::format ","date":"2023-04-15T19:35:27+09:00","image":"http://kenji.blog/p/c-%E3%81%A7%E7%8F%BE%E5%9C%A8%E6%99%82%E5%88%BB%E3%82%92iso8601%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu7d543f2117b8a102814b6a542ff27896_11509_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/c-%E3%81%A7%E7%8F%BE%E5%9C%A8%E6%99%82%E5%88%BB%E3%82%92iso8601%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment afficher l'heure actuelle au format ISO 8601 en C++"},{"content":"Voici comment créer un raccourci pour arrêter Windows.\nC\u0026rsquo;est pratique car vous pouvez éteindre l\u0026rsquo;ordinateur en double-cliquant simplement sur le raccourci créé, par exemple en le plaçant sur le bureau.\nComment créer 1. Faites un clic droit sur le bureau et sélectionnez Nouveau \u0026gt; Raccourci 2. L\u0026rsquo;écran de création de raccourci s\u0026rsquo;affiche, tapez shutdown.exe -s -f -t 0 et cliquez sur Suivant 3. Entrez le nom du raccourci Arrêter et cliquez sur Terminer 4. Changez l\u0026rsquo;icône du raccourci créé Faites un clic droit sur le raccourci créé et sélectionnez Propriétés\nCliquez sur Changer d'icône\nSélectionnez l\u0026rsquo;icône carrée rouge et cliquez sur OK, puis cliquez à nouveau sur OK pour fermer les propriétés.\nC\u0026rsquo;est tout.\nWindows s\u0026rsquo;arrêtera lorsque vous double-cliquerez sur le raccourci créé.\n※ Remarque : Aucune boîte de dialogue de confirmation d\u0026rsquo;arrêt ne sera affichée.\n","date":"2023-04-11T17:03:32+09:00","image":"http://kenji.blog/p/windows-%E3%82%92%E3%82%B7%E3%83%A3%E3%83%83%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%81%99%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu9b7c59b017f6e7ad15ccc41a6e668b14_6147_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-cr%C3%A9er-un-raccourci-pour-arr%C3%AAter-windows/","title":"Comment créer un raccourci pour arrêter Windows"},{"content":"Je vais vous montrer comment appliquer une mosaïque à des parties spécifiques d\u0026rsquo;une image en utilisant paint.net.\nLors du téléchargement d\u0026rsquo;images sur Internet, il peut y avoir des cas où vous souhaitez appliquer une mosaïque à des parties spécifiques de l\u0026rsquo;image. Avec paint.net, vous pouvez traiter les images rapidement.\nProcédure 1. Ouvrez l\u0026rsquo;image sur laquelle vous souhaitez appliquer la mosaïque dans paint.net 2. Utilisez l\u0026rsquo;outil de sélection pour sélectionner la zone à masquer (sélection multiple possible) 3. Sélectionnez Menu \u0026gt; Effets \u0026gt; Déformer \u0026gt; Mosaïque Définissez la rugosité de la mosaïque selon la taille de la cellule. Plus le nombre est grand, plus la dissimulation est élevée. [Réduire] Sélectionnez Multisampling Bilinear [Agrandir] Sélectionnez Nearest Neighbor Fermez la boîte de dialogue avec OK.\n4. L\u0026rsquo;image sera traitée avec la mosaïque, puis enregistrez l\u0026rsquo;image. C\u0026rsquo;est tout.\n","date":"2023-04-11T16:33:10+09:00","image":"http://kenji.blog/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_huffa96a6cc9046fae85e7535d0c0f77f3_7385_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/paint.net%E3%81%A7%E7%94%BB%E5%83%8F%E3%81%AE%E7%89%B9%E5%AE%9A%E5%80%8B%E6%89%80%E3%81%AB%E3%83%A2%E3%82%B6%E3%82%A4%E3%82%AF%E3%82%92%E3%81%8B%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment appliquer une mosaïque à des parties spécifiques d'une image en utilisant paint.net"},{"content":"Voici comment ajouter une bordure à une image en utilisant paint.net.\nProcédure 1. Ouvrez l\u0026rsquo;image à laquelle vous souhaitez ajouter une bordure dans paint.net 2. Définissez la couleur secondaire (ce sera la couleur de la bordure) Si la palette de couleurs n\u0026rsquo;est pas affichée, appuyez sur la touche F8 de votre clavier.\nPour la définir en noir, cliquez sur .\n3. Sélectionnez Menu \u0026gt; Image \u0026gt; Modifier la taille du canevas Augmentez la largeur et la hauteur de 2 pixels chacune. Une augmentation de 2 pixels donnera une bordure de 1 pixel. Si vous souhaitez une bordure de 5 pixels, augmentez la largeur et la hauteur de 10 pixels chacune.\nSélectionnez \u0026ldquo;Centre\u0026rdquo; pour l\u0026rsquo;ancre et cliquez sur OK.\n4. Une bordure sera ajoutée à l\u0026rsquo;image, puis enregistrez l\u0026rsquo;image. C\u0026rsquo;est tout.\n","date":"2023-04-11T14:31:59+09:00","image":"http://kenji.blog/p/paint.net%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%94%BB%E5%83%8F%E3%81%AB%E6%9E%A0%E7%B7%9A%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu0a2e55b3f220b3e7559f248d1c86ab19_112900_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-ajouter-une-bordure-a-une-image-avec-paint-net/","title":"Comment ajouter une bordure à une image en utilisant paint.net"},{"content":"Introduction En utilisant un service appelé Ranklet, vous pouvez facilement récupérer le classement des pages populaires depuis Google Analytics et l\u0026rsquo;intégrer sur votre site.\nDans cet article, nous allons vous présenter comment l\u0026rsquo;intégrer sur un blog HUGO.\nAperçu du fonctionnement Préparation Avoir configuré Google Analytics sur votre site Étapes Accédez à Ranklet Cliquez sur Sign in with Google pour vous connecter avec votre compte Google (celui-ci doit être associé à votre compte Google Analytics) Cliquez sur Autoriser (許可)\nConfigurez les informations de base La configuration a été effectuée comme indiqué ci-dessus.\nDans Vue Google Analytics (Google Analytics ビュー), sélectionnez la vue dont vous souhaitez obtenir le classement. Configurez le remplacement de texte La configuration a été effectuée comme indiqué ci-dessus. Ce paramètre est défini pour supprimer | kenji.blog du titre de la page.\nConfigurez le modèle HTML (les numéros de classement ont été masqués) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 \u0026lt;div class=\u0026#34;ranklet ranklet-reset\u0026#34;\u0026gt; \u0026lt;table class=\u0026#34;ranklet-table\u0026#34;\u0026gt; \u0026lt;tbody class=\u0026#34;ranklet-pages\u0026#34;\u0026gt; {{#context.pages}} \u0026lt;tr class=\u0026#34;ranklet-page\u0026#34;\u0026gt; \u0026lt;td class=\u0026#34;ranklet-image\u0026#34;\u0026gt; {{#image}} \u0026lt;a href=\u0026#34;{{url}}\u0026#34; class=\u0026#34;ranklet-link\u0026#34;\u0026gt; \u0026lt;img class=\u0026#34;ranklet-img\u0026#34; src=\u0026#34;{{image}}\u0026#34; /\u0026gt; \u0026lt;/a\u0026gt; {{/image}} \u0026lt;/td\u0026gt; \u0026lt;td class=\u0026#34;ranklet-meta\u0026#34;\u0026gt; \u0026lt;div class=\u0026#34;ranklet-title\u0026#34;\u0026gt; \u0026lt;a href=\u0026#34;{{url}}\u0026#34; class=\u0026#34;ranklet-link\u0026#34;\u0026gt; {{title}} \u0026lt;/a\u0026gt; \u0026lt;/div\u0026gt; {{#description}} \u0026lt;div class=\u0026#34;ranklet-description\u0026#34;\u0026gt; \u0026lt;a href=\u0026#34;{{url}}\u0026#34; class=\u0026#34;ranklet-link\u0026#34;\u0026gt; {{description}} \u0026lt;/a\u0026gt; \u0026lt;/div\u0026gt; {{/description}} \u0026lt;/td\u0026gt; \u0026lt;/tr\u0026gt; {{/context.pages}} \u0026lt;/tbody\u0026gt; \u0026lt;/table\u0026gt; \u0026lt;/div\u0026gt; CSS (la taille de police a été modifiée et la description s\u0026rsquo;affiche sur 3 lignes) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #ranklet-{{context.id}} { .ranklet-reset { // Réinitialisation table, tr, td, div, span { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; line-height: 1; box-sizing: border-box; } } .ranklet-table { border-collapse: separate; border-spacing: 8px 24px; width: 100%; word-break: break-all; td { vertical-align: middle; } .ranklet-rank { text-align: center; font-size: 120%; } .ranklet-image { text-align: center; img { max-width: 128px; max-height: 128px; } } .ranklet-meta { .ranklet-title { font-size: 20px; line-height: 125%; } .ranklet-description { font-size: 16px; margin-top: 8px; line-height: 125%; display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; /* Nombre de lignes */ } } } } Aucun changement pour JavaScript Copiez le code HTML depuis « Publier sur le site » Copiez le code HTML affiché\nCollez-le dans le modèle HUGO Créez layouts/partials/ranklet.html et collez-y le code HTML copié 1 \u0026lt;div id=\u0026#34;ranklet-11958\u0026#34;\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;script src=\u0026#34;//widget.ranklet.com/v1/ranklet/s3/widgets/11958/widget.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; Collez le code suivant sur la ligne précédant \u0026lt;/footer\u0026gt; dans layouts/_default/single.html 1 {{- partial \u0026#34;ranklet.html\u0026#34; . }} C\u0026rsquo;est tout. Le classement s\u0026rsquo;affichera désormais comme au bas de cette page.\n","date":"2023-04-10T20:26:57+09:00","image":"http://kenji.blog/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hue19aa55fc0e6d690cd31b7a50b796054_6753_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/google%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%81%8B%E3%82%89%E4%BA%BA%E6%B0%97%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment obtenir et intégrer un classement des pages populaires depuis Google Analytics"},{"content":"Python Google Colaboratory Google Colaboratory est un environnement d\u0026rsquo;exécution Python disponible en ligne.\nL\u0026rsquo;utilisation de GPU est également possible. Avec les notebooks Colab, vous pouvez écrire du code exécutable et du texte enrichi (images, HTML, LaTeX, etc.) dans un seul document. Il est basé sur Jupyter Notebook.\nRust Rust Playground JavaScript Javascript Playground Java paiza.IO Online Java compiler Haskell Haskell Playground Swift Online Swift Playground C++ C++ 14 Autres AWS Cloud9 Un environnement de développement intégré en ligne fourni par Amazon AWS. Des outils pour plus de 40 langages de programmation tels que Node.js, JavaScript, Python, PHP, Ruby, Go, C++, etc. sont pré-emballés.\nVisual Studio Code for the Web Un environnement de développement en ligne fourni par Microsoft. Cependant, les langages nécessitant une compilation ne peuvent pas être exécutés ou débogués.\npaiza.IO Un environnement d\u0026rsquo;exécution en ligne prenant en charge 24 langages principaux tels que C, C++, Java, Ruby, Python, PHP, Perl, etc.\nCodePen Un environnement d\u0026rsquo;exécution en ligne pour HTML, CSS et JavaScript.\ncodeanywhere Un IDE en ligne. Permet le partage de code et le chat.\n","date":"2023-04-09T14:01:00+09:00","image":"http://kenji.blog/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/img_hu1a682c657d060df2f584d6c279d355c7_129199_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/","title":"[Par langage] Résumé des environnements d'exécution de code en ligne"},{"content":"Qu\u0026rsquo;est-ce que le Crible d\u0026rsquo;Ératosthène ? Le Crible d\u0026rsquo;Ératosthène est un algorithme utilisé pour trouver tous les nombres premiers jusqu\u0026rsquo;à une limite donnée. L\u0026rsquo;algorithme est simple et peut être implémenté via les étapes suivantes :\nCréer un tableau booléen de N éléments et initialiser tous les éléments à vrai (true). Définir les 0ème et 1er éléments du tableau sur faux (false) (car 0 et 1 ne sont pas premiers). Si le 2ème élément du tableau est vrai, afficher 2 comme nombre premier. Définir tous les multiples de 2 supérieurs ou égaux à $2^2$ sur faux (*). Si le 3ème élément du tableau est vrai, afficher 3 comme nombre premier. Définir tous les multiples de 3 supérieurs ou égaux à $3^2$ sur faux. Répéter le même processus pour les 4ème, 5ème, \u0026hellip;, et N-ième éléments. La raison pour laquelle on commence à marquer comme faux à partir du carré du nombre est que les nombres inférieurs au carré ont déjà été traités lors des étapes précédentes. Implémentation en Rust 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 fn main() { let n = 1000; let mut is_prime = vec![true; n+1]; is_prime[0] = false; is_prime[1] = false; for i in 2..=n { if is_prime[i] { println!(\u0026#34;{}\u0026#34;, i); let mut j = i * i; while j \u0026lt;= n { is_prime[j] = false; j += i; } } } } Version légèrement optimisée Nous pouvons optimiser légèrement l\u0026rsquo;implémentation en considérant les points suivants :\nInitialiser le tableau à faux (false) au lieu de vrai (true) (cela est plus rapide). Puisque les multiples de 2 ne sont pas des nombres premiers, ignorer l\u0026rsquo;étape visant à définir les multiples de 2 sur faux. Il n\u0026rsquo;est pas nécessaire de boucler jusqu\u0026rsquo;à n ; trouver les nombres premiers jusqu\u0026rsquo;à la racine carrée de n suffit pour trouver tous les nombres premiers inférieurs ou égaux à n. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 fn main() { let n = 1000; let mut is_prime = vec![false; n+1]; is_prime[2] = true; for i in (3..=n).step_by(2) { is_prime[i] = true; } for i in 3..=((n as f64).sqrt() as usize) { if is_prime[i] { let mut j = i * i; while j \u0026lt;= n { is_prime[j] = false; j += i * 2; } } } for i in (2..=n).filter(|\u0026amp;x| is_prime[x]) { println!(\u0026#34;{}\u0026#34;, i); } } Référence Crible d\u0026rsquo;Ératosthène (Wikipedia) ","date":"2023-04-09T12:54:24+09:00","image":"http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hud779f88eb17786b23927bc052940ab95_400805_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-lister-les-nombres-premiers-inf%C3%A9rieurs-%C3%A0-1000-en-utilisant-le-crible-d%C3%A9ratosth%C3%A8ne/","title":"Comment lister les nombres premiers inférieurs à 1000 en utilisant le Crible d'Ératosthène"},{"content":"Installation via le Terminal Ouvrir le Terminal Exécuter sudo gem install cocoapods → Pour une raison quelconque, le message d\u0026rsquo;erreur suivant est apparu et l\u0026rsquo;installation a échoué. Sortie 1 2 3 ERROR: Error installing cocoapods: The last version of activesupport (\u0026gt;= 5.0, \u0026lt; 8) to support your Ruby \u0026amp; RubyGems was 6.1.7.3. Try installing it with `gem install activesupport -v 6.1.7.3` and then running the current command again activesupport requires Ruby version \u0026gt;= 2.7.0. The current ruby version is 2.6.10.210. J\u0026rsquo;ai donc recherché le message d\u0026rsquo;erreur sur le web (voir \u0026ldquo;Références\u0026rdquo; ci-dessous) et exécuté la commande suivante : 1 /bin/bash -c \u0026#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\u0026#34; Sortie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 ==\u0026gt; Checking for `sudo` access (which may request your password)... ==\u0026gt; This script will install: /usr/local/bin/brew /usr/local/share/doc/homebrew /usr/local/share/man/man1/brew.1 /usr/local/share/zsh/site-functions/_brew /usr/local/etc/bash_completion.d/brew /usr/local/Homebrew ==\u0026gt; The following new directories will be created: /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; The Xcode Command Line Tools will be installed. Press RETURN/ENTER to continue or any other key to abort: ==\u0026gt; /usr/bin/sudo /bin/mkdir -p /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; /usr/bin/sudo /bin/chmod ug=rwx /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; /usr/bin/sudo /bin/chmod go-w /usr/local/share/zsh /usr/local/share/zsh/site-functions ==\u0026gt; /usr/bin/sudo /usr/sbin/chown kenji /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; /usr/bin/sudo /usr/bin/chgrp admin /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Frameworks ==\u0026gt; /usr/bin/sudo /bin/mkdir -p /usr/local/Homebrew ==\u0026gt; /usr/bin/sudo /usr/sbin/chown -R kenji:admin /usr/local/Homebrew ==\u0026gt; /usr/bin/sudo /bin/mkdir -p /Users/kenji/Library/Caches/Homebrew ==\u0026gt; /usr/bin/sudo /bin/chmod g+rwx /Users/kenji/Library/Caches/Homebrew ==\u0026gt; /usr/bin/sudo /usr/sbin/chown -R kenji /Users/kenji/Library/Caches/Homebrew ==\u0026gt; Searching online for the Command Line Tools ==\u0026gt; /usr/bin/sudo /usr/bin/touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress ==\u0026gt; Installing Command Line Tools for Xcode-14.3 ==\u0026gt; /usr/bin/sudo /usr/sbin/softwareupdate -i Command\\ Line\\ Tools\\ for\\ Xcode-14.3 Software Update Tool Finding available software Downloading Command Line Tools for Xcode Downloaded Command Line Tools for Xcode Installing Command Line Tools for Xcode Done with Command Line Tools for Xcode Done. ==\u0026gt; /usr/bin/sudo /usr/bin/xcode-select --switch /Library/Developer/CommandLineTools ==\u0026gt; /usr/bin/sudo /bin/rm -f /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress ==\u0026gt; Downloading and installing Homebrew... remote: Enumerating objects: 236191, done. remote: Counting objects: 100% (504/504), done. remote: Compressing objects: 100% (327/327), done. remote: Total 236191 (delta 176), reused 468 (delta 158), pack-reused 235687 Receiving objects: 100% (236191/236191), 68.37 MiB | 15.51 MiB/s, done. Resolving deltas: 100% (173058/173058), done. From https://github.com/Homebrew/brew * [new branch] master -\u0026gt; origin/master * [new branch] test-runners -\u0026gt; origin/test-runners * [new tag] 0.1 -\u0026gt; 0.1 * [new tag] 0.2 -\u0026gt; 0.2 * [new tag] 0.3 -\u0026gt; 0.3 * [new tag] 0.4 -\u0026gt; 0.4 * [new tag] 0.5 -\u0026gt; 0.5 * [new tag] 0.6 -\u0026gt; 0.6 * [new tag] 0.7 -\u0026gt; 0.7 * [new tag] 0.7.1 -\u0026gt; 0.7.1 * [new tag] 0.8 -\u0026gt; 0.8 * [new tag] 0.8.1 -\u0026gt; 0.8.1 * [new tag] 0.9 -\u0026gt; 0.9 * [new tag] 0.9.1 -\u0026gt; 0.9.1 * [new tag] 0.9.2 -\u0026gt; 0.9.2 * [new tag] 0.9.3 -\u0026gt; 0.9.3 * [new tag] 0.9.4 -\u0026gt; 0.9.4 * [new tag] 0.9.5 -\u0026gt; 0.9.5 * [new tag] 0.9.8 -\u0026gt; 0.9.8 * [new tag] 0.9.9 -\u0026gt; 0.9.9 * [new tag] 1.0.0 -\u0026gt; 1.0.0 * [new tag] 1.0.1 -\u0026gt; 1.0.1 * [new tag] 1.0.2 -\u0026gt; 1.0.2 * [new tag] 1.0.3 -\u0026gt; 1.0.3 * [new tag] 1.0.4 -\u0026gt; 1.0.4 * [new tag] 1.0.5 -\u0026gt; 1.0.5 * [new tag] 1.0.6 -\u0026gt; 1.0.6 * [new tag] 1.0.7 -\u0026gt; 1.0.7 * [new tag] 1.0.8 -\u0026gt; 1.0.8 * [new tag] 1.0.9 -\u0026gt; 1.0.9 * [new tag] 1.1.0 -\u0026gt; 1.1.0 * [new tag] 1.1.1 -\u0026gt; 1.1.1 * [new tag] 1.1.10 -\u0026gt; 1.1.10 * [new tag] 1.1.11 -\u0026gt; 1.1.11 * [new tag] 1.1.12 -\u0026gt; 1.1.12 * [new tag] 1.1.13 -\u0026gt; 1.1.13 * [new tag] 1.1.2 -\u0026gt; 1.1.2 * [new tag] 1.1.3 -\u0026gt; 1.1.3 * [new tag] 1.1.4 -\u0026gt; 1.1.4 * [new tag] 1.1.5 -\u0026gt; 1.1.5 * [new tag] 1.1.6 -\u0026gt; 1.1.6 * [new tag] 1.1.7 -\u0026gt; 1.1.7 * [new tag] 1.1.8 -\u0026gt; 1.1.8 * [new tag] 1.1.9 -\u0026gt; 1.1.9 * [new tag] 1.2.0 -\u0026gt; 1.2.0 * [new tag] 1.2.1 -\u0026gt; 1.2.1 * [new tag] 1.2.2 -\u0026gt; 1.2.2 * [new tag] 1.2.3 -\u0026gt; 1.2.3 * [new tag] 1.2.4 -\u0026gt; 1.2.4 * [new tag] 1.2.5 -\u0026gt; 1.2.5 * [new tag] 1.2.6 -\u0026gt; 1.2.6 * [new tag] 1.3.0 -\u0026gt; 1.3.0 * [new tag] 1.3.1 -\u0026gt; 1.3.1 * [new tag] 1.3.2 -\u0026gt; 1.3.2 * [new tag] 1.3.3 -\u0026gt; 1.3.3 * [new tag] 1.3.4 -\u0026gt; 1.3.4 * [new tag] 1.3.5 -\u0026gt; 1.3.5 * [new tag] 1.3.6 -\u0026gt; 1.3.6 * [new tag] 1.3.7 -\u0026gt; 1.3.7 * [new tag] 1.3.8 -\u0026gt; 1.3.8 * [new tag] 1.3.9 -\u0026gt; 1.3.9 * [new tag] 1.4.0 -\u0026gt; 1.4.0 * [new tag] 1.4.1 -\u0026gt; 1.4.1 * [new tag] 1.4.2 -\u0026gt; 1.4.2 * [new tag] 1.4.3 -\u0026gt; 1.4.3 * [new tag] 1.5.0 -\u0026gt; 1.5.0 * [new tag] 1.5.1 -\u0026gt; 1.5.1 * [new tag] 1.5.10 -\u0026gt; 1.5.10 * [new tag] 1.5.11 -\u0026gt; 1.5.11 * [new tag] 1.5.12 -\u0026gt; 1.5.12 * [new tag] 1.5.13 -\u0026gt; 1.5.13 * [new tag] 1.5.14 -\u0026gt; 1.5.14 * [new tag] 1.5.2 -\u0026gt; 1.5.2 * [new tag] 1.5.3 -\u0026gt; 1.5.3 * [new tag] 1.5.4 -\u0026gt; 1.5.4 * [new tag] 1.5.5 -\u0026gt; 1.5.5 * [new tag] 1.5.6 -\u0026gt; 1.5.6 * [new tag] 1.5.7 -\u0026gt; 1.5.7 * [new tag] 1.5.8 -\u0026gt; 1.5.8 * [new tag] 1.5.9 -\u0026gt; 1.5.9 * [new tag] 1.6.0 -\u0026gt; 1.6.0 * [new tag] 1.6.1 -\u0026gt; 1.6.1 * [new tag] 1.6.10 -\u0026gt; 1.6.10 * [new tag] 1.6.11 -\u0026gt; 1.6.11 * [new tag] 1.6.12 -\u0026gt; 1.6.12 * [new tag] 1.6.13 -\u0026gt; 1.6.13 * [new tag] 1.6.14 -\u0026gt; 1.6.14 * [new tag] 1.6.15 -\u0026gt; 1.6.15 * [new tag] 1.6.16 -\u0026gt; 1.6.16 * [new tag] 1.6.17 -\u0026gt; 1.6.17 * [new tag] 1.6.2 -\u0026gt; 1.6.2 * [new tag] 1.6.3 -\u0026gt; 1.6.3 * [new tag] 1.6.4 -\u0026gt; 1.6.4 * [new tag] 1.6.5 -\u0026gt; 1.6.5 * [new tag] 1.6.6 -\u0026gt; 1.6.6 * [new tag] 1.6.7 -\u0026gt; 1.6.7 * [new tag] 1.6.8 -\u0026gt; 1.6.8 * [new tag] 1.6.9 -\u0026gt; 1.6.9 * [new tag] 1.7.0 -\u0026gt; 1.7.0 * [new tag] 1.7.1 -\u0026gt; 1.7.1 * [new tag] 1.7.2 -\u0026gt; 1.7.2 * [new tag] 1.7.3 -\u0026gt; 1.7.3 * [new tag] 1.7.4 -\u0026gt; 1.7.4 * [new tag] 1.7.5 -\u0026gt; 1.7.5 * [new tag] 1.7.6 -\u0026gt; 1.7.6 * [new tag] 1.7.7 -\u0026gt; 1.7.7 * [new tag] 1.8.0 -\u0026gt; 1.8.0 * [new tag] 1.8.1 -\u0026gt; 1.8.1 * [new tag] 1.8.2 -\u0026gt; 1.8.2 * [new tag] 1.8.3 -\u0026gt; 1.8.3 * [new tag] 1.8.4 -\u0026gt; 1.8.4 * [new tag] 1.8.5 -\u0026gt; 1.8.5 * [new tag] 1.8.6 -\u0026gt; 1.8.6 * [new tag] 1.9.0 -\u0026gt; 1.9.0 * [new tag] 1.9.1 -\u0026gt; 1.9.1 * [new tag] 1.9.2 -\u0026gt; 1.9.2 * [new tag] 1.9.3 -\u0026gt; 1.9.3 * [new tag] 2.0.0 -\u0026gt; 2.0.0 * [new tag] 2.0.1 -\u0026gt; 2.0.1 * [new tag] 2.0.2 -\u0026gt; 2.0.2 * [new tag] 2.0.3 -\u0026gt; 2.0.3 * [new tag] 2.0.4 -\u0026gt; 2.0.4 * [new tag] 2.0.5 -\u0026gt; 2.0.5 * [new tag] 2.0.6 -\u0026gt; 2.0.6 * [new tag] 2.1.0 -\u0026gt; 2.1.0 * [new tag] 2.1.1 -\u0026gt; 2.1.1 * [new tag] 2.1.10 -\u0026gt; 2.1.10 * [new tag] 2.1.11 -\u0026gt; 2.1.11 * [new tag] 2.1.12 -\u0026gt; 2.1.12 * [new tag] 2.1.13 -\u0026gt; 2.1.13 * [new tag] 2.1.14 -\u0026gt; 2.1.14 * [new tag] 2.1.15 -\u0026gt; 2.1.15 * [new tag] 2.1.16 -\u0026gt; 2.1.16 * [new tag] 2.1.2 -\u0026gt; 2.1.2 * [new tag] 2.1.3 -\u0026gt; 2.1.3 * [new tag] 2.1.4 -\u0026gt; 2.1.4 * [new tag] 2.1.5 -\u0026gt; 2.1.5 * [new tag] 2.1.6 -\u0026gt; 2.1.6 * [new tag] 2.1.7 -\u0026gt; 2.1.7 * [new tag] 2.1.8 -\u0026gt; 2.1.8 * [new tag] 2.1.9 -\u0026gt; 2.1.9 * [new tag] 2.2.0 -\u0026gt; 2.2.0 * [new tag] 2.2.1 -\u0026gt; 2.2.1 * [new tag] 2.2.10 -\u0026gt; 2.2.10 * [new tag] 2.2.11 -\u0026gt; 2.2.11 * [new tag] 2.2.12 -\u0026gt; 2.2.12 * [new tag] 2.2.13 -\u0026gt; 2.2.13 * [new tag] 2.2.14 -\u0026gt; 2.2.14 * [new tag] 2.2.15 -\u0026gt; 2.2.15 * [new tag] 2.2.16 -\u0026gt; 2.2.16 * [new tag] 2.2.17 -\u0026gt; 2.2.17 * [new tag] 2.2.2 -\u0026gt; 2.2.2 * [new tag] 2.2.3 -\u0026gt; 2.2.3 * [new tag] 2.2.4 -\u0026gt; 2.2.4 * [new tag] 2.2.5 -\u0026gt; 2.2.5 * [new tag] 2.2.6 -\u0026gt; 2.2.6 * [new tag] 2.2.7 -\u0026gt; 2.2.7 * [new tag] 2.2.8 -\u0026gt; 2.2.8 * [new tag] 2.2.9 -\u0026gt; 2.2.9 * [new tag] 2.3.0 -\u0026gt; 2.3.0 * [new tag] 2.4.0 -\u0026gt; 2.4.0 * [new tag] 2.4.1 -\u0026gt; 2.4.1 * [new tag] 2.4.10 -\u0026gt; 2.4.10 * [new tag] 2.4.11 -\u0026gt; 2.4.11 * [new tag] 2.4.12 -\u0026gt; 2.4.12 * [new tag] 2.4.13 -\u0026gt; 2.4.13 * [new tag] 2.4.14 -\u0026gt; 2.4.14 * [new tag] 2.4.15 -\u0026gt; 2.4.15 * [new tag] 2.4.16 -\u0026gt; 2.4.16 * [new tag] 2.4.2 -\u0026gt; 2.4.2 * [new tag] 2.4.3 -\u0026gt; 2.4.3 * [new tag] 2.4.4 -\u0026gt; 2.4.4 * [new tag] 2.4.5 -\u0026gt; 2.4.5 * [new tag] 2.4.6 -\u0026gt; 2.4.6 * [new tag] 2.4.7 -\u0026gt; 2.4.7 * [new tag] 2.4.8 -\u0026gt; 2.4.8 * [new tag] 2.4.9 -\u0026gt; 2.4.9 * [new tag] 2.5.0 -\u0026gt; 2.5.0 * [new tag] 2.5.1 -\u0026gt; 2.5.1 * [new tag] 2.5.10 -\u0026gt; 2.5.10 * [new tag] 2.5.11 -\u0026gt; 2.5.11 * [new tag] 2.5.12 -\u0026gt; 2.5.12 * [new tag] 2.5.2 -\u0026gt; 2.5.2 * [new tag] 2.5.3 -\u0026gt; 2.5.3 * [new tag] 2.5.4 -\u0026gt; 2.5.4 * [new tag] 2.5.5 -\u0026gt; 2.5.5 * [new tag] 2.5.6 -\u0026gt; 2.5.6 * [new tag] 2.5.7 -\u0026gt; 2.5.7 * [new tag] 2.5.8 -\u0026gt; 2.5.8 * [new tag] 2.5.9 -\u0026gt; 2.5.9 * [new tag] 2.6.0 -\u0026gt; 2.6.0 * [new tag] 2.6.1 -\u0026gt; 2.6.1 * [new tag] 2.6.2 -\u0026gt; 2.6.2 * [new tag] 2.7.0 -\u0026gt; 2.7.0 * [new tag] 2.7.1 -\u0026gt; 2.7.1 * [new tag] 2.7.2 -\u0026gt; 2.7.2 * [new tag] 2.7.3 -\u0026gt; 2.7.3 * [new tag] 2.7.4 -\u0026gt; 2.7.4 * [new tag] 2.7.5 -\u0026gt; 2.7.5 * [new tag] 2.7.6 -\u0026gt; 2.7.6 * [new tag] 2.7.7 -\u0026gt; 2.7.7 * [new tag] 3.0.0 -\u0026gt; 3.0.0 * [new tag] 3.0.1 -\u0026gt; 3.0.1 * [new tag] 3.0.10 -\u0026gt; 3.0.10 * [new tag] 3.0.11 -\u0026gt; 3.0.11 * [new tag] 3.0.2 -\u0026gt; 3.0.2 * [new tag] 3.0.3 -\u0026gt; 3.0.3 * [new tag] 3.0.4 -\u0026gt; 3.0.4 * [new tag] 3.0.5 -\u0026gt; 3.0.5 * [new tag] 3.0.6 -\u0026gt; 3.0.6 * [new tag] 3.0.7 -\u0026gt; 3.0.7 * [new tag] 3.0.8 -\u0026gt; 3.0.8 * [new tag] 3.0.9 -\u0026gt; 3.0.9 * [new tag] 3.1.0 -\u0026gt; 3.1.0 * [new tag] 3.1.1 -\u0026gt; 3.1.1 * [new tag] 3.1.10 -\u0026gt; 3.1.10 * [new tag] 3.1.11 -\u0026gt; 3.1.11 * [new tag] 3.1.12 -\u0026gt; 3.1.12 * [new tag] 3.1.2 -\u0026gt; 3.1.2 * [new tag] 3.1.3 -\u0026gt; 3.1.3 * [new tag] 3.1.4 -\u0026gt; 3.1.4 * [new tag] 3.1.5 -\u0026gt; 3.1.5 * [new tag] 3.1.6 -\u0026gt; 3.1.6 * [new tag] 3.1.7 -\u0026gt; 3.1.7 * [new tag] 3.1.8 -\u0026gt; 3.1.8 * [new tag] 3.1.9 -\u0026gt; 3.1.9 * [new tag] 3.2.0 -\u0026gt; 3.2.0 * [new tag] 3.2.1 -\u0026gt; 3.2.1 * [new tag] 3.2.10 -\u0026gt; 3.2.10 * [new tag] 3.2.11 -\u0026gt; 3.2.11 * [new tag] 3.2.12 -\u0026gt; 3.2.12 * [new tag] 3.2.13 -\u0026gt; 3.2.13 * [new tag] 3.2.14 -\u0026gt; 3.2.14 * [new tag] 3.2.15 -\u0026gt; 3.2.15 * [new tag] 3.2.16 -\u0026gt; 3.2.16 * [new tag] 3.2.17 -\u0026gt; 3.2.17 * [new tag] 3.2.2 -\u0026gt; 3.2.2 * [new tag] 3.2.3 -\u0026gt; 3.2.3 * [new tag] 3.2.4 -\u0026gt; 3.2.4 * [new tag] 3.2.5 -\u0026gt; 3.2.5 * [new tag] 3.2.6 -\u0026gt; 3.2.6 * [new tag] 3.2.7 -\u0026gt; 3.2.7 * [new tag] 3.2.8 -\u0026gt; 3.2.8 * [new tag] 3.2.9 -\u0026gt; 3.2.9 * [new tag] 3.3.0 -\u0026gt; 3.3.0 * [new tag] 3.3.1 -\u0026gt; 3.3.1 * [new tag] 3.3.10 -\u0026gt; 3.3.10 * [new tag] 3.3.11 -\u0026gt; 3.3.11 * [new tag] 3.3.12 -\u0026gt; 3.3.12 * [new tag] 3.3.13 -\u0026gt; 3.3.13 * [new tag] 3.3.14 -\u0026gt; 3.3.14 * [new tag] 3.3.15 -\u0026gt; 3.3.15 * [new tag] 3.3.16 -\u0026gt; 3.3.16 * [new tag] 3.3.2 -\u0026gt; 3.3.2 * [new tag] 3.3.3 -\u0026gt; 3.3.3 * [new tag] 3.3.4 -\u0026gt; 3.3.4 * [new tag] 3.3.5 -\u0026gt; 3.3.5 * [new tag] 3.3.6 -\u0026gt; 3.3.6 * [new tag] 3.3.7 -\u0026gt; 3.3.7 * [new tag] 3.3.8 -\u0026gt; 3.3.8 * [new tag] 3.3.9 -\u0026gt; 3.3.9 * [new tag] 3.4.0 -\u0026gt; 3.4.0 * [new tag] 3.4.1 -\u0026gt; 3.4.1 * [new tag] 3.4.10 -\u0026gt; 3.4.10 * [new tag] 3.4.11 -\u0026gt; 3.4.11 * [new tag] 3.4.2 -\u0026gt; 3.4.2 * [new tag] 3.4.3 -\u0026gt; 3.4.3 * [new tag] 3.4.4 -\u0026gt; 3.4.4 * [new tag] 3.4.5 -\u0026gt; 3.4.5 * [new tag] 3.4.6 -\u0026gt; 3.4.6 * [new tag] 3.4.7 -\u0026gt; 3.4.7 * [new tag] 3.4.8 -\u0026gt; 3.4.8 * [new tag] 3.4.9 -\u0026gt; 3.4.9 * [new tag] 3.5.0 -\u0026gt; 3.5.0 * [new tag] 3.5.1 -\u0026gt; 3.5.1 * [new tag] 3.5.10 -\u0026gt; 3.5.10 * [new tag] 3.5.2 -\u0026gt; 3.5.2 * [new tag] 3.5.3 -\u0026gt; 3.5.3 * [new tag] 3.5.4 -\u0026gt; 3.5.4 * [new tag] 3.5.5 -\u0026gt; 3.5.5 * [new tag] 3.5.6 -\u0026gt; 3.5.6 * [new tag] 3.5.7 -\u0026gt; 3.5.7 * [new tag] 3.5.8 -\u0026gt; 3.5.8 * [new tag] 3.5.9 -\u0026gt; 3.5.9 * [new tag] 3.6.0 -\u0026gt; 3.6.0 * [new tag] 3.6.1 -\u0026gt; 3.6.1 * [new tag] 3.6.10 -\u0026gt; 3.6.10 * [new tag] 3.6.11 -\u0026gt; 3.6.11 * [new tag] 3.6.12 -\u0026gt; 3.6.12 * [new tag] 3.6.13 -\u0026gt; 3.6.13 * [new tag] 3.6.14 -\u0026gt; 3.6.14 * [new tag] 3.6.15 -\u0026gt; 3.6.15 * [new tag] 3.6.16 -\u0026gt; 3.6.16 * [new tag] 3.6.17 -\u0026gt; 3.6.17 * [new tag] 3.6.18 -\u0026gt; 3.6.18 * [new tag] 3.6.19 -\u0026gt; 3.6.19 * [new tag] 3.6.2 -\u0026gt; 3.6.2 * [new tag] 3.6.20 -\u0026gt; 3.6.20 * [new tag] 3.6.21 -\u0026gt; 3.6.21 * [new tag] 3.6.3 -\u0026gt; 3.6.3 * [new tag] 3.6.4 -\u0026gt; 3.6.4 * [new tag] 3.6.5 -\u0026gt; 3.6.5 * [new tag] 3.6.6 -\u0026gt; 3.6.6 * [new tag] 3.6.7 -\u0026gt; 3.6.7 * [new tag] 3.6.8 -\u0026gt; 3.6.8 * [new tag] 3.6.9 -\u0026gt; 3.6.9 * [new tag] 4.0.0 -\u0026gt; 4.0.0 * [new tag] 4.0.1 -\u0026gt; 4.0.1 * [new tag] 4.0.10 -\u0026gt; 4.0.10 * [new tag] 4.0.11 -\u0026gt; 4.0.11 * [new tag] 4.0.2 -\u0026gt; 4.0.2 * [new tag] 4.0.3 -\u0026gt; 4.0.3 * [new tag] 4.0.4 -\u0026gt; 4.0.4 * [new tag] 4.0.5 -\u0026gt; 4.0.5 * [new tag] 4.0.6 -\u0026gt; 4.0.6 * [new tag] 4.0.7 -\u0026gt; 4.0.7 * [new tag] 4.0.8 -\u0026gt; 4.0.8 * [new tag] 4.0.9 -\u0026gt; 4.0.9 HEAD is now at c51687009 Merge pull request #15168 from reitermarkus/api-ruby-source-path ==\u0026gt; Installation successful! ==\u0026gt; Homebrew has enabled anonymous aggregate formulae and cask analytics. Read the analytics documentation (and how to opt-out) here: https://docs.brew.sh/Analytics No analytics data has been sent yet (nor will any be during this install run). ==\u0026gt; Homebrew is run entirely by unpaid volunteers. Please consider donating: https://github.com/Homebrew/brew#donations ==\u0026gt; Next steps: - Run these two commands in your terminal to add Homebrew to your PATH: (echo; echo \u0026#39;eval \u0026#34;$(/usr/local/bin/brew shellenv)\u0026#34;\u0026#39;) \u0026gt;\u0026gt; /Users/kenji/.zprofile eval \u0026#34;$(/usr/local/bin/brew shellenv)\u0026#34; - Run brew help to get started - Further documentation: https://docs.brew.sh Exécuter brew install cocoapods Sortie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 Warning: Treating cocoapods as a formula. For the cask, use homebrew/cask/cocoapods ==\u0026gt; Fetching dependencies for cocoapods: libyaml, ca-certificates, openssl@1.1, readline and ruby ==\u0026gt; Fetching libyaml ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/libyaml/manifests/0.2.5 ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/libyaml/blobs/sha256:b49e62f014 ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching ca-certificates ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/manifests/2023- ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/ca-certificates/blobs/sha256:11 ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching openssl@1.1 ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/manifests/1.1.1t ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/blobs/sha256:97676d ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching readline ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/readline/manifests/8.2.1 ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/readline/blobs/sha256:abe9d3f3e ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching ruby ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/ruby/manifests/3.2.2 ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/ruby/blobs/sha256:a4ac080688e87 ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Fetching cocoapods ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/cocoapods/manifests/1.12.0 ######################################################################## 100.0% ==\u0026gt; Downloading https://ghcr.io/v2/homebrew/core/cocoapods/blobs/sha256:11226288 ==\u0026gt; Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh ######################################################################## 100.0% ==\u0026gt; Installing dependencies for cocoapods: libyaml, ca-certificates, openssl@1.1, readline and ruby ==\u0026gt; Installing cocoapods dependency: libyaml ==\u0026gt; Pouring libyaml--0.2.5.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/libyaml/0.2.5: 10 files, 330KB ==\u0026gt; Installing cocoapods dependency: ca-certificates ==\u0026gt; Pouring ca-certificates--2023-01-10.all.bottle.tar.gz ==\u0026gt; Regenerating CA certificate bundle from keychain, this may take a while... 🍺 /usr/local/Cellar/ca-certificates/2023-01-10: 3 files, 216.9KB ==\u0026gt; Installing cocoapods dependency: openssl@1.1 ==\u0026gt; Pouring openssl@1.1--1.1.1t.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/openssl@1.1/1.1.1t: 8,101 files, 18.5MB ==\u0026gt; Installing cocoapods dependency: readline ==\u0026gt; Pouring readline--8.2.1.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/readline/8.2.1: 50 files, 1.7MB ==\u0026gt; Installing cocoapods dependency: ruby ==\u0026gt; Pouring ruby--3.2.2.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/ruby/3.2.2: 16,605 files, 46.3MB ==\u0026gt; Installing cocoapods ==\u0026gt; Pouring cocoapods--1.12.0.ventura.bottle.tar.gz 🍺 /usr/local/Cellar/cocoapods/1.12.0: 13,436 files, 27.8MB ==\u0026gt; Running `brew cleanup cocoapods`... Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). Exécuter pod --version Sortie 1 1.12.0 Il semble avoir été installé avec succès.\nRéférences Installing \u0026ldquo;CocoaPods\u0026rdquo; ","date":"2023-04-09T03:25:54+09:00","image":"http://kenji.blog/p/mac%E3%81%ABcocoapods%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu5a3007afd3f7cdc4b526573a36fbeca4_11833_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/mac%E3%81%ABcocoapods%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment installer CocoaPods sur mac"},{"content":"Comment obtenir le nombre d\u0026rsquo;enregistrements créés par jour à l\u0026rsquo;aide de Salesforce SOQL Ouvrez la Developer Console. Ouvrez l\u0026rsquo;onglet Query Editor. Collez et exécutez le SOQL suivant. 1 select day_only(createdDate), count(createdDate) from account group by day_only(createdDate) order by count(createdDate) desc limit 10 Veuillez changer account en n\u0026rsquo;importe quel nom d\u0026rsquo;objet que vous souhaitez récupérer et exécutez-le.\nRéférence Is there a way to group by the date portion of a datetime field in SOQL? ","date":"2023-04-09T02:50:30+09:00","image":"http://kenji.blog/p/salesforce%E3%81%AEsoql%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E6%97%A5%E5%88%A5%E3%81%AE%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E4%BD%9C%E6%88%90%E6%95%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hub769e11b0a209a1986a31ec50fb9e2d1_10470_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-obtenir-le-nombre-denregistrements-cr%C3%A9%C3%A9s-par-jour-%C3%A0-laide-de-salesforce-soql/","title":"Comment obtenir le nombre d'enregistrements créés par jour à l'aide de Salesforce SOQL"},{"content":"\nCe dont vous avez besoin Compte Google Étapes Accédez à https://colab.research.google.com/ Sélectionnez \u0026ldquo;Fichier\u0026rdquo; -\u0026gt; \u0026ldquo;Nouveau notebook\u0026rdquo; Collez et exécutez le code ci-dessous 1 2 3 4 5 6 7 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 2*np.pi, 500) plt.plot(x, np.sin(x), label=\u0026#34;sin curve\u0026#34;) plt.plot(x, np.cos(x), label=\u0026#34;cos curve\u0026#34;) plt.legend() # Afficher la légende plt.show() Résultat de l\u0026rsquo;exécution Références matplotlib.pyplot — Matplotlib 3.5.3 documentation ","date":"2023-04-09T01:02:19+09:00","image":"http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hucdb24ab588d845f9f7a56ef99be2c709_27745_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-dessiner-des-graphiques-avec-python-matplotlib.pyplot/","title":"Comment dessiner des graphiques avec Python (matplotlib.pyplot)"},{"content":"Ce dont vous avez besoin Twitter API Twitter API SECRET Twitter ACCESS TOKEN Twitter ACCESS TOKEN SECRET Compte Google Consultez le site de référence pour savoir comment obtenir l\u0026rsquo;API Twitter.\nÉtapes pour tweeter à l\u0026rsquo;aide de l\u0026rsquo;API Accédez à https://colab.research.google.com/ Sélectionnez \u0026ldquo;Fichier\u0026rdquo; -\u0026gt; \u0026ldquo;Nouveau notebook\u0026rdquo; Collez et exécutez le code ci-dessous (veuillez utiliser vos propres valeurs réelles obtenues) 1 2 3 4 API_KEY = \u0026#39;9Smu2f2RoLqbVQHQq6n79Z2JW\u0026#39; API_SECRET = \u0026#39;uGVRIkLL2l8sRyPv2Lr4mXxXppnQF1isMoRnvktcXCtFgAK2R8\u0026#39; ACCESS_TOKEN = \u0026#39;0367292979164670705-7hSErDoQbO6fkFtnn5UY0vqpvecy0O\u0026#39; ACCESS_TOKEN_SECRET = \u0026#39;pUv81U9GVzZirz5g4AxZPHAJ4GpSXnBo8GUcZ1egtjw9q\u0026#39; Collez et exécutez le code ci-dessous 1 import tweepy Collez et exécutez le code ci-dessous (API v1.1) 1 2 3 4 auth = tweepy.OAuthHandler(API_KEY, API_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api = tweepy.API(auth) api.update_status(\u0026#34;hello\u0026#34;) → Un tweet disant hello sera publié.\nCollez et exécutez le code ci-dessous (API v2.0) 1 2 client = tweepy.Client(consumer_key=API_KEY, consumer_secret=API_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET) client.create_tweet(text=\u0026#39;hello v2\u0026#39;) → Un tweet disant hello v2 sera publié.\nC\u0026rsquo;est tout.\nRéférence 【À partir d\u0026rsquo;avril 2021】Explication détaillée de la demande d\u0026rsquo;utilisation de l\u0026rsquo;API Twitter avec des exemples de phrases d\u0026rsquo;utilisation et des captures d\u0026rsquo;écran 【Pas besoin de paramètres compliqués !】Google Colaboratory est recommandé comme environnement de test pour l\u0026rsquo;API Twitter 【Le code source est également partagé】 【Tweepy】Twitter API v2 : Tweets, réponses, tweets avec sondages, tweets avec médias (v1.1) [Python] ","date":"2023-04-08T18:48:32+09:00","image":"http://kenji.blog/p/twitter-api%E3%81%A8google-colaboratory%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6tweet%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu92a10d7ea1c17ea4dcc0d2e0b77b6296_75327_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-tweeter-en-utilisant-l-api-twitter-et-google-colaboratory/","title":"Comment tweeter en utilisant l'API Twitter et Google Colaboratory"},{"content":"Qu\u0026rsquo;est-ce qu\u0026rsquo;OpenSSL ? C\u0026rsquo;est une bibliothèque open-source qui fournit les traitements nécessaires pour effectuer des communications chiffrées.\nPour l\u0026rsquo;utiliser à partir d\u0026rsquo;un programme, puisque le code source en C est publié, vous devez le compiler pour créer une bibliothèque.\nCi-dessous, nous présentons la procédure de compilation.\nPréparation de l\u0026rsquo;environnement de compilation Perl\nTéléchargez strawberry-perl-5.32.1.1-64bit.msi à partir de https://strawberryperl.com/. La dernière version devrait convenir.\nNASM\nTéléchargez 2.16.01/nasm-2.16.01-win64.zip depuis Download sur https://www.nasm.us/. La dernière version non-RC devrait convenir. Après l\u0026rsquo;installation, vous devez ajouter le dossier où NASM est installé à la variable d\u0026rsquo;environnement PATH.\nVisual Studio 2022 ou Build Tools for Visual Studio 2022\nInstallez Visual Studio 2022 Community ou Build Tools for Visual Studio 2022 à partir de https://visualstudio.microsoft.com/ja/downloads/.\nProcédure de compilation d\u0026rsquo;OpenSSL sous Windows Téléchargez openssl-3.1.0.tar.gz sur https://www.openssl.org/source/ et extrayez-le. Si vous ne pouvez pas l\u0026rsquo;extraire, exécutez tar -xzf openssl-3.1.0.tar.gz dans l\u0026rsquo;invite de commande. Lancez l\u0026rsquo;invite de commande avec des privilèges d\u0026rsquo;administrateur. Ouvrez le dossier extrait. Exécutez la commande suivante. *Modifiez la partie Community pour correspondre à votre version installée de Visual Studio. 1 \u0026#34;C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat\u0026#34; x64 Exécutez la commande suivante : 1 perl Configure VC-WIN64A Exécutez la commande suivante (prend beaucoup de temps) : 1 nmake Exécutez la commande suivante (prend beaucoup de temps) : 1 nmake test Exécutez la commande suivante : 1 nmake install En cas de succès, OpenSSL sera installé dans C:\\Program Files\\OpenSSL.\nC\u0026rsquo;est tout.\nRéférences https://ja.wikipedia.org/wiki/OpenSSL\n","date":"2023-04-07T21:06:32+09:00","image":"http://kenji.blog/p/windows-%E3%81%A7-openssl-%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu856dff3329e4daff79f775d47e5cc35b_35659_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/windows-%E3%81%A7-openssl-%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment compiler OpenSSL sous Windows"},{"content":"Qu\u0026rsquo;est-ce que l\u0026rsquo;i18n ? i18n est l\u0026rsquo;abréviation de Internationalization, qui signifie internationalisation. Comme Internationalization est long, il est abrégé en i18n car il y a 18 lettres entre le premier i et le dernier n.\nIl est souvent utilisé dans le contexte de l\u0026rsquo;internationalisation des logiciels.\nLes principaux éléments à prendre en compte lors de l\u0026rsquo;internationalisation sont les suivants : 1\nJeu de caractères (code de caractère standard, etc.) Direction du texte (de gauche à droite, de droite à gauche, de haut en bas vers la gauche, etc.) Langue / Texte Polices Formats Nombres (caractère décimal, séparateur de milliers, nombre de chiffres à grouper, etc.) Date et heure (format de la date, différences dans les calendriers utilisés comme Islamique / Grégorien / Juif / Japonais, etc.) Différences de fuseau horaire dans les informations de date et d\u0026rsquo;heure Informations sur les devises Internationalisation et régionalisation - Wikipédia\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"2023-04-07T00:42:02+09:00","image":"http://kenji.blog/p/i18n%E3%81%A8%E3%81%AF/img_hu5547e5059a9dab53fb09979c54309752_11855_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/i18n%E3%81%A8%E3%81%AF/","title":"Qu'est-ce que l'i18n ?"},{"content":"Comment créer des présentations avec HTML reveal.js est un outil de création de présentations utilisant HTML et Markdown, qui possède les fonctionnalités suivantes :\nDiverses fonctions de présentation telles que des formules mathématiques, des animations et des opérations de balayage Thèmes et mises en page personnalisables Fonctions de navigation prises en charge par plusieurs appareils, tels que la souris, le clavier et le pavé tactile Fournit des fonctionnalités avancées, telles que la lecture automatique des diapositives et les vidéos intégrées Peut être exporté au format PDF Grâce à ces fonctionnalités, les utilisateurs peuvent facilement créer des présentations interactives et attrayantes.\nInstallation et utilisation de reveal.js La façon la plus simple de l\u0026rsquo;utiliser est de télécharger et d\u0026rsquo;extraire l\u0026rsquo;intégralité du fichier ZIP à partir de la page suivante.\nOuvrez https://revealjs.com/installation et téléchargez master.zip à partir du lien Ouvrez le fichier index.html dans le dossier extrait dans un navigateur Réécrivez index.html pour créer votre propre matériel de présentation ※ Comme le code HTML de démonstration est écrit dans demo.html, vous pouvez l\u0026rsquo;utiliser comme référence.\nComment utiliser Les présentations que vous créez peuvent être publiées telles quelles sous forme de pages Web ou exportées sous forme de fichiers PDF. De plus, la source de la présentation étant du texte, il est facile de la gérer avec un système de contrôle de version.\nIl semble également possible de créer du matériel de présentation au format Markdown.\nRéférences Utilisons reveal.js pour le matériel de présentation à l\u0026rsquo;avenir Liste d\u0026rsquo;exemples de syntaxe Markdown ","date":"2023-04-06T23:23:46+09:00","image":"http://kenji.blog/p/html%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95reveal.js/img_hu4de64f3f6be8c50037c2a4c6c2d48287_30871_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/html%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95reveal.js/","title":"Comment créer des présentations avec HTML (reveal.js)"},{"content":"Qu\u0026rsquo;est-ce que Stable diffusion Stable diffusion est une IA développée par une équipe de recherche de l\u0026rsquo;Université de Munich, en Allemagne, qui génère des images à partir d\u0026rsquo;informations textuelles fournies. En lui apprenant diverses images, il peut générer une grande variété d\u0026rsquo;images allant des photographies aux illustrations.\nCette fois, je vais vous présenter comment générer des images d\u0026rsquo;illustration à l\u0026rsquo;aide des données pré-entraînées de Stable diffusion.\nCe dont vous aurez besoin Compte Google Seulement ça\nProcédure de génération Ouvrez https://colab.research.google.com Sélectionnez Fichier en haut à gauche, puis Nouveau notebook Sélectionnez Modifier, puis Paramètres du notebook Changez l\u0026rsquo;Accélérateur matériel en GPU Collez et exécutez le code ci-dessous 1 !pip install diffusers==0.8.0 transformers Collez et exécutez le code ci-dessous 1 from diffusers import StableDiffusionPipeline Collez et exécutez le code ci-dessous 1 2 pipe = StableDiffusionPipeline.from_pretrained(\u0026#34;gsdf/Counterfeit-V2.5\u0026#34;) pipe.to(\u0026#34;cuda\u0026#34;) Collez et exécutez le code ci-dessous 1 2 3 4 5 prompt = \u0026#34;((masterpiece,best quality)),1girl, solo, animal ears, rabbit, barefoot, knees up, dress, sitting, rabbit ears, short sleeves, looking at viewer, grass, short hair, smile, white hair, puffy sleeves, outdoors, puffy short sleeves, bangs, on ground, full body, animal, white dress, sunlight, brown eyes, dappled sunlight, day, depth of field\u0026#34; n_prompt = \u0026#34;EasyNegative, extra fingers,fewer fingers\u0026#34; image = pipe(prompt, negative_prompt = n_prompt).images[0] image Le Prompt utilisé ici est basé sur le Prompt de https://huggingface.co/gsdf/Counterfeit-V2.5.\nRésultats générés (quelques-uns) Références https://huggingface.co/gsdf/Counterfeit-V2.5 J\u0026rsquo;ai créé un programme de génération d\u0026rsquo;images à l\u0026rsquo;aide de l\u0026rsquo;Intelligence Artificielle (IA) en 15 minutes 【Programmation en direct】 ","date":"2023-04-06T00:43:19+09:00","image":"http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu25483e02f36587a64f3cf042db15c245_550570_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment générer des images d'illustration à l'aide de l'IA (Stable Diffusion)"},{"content":"Qu\u0026rsquo;est-ce qu\u0026rsquo;un fichier exécutable (exe) ? Un fichier exécutable sous Windows. Il est fondamentalement écrit dans un format appelé format PE. Il contient le code machine pour l\u0026rsquo;exécution, ainsi que des ressources telles que des icônes et des images.\nIl existe plusieurs outils pour analyser les fichiers exécutables, nous allons donc les présenter cette fois-ci.\n7-Zip Les fichiers EXE peuvent être volumineux, ils sont donc parfois compressés lors de leur création. Dans ce cas, en utilisant le logiciel de compression et d\u0026rsquo;extraction de fichiers 7-Zip, vous pouvez extraire le fichier exécutable et examiner son contenu. Un outil similaire permettant l\u0026rsquo;extraction est WinRAR.\nResource Hacker Vous pouvez extraire les ressources (icônes, bitmaps, boîtes de dialogue, chaînes de caractères, etc.) à l\u0026rsquo;intérieur d\u0026rsquo;un fichier EXE. Il fonctionne également comme un éditeur hexadécimal, ce qui vous permet de modifier et de réécrire le contenu du fichier EXE.\nPE Explorer Vous pouvez analyser les fichiers PE pour Windows (EXE, DLL, OCX, SYS, pilotes). PE Explorer offre diverses fonctionnalités d\u0026rsquo;analyse, telles que l\u0026rsquo;affichage de la structure du fichier, de l\u0026rsquo;en-tête du fichier, des entrées de répertoire et des fonctions et symboles exportés.\nDependency Walker Vous pouvez vérifier les fichiers DLL dont dépend un fichier EXE et vous assurer qu\u0026rsquo;ils sont correctement chargés. Vous pouvez également suivre les appels de fonction des fichiers DLL.\nGhidra Il s\u0026rsquo;agit d\u0026rsquo;un puissant outil de rétro-ingénierie développé par la NSA (National Security Agency) et publié gratuitement en open source. Il est très populaire car il dispose non seulement d\u0026rsquo;une fonction de désassemblage des fichiers EXE (conversion en langage assembleur) mais aussi d\u0026rsquo;une fonction de décompilation vers un format proche du langage C.\nIDA Free / IDA Pro Il s\u0026rsquo;agit d\u0026rsquo;un désassembleur et décompilateur très avancé qui est devenu une norme mondiale de l\u0026rsquo;industrie pour l\u0026rsquo;analyse de logiciels malveillants et la rétro-ingénierie. La version Pro est très chère, mais pour un usage personnel ou non commercial, vous pouvez utiliser gratuitement la version aux fonctionnalités limitées \u0026ldquo;IDA Free\u0026rdquo;.\nx64dbg (x32dbg) Il s\u0026rsquo;agit d\u0026rsquo;un débogueur open source pour Windows. Il est spécialisé dans \u0026ldquo;l\u0026rsquo;analyse dynamique\u0026rdquo;, qui permet d\u0026rsquo;analyser le contenu et l\u0026rsquo;état de la mémoire étape par étape lors de l\u0026rsquo;exécution du fichier exécutable, et est souvent utilisé pour décoder des crackmes (programmes de défi pour l\u0026rsquo;analyse) ou enquêter sur le comportement de logiciels malveillants.\nILSpy / dotPeek Si le fichier EXE cible est créé avec un langage de la famille .NET tel que C#, l\u0026rsquo;utilisation de ces outils vous permet de le décompiler (rétro-compiler) à un état presque identique au code source d\u0026rsquo;origine pour en révéler tout le contenu.\nCes outils sont utiles pour examiner le contenu des fichiers EXE, mais la prudence est de mise. La modification de fichiers ou leur utilisation à des fins non autorisées peut entraîner des problèmes de droits d\u0026rsquo;auteur ou de sécurité, veillez donc à les utiliser avec une pleine compréhension.\n","date":"2023-04-05T23:31:06+09:00","image":"http://kenji.blog/p/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABexe%E3%81%AE%E4%B8%AD%E8%BA%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB/img_1_hu9e069acaa7fdaa872d319a8c6d6e1444_1819799_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/outils-pour-analyser-le-contenu-dun-fichier-executable-exe/","title":"Outils pour analyser le contenu d'un fichier exécutable (exe)"},{"content":"Introduction Je vais vous montrer ici comment basculer entre les applications sur Mac de la même manière que sur Windows (Alt+Tab).\nComme il est difficile d\u0026rsquo;y parvenir en modifiant les paramètres par défaut, cette méthode implique l\u0026rsquo;installation d\u0026rsquo;une application.\nImage de démonstration Méthode de configuration (macOS Ventura) Ouvrez https://alt-tab-macos.netlify.app Cliquez sur Download the latest release Ouvrez l\u0026rsquo;application téléchargée Suivez les instructions pour l\u0026rsquo;installer Désormais, vous pourrez basculer entre les applications à l\u0026rsquo;aide de Alt+Tab, tout comme sur Windows.\nC\u0026rsquo;est tout\n","date":"2023-04-05T02:20:12+09:00","image":"http://kenji.blog/p/mac%E3%81%A7windows%E3%83%A9%E3%82%A4%E3%82%AFalt-tab%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu9e86c898d72728906fc707b47dff25e0_55585_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/mac%E3%81%A7windows%E3%83%A9%E3%82%A4%E3%82%AFalt-tab%E3%81%AB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment basculer entre les applications sur Mac comme sur Windows (Alt+Tab)"},{"content":"Introduction Lorsque vous passez de Windows à mac, les touches couramment utilisées pour copier, coller et annuler via les raccourcis clavier sont différentes. Je vais donc vous montrer comment les faire correspondre.\nMéthode de configuration (macOS Ventura) Ouvrez les Réglages Système Sélectionnez Clavier Sélectionnez Raccourcis clavier Sélectionnez Touches de modification Attribuez la touche Control(^) à \u0026ldquo;⌘ Command\u0026rdquo; Attribuez la touche Command(⌘) à \u0026ldquo;^ Control\u0026rdquo; Cliquez sur Terminé Fin\n","date":"2023-04-05T00:49:02+09:00","image":"http://kenji.blog/p/mac%E3%81%A7%E3%82%B3%E3%83%94%E3%83%BC%E3%83%9A%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92windows%E3%81%A8%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95/img_hu81c2d0d61c05f6ce24b15f479442c3bc_211588_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/mac%E3%81%A7%E3%82%B3%E3%83%94%E3%83%BC%E3%83%9A%E3%83%BC%E3%82%B9%E3%83%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92windows%E3%81%A8%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment faire correspondre les raccourcis clavier copier-coller sur mac avec Windows"},{"content":"Introduction J\u0026rsquo;utilise un clavier américain (US) et sur Windows, je bascule la saisie japonaise avec Alt + `. Je voulais basculer avec la même touche sur Mac, et après quelques recherches, j\u0026rsquo;ai découvert qu\u0026rsquo;il était possible de le changer dans les paramètres.\nMéthode de configuration (macOS Ventura) Ouvrez les Réglages Système Sélectionnez Clavier Sélectionnez Raccourcis clavier Sélectionnez Sources de saisie Double-cliquez sur l\u0026rsquo;affichage du raccourci à droite de \u0026ldquo;Sélectionner la source suivante dans le menu de saisie\u0026rdquo; Appuyez sur Alt + ` Cliquez sur Terminé Désormais, vous pouvez basculer entre l\u0026rsquo;anglais ⇔ et le japonais avec Alt + `. Cependant, par défaut, le Katakana est inclus dans le basculement, j\u0026rsquo;ai donc supprimé le Katakana de la source de saisie en suivant les étapes ci-dessous.\nOuvrez les Réglages Système Sélectionnez Clavier Cliquez sur Modifier à droite de Japonais - Romaji dans les sources de saisie Cliquez sur Japonais - Romaji Décochez la case Katakana dans le Mode de saisie Cliquez sur Terminé C\u0026rsquo;est tout\n","date":"2023-04-04T23:02:12+09:00","image":"http://kenji.blog/p/mac%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%8B%B1%E8%AA%9E%E5%85%A5%E5%8A%9B%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu79c9b62a36c4ad9394525ea6ed769587_198703_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/mac%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%8B%B1%E8%AA%9E%E5%85%A5%E5%8A%9B%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%AD%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment modifier le raccourci clavier pour basculer la saisie entre le japonais et l'anglais sur Mac"},{"content":"Comment trouver l\u0026rsquo;emplacement d\u0026rsquo;un fichier exécutable dans le PATH sous Windows Lorsque vous exécutez une commande en spécifiant un fichier exécutable, il peut arriver que vous souhaitiez savoir où ce fichier exécutable se trouve. Dans ce cas, vous pouvez trouver l\u0026rsquo;emplacement du fichier exécutable avec la commande suivante.\n1 where \u0026lt;nom_du_fichier_exécutable\u0026gt; Par exemple, si vous souhaitez connaître l\u0026rsquo;emplacement de Paint (mspaint.exe), procédez comme suit :\n1 where mspaint.exe Références How do I find the location of an executable in Windows? ","date":"2023-04-03T00:02:55+09:00","image":"http://kenji.blog/p/windows-%E3%81%A7%E3%83%91%E3%82%B9%E3%81%AE%E9%80%9A%E3%81%A3%E3%81%9F%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%A0%B4%E6%89%80%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/img_hub74cf0d67f87eb185fadea6cd8747be8_5455_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/windows-%E3%81%A7%E3%83%91%E3%82%B9%E3%81%AE%E9%80%9A%E3%81%A3%E3%81%9F%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%A0%B4%E6%89%80%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment trouver l'emplacement d'un fichier exécutable dans le PATH sous Windows"},{"content":"J\u0026rsquo;ai acheté un mac mini (2018) J\u0026rsquo;ai acheté un mac mini (2018) d\u0026rsquo;occasion sur Mercari. Les spécifications sont les suivantes.\nCPU : Intel Core i7 6 cœurs à 3,2 GHz Mémoire : 32 Go Stockage : SSD de 1 To Le prix était de ￥ 77 000\nRaison de l\u0026rsquo;achat J\u0026rsquo;utilise un mac mini avec des spécifications presque identiques au travail pour développer des applications mobiles, mais je voulais configurer un environnement de développement à la maison (en particulier pour exécuter xcode). J\u0026rsquo;ai un macbook pro, mais je l\u0026rsquo;ai acheté il y a 9 ans et il est assez lent, donc je ne l\u0026rsquo;utilise presque pas. Je voulais personnellement développer des applications iOS. Installation immédiate de xcode et inteliJ IDEA La version de xcode est la Version 14.3 (14E222b) La version d\u0026rsquo;inteliJ IDEA est 2023.1 Allons-y ! Commençons le développement !\n","date":"2023-04-02T18:05:30+09:00","image":"http://kenji.blog/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/img_huc5df0470d74ce7a0046f11abaa7c5815_30469_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/mac-mini2018%E3%82%92%E8%B3%BC%E5%85%A5/","title":"J'ai acheté un mac mini (2018)"},{"content":"À propos d\u0026rsquo;\u0026ldquo;Unsplash\u0026rdquo; https://unsplash.com/ja/\nLe site de matériel photo \u0026ldquo;Unsplash\u0026rdquo; peut être résumé comme suit :\nToutes les images peuvent être utilisées gratuitement Utilisation commerciale autorisée Modification d\u0026rsquo;image autorisée Aucune autorisation requise Aucune attribution de crédit requise Il est très facile à utiliser lors de la rédaction d\u0026rsquo;articles pour un blog, n\u0026rsquo;hésitez pas à l\u0026rsquo;essayer.\n※ En ce qui concerne la licence, veuillez consulter la \u0026ldquo;Note de bas de page\u0026rdquo; ci-dessous. 1\nNous utiliserons également ce site.\nLicence Unsplash\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"2023-04-02T14:44:17+09:00","image":"http://kenji.blog/p/%E3%83%96%E3%83%AD%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E5%86%99%E7%9C%9F%E7%B4%A0%E6%9D%90%E3%82%B5%E3%82%A4%E3%83%88unsplash%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/img_1_hu43cbd10eab78d2e7468dbb36abe8d794_828454_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/a-propos-du-site-de-photos-pour-blogs-unsplash/","title":"À propos du site de photos pour blogs \"Unsplash\""},{"content":"Obtenir l\u0026rsquo;exemple egui Vous pouvez exécuter l\u0026rsquo;exemple egui avec la commande suivante.\n1 2 3 git clone https://github.com/emilk/eframe_template/ egui_test cd egui_test cargo run Charger une police compatible avec le japonais Pour afficher du japonais, vous devez charger une police qui le prend en charge.\nDans src/app.rs, ajoutez les lignes suivantes à l\u0026rsquo;intérieur de la méthode pub fn new.\n1 2 3 4 5 6 7 8 9 10 11 12 // Charger une police compatible avec le japonais let mut fonts = egui::FontDefinitions::default(); fonts.font_data.insert( \u0026#34;Meiryo\u0026#34;.to_owned(), egui::FontData::from_static(include_bytes!(\u0026#34;C:/Windows/Fonts/Meiryo.ttc\u0026#34;)), ); fonts .families .entry(egui::FontFamily::Proportional) .or_default() .insert(0, \u0026#34;Meiryo\u0026#34;.to_owned()); cc.egui_ctx.set_fonts(fonts); Vous pouvez maintenant afficher du japonais. ","date":"2023-04-01T03:17:52+09:00","image":"http://kenji.blog/p/egui%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu6798dc327f7454fc6cd8b8de1315ab03_5786_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-afficher-japonais-egui/","title":"Comment afficher du japonais dans egui"},{"content":"Qu\u0026rsquo;est-ce que KaTeX KaTeX est une bibliothèque javascript permettant d\u0026rsquo;afficher des formules mathématiques de style LaTeX en HTML.\nPlus précisément, vous pouvez afficher des formules comme ci-dessous.\n$$f(x) = x^2 + x + 41$$ Il semble y avoir d\u0026rsquo;autres bibliothèques d\u0026rsquo;affichage de formules de style LaTeX, mais KaTeX est réputé pour être simple et rapide.\nComment l\u0026rsquo;intégrer à hugo Créez un nouveau layouts/partials/math.html dans la hiérarchie des dossiers de hugo. Le contenu doit être le suivant.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 \u0026lt;link rel=\u0026#34;stylesheet\u0026#34; href=\u0026#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css\u0026#34; integrity=\u0026#34;sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0\u0026#34; crossorigin=\u0026#34;anonymous\u0026#34;\u0026gt; \u0026lt;script defer src=\u0026#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js\u0026#34; integrity=\u0026#34;sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4\u0026#34; crossorigin=\u0026#34;anonymous\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script defer src=\u0026#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js\u0026#34; integrity=\u0026#34;sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05\u0026#34; crossorigin=\u0026#34;anonymous\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script\u0026gt; document.addEventListener(\u0026#34;DOMContentLoaded\u0026#34;, function() { renderMathInElement( document.body, { delimiters: [ {left: \u0026#34;$$\u0026#34;, right: \u0026#34;$$\u0026#34;, display: true}, {left: \u0026#34;\\\\[\u0026#34;, right: \u0026#34;\\\\]\u0026#34;, display: true}, {left: \u0026#34;$\u0026#34;, right: \u0026#34;$\u0026#34;, display: false}, {left: \u0026#34;\\\\(\u0026#34;, right: \u0026#34;\\\\)\u0026#34;, display: false} ] }); }); \u0026lt;/script\u0026gt; Ensuite, ajoutez le code ci-dessous au fichier existant layouts/partials/extend_head.html. 1 2 3 {{ if or .Params.math .Site.Params.math }} {{ partial \u0026#34;math.html\u0026#34; . }} {{ end }} Vous êtes maintenant prêt à utiliser KaTeX. Vous pouvez activer KaTeX en ajoutant math: true au front matter de la page.\nIl ne vous reste plus qu\u0026rsquo;à écrire la formule dans le style LaTeX dans le corps de l\u0026rsquo;article de la page. 1 $$ e^{i \\pi} = -1 $$ En l\u0026rsquo;écrivant comme ci-dessus, il s\u0026rsquo;affichera comme ci-dessous.\n$$ e^{i \\pi} = -1 $$ Référence Math Typesetting | PaperModX KaTex Auto-render Extension Introduction à KaTeX | The Strange Storage ","date":"2023-03-31T23:11:26+09:00","image":"http://kenji.blog/p/hugo%E3%81%A7katexlatex%E9%A2%A8%E6%95%B0%E5%BC%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu4b1d83d24aac47c2cd375cc93b995e98_26739_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/how-to-enable-katex-in-hugo/","title":"Comment activer KaTeX (affichage de formules mathématiques de style LaTeX) dans hugo"},{"content":"Comment Se Faire des Amis https://amzn.to/3YTv0Dr\nLe Courage de Ne Pas Plaire https://amzn.to/3n3SVCQ\nLIFE SHIFT La Stratégie de Vie pour l\u0026rsquo;Ère des 100 Ans https://amzn.to/3TtKUDf\nLes 7 Habitudes de Ceux qui Réalisent Tout ce Qu\u0026rsquo;ils Entreprennent https://amzn.to/3TqfjSO\n","date":"2023-03-19T18:13:14+09:00","image":"http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E6%9B%B8/img_huc9a897f0643b20664d8e252d3dd67b22_2836610_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/livres-daffaires-recommandes/","title":"Livres d'Affaires Recommandés"},{"content":"Extensions Chrome Recommandées Voici les extensions Chrome que j\u0026rsquo;utilise actuellement. Bien qu\u0026rsquo;elles soient pour Chrome, elles fonctionnent également sur Microsoft Edge.\n1. simpleGestures C\u0026rsquo;est une extension qui vous permet d\u0026rsquo;utiliser les gestes de la souris. Vous pouvez contrôler le navigateur sans utiliser le clavier ni viser les boutons de la barre d\u0026rsquo;outils.\nPar exemple, vous pouvez revenir en arrière en faisant glisser la souris vers la gauche tout en maintenant le bouton droit enfoncé, ou avancer en faisant glisser vers la droite avec le bouton droit maintenu.\nComme elle est open source, elle est également très fiable.\nsimpleGestures github 2. uBlock Origin Une extension pour bloquer les publicités. Étant open source, elle est très fiable. De plus, elle utilise peu de processeur et de mémoire, ce qui permet une navigation fluide.\nuBlock Origin github 3. Traducteur DeepL Une extension Chrome qui vous permet de traduire des pages à l\u0026rsquo;aide du célèbre service de traduction DeepL. Lorsque vous sélectionnez le texte à traduire dans le navigateur, l\u0026rsquo;icône DeepL apparaît, et un simple clic lance la traduction automatique.\nDeepL Translator 4. ChatGPT Sidebar Une extension qui permet d\u0026rsquo;utiliser ChatGPT dans une barre latérale. Vous pouvez afficher la barre latérale avec Ctrl+P et poser immédiatement des questions à l\u0026rsquo;IA. S\u0026rsquo;il y a du texte sélectionné sur la page, il est copié directement dans la zone de question, vous pouvez donc l\u0026rsquo;envoyer immédiatement avec Ctrl+Enter.\nChatGPT Sidebar 5. Salesforce DevTools Une extension qui ajoute des fonctionnalités utiles pour le développement Salesforce. Je pense que ce n\u0026rsquo;est pas nécessaire pour ceux qui n\u0026rsquo;utilisent pas Salesforce.\nSalesforce DevTools ","date":"2023-03-19T02:54:30+09:00","image":"http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/img_4_hue5f33cff57d8628a1113ed27818b8d04_20776_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AE-chorme-%E6%8B%A1%E5%BC%B5/","title":"Extensions Chrome Recommandées"},{"content":"Comment mettre à jour rustc Exécutez simplement la ligne suivante en ligne de commande.\n1 rustup update Référence de sortie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 rustup update info: syncing channel updates for \u0026#39;stable-x86_64-pc-windows-msvc\u0026#39; warning: Signature verification failed for \u0026#39;https://static.rust-lang.org/dist/channel-rust-stable.toml\u0026#39; info: latest update on 2023-03-09, rust version 1.68.0 (2c8cc3432 2023-03-06) info: downloading component \u0026#39;rust-src\u0026#39; info: downloading component \u0026#39;cargo\u0026#39; info: downloading component \u0026#39;clippy\u0026#39; info: downloading component \u0026#39;rust-docs\u0026#39; info: downloading component \u0026#39;rust-std\u0026#39; info: downloading component \u0026#39;rustc\u0026#39; 63.9 MiB / 63.9 MiB (100 %) 37.5 MiB/s in 1s ETA: 0s info: downloading component \u0026#39;rustfmt\u0026#39; info: removing previous version of component \u0026#39;rust-src\u0026#39; info: removing previous version of component \u0026#39;cargo\u0026#39; info: removing previous version of component \u0026#39;clippy\u0026#39; info: removing previous version of component \u0026#39;rust-docs\u0026#39; info: removing previous version of component \u0026#39;rust-std\u0026#39; info: removing previous version of component \u0026#39;rustc\u0026#39; info: removing previous version of component \u0026#39;rustfmt\u0026#39; info: installing component \u0026#39;rust-src\u0026#39; info: installing component \u0026#39;cargo\u0026#39; info: installing component \u0026#39;clippy\u0026#39; info: installing component \u0026#39;rust-docs\u0026#39; 19.4 MiB / 19.4 MiB (100 %) 2.4 MiB/s in 6s ETA: 0s info: installing component \u0026#39;rust-std\u0026#39; 27.6 MiB / 27.6 MiB (100 %) 12.7 MiB/s in 2s ETA: 0s info: installing component \u0026#39;rustc\u0026#39; 63.9 MiB / 63.9 MiB (100 %) 13.8 MiB/s in 4s ETA: 0s info: installing component \u0026#39;rustfmt\u0026#39; info: checking for self-updates info: downloading self-update stable-x86_64-pc-windows-msvc updated - rustc 1.68.0 (2c8cc3432 2023-03-06) (from rustc 1.64.0 (a55dd71d5 2022-09-19)) info: cleaning up downloads \u0026amp; tmp directories ","date":"2023-03-18T10:27:02+09:00","image":"http://kenji.blog/p/rustc%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hu2f4438039b9bb5f2180f9e10d772e3b3_30692_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/rustc%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment mettre à jour rustc"},{"content":"Qu\u0026rsquo;est-ce que egui C\u0026rsquo;est une bibliothèque GUI qui peut être utilisée en Rust.\nEssayer egui Vous pouvez exécuter l\u0026rsquo;exemple de egui avec les commandes suivantes.\n1 2 3 git clone https://github.com/emilk/eframe_template/ egui_test cd egui_test cargo run Ensuite, vous pouvez essayer diverses choses tout en jouant avec le code d\u0026rsquo;exemple.\nRéférence GitHub officiel\n","date":"2023-03-18T10:27:02+09:00","image":"http://kenji.blog/p/egui%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/demo_hu16f50e8d6a05810ce904e73f9e33bab1_152754_120x120_fill_box_smart1_1.gif","permalink":"http://kenji.blog/fr/p/egui%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/","title":"Essayer egui"},{"content":"Comment éliminer le bruit sur le YAMAHA AG03 En écoutant le son du PC à travers le moniteur de l\u0026rsquo;AG03, il y avait un bruit de friture périodique (environ toutes les 1 à 3 minutes). Après quelques recherches, il semble que la méthode suivante puisse résoudre les problèmes de bruit sur l\u0026rsquo;AG03.\nhttps://jp.yamaha.com/support/updates/yamaha_steinberg_usb_driver_for_win.html\nLe téléchargement et l\u0026rsquo;installation du Yamaha Steinberg USB Driver à partir du site ci-dessus ont permis de supprimer le bruit.\n今すぐ購入 Références https://web.archive.org/web/20201003230738/http://yamaha.custhelp.com/app/answers/detail/a_id/7202\n","date":"2023-03-18T01:17:10+09:00","image":"http://kenji.blog/p/ag03%E3%83%8E%E3%82%A4%E3%82%BA%E8%A7%A3%E6%B6%88%E6%96%B9%E6%B3%95/img_hu7b60ee71c94898202eca721f7c6778b5_180745_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/ag03%E3%83%8E%E3%82%A4%E3%82%BA%E8%A7%A3%E6%B6%88%E6%96%B9%E6%B3%95/","title":"Comment éliminer le bruit sur l'AG03"},{"content":"Périphériques PC Recommandés et Souhaités par un Ingénieur Actif Clavier Avant tout, les claviers capacitifs sans contact sont fortement recommandés car ils sont difficiles à casser. Je possède un RealForce depuis plus de 10 ans et je l\u0026rsquo;utilise toujours au quotidien. Le modèle que j\u0026rsquo;utilise est la version silencieuse avec disposition anglaise.\nCependant, je m\u0026rsquo;intéresse aussi récemment au clavier Logitech MX Keys.\nTrackball Pour les dispositifs de pointage, les trackballs sont recommandés au lieu des souris car ils permettent de réduire la fatigue.\nCelui que j\u0026rsquo;utilise est le Logitech MX Ergo. C\u0026rsquo;est un appareil coûteux, à plus de 10 000 yens, mais je pense qu\u0026rsquo;il en vaut largement le prix.\nJe suis également intéressé par le DEFT PRO(M-DPT1MRXBK), qui est un type de grosse boule actionné avec l\u0026rsquo;index et le majeur. Écran N\u0026rsquo;importe quel écran fait l\u0026rsquo;affaire, mais les écrans 4K haute résolution sont recommandés.\nJ\u0026rsquo;utilise actuellement un écran 4K DELL.\nMaintenant, j\u0026rsquo;aimerais avoir un écran large écran EIZO ou écran DELL.\n","date":"2023-02-28T00:51:49+09:00","image":"http://kenji.blog/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AEpc%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/img_hu9c34821fcae33240cf8bba1055606dc6_434960_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AEpc%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8/","title":"Périphériques PC Recommandés"},{"content":"Service pour utiliser des polices Web payantes fontplus.jp https://fontplus.jp/\nPour 1 100 yens par mois, toutes les polices peuvent être utilisées et l\u0026rsquo;utilisation sur plusieurs sites est prise en charge.\n","date":"2023-02-07T20:59:01+09:00","image":"http://kenji.blog/p/fontplus.jp/img_hu81cfc4bed02bb5cdb36d3ac7fae3e538_91722_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/fontplus.jp/","title":"À propos de fontplus.jp"},{"content":"Par défaut, HUGO n\u0026rsquo;autorise pas l\u0026rsquo;utilisation de balises HTML dans les articles, mais vous pouvez l\u0026rsquo;activer en ajoutant la description suivante au config.toml.\n1 2 [markup.goldmark.renderer] unsafe = true Référence: Configure Markup\n","date":"2023-01-17T19:20:32+09:00","image":"http://kenji.blog/p/hugo%E3%81%A7html%E3%82%BF%E3%82%B0%E3%82%92%E4%BD%BF%E3%81%86/img_hu415dc7e70376ac350673d0366f70ca4b_19909_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/utiliser-des-balises-html-dans-hugo/","title":"Utiliser des balises HTML dans HUGO"},{"content":"Recherche de sponsors GitHub Je serais ravi si vous pouviez devenir sponsor GitHub via le bouton ci-dessous.\nCela sera utilisé pour le développement d\u0026rsquo;outils, etc.\nJe veux faire de mon mieux jusqu\u0026rsquo;à ce que je puisse ajouter un certificat de signature de code !\n","date":"2023-01-17T18:13:56+09:00","image":"http://kenji.blog/p/github%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B5%E3%83%BC%E5%8B%9F%E9%9B%86/img_hueb38a852fa4aae54f384564ce61ae26b_130999_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/recherche-de-sponsors-github/","title":"Recherche de sponsors GitHub"},{"content":"Qu\u0026rsquo;est-ce qu\u0026rsquo;un bouton Un bouton est l\u0026rsquo;un des contrôles GUI et peut être implémenté à l\u0026rsquo;aide de l\u0026rsquo;API standard de Windows. Lorsque vous cliquez sur une zone de l\u0026rsquo;écran (bouton gauche de la souris enfoncé, bouton gauche de la souris relâché), vous pouvez exécuter un traitement spécifié dans le programme.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // Création d\u0026#39;un bouton CreateWindow( TEXT(\u0026#34;BUTTON\u0026#34;), TEXT(\u0026#34;Close\u0026#34;), WS_CHILD|WS_VISIBLE, 10,10,128,30, hWnd, (HMENU)ID_BUTTON1, ((LPCREATESTRUCT)lParam)-\u0026gt;hInstance, 0); ... // Un message WM_COMMAND est envoyé par l\u0026#39;OS à la fenêtre lorsqu\u0026#39;on clique dessus. case WM_COMMAND: switch(LOWORD(wParam)) { case ID_BUTTON1: SendMessage(hWnd,WM_CLOSE,0,0); break; } break; Le code d\u0026rsquo;exemple est publié ci-dessous. button\n","date":"2023-01-14T20:24:00+09:00","image":"http://kenji.blog/p/%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%84%E3%81%A6/img_hu07b471bb746fa184ff8eeb6f561670e7_8164_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%84%E3%81%A6/","title":"À propos du bouton"},{"content":"J\u0026rsquo;ai acheté un ordinateur portable ThinkPad (d\u0026rsquo;occasion) La plupart de mon travail sur ordinateur portable se fait en accédant à d\u0026rsquo;autres terminaux via une connexion de bureau à distance, je n\u0026rsquo;ai donc pas besoin d\u0026rsquo;un PC haut de gamme. Un ChromeBook aurait fait l\u0026rsquo;affaire, mais comme il n\u0026rsquo;y avait pas de bons designs ou de hautes résolutions, j\u0026rsquo;ai acheté un ThinkPad.\nLes spécifications sont ci-dessous, et le prix était d\u0026rsquo;environ 55 000 yens en utilisant divers points.\nThinkPad T470s CPU: Intel Core i7 7600U RAM: 24GB SSD: 512GB OS: Windows 10 Pro 64bit Écran: 14,0 pouces large (panneau antireflet) Résolution: LCD WQHD 2560×1440 Poids: Environ 1,32 kg Remarques: Clavier anglais Comme il est d\u0026rsquo;occasion, je pensais qu\u0026rsquo;il pourrait y avoir des signes d\u0026rsquo;usure ou des rayures, mais il n\u0026rsquo;y a aucun problème, ce qui est génial. La batterie fonctionne également sans problème jusqu\u0026rsquo;à présent.\nInsatisfactions actuelles Il manque les touches Pause et App. J\u0026rsquo;utilisais la touche Pause comme raccourci pour ouvrir les paramètres du système. De plus, j\u0026rsquo;utilisais la touche App pour ouvrir le menu contextuel, c\u0026rsquo;est donc gênant de ne pas l\u0026rsquo;avoir. Les touches PageUp et PageDown sont juste à côté des touches fléchées du clavier, donc je les presse souvent par erreur. C\u0026rsquo;est peut-être une question d\u0026rsquo;habitude. Autres PC que j\u0026rsquo;ai envisagés mais non achetés ASUS Chromebook Flip C436FA (C436FA-ENG) Ordinateur portable HP HP15s-fq Références: ThinkPad T470s\n","date":"2023-01-13T19:07:00+09:00","image":"http://kenji.blog/p/thinkpad%E4%B8%AD%E5%8F%A4%E3%82%92%E8%B2%B7%E3%81%A3%E3%81%9F/img_hu1990736b7e8b9be3011f0d8e6938401f_246116_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/thinkpad%E4%B8%AD%E5%8F%A4%E3%82%92%E8%B2%B7%E3%81%A3%E3%81%9F/","title":"J'ai acheté un ThinkPad (d'occasion)"},{"content":"Connexion à Distance Facile avec TeamViewer L\u0026rsquo;utilisation de TeamViewer permet d\u0026rsquo;établir facilement une connexion de bureau à distance.\nDémarrez TeamViewer sur la destination et la source distantes, entrez l\u0026rsquo;ID et le mot de passe de la destination sur la source pour vous connecter à distance.\nPour vous connecter à distance via la ligne de commande, procédez comme suit:\n1 %ProgramFiles%\\TeamViewer\\TeamViewer.exe -i \u0026lt;ID\u0026gt; -P \u0026lt;Password\u0026gt; Entrez l\u0026rsquo;ID de la destination dans \u0026lt;ID\u0026gt; et le mot de passe de la destination dans \u0026lt;Password\u0026gt;.\nIl est pratique de créer un fichier de raccourci avec la commande ci-dessus, car cela permet d\u0026rsquo;omettre la saisie de l\u0026rsquo;ID/PW.\nSite de référence : Command line parameters\n","date":"2023-01-13T01:45:00+09:00","image":"http://kenji.blog/p/teamviewer%E3%81%A7%E7%B0%A1%E5%8D%98%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E6%8E%A5%E7%B6%9A/img_hu6a85c6015d61f1656b290295e2fefc2b_15316_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/connexion-%C3%A0-distance-facile-avec-teamviewer/","title":"Connexion à Distance Facile avec TeamViewer"},{"content":" Les fous apprennent de l\u0026rsquo;expérience, les sages apprennent de l\u0026rsquo;histoire (Otto von Bismarck)\nDonne un poisson à un homme et tu le nourris pour un jour ; apprends-lui à pêcher et tu le nourris pour la vie. (Lao Tseu)\nSoyez insatiables, soyez fous (Steve Jobs)\nFait est mieux que parfait. (Mark Zuckerberg)\nGardez-le simple (James Gosling)\nJe n\u0026rsquo;ai pas le temps de m\u0026rsquo;inquiéter de ceux qui ne m\u0026rsquo;aiment pas. Je suis trop occupé à aimer ceux qui m\u0026rsquo;aiment. (Snoopy)\nLe plus grand bonheur pour un être humain est de trouver un travail où il peut s\u0026rsquo;épanouir. (Karl Marx)\nSi un peu de connaissance est dangereux, où est l\u0026rsquo;homme qui en a tant qu\u0026rsquo;il est hors de danger ? (Thomas Huxley, 1877)\n\u0026lsquo;Au contraire\u0026rsquo;, continua Tweedledee, \u0026lsquo;si c\u0026rsquo;était ainsi, ce le serait ; et si c\u0026rsquo;était le cas, ce le serait ; mais comme ce n\u0026rsquo;est pas le cas, ce ne l\u0026rsquo;est pas. C\u0026rsquo;est ça la logique.\u0026rsquo; (Lewis Carroll, De l\u0026rsquo;autre côté du miroir, 1872)\nIl n\u0026rsquo;est pas exagéré de considérer Claude Shannon comme le père de l\u0026rsquo;ère de l\u0026rsquo;information, et ses réalisations académiques comptent parmi les plus importantes du 20e siècle. (Critique de la Société américaine de mathématiques)\nCeux qui connaissent l\u0026rsquo;état actuel de la théorie de l\u0026rsquo;algèbre symbolique savent que la validité des processus d\u0026rsquo;analyse ne dépend pas de l\u0026rsquo;interprétation des symboles employés, mais uniquement des lois de leur combinaison. (George Boole, au début de \u0026ldquo;L\u0026rsquo;Analyse mathématique de la logique\u0026rdquo;, 1847)\n","date":"2022-10-15T17:00:43+09:00","image":"http://kenji.blog/p/%E5%90%8D%E8%A8%80%E9%9B%86/img_hu460fc51ec02f7186f7ea8b0f77e830d9_47559_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E5%90%8D%E8%A8%80%E9%9B%86/","title":"Collection de Citations"},{"content":"Éditeur de graphes Présentation d\u0026rsquo;une page Web permettant de créer des graphes simples.\nhttps://csacademy.com/app/graph_editor/\nVous pouvez créer des graphes en entrant des valeurs numériques. De plus, il semble que vous puissiez également déplacer les éléments avec la souris.\nVous pouvez également créer un graphe orienté en cliquant sur Directed.\nVous pouvez enregistrer les graphes que vous avez créés sous forme d\u0026rsquo;image à l\u0026rsquo;aide de Download as PNG.\n","date":"2022-10-13T23:31:11+09:00","image":"http://kenji.blog/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/img_hu784f47a1f9126188b11445cd2c37bf68_13497_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF/","title":"Éditeur de graphes"},{"content":"Résoudre le problème du voyageur de commerce avec Mathematica Problème 電車でこんな広告を見かけました😁📸 pic.twitter.com/iXEgvtXrpL\n\u0026mdash; 早稲田大学 早水桃子研究室 (@hayamizu_lab) October 11, 2022 Solution 1 d=SparseArray[{{1,2}-\u0026gt;10,{2,1}-\u0026gt;10,{1,5}-\u0026gt;15,{5,1}-\u0026gt;15,{1,4}-\u0026gt;12,{4,1}-\u0026gt;12,{1,3}-\u0026gt;20,{3,1}-\u0026gt;20,{2,5}-\u0026gt;10,{5,2}-\u0026gt;10,{3,4}-\u0026gt;10,{4,3}-\u0026gt;10,{3,8}-\u0026gt;30,{8,3}-\u0026gt;30,{3,7}-\u0026gt;20,{7,3}-\u0026gt;20,{3,6}-\u0026gt;25,{6,3}-\u0026gt;25,{4,5}-\u0026gt;15,{5,4}-\u0026gt;15,{4,8}-\u0026gt;20,{8,4}-\u0026gt;20,{5,9}-\u0026gt;18,{9,5}-\u0026gt;18,{5,8}-\u0026gt;15,{8,5}-\u0026gt;15,{6,7}-\u0026gt;5,{7,6}-\u0026gt;5,{7,8}-\u0026gt;35,{8,7}-\u0026gt;35,{8,9}-\u0026gt;12,{9,8}-\u0026gt;12},{9,9},Infinity]; Créez une matrice à l\u0026rsquo;aide de la fonction SparseArray. Chaque élément représente la distance entre les villes à sa ligne et sa colonne. Par exemple, le premier élément {1,2}-\u0026gt;10 signifie que la distance entre 1 et 2 est de 10. L\u0026rsquo;avant-dernier élément {9,9} indique la taille de la matrice, et le dernier élément Infinity signifie que la longueur du chemin entre les villes non spécifiées est infinie, c\u0026rsquo;est-à-dire qu\u0026rsquo;il n\u0026rsquo;y a pas de chemin.\n1 {len,tour}=FindShortestTour[{1,2,3,4,5,6,7,8,9},DistanceFunction-\u0026gt;(d[[#1,#2]]\u0026amp;)] Avec la fonction FindShortestTour, vous pouvez facilement résoudre le problème du voyageur de commerce. {1,2,3,4,5,6,7,8,9} représente les numéros de ville. DistanceFunction-\u0026gt;(d[[#1,#2]]\u0026amp;) transmet la matrice d qui représente la distance entre les villes.\nSortie 1 {137, {1, 2, 5, 9, 8, 7, 6, 3, 4}} La sortie correspond à la distance la plus courte et à l\u0026rsquo;itinéraire de visite à ce moment-là. La distance la plus courte est 137 et l\u0026rsquo;itinéraire de la visite est 1→2→5→9→8→7→6→3→4→1. En le convertissant dans l\u0026rsquo;ordre alphabétique ABC, il devient A, B, E, I, H, G, F, C, D.\n","date":"2022-10-12T19:05:58+09:00","image":"http://kenji.blog/p/mathematica%E3%81%A7%E5%B7%A1%E5%9B%9E%E3%82%BB%E3%83%BC%E3%83%AB%E3%82%B9%E3%83%9E%E3%83%B3%E5%95%8F%E9%A1%8C%E3%82%92%E8%A7%A3%E3%81%8F/img_hucba782cf2f6047b30fd8084b4d887659_22760_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/resoudre-le-probleme-du-voyageur-de-commerce-avec-mathematica/","title":"Résoudre le problème du voyageur de commerce avec Mathematica"},{"content":"Pour cocher toutes les cases sur une page web, ouvrez les DevTools avec F12, collez le code suivant dans la console et exécutez-le.\n1 2 3 4 5 6 let boxes = document.querySelectorAll(\u0026#39;input[type=\u0026#34;checkbox\u0026#34;]\u0026#39;); for (let i = 0; i \u0026lt; boxes.length; i++) { if (!boxes[i].disabled) { boxes[i].checked = true; } } Ou,\nCréez un nouveau favori et collez le code suivant dans l\u0026rsquo;adresse d\u0026rsquo;enregistrement (la partie où vous tapez généralement https://\u0026hellip;). Affichez la page web que vous souhaitez cocher, puis cliquez sur le favori créé pour cocher toutes les cases.\n1 javascript:(function(){let boxes=document.querySelectorAll(\u0026#39;input[type=\u0026#34;checkbox\u0026#34;]\u0026#39;);for(let i=0;i\u0026lt;boxes.length;i++){if(!boxes[i].disabled){boxes[i].checked=true;}}})(); Pour tout décocher, remplacez la partie boxes[i].checked = true; du script ci-dessus par boxes[i].checked = false;.\n","date":"2022-10-05T20:07:06+09:00","image":"http://kenji.blog/p/web%E3%83%9A%E3%83%BC%E3%82%B8%E5%86%85%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E5%85%A8%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B/img_hu556225b69f77e68d5b8659c3dfad5080_9228_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/cocher-toutes-les-cases-sur-une-page-web/","title":"Cocher toutes les cases sur une page web"},{"content":"Théorème de Wilson Lorsque $p$ est un nombre premier, $(p−1)!≡−1 \\pmod p$ est vérifié.\nFormule d\u0026rsquo;Euler $e^{iπ}+1=0$\nDernier théorème de Fermat Pour tout entier $n≥3$, il n\u0026rsquo;existe pas d\u0026rsquo;entiers positifs $x,y,z$ qui satisfont $x^n+y^n=z^n$.\nProblème de Bâle $1/1^2+1/2^2+1/3^2+1/4^2+...=π^2/6$\nPolynôme générateur de nombres premiers d\u0026rsquo;Euler $n^2+n+41$ donne toujours un nombre premier lorsque $n$ est un entier compris entre $0$ et $39$.\n","date":"2022-10-05T13:24:50+09:00","image":"http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%95%B0%E5%BC%8F/img_huc293f175856c5702bca3e96906ea6e7d_155123_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E6%95%B0%E5%BC%8F/","title":"Formules Mathématiques Préférées"},{"content":"Prérequis Être sous Windows 11\nProcédure Installez le Programme d'installation d'application depuis le Microsoft Store https://www.microsoft.com/store/productId/9NBLGGH4NNS1 Installez l\u0026rsquo;application dans l\u0026rsquo;invite de commande 1 winget install Google.Chrome Principales applications pouvant être installées Google Chrome (Commande winget install Google.Chrome) Microsoft Edge (Commande winget install Microsoft.Edge) Microsoft Teams (Commande winget install Microsoft.Teams) Microsoft Office (Commande winget install Microsoft.Office) Visual Studio Code (Commande winget install vscode) Slack (Commande winget install SlackTechnologies.Slack) Discord (Commande winget install Discord.Discord) Docker Desktop (Commande winget install Docker.DockerDesktop) Git (Commande winget install Git) 7zip (Commande winget install 7zip) VLC (Commande winget install VideoLAN.VLC) Référence Utiliser l\u0026rsquo;outil winget pour installer et gérer des applications\nAparté Je pensais pouvoir installer Paint.Net aussi, mais ce n\u0026rsquo;était pas possible.\nhttps://forums.getpaint.net/topic/118574-please-add-paintnet-to-the-available-packages-for-windows-package-manager-winget/\n","date":"2022-10-05T12:15:20+09:00","image":"http://kenji.blog/p/winget-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/img_hu0f8970b897eb9ee188b975a06c549111_1216_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/winget-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/","title":"Installer des applications via la ligne de commande avec WinGet"},{"content":"Caractéristiques de Rust Un langage de programmation open source relativement récent développé par Mozilla Un langage rapide sans ramasse-miettes (garbage collection), spécialisé dans la programmation système Garantit la sécurité de la mémoire grâce à des mécanismes uniques de propriété (ownership) et d\u0026rsquo;emprunt (borrowing) intégrés aux spécifications du langage Fonctionne de manière multiplateforme Intègre en standard l\u0026rsquo;excellent gestionnaire de paquets Cargo ","date":"2022-10-03T22:47:20+09:00","image":"http://kenji.blog/p/rust%E3%81%AE%E7%89%B9%E5%BE%B4/img_hu184f8481eb552ab7d9cefed2227c58f9_39839_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/rust%E3%81%AE%E7%89%B9%E5%BE%B4/","title":"Caractéristiques de Rust"},{"content":"Pour définir dynamiquement des variables dans Github Actions, vous pouvez le faire en les ajoutant à $env:GITHUB_ENV comme ci-dessous.\n【Cas de Windows】\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 name: Rust on: push: branches: [ \u0026#34;master\u0026#34; ] pull_request: branches: [ \u0026#34;master\u0026#34; ] env: CARGO_TERM_COLOR: always jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Get Environment run: | echo \u0026#39;VERSION=1.0.0\u0026#39; \u0026gt;\u0026gt; $GITHUB_ENV echo \u0026#39;NAME=1.0.0\u0026#39; \u0026gt;\u0026gt; $GITHUB_ENV - name: Display Environment run: | echo $env:VERSION echo $env:NAME - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ env.VERSION }} release_name: ${{ env.VERSION }} draft: false prerelease: false - name: Upload Release Asset id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it\u0026#39;s ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps asset_path: ./target/release/${{ env.NAME }}.exe asset_name: ${{ env.NAME }}.exe asset_content_type: application/octet-stream 【Cas de Linux】\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 name: Rust on: push: branches: [ \u0026#34;main\u0026#34; ] pull_request: branches: [ \u0026#34;main\u0026#34; ] env: CARGO_TERM_COLOR: always jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Get Environment run: | echo \u0026#39;VERSION=1.0.0\u0026#39; \u0026gt;\u0026gt; $GITHUB_ENV echo \u0026#39;NAME=hello\u0026#39; \u0026gt;\u0026gt; $GITHUB_ENV - name: Display Environment run: | echo ${{ env.VERSION }} echo ${{ env.NAME }} ","date":"2022-10-02T02:33:35+09:00","image":"http://kenji.blog/p/github-actions%E3%81%A7%E5%8B%95%E7%9A%84%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/img_1_hua65fb3c79313ad0762e062df80261603_10981_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/github-actions%E3%81%A7%E5%8B%95%E7%9A%84%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/","title":"Définir dynamiquement des variables dans Github Actions"},{"content":"Supprimer un tag local Vérifiez les tags locaux existants avec git tag. Supprimez le tag avec git tag -d v0.1.0. (Spécifiez le tag que vous souhaitez supprimer à la place de v0.1.0) Supprimer un tag distant Vérifiez les tags distants existants avec git ls-remote --tags. Supprimez le tag distant existant avec git push origin --delete v0.1.0. (Spécifiez le tag que vous souhaitez supprimer à la place de v0.1.0) Référence gitでtagをリモートとローカルで削除する方法！\n","date":"2022-10-02T02:18:04+09:00","image":"http://kenji.blog/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/img_hu2ecde82e40aa31a994850b70302683b4_5304_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/","title":"Supprimer des tags dans git"},{"content":"Afficher une fenêtre simple en Rust\n1 2 3 4 5 6 7 8 9 10 [package] name = \u0026#34;win\u0026#34; version = \u0026#34;0.1.0\u0026#34; edition = \u0026#34;2021\u0026#34; # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies.winapi] version = \u0026#34;0.3\u0026#34; features = [\u0026#34;winuser\u0026#34;] Le code source est ci-dessous\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #![windows_subsystem = \u0026#34;windows\u0026#34;] use winapi::{ um::{ winuser::{RegisterClassW, WNDCLASSW, CS_HREDRAW, CS_VREDRAW, LoadIconW, IDI_APPLICATION, LoadCursorW, IDC_ARROW, CreateWindowExW, ShowWindow, SW_NORMAL, UpdateWindow, GetMessageW, TranslateMessage, DispatchMessageW, MSG, WM_DESTROY, PostQuitMessage, DefWindowProcW, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT}, wingdi::{GetStockObject, WHITE_BRUSH}, }, shared::{ windef::{HWND, HBRUSH}, minwindef::{UINT, WPARAM, LPARAM, LRESULT}, }, }; use std::ptr; use std::mem; fn main() { unsafe { let class_name = encode(\u0026#34;my_window_class_name\u0026#34;); if !register_wndclass(\u0026amp;class_name) { return; } let hwnd = create_window(\u0026amp;class_name); if hwnd.is_null() { return; } ShowWindow(hwnd, SW_NORMAL); UpdateWindow(hwnd); let mut msg = mem::uninitialized::\u0026lt;MSG\u0026gt;(); loop { if GetMessageW(\u0026amp;mut msg, ptr::null_mut(), 0, 0) == 0 { return; } TranslateMessage(\u0026amp;mut msg); DispatchMessageW(\u0026amp;mut msg); } } } fn encode(source: \u0026amp;str) -\u0026gt; Vec\u0026lt;u16\u0026gt; { source.encode_utf16().chain(Some(0)).collect() } unsafe fn register_wndclass(class_name: \u0026amp;[u16]) -\u0026gt; bool { let mut winc = mem::zeroed::\u0026lt;WNDCLASSW\u0026gt;(); winc.style = CS_HREDRAW | CS_VREDRAW; winc.lpfnWndProc = Some(win_proc); winc.hIcon = LoadIconW(ptr::null_mut(), IDI_APPLICATION); winc.hCursor = LoadCursorW(ptr::null_mut(), IDC_ARROW); winc.hbrBackground = GetStockObject(WHITE_BRUSH as i32) as HBRUSH; winc.lpszClassName = class_name.as_ptr(); RegisterClassW(\u0026amp;winc) \u0026gt; 0 } unsafe fn create_window(class_name: \u0026amp;[u16]) -\u0026gt; HWND { CreateWindowExW( 0, class_name.as_ptr(), encode(\u0026#34;Hello, World!\u0026#34;).as_ptr(), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, ptr::null_mut(), ptr::null_mut(), ptr::null_mut(), ptr::null_mut(), ) } unsafe extern \u0026#34;system\u0026#34; fn win_proc(hwnd: HWND, msg: UINT, w_param: WPARAM, l_param: LPARAM) -\u0026gt; LRESULT { match msg { WM_DESTROY =\u0026gt; PostQuitMessage(0), _ =\u0026gt; return DefWindowProcW(hwnd, msg, w_param, l_param), }; 0 } Références Programmation Windows en Rust - CreateWindow\n","date":"2022-10-01T19:08:58+09:00","image":"http://kenji.blog/p/rust%E3%81%A7%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/images/rust_logo_huefc2d075e966b0edc0b7186c50038553_22411_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/rust%E3%81%A7%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/","title":"Afficher une fenêtre simple en Rust"},{"content":"Pour écrire des tests en Rust, créez la fonction en ajoutant l\u0026rsquo;attribut #[test] une ligne au-dessus de la définition de la fonction de test.\n1 2 3 4 5 6 7 8 fn plus(a:i32,b:i32)-\u0026gt;i32 { a+b } #[test] fn plus_test() { assert_eq!(plus(1, 1), 2); } Le code de test peut être exécuté avec cargo test. Si le test réussit, il affichera ok. S\u0026rsquo;il échoue, il affichera FAILED.\nEn cas de succès\n1 2 3 4 5 6 7 8 9 C:\\Users\\admin\\Desktop\\test1\u0026gt;cargo test Compiling test1 v0.1.0 (C:\\Users\\admin\\Desktop\\test1) Finished test [unoptimized + debuginfo] target(s) in 0.35s Running unittests src\\main.rs (target\\debug\\deps\\test1-be5d3118bc52cb3a.exe) running 1 test test plus_test ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s En cas d\u0026rsquo;échec\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 C:\\Users\\admin\\Desktop\\test1\u0026gt;cargo test Compiling test1 v0.1.0 (C:\\Users\\admin\\Desktop\\test1) Finished test [unoptimized + debuginfo] target(s) in 0.33s Running unittests src\\main.rs (target\\debug\\deps\\test1-be5d3118bc52cb3a.exe) running 1 test test plus_test ... FAILED failures: ---- plus_test stdout ---- thread \u0026#39;plus_test\u0026#39; panicked at \u0026#39;assertion failed: `(left == right)` left: `2`, right: `3`\u0026#39;, src\\main.rs:7:5 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace failures: plus_test test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s error: test failed, to rerun pass \u0026#39;--bin test1\u0026#39; ","date":"2022-10-01T02:00:59+09:00","image":"http://kenji.blog/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/images/rust_logo_huefc2d075e966b0edc0b7186c50038553_22411_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/","title":"Écrire des tests en Rust"},{"content":"Vous pouvez afficher une MessageBox en Rust en suivant les étapes ci-dessous.\nInstallez Rust. Consultez Comment débuter avec Rust Exécutez cargo new --bin MessageBox dans l\u0026rsquo;invite de commande. Accédez au répertoire MessageBox. Ouvrez Cargo.toml et modifiez-le comme suit. 1 2 3 4 5 6 7 8 9 10 [package] name = \u0026#34;hello_world\u0026#34; version = \u0026#34;0.1.0\u0026#34; edition = \u0026#34;2021\u0026#34; # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] winapi = \u0026#34;0.2.7\u0026#34; user32-sys = \u0026#34;0.2.0\u0026#34; Ouvrez src\\main.rs et modifiez-le comme suit. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 extern crate user32; extern crate winapi; use std::ffi::CString; use user32::MessageBoxA; use winapi::winuser::{MB_OK, MB_ICONINFORMATION}; fn main() { let lp_text = CString::new(\u0026#34;Hello, world!\u0026#34;).unwrap(); let lp_caption = CString::new(\u0026#34;MessageBox Example\u0026#34;).unwrap(); unsafe { MessageBoxA( std::ptr::null_mut(), lp_text.as_ptr(), lp_caption.as_ptr(), MB_OK | MB_ICONINFORMATION ); } } Exécutez cargo run dans l\u0026rsquo;invite de commande. Si vous souhaitez effectuer une version de release, exécutez cargo build --release.\nRéférence Hello World MesssageBox example in Rust\n","date":"2022-09-30T23:54:31+09:00","image":"http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/images/rust_logo_huefc2d075e966b0edc0b7186c50038553_22411_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/afficher-une-messagebox-en-rust/","title":"Afficher une MessageBox en Rust"},{"content":"Que signifie comprendre ? Bonjour !\nAujourd\u0026rsquo;hui, j\u0026rsquo;aimerais parler du thème « Que signifie comprendre ? ».\nLe terme « comprendre » est-il en fait ambigu ? Il y a des moments dans notre vie quotidienne où nous ressentons : « J\u0026rsquo;ai compris ! ». Mais si vous y réfléchissez bien, cette « compréhension » est-elle vraiment complète ?\nPar exemple, conduire une voiture. Si vous appuyez sur l\u0026rsquo;accélérateur, elle avance, et si vous appuyez sur le frein, elle s\u0026rsquo;arrête. On pourrait appeler cela « comprendre ». Cependant, je pense qu\u0026rsquo;il y a peu de personnes capables d\u0026rsquo;expliquer en détail ce qui se passe à l\u0026rsquo;intérieur du moteur.\nUne compréhension complète est-elle nécessaire ? En fait, même si vous ne comprenez pas tout complètement, cela n\u0026rsquo;interfère souvent pas avec la vie quotidienne. Vous pouvez passer des appels téléphoniques et envoyer des messages sans connaître la structure interne d\u0026rsquo;un smartphone.\nCela dit, nous ne devrions pas prendre la « compréhension » à la légère. Si notre compréhension s\u0026rsquo;approfondit, de nouvelles découvertes et perspectives peuvent naître.\nIl y a beaucoup de choses que nous ne comprenons pas Il y a beaucoup de choses dans le monde qui n\u0026rsquo;ont pas encore été élucidées. Par exemple, les mécanismes des émotions et de la conscience humaines, l\u0026rsquo;origine de l\u0026rsquo;univers, etc. Ce sont des domaines qui ne sont toujours pas complètement « compris », même avec les progrès de la science.\nMême dans le monde des mathématiques, il y a des problèmes non résolus qui semblent simples, comme la « conjecture de Goldbach ».\nLa valeur de « comprendre » Lorsque nous « comprenons » plus de choses, nous pouvons les expliquer avec assurance et communiquer efficacement avec les autres. Il y a aussi l\u0026rsquo;avantage qu\u0026rsquo;avoir des connaissances rend plus difficile d\u0026rsquo;être trompé par la désinformation.\nUne attitude humble est importante Reconnaître ce que nous « ne comprenons pas » mène à l\u0026rsquo;humilité. Et c\u0026rsquo;est grâce à cette reconnaissance que naît le désir de continuer à apprendre.\nDonc, bien que « comprendre » soit important, il est difficile de tout comprendre complètement. Je pense que l\u0026rsquo;important est de connaître les limites de notre propre compréhension et d\u0026rsquo;avoir l\u0026rsquo;attitude de continuer à apprendre.\n","date":"2022-09-24T02:38:18+09:00","image":"http://kenji.blog/p/%E3%82%8F%E3%81%8B%E3%82%8B%E3%81%A3%E3%81%A6%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/img_hu70cb8dd6d786a678b22436c932461bee_164867_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/que-signifie-comprendre/","title":"Que signifie comprendre ?"},{"content":"J\u0026rsquo;ai réfléchi à pourquoi j\u0026rsquo;aime les mathématiques et les ordinateurs Égalité pour tous Peu importe la personne, la position ou le lieu, la même entrée donne toujours la même sortie.\nRègles claires Les règles sont clairement définies et il n\u0026rsquo;y a pas d\u0026rsquo;absurdités ou d\u0026rsquo;injustices.\nLes réponses et théories dérivées sont éternellement correctes Il n\u0026rsquo;y a pas lieu de s\u0026rsquo;inquiéter qu\u0026rsquo;une réponse calculée soit réécrite plus tard.\nIl y a une difficulté modérée Il y a toujours des problèmes non résolus, et l\u0026rsquo;on peut se mettre au défi de les résoudre à tout moment.\n","date":"2022-09-23T01:56:52+09:00","image":"http://kenji.blog/p/%E3%81%AA%E3%81%9C%E6%95%B0%E5%AD%A6%E3%82%84%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/img_hue4a786c476ad4bcc54a52cdbffbd292f_6616634_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%81%AA%E3%81%9C%E6%95%B0%E5%AD%A6%E3%82%84%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/","title":"Pourquoi j'aime les mathématiques et les ordinateurs"},{"content":"Ce dont une communauté a besoin J\u0026rsquo;ai trouvé que les lignes directrices de la communauté Scratch sont très raffinées et excellentes. Les choses suivantes étaient écrites :\nTraitez tout le monde avec respect.\nRestez en sécurité : Ne divulguez pas d\u0026rsquo;informations personnelles ou de contact.\nFaites des commentaires utiles.\nComprenez la culture du remix.\nSoyez honnête.\nFaites du site un endroit agréable.\nJe crois que ces perspectives s\u0026rsquo;appliquent à n\u0026rsquo;importe quelle communauté.\nhttps://ja.scratch-wiki.info/wiki/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3\n","date":"2022-09-23T01:37:43+09:00","image":"http://kenji.blog/p/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%81%93%E3%81%A8/img_hueeaef9e10f0c1990dbbf990f6784494a_314802_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/ce-dont-une-communaute-a-besoin/","title":"Ce dont une communauté a besoin"},{"content":"Fermat (P. de Fermat, 1601-1665) L\u0026rsquo;un des mathématiciens français les plus représentatifs du 17e siècle. Il a jeté les bases de la géométrie analytique, de la théorie des probabilités et du calcul différentiel. Il est également le fondateur de la théorie des nombres.\nDiophante (Diophantus, vers 207 - vers 291) Mathématicien grec. Célèbre pour l\u0026rsquo;introduction de la notation symbolique et l\u0026rsquo;étude des solutions rationnelles. Son œuvre principale est \u0026ldquo;Les Arithmétiques\u0026rdquo;. Le domaine de la recherche de solutions rationnelles aux équations est appelé analyse diophantienne.\nEuler (L. Euler, 1707-1783) Le roi des mathématiques né en Suisse. Il a accompli des travaux dans presque tous les domaines des mathématiques. Il a laissé plus de 700 articles et 45 ouvrages.\nLegendre (A. M. Legendre, 1752-1833) Mathématicien français. Il a laissé de nombreuses contributions en théorie des nombres, sur les intégrales elliptiques et le problème de l\u0026rsquo;attraction. Le terme \u0026ldquo;théorie des nombres\u0026rdquo; vient de son ouvrage principal, \u0026ldquo;Essai sur la théorie des nombres\u0026rdquo;.\nKummer (E. E. Kummer, 1810-1893) Mathématicien allemand. Il a obtenu d\u0026rsquo;importants résultats en appliquant la théorie des nombres des corps cyclotomiques au grand théorème de Fermat.\nDescartes (R. Descartes, 1596-1650) Philosophe français original. Parmi ses œuvres représentatives, on compte le \u0026ldquo;Discours de la méthode\u0026rdquo;, \u0026ldquo;La Géométrie\u0026rdquo; et \u0026ldquo;Le Monde\u0026rdquo;.\nPascal (B. Pascal, 1623-1662) Philosophe français connu pour ses recherches sur la théorie des probabilités et les fluides. Plus tard, il a rejoint les jansénistes et s\u0026rsquo;est engagé dans des activités religieuses. Les \u0026ldquo;Pensées\u0026rdquo; sont une œuvre de cette époque.\nBachet (C. G. Bachet, 1581-1638) Noble français qui étudiait les puzzles numériques par passion. Il a publié une traduction latine des \u0026ldquo;Arithmétiques\u0026rdquo; de Diophante, à laquelle il a ajouté ses propres recherches sous forme de commentaires.\nWallis (J. Wallis, 1616-1703) Mathématicien anglais. Dans son ouvrage principal \u0026ldquo;Arithmetica Infinitorum\u0026rdquo;, il a donné une forme mathématique au concept de limite et a contribué à jeter les bases du calcul infinitésimal.\nBrouncker (W. Brouncker, 1620-1684) Noble irlandais. Premier président de la Royal Society (Académie britannique des sciences). Amateur de mathématiques, il a eu des échanges avec Wallis.\nLagrange (J. L. Lagrange, 1736-1813) Mathématicien français d\u0026rsquo;origine italienne. Il a succédé à Euler en tant que directeur de la section des mathématiques de l\u0026rsquo;Académie des sciences de Berlin. Il a accompli des réalisations majeures en théorie des nombres et en mécanique analytique.\nSiegel (C. L. Siegel, 1896-1981) Théoricien des nombres allemand. Il a apporté de nombreuses contributions à la théorie analytique des nombres.\nFibonacci (L. Fibonacci, vers 1175 - vers 1250) Mathématicien italien. Dans son œuvre principale \u0026ldquo;Liber Abaci\u0026rdquo;, il a utilisé et popularisé les chiffres indo-arabes. Il a également discuté des nombres congruents dans le \u0026ldquo;Liber Quadratorum\u0026rdquo;.\nBaker (A. Baker, 1939-) Théoricien des nombres britannique. Pour ses contributions à la théorie des nombres transcendants, il a reçu la médaille Fields en même temps que Heisuke Hironaka.\nPoincaré (J. Poincaré, 1854-1912) Mathématicien français souvent qualifié de dernier mathématicien universel. Il a laissé des œuvres remarquables dans des domaines tels que la théorie des fonctions automorphes, la géométrie non euclidienne, les équations différentielles, la mécanique céleste, l\u0026rsquo;électrodynamique, ainsi que des essais scientifiques.\nMordell (L. J. Mordell, 1888-1972) Mathématicien américain. Ses parents étaient des immigrants de Lituanie. Bien qu\u0026rsquo;il ait publié de nombreux articles sur la théorie des équations diophantiennes, le théorème de Mordell dans la théorie des courbes elliptiques est particulièrement célèbre. Weil l\u0026rsquo;a étendu au cas des courbes algébriques générales, ce qui a marqué le point de départ d\u0026rsquo;un développement explosif de la géométrie algébrique arithmétique.\nWeil (A. Weil, 1906-1998) Mathématicien français d\u0026rsquo;origine juive. Dans sa jeunesse, il s\u0026rsquo;est intéressé au problème de Fermat et a fondamentalement repensé la géométrie algébrique dans le but de l\u0026rsquo;appliquer à la théorie des nombres, lui fournissant des bases rigoureuses. Il est également connu pour ses écrits sur l\u0026rsquo;histoire des mathématiques.\nMersenne (M. Mersenne, 1588-1648) Prêtre français de l\u0026rsquo;ordre des Minimes. Il a servi d\u0026rsquo;intermédiaire pour la correspondance entre les mathématiciens de diverses régions. Les nombres appelés nombres de Mersenne ont en fait été conçus par Fermat.\nRoberval (G. P. de Roberval, 1602-1675) Mathématicien français. À l\u0026rsquo;époque, il était presque la seule personne à avoir obtenu un poste de professeur en tant que mathématicien, et est connu pour ses recherches sur la cycloïde.\nAbel (N. H. Abel, 1802-1829) Mathématicien norvégien. Il a accompli d\u0026rsquo;excellents travaux sur l\u0026rsquo;insolubilité de l\u0026rsquo;équation générale du 5e degré, la théorie des fonctions elliptiques et la théorie des intégrales abéliennes, mais il est mort jeune.\nJacobi (K. G. Jacobi, 1804-1851) Mathématicien allemand d\u0026rsquo;origine juive. Il a laissé de grandes réalisations dans la théorie des fonctions elliptiques, la théorie des fonctions thêta, les équations différentielles et le calcul des variations. Il a fait connaître les travaux d\u0026rsquo;Abel au monde entier. Il est également connu pour avoir rejeté le pragmatisme en déclarant que le but de la science était pour \u0026ldquo;l\u0026rsquo;honneur de l\u0026rsquo;esprit humain\u0026rdquo;.\nGauss (C. F. Gauss, 1777-1855) Le roi des mathématiques né en Allemagne. Connu pour ses recherches sur la théorie des nombres, la géométrie non euclidienne, la géodésie, les séries hypergéométriques, la théorie des surfaces et le géomagnétisme. Perfectionniste, on dit qu\u0026rsquo;il ne publiait ses résultats que s\u0026rsquo;ils étaient d\u0026rsquo;un niveau d\u0026rsquo;achèvement tel qu\u0026rsquo;on ne pouvait plus voir l\u0026rsquo;échafaudage. Son ouvrage principal est \u0026ldquo;Disquisitiones Arithmeticae\u0026rdquo;.\nLamé (G. Lamé, 1795-1870) Mathématicien français. Il a contribué à la théorie de l\u0026rsquo;élasticité et à la théorie de la conduction de la chaleur.\nLiouville (J. Liouville, 1809-1882) Mathématicien français. Il a contribué aux équations différentielles, à la théorie des nombres transcendants et à la théorie des fonctions.\nCauchy (A. L. Cauchy, 1789-1857) Mathématicien français. Très prolifique, il compte de nombreuses réalisations en physique théorique et en mathématiques. On dit qu\u0026rsquo;en France, il est aussi respecté que Gauss.\nGalois (É. Galois, 1811-1832) Mathématicien français. Il a élucidé le théorème d\u0026rsquo;Abel, selon lequel les équations de degré 5 ou supérieur ne peuvent généralement pas être résolues algébriquement, en introduisant le concept de groupe. Bien qu\u0026rsquo;il soit mort jeune dans un duel, on sait aujourd\u0026rsquo;hui que cela a été déclenché par une banale affaire de femme.\nHensel (K. Hensel, 1861-1941) Mathématicien allemand. Disciple de Kronecker. En appliquant des méthodes de la théorie des fonctions, il a introduit une théorie appelée nombres p-adiques (analyse p-adique) en théorie des nombres.\nHasse (H. Hasse, 1898-1979) Mathématicien allemand. Disciple de Hensel, il a contribué à la fondation de l\u0026rsquo;analyse p-adique et à ses applications. Il a travaillé sur la théorie des corps de classes, l\u0026rsquo;étude des fonctions L des courbes elliptiques, etc.\nKronecker (L. Kronecker, 1823-1891) Mathématicien allemand d\u0026rsquo;origine juive. Contribution à la théorie des fonctions elliptiques, à la théorie des nombres, etc. Bien qu\u0026rsquo;il soit connu pour avoir prôné la fondation arithmétique des mathématiques, son caractère fortement subjectif l\u0026rsquo;a conduit à formuler des critiques déraisonnables envers son collègue de l\u0026rsquo;Université de Berlin, Weierstrass, et à entraver l\u0026rsquo;emploi de Cantor, ce qui a laissé une image négative de sa vie.\nHilbert (D. Hilbert, 1862-1943) Mathématicien allemand. Il a laissé une empreinte gigantesque dans tous les domaines des mathématiques, notamment la théorie des invariants, la théorie algébrique des nombres et les fondements des mathématiques. Les 23 problèmes qu\u0026rsquo;il a proposés lors du Congrès international des mathématiciens à Paris (1900) ont eu une influence majeure sur le développement des mathématiques.\nRiemann (B. Riemann, 1826-1866) Mathématicien allemand. Il a accompli des réalisations majeures concernant les fondements des mathématiques, telles que le concept de surface de Riemann dans la théorie des fonctions complexes et la géométrie riemannienne.\nFaltings (G. Faltings, 1954-) Mathématicien allemand. Il a résolu la conjecture de Mordell en 1983.\nWiles (A. Wiles, 1953-) Mathématicien d\u0026rsquo;origine britannique. Figure de proue dans son domaine, il a apporté d\u0026rsquo;importantes contributions par ses recherches sur la conjecture principale d\u0026rsquo;Iwasawa et la conjecture de Birch et Swinnerton-Dyer.\nRéférences Le dernier théorème de Fermat est résolu ! De la preuve d\u0026rsquo;Euler à celle de Wiles (Kodansha)\n","date":"2022-09-22T23:06:37+09:00","image":"http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E5%81%89%E4%BA%BA%E3%81%9F%E3%81%A1/img_hu9ac53943fe4f64bfe30a56c18c498d11_667839_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/grands-hommes-des-mathematiques/","title":"Grands hommes des mathématiques"},{"content":"Énumération des titres de fenêtres Voici comment énumérer les titres des fenêtres actuellement ouvertes à l\u0026rsquo;aide de PowerShell.\n1 Get-Process|where{$_.mainWindowTItle}|Select-Object MainWindowTitle Exemple de sortie\n1 2 3 4 5 6 7 8 9 MainWindowTitle --------------- Windows PowerShell Internet Explorer Sans titre - Paint Sans titre - Bloc-notes Gestionnaire des tâches Expérience de saisie Windows Document - WordPad ","date":"2022-09-20T17:03:15+09:00","image":"http://kenji.blog/p/%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%81%AE%E5%88%97%E6%8C%99/img_huc312ccf5dbdb1b6edae5dc06174466bf_18265_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%C3%A9num%C3%A9ration-des-titres-de-fen%C3%AAtres/","title":"Énumération des titres de fenêtres"},{"content":"Suppression Rapide par Lots de Gros Dossiers Lors de la suppression de gros dossiers dans l\u0026rsquo;Explorateur, la vitesse est lente car le contenu du dossier est d\u0026rsquo;abord entièrement scanné avant que la suppression ne soit exécutée. En supprimant avec une commande comme ci-dessous, la recherche et la suppression sont exécutées simultanément, ce qui permet de supprimer rapidement de gros dossiers.\nDans l\u0026rsquo;Invite de Commandes, accédez à la hiérarchie du dossier cible. Exécutez DEL /F /Q /S NomDuDossier \u0026gt; NUL. Exécutez RMDIR /Q /S NomDuDossier. ","date":"2022-09-20T16:04:02+09:00","image":"http://kenji.blog/p/%E5%A4%A7%E3%81%8D%E3%81%AA%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E9%AB%98%E9%80%9F%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4/img_hu0a77dc7478cd7b69f58fbada7141acfe_6495_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E5%A4%A7%E3%81%8D%E3%81%AA%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%83%BC%E3%82%92%E9%AB%98%E9%80%9F%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4/","title":"Suppression Rapide par Lots de Gros Dossiers"},{"content":"Commande pour Tout Supprimer dans Salesforce Chatter Ceci est une commande pour supprimer toutes les publications et pièces jointes dans Salesforce Chatter. Ouvrez la Developer Console, sélectionnez \u0026ldquo;Open Execute Anonymous Window\u0026rdquo; dans le menu Debug, collez le code suivant et exécutez-le. J\u0026rsquo;utilise personnellement cela lorsque la capacité de stockage de l\u0026rsquo;organisation s\u0026rsquo;épuise.\n1 2 3 4 5 6 delete [select id from FeedItem]; delete [select id from FeedAttachment]; delete [select id from ContentDocument]; // Vider la corbeille database.emptyRecycleBin([select id from ContentDocument where IsDeleted = true ALL ROWS]); ","date":"2022-09-19T21:59:14+09:00","image":"http://kenji.blog/p/salesforce%E3%83%81%E3%83%A3%E3%83%83%E3%82%BF%E3%83%BC%E5%85%A8%E6%B6%88%E3%81%97%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img_1_hu1e12ce6e6e64d4f046faca027a6e75ab_14487_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/salesforce%E3%83%81%E3%83%A3%E3%83%83%E3%82%BF%E3%83%BC%E5%85%A8%E6%B6%88%E3%81%97%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/","title":"Commande pour Tout Supprimer dans Salesforce Chatter"},{"content":"Voici une collection de petites astuces pour Windows que vous pouvez utiliser au quotidien. J\u0026rsquo;espère que ceux qui commencent à utiliser Windows la trouveront utile. Elle est conçue pour Windows 11, mais je pense que la plupart des astuces fonctionnent également sur Windows 10.\nFermer une fenêtre Alt + F4 lorsque la fenêtre est active Ctrl + W lorsque la fenêtre est active. Ferme un onglet ou une fenêtre (uniquement pour les applications compatibles) Double-cliquez sur l\u0026rsquo;icône à gauche de la barre de titre de la fenêtre Cliquez sur le × dans la barre de titre de la fenêtre Afficher le bureau Win + D. Appuyez deux fois pour restaurer l\u0026rsquo;état précédent de la fenêtre. Pratique lorsque vous souhaitez afficher le bureau un instant. Win + M. Réduire toutes les applications. Appuyer deux fois ne restaure pas les fenêtres. Saisie vocale Win + H. Démarrer la saisie vocale. Pour arrêter la saisie vocale, appuyez sur Esc ou à nouveau sur Win + H. Afficher l\u0026rsquo;ancien menu contextuel dans l\u0026rsquo;Explorateur Appuyez sur Shift + F10 ou sur la touche Application. La touche Application est située en bas à droite de votre clavier. Sélectionner une zone et faire une capture d\u0026rsquo;écran Vous pouvez sélectionner une zone et capturer l\u0026rsquo;écran avec Win + Shift + S. Vous pouvez capturer tout l\u0026rsquo;écran avec Win + Print Screen ou simplement Print Screen. (Si vous ajoutez Win, l\u0026rsquo;image capturée sera enregistrée dans C:\\Users\\Nom d'utilisateur\\Pictures\\Screenshots.) Vous pouvez capturer la fenêtre actuelle avec Alt + Print Screen. Lancer des applications épinglées à la barre des tâches Vous pouvez lancer une application épinglée à la barre des tâches avec Win + touche numérique.\nPar exemple, appuyer sur Win + 1 lancera la première application en partant de la gauche dans la barre des tâches. Vous pouvez déplacer le focus vers les icônes de la barre des tâches avec Win + T, puis appuyer sur Win + T plusieurs fois ou utiliser ← ou → pour vous déplacer et appuyer sur la touche Enter pour lancer l\u0026rsquo;application sélectionnée. Zoom avant / Zoom arrière Win + + lance la Loupe Windows. Vous pouvez ensuite utiliser Win + + ou - pour zoomer ou dézoomer l\u0026rsquo;écran. Vous pouvez utiliser Ctrl + + ou - pour zoomer/dézoomer dans des applications comme le Bloc-notes ou les navigateurs web (applications compatibles uniquement). Verrouiller Windows Win + L Ctrl + Alt + Del → Space ou Enter Éteindre Windows Si vous affichez le bureau avec Win + M ou Win + D, ou si la barre des tâches est active avec Win + T ou Win + B, appuyer sur Alt + F4 affichera une boîte de dialogue comme ci-dessous. Assurez-vous que \u0026ldquo;Arrêter\u0026rdquo; est sélectionné et appuyez sur Enter. Vous pouvez aussi faire Win + R → Alt + F4 → Alt + F4. Vous pouvez éteindre avec Win + X → U → U. Vous pouvez éteindre en tapant shutdown /s /t 0 dans l\u0026rsquo;Invite de commandes ou dans \u0026ldquo;Exécuter\u0026rdquo; (Win + R). Ajouter /f forcera l\u0026rsquo;arrêt. Redémarrer Windows Si vous affichez le bureau avec Win + M ou Win + D, ou si la barre des tâches est active avec Win + T ou Win + B, appuyer sur Alt + F4 affichera une boîte de dialogue comme ci-dessous. Appuyez sur ↓ une fois pour sélectionner \u0026ldquo;Redémarrer\u0026rdquo; et appuyez sur Enter. Vous pouvez aussi faire Win + R → Alt + F4 → Alt + F4. Vous pouvez redémarrer avec Win + X → U → R. Vous pouvez redémarrer avec shutdown /r /t 0. Ajouter /f forcera le redémarrage. Mettre Windows en veille Si vous affichez le bureau avec Win + M ou Win + D, ou si la barre des tâches est active avec Win + T ou Win + B, appuyer sur Alt + F4 affichera une boîte de dialogue comme ci-dessous. Appuyez sur ↑ une fois pour sélectionner \u0026ldquo;Veille\u0026rdquo; et appuyez sur Enter. Vous pouvez aussi faire Win + R → Alt + F4 → Alt + F4. Vous pouvez mettre en veille prolongée en tapant rundll32.exe powrprof.dll,SetSuspendState dans Win + R ou l\u0026rsquo;Invite de commandes. Se déconnecter de Windows Si vous affichez le bureau avec Win + M ou Win + D, ou si la barre des tâches est active avec Win + T ou Win + B, appuyer sur Alt + F4 affichera une boîte de dialogue comme ci-dessous. Appuyez sur ↑ deux fois pour sélectionner \u0026ldquo;Se déconnecter\u0026rdquo; et appuyez sur Enter. Vous pouvez aussi faire Win + R → Alt + F4 → Alt + F4. Win + X → U → I Ctrl + Alt + Del → Tab deux fois ou ↓ deux fois → Enter ou Space Vous pouvez vous déconnecter avec logoff. Déplacer les fenêtres avec le clavier Win + ← : Déplacer vers la gauche Win + → : Déplacer vers la droite Win + ↑ : Déplacer vers le haut / Agrandir Win + ↓ : Déplacer vers le bas / Réduire Win + Shift + ← ou → : Déplacer entre les moniteurs Win + Alt + ← ou → ou ↑ ou ↓ : Déplacer la fenêtre sans l\u0026rsquo;agrandir ou la réduire Lorsque non réduit, appuyez sur Alt + Space, puis M, puis utilisez les touches fléchées pour déplacer. La fenêtre suivra le curseur de la souris, vous permettant de la récupérer même si elle est affichée hors de l\u0026rsquo;écran. Terminer un processus avec le Gestionnaire des tâches Vous pouvez lancer le Gestionnaire des tâches avec Ctrl + Shift + Esc. Vous pouvez changer d\u0026rsquo;onglet avec Ctrl + Tab. Après avoir appuyé sur Tab dans l\u0026rsquo;onglet Détails, vous pouvez rechercher des processus par préfixe en utilisant la saisie alphanumérique du clavier. Lorsque le nom du processus est sélectionné, appuyez sur la touche Delete, suivie de la touche Enter pour terminer le processus. Terminer un processus par son nom avec une commande Vous pouvez terminer un processus avec taskkill /f /im nom_du_processus. Par exemple, vous pouvez terminer l\u0026rsquo;Explorateur avec taskkill /f /im explorer.exe Lancer plusieurs instances du même programme depuis la barre des tâches Maintenez la touche Shift et faites un clic gauche sur la barre des tâches pour lancer plusieurs instances du même programme. (Uniquement pour les applications qui supportent plusieurs instances) Lancer un programme avec des privilèges d\u0026rsquo;administrateur Lancer un programme en maintenant Ctrl + Shift le lancera avec des privilèges d\u0026rsquo;administrateur. Lancer l\u0026rsquo;Explorateur Vous pouvez lancer l\u0026rsquo;Explorateur avec Win + E. Affichez \u0026ldquo;Exécuter\u0026rdquo; avec Win + R, tapez explorer et appuyez sur Enter. Vous pouvez créer un nouveau dossier avec Ctrl + Shift + N. Ouvrir l\u0026rsquo;Invite de commandes à l\u0026rsquo;emplacement ouvert dans l\u0026rsquo;Explorateur Sur Windows 11, vous pouvez lancer l\u0026rsquo;Invite de commandes à partir de \u0026ldquo;Terminal\u0026rdquo; dans le menu du clic droit. Vous pouvez également lancer l\u0026rsquo;Invite de commandes en tapant cmd dans la barre d\u0026rsquo;adresse et en appuyant sur Enter. Afficher l\u0026rsquo;historique du presse-papiers Vous pouvez afficher l\u0026rsquo;historique du presse-papiers avec Win + V. Vous pouvez sélectionner des textes ou images précédemment copiés pour les copier à nouveau. Exécuter Vous pouvez lancer \u0026ldquo;Exécuter\u0026rdquo; avec Win + R. Voici quelques commandes que vous pouvez exécuter dans \u0026ldquo;Exécuter\u0026rdquo; ou dans l\u0026rsquo;Invite de commandes.\nOuvrir Edge Tapez msedge et appuyez sur Enter Ouvrir Internet Explorer 11 (IE11) Tapez powershell.exe -Command \u0026quot;(New-Object -ComObject InternetExplorer.Application).Visible = $true\u0026quot; et appuyez sur Enter Ouvrir Terminal Tapez wt et appuyez sur Enter Ouvrir le Panneau de configuration Tapez control et appuyez sur Enter Vous pouvez également l\u0026rsquo;ouvrir avec explorer.exe shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}. Lancer le Bloc-notes Tapez notepad et appuyez sur Enter Lancer la Calculatrice Tapez calc et appuyez sur Enter Lancer Paint Tapez mspaint et appuyez sur Enter Lancer PowerShell Tapez powershell et appuyez sur Enter Lancer Visual Studio Code Tapez code et appuyez sur Enter Lancer Excel Tapez excel et appuyez sur Enter Uniquement si Excel est installé. Ouvrir Word Tapez winword et appuyez sur Enter Uniquement si Word est installé. Ouvrir PowerPoint Tapez powerpnt et appuyez sur Enter Uniquement si PowerPoint est installé. Ouvrir la Configuration du système Tapez msconfig et appuyez sur Enter Ouvrir les Propriétés système Tapez sysdm.cpl et appuyez sur Enter Ouvrir À propos de Windows Tapez winver et appuyez sur Enter Ouvrir le Clavier visuel Tapez osk et appuyez sur Enter Ouvrir WordPad Tapez wordpad ou write et appuyez sur Enter Ouvrir l\u0026rsquo;Éditeur du Registre Tapez regedit et appuyez sur Enter Ouvrir Programmes et fonctionnalités Tapez explorer.exe shell:::{7b81be6a-ce2b-4676-a29e-eb907a5126c5} et appuyez sur Enter Ouvrir les Propriétés de Clavier Tapez explorer.exe shell:::{725BE8F7-668E-4C7B-8F90-46BDB0936430} et appuyez sur Enter Ouvrir les Propriétés de Souris Tapez explorer.exe shell:::{6C8EEC18-8D75-41B2-A177-8831D59D2D50} et appuyez sur Enter Ouvrir Son Tapez explorer.exe shell:::{F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D} et appuyez sur Enter Ouvrir Comptes d\u0026rsquo;utilisateurs Tapez explorer.exe shell:::{60632754-c523-4b62-b45c-4172da012619} et appuyez sur Enter Copier le texte d\u0026rsquo;une boîte de message standard Vous pouvez copier le texte d\u0026rsquo;une boîte de message standard avec Ctrl + C. Copier la boîte de message ci-dessus copiera ceci dans le presse-papiers : 1 2 3 4 5 6 7 [Window Title] WordPad [Main Instruction] Voulez-vous enregistrer les modifications apportées à Document ? [Enregistrer (S)] [Ne pas enregistrer (N)] [Annuler] Stocker la sortie de l\u0026rsquo;Invite de commandes dans le presse-papiers Ajouter | clip (tube + clip) après une commande, tel que echo \u0026quot;hello\u0026quot; | clip, copie la sortie standard dans le presse-papiers.\nSortir la hiérarchie des dossiers sous forme de texte Vous pouvez sortir la hiérarchie des dossiers au format d\u0026rsquo;arbre avec la commande tree dans l\u0026rsquo;Invite de commandes.\nExemple de sortie\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 C:. ├─.idea │ └─libraries ├─binaryeditorbz ├─blog │ ├─archetypes │ ├─content │ ├─data │ ├─layouts │ ├─static │ └─themes │ └─PaperMod │ ├─.git │ │ ├─branches │ │ ├─hooks │ │ ├─info │ │ ├─logs │ │ │ └─refs │ │ │ ├─heads │ │ │ └─remotes │ │ │ └─origin │ │ ├─objects │ │ │ ├─info │ │ │ └─pack │ │ └─refs │ │ ├─heads │ │ ├─remotes │ │ │ └─origin │ │ └─tags │ ├─.github │ │ ├─ISSUE_TEMPLATE │ │ └─workflows │ ├─assets │ │ ├─css │ │ │ ├─common │ │ │ ├─core │ │ │ ├─extended │ │ │ ├─hljs │ │ │ └─includes │ │ └─js │ ├─i18n │ ├─images │ └─layouts │ ├─partials │ │ └─templates │ ├─shortcodes │ └─_default │ └─_markup (et ainsi de suite) Référence Raccourcis clavier de Windows ","date":"2022-09-18T23:49:29+09:00","image":"http://kenji.blog/p/windows-%E3%81%AE%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E5%B0%8F%E6%8A%80%E9%9B%86/img_hu13a9ab529476901cdea6aea124c07798_315814_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/raccourcis-et-astuces-windows/","title":"Raccourcis et astuces Windows"},{"content":"Je vais vous présenter le logiciel de retouche d\u0026rsquo;images paint.net, que j\u0026rsquo;utilise souvent dans mon travail de développement.\nPoints utiles impossibles avec Paint de Windows Peut gérer la transparence et l\u0026rsquo;opacité Peut effectuer une sélection automatique de formes de zones complexes Peut gérer les calques Peut ajuster la correction de niveau, la luminosité, le contraste, etc. Peut appliquer divers effets (flou, distorsion, bruit, etc.) Autres caractéristiques Utilisation gratuite Fonctionnement relativement léger Intuitif à utiliser et n\u0026rsquo;a pas beaucoup de particularités Japonais (support multilingue) C\u0026rsquo;est un logiciel très fonctionnel mais facile à utiliser. Je ne maîtrise pas encore moi-même toutes les fonctionnalités.\nInstaller ici https://www.getpaint.net/download.html\nSi vous choisissez la version gratuite, veuillez cliquer sur la partie encadrée en rouge ci-dessous dans le lien.\nIl semble que si vous l\u0026rsquo;installez via le Microsoft Store, cela deviendra payant, mais en contrepartie, les mises à jour automatiques seront possibles. Même avec la version gratuite, il vous informera des dernières informations de mise à jour, vous pouvez donc le mettre à jour assez facilement.\n","date":"2022-09-14T19:33:31+09:00","image":"http://kenji.blog/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/img_hu407db422a0531b2d8a8b6fa0ee25fc6c_64699_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/paint.net%E3%81%AE%E9%AD%85%E5%8A%9B/","title":"L'attrait de paint.net"},{"content":"Pour configurer un domaine personnalisé sur un dépôt Github, vous devez modifier les paramètres DNS de votre domaine. Ici, nous allons expliquer en supposant que vous gérez votre domaine avec Onamae.com. Vous pouvez effectuer des configurations similaires en réécrivant les enregistrements A avec d\u0026rsquo;autres registraires.\nModifier les paramètres DNS sur Onamae.com Pour modifier les paramètres DNS de votre domaine, connectez-vous à l\u0026rsquo;écran de gestion de Onamae.com. Après vous être connecté, allez à l\u0026rsquo;écran de gestion de domaine. Une fois sur l\u0026rsquo;écran de gestion de domaine, modifiez les paramètres DNS. Pour modifier les paramètres DNS, configurez-les comme suit :\nAccédez à https://www.onamae.com/ et cliquez sur « Connexion Onamae.com Navi » Entrez votre « ID Onamae (ID membre) » et votre « Mot de passe » et cliquez sur le bouton de connexion Cliquez sur « Paramètres du serveur de noms » Cliquez sur « Paramètres DNS du domaine » Sélectionnez le domaine que vous souhaitez configurer et cliquez sur « Suivant » Cliquez sur « Configurer » à droite de « Utiliser la configuration des enregistrements DNS » Sélectionnez A pour TYPE, entrez 3600 pour TTL et « 185.199.108.153 » pour VALUE, puis cliquez sur « Ajouter » Comme pour 7., ajoutez également pour « 185.199.109.153 », « 185.199.110.153 » et « 185.199.111.153 » Assurez-vous que la case est cochée sous « Confirmation de modification du serveur de noms pour la configuration des enregistrements DNS », puis cliquez sur « Aller à l\u0026rsquo;écran de configuration » Si un écran indiquant « Pour éviter des modifications involontaires des paramètres DNS » s\u0026rsquo;affiche, cliquez sur « Ne pas configurer » (sélectionnez selon vos besoins) Vérifiez les détails de la configuration et cliquez sur « Configurer » Ceci termine la configuration DNS. La prise en compte peut prendre jusqu\u0026rsquo;à environ 72 heures. Si ce n\u0026rsquo;est pas pris en compte après 72 heures, essayez de contacter le support d\u0026rsquo;Onamae.com. Pour vérifier si les paramètres sont pris en compte dans votre environnement local, essayez d\u0026rsquo;exécuter la commande suivante. Veuillez remplacer la partie example.com par le domaine que vous souhaitez vérifier.\nPour Linux, Mac 1 dig example.com +noall +answer -t A Si le résultat est le suivant, la configuration a été prise en compte.\n1 2 3 4 example.com. 0 IN A 185.199.108.153 example.com. 0 IN A 185.199.109.153 example.com. 0 IN A 185.199.110.153 example.com. 0 IN A 185.199.111.153 Pour Windows 1 nslookup -q=a example.com 8.8.8.8 Si le résultat est le suivant, la configuration a été prise en compte.\n1 2 3 4 5 6 7 8 9 Serveur: dns.google Address: 8.8.8.8 Réponse ne faisant pas autorité : Nom: example.com Addresses: 185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 Configurer un domaine personnalisé sur un dépôt Github Ouvrez la page du dépôt et cliquez sur Settings Cliquez sur Pages Si vous publiez le code source du dépôt tel quel, sélectionnez « Deploy from a branch » dans Source. Si vous compilez le code source (comme HUGO), sélectionnez « GitHub Actions ». Sélectionnez la branche à publier dans Branch et cliquez sur Save Entrez le domaine que vous avez obtenu dans Custom domain, puis cliquez sur Save. Si nécessaire, cochez la case « Enforce HTTPS » pour activer la prise en charge de HTTPS [PR] ","date":"2022-09-13T01:16:40+09:00","image":"http://kenji.blog/p/github%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AB%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/octocat_hu8f3e107f91a1c645c9aa316280652835_20372_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-configurer-un-domaine-personnalis%C3%A9-sur-un-d%C3%A9p%C3%B4t-github/","title":"Comment configurer un domaine personnalisé sur un dépôt Github"},{"content":"Il est utile de garder la commande dotnet.exe à disposition, car elle permet même de compiler des programmes simples.\nInstallation du SDK .NET Puisque dotnet.exe est inclus dans le SDK .NET, installez d\u0026rsquo;abord le SDK .NET. Démarrez cmd.exe avec les privilèges d\u0026rsquo;administrateur et exécutez la commande suivante.\n1 winget install Microsoft.DotNet.SDK.6 Générer un .gitignore La commande pour générer un .gitignore avec dotnet.exe est la suivante.\n1 dotnet new gitignore Le .gitignore généré est le suivant.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.rsuser *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Mono auto generated files mono_crash.* # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ [Ww][Ii][Nn]32/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ [Ll]ogs/ # Visual Studio 2015/2017 cache/options directory .vs/ # Uncomment if you have tasks that create the project\u0026#39;s static files in wwwroot #wwwroot/ # Visual Studio 2017 auto generated files Generated\\ Files/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUnit *.VisualState.xml TestResult.xml nunit-*.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # Benchmark Results BenchmarkDotNet.Artifacts/ # .NET project.lock.json project.fragment.lock.json artifacts/ # Tye .tye/ # ASP.NET Scaffolding ScaffoldingReadMe.txt # StyleCop StyleCopReport.xml # Files built by Visual Studio *_i.c *_p.c *_h.h *.ilk *.meta *.obj *.iobj *.pch *.pdb *.ipdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *_wpftmp.csproj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # Visual Studio Trace Files *.e2e # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # AxoCover is a Code Coverage Tool .axoCover/* !.axoCover/settings.json # Coverlet is a free, cross platform Code Coverage Tool coverage*.json coverage*.xml coverage*.info # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # Note: Comment the next line if you want to checkin your web deploy settings, # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # NuGet Symbol Packages *.snupkg # The packages folder can be ignored because of Package Restore **/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/[Pp]ackages/repositories.config # NuGet v3\u0026#39;s project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt *.appx *.appxbundle *.appxupload # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !?*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Including strong name files can present a security risk # (https://github.com/github/gitignore/pull/2483#issue-259490424) #*.snk # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup \u0026amp; report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm ServiceFabricBackup/ *.rptproj.bak # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings *.rptproj.rsuser *- [Bb]ackup.rdl *- [Bb]ackup ([0-9]).rdl *- [Bb]ackup ([0-9][0-9]).rdl # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # CodeRush personal settings .cr/personal # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Tabs Studio *.tss # Telerik\u0026#39;s JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # OpenCover UI analysis results OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ # MSBuild Binary and Structured Log *.binlog # NVidia Nsight GPU debugger configuration file *.nvuser # MFractors (Xamarin productivity tool) working folder .mfractor/ # Local History for Visual Studio .localhistory/ # BeatPulse healthcheck temp database healthchecksdb # Backup folder for Package Reference Convert tool in Visual Studio 2017 MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ # Fody - auto-generated XML schema FodyWeavers.xsd ## ## Visual studio for Mac ## # globs Makefile.in *.userprefs *.usertasks config.make config.status aclocal.m4 install-sh autom4te.cache/ *.tar.gz tarballs/ test-results/ # Mac bundle stuff *.dmg *.app # content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore # General .DS_Store .AppleDouble .LSOverride # Icon must end with two \\r Icon # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk # content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore # Windows thumbnail cache files Thumbs.db ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk # JetBrains Rider .idea/ *.sln.iml ## ## Visual Studio Code ## .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json Il y a de nombreux fichiers pour Visual Studio, mais cela inclut également des éléments qui ne nécessitent généralement pas de gestion sous git, tels que le .DS_Store de Mac.\nSites de référence Installer .NET sur Windows ","date":"2022-09-13T00:25:12+09:00","image":"http://kenji.blog/p/dotnet%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7.gitignore%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B/img_1_huc51d4f51d02497db3544f94dd1182dc1_19208_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/dotnet%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7.gitignore%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B/","title":"Générer un .gitignore avec la commande dotnet"},{"content":"En me souvenant de mes jeux préférés, la liste s\u0026rsquo;est remplie uniquement de classiques. Comme il y a beaucoup de vieux jeux, si vous n\u0026rsquo;y avez pas encore joué, n\u0026rsquo;hésitez pas à les essayer.\nGame Boy La Game Boy originale est une console de jeu portable lancée par Nintendo en 1989. Par la suite, des successeurs tels que la Game Boy Color et la Game Boy Advance ont été lancés.\n① Sa・Ga2 : Hihou Densetsu Un jeu RPG lancé par Square (maintenant Square Enix) en 1990. C\u0026rsquo;est l\u0026rsquo;histoire de la collecte assidue de trésors cachés appelés reliques dans différents niveaux. C\u0026rsquo;est le tout premier jeu RPG auquel j\u0026rsquo;ai joué.\n② Kirby\u0026rsquo;s Dream Land Un jeu d\u0026rsquo;action lancé par Nintendo en 1992. Développé par HAL Laboratory. Un jeu où l\u0026rsquo;on avance en aspirant des ennemis ou en flottant dans les airs après avoir avalé de l\u0026rsquo;air. La musique et les effets sonores sont très bien faits, ce qui en fait un jeu très rythmé.\n③ Pokémon Rouge et Vert Un jeu RPG lancé par Nintendo en 1996. Développé par Nintendo EAD, Game Freak et Creatures. Par la suite, il a été adapté en anime et a connu une popularité explosive, mais je n\u0026rsquo;ai joué qu\u0026rsquo;à cette première génération.\nSuper Famicom Une console de jeu de salon lancée par Nintendo en 1990. Également connue sous le nom de SNES (Super Nintendo Entertainment System) à l\u0026rsquo;étranger.\n④ Super Mario Kart Un logiciel pour Super Famicom lancé par Nintendo en 1992. Un jeu de course où l\u0026rsquo;on s\u0026rsquo;affronte pour le classement tout en gênant les adversaires en jetant des carapaces et des bananes. Je me souviens y avoir joué avec ma famille et mes amis.\n⑤ Dragon Quest V : La Fiancée Céleste Un jeu RPG lancé par Enix en 1992. C\u0026rsquo;est un jeu qui intègre des éléments tels que le choix d\u0026rsquo;une partenaire de mariage et la possibilité de recruter des monstres vaincus. J\u0026rsquo;y ai joué intensément jusqu\u0026rsquo;à ce que j\u0026rsquo;arrive à recruter plusieurs Gluants de Mercure (Hagure Metal).\n⑥ Final Fantasy V Un jeu RPG lancé par Square en 1992. Il y a un élément de rejouabilité où l\u0026rsquo;on choisit des jobs et l\u0026rsquo;on maîtrise des compétences. Tout comme pour Dragon Quest, je me souviens d\u0026rsquo;avoir passé un temps infini à monter de niveau dans les grottes.\n⑦ Torneko\u0026rsquo;s Great Adventure : Mystery Dungeon Un jeu roguelike lancé par Chunsoft en 1993. Le prédécesseur de la série Mystery Dungeon. Sa particularité est que la forme du donjon change aléatoirement à chaque fois. Son slogan est \u0026ldquo;Le RPG auquel on peut jouer 1000 fois\u0026rdquo;.\n⑧ Mystery Dungeon 2 : Shiren the Wanderer Un jeu roguelike lancé par Chunsoft en 1995. La suite de \u0026ldquo;Torneko\u0026rsquo;s Great Adventure\u0026rdquo; de la série Mystery Dungeon. Il y a des boutiques dans le donjon où vous pouvez acheter des objets. (Si vous sortez de la boutique sans payer, le gérant vous poursuivra.)\n⑨ EarthBound (MOTHER 2) Le deuxième opus de la série MOTHER, lancé par Nintendo en 1994. Développé par Ape et HAL Laboratory. Plus tard, MOTHER 3 a été lancé en 2006. C\u0026rsquo;est une œuvre produite par Shigesato Itoi, et elle est parsemée d\u0026rsquo;un univers unique et de mots philosophiques.\n⑩ The Legend of Zelda : A Link to the Past Un jeu d\u0026rsquo;action-aventure lancé par Nintendo en 1991. Un jeu où l\u0026rsquo;on progresse en collectant divers objets et en résolvant de petites énigmes. De nombreuses suites ont été lancées par la suite. (Référence)\nNintendo Switch Une console de jeu de salon lancée par Nintendo en 2017.\n⑪ Splatoon 2 Un jeu de tir et d\u0026rsquo;action lancé par Nintendo en 2017. Un jeu où vous utilisez de l\u0026rsquo;encre pour sécuriser votre territoire ou vaincre vos adversaires afin de remporter la victoire. En 2022, la suite Splatoon 3 a été lancée.\n","date":"2022-09-12T19:28:50+09:00","image":"http://kenji.blog/p/%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%B2%E3%83%BC%E3%83%A011%E9%81%B8/img_12_hu03b5dadc912359ffea73dab76258d285_471079_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/11-jeux-preferes/","title":"11 Jeux Préférés"},{"content":"La commande pour empêcher la génération automatique de .DS_Store sur macOS est la suivante. Veuillez l\u0026rsquo;exécuter dans le terminal.\n1 defaults write com.apple.desktopservices DSDontWriteNetworkStores true Après avoir exécuté la commande, redémarrez le Finder.\n1 killall Finder Si vous souhaitez restaurer les paramètres, veuillez exécuter la commande suivante.\n1 defaults delete com.apple.desktopservices DSDontWriteNetworkStores false Comme ci-dessus, si vous modifiez les paramètres, redémarrez le Finder.\n1 killall Finder ","date":"2022-09-12T16:03:42+09:00","image":"http://kenji.blog/p/macos%E3%81%A7.ds_store%E3%82%92%E8%87%AA%E5%8B%95%E7%94%9F%E6%88%90%E3%81%97%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/img_hu4b5bbd3b572a7a7eb2cc4ecf633430af_78743_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/commande-pour-empecher-la-generation-automatique-de-ds-store-sur-macos/","title":"Commande pour empêcher la génération automatique de .DS_Store sur macOS"},{"content":"Déplacez le répertoire actuel vers le dossier cible et exécutez la commande suivante pour supprimer par lots les fichiers .DS_Store, y compris ceux des sous-dossiers.\n1 Get-ChildItem . -include \u0026#39;.DS_Store\u0026#39; -Recurse -Force | Remove-Item -Force ","date":"2022-09-12T10:11:42+09:00","image":"http://kenji.blog/p/powershell%E3%81%A7.ds_store%E3%82%92%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B/img_hu95c0724bd9a903eadf46c7f648acb682_8907_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/supprimer-.ds_store-par-lots-avec-powershell/","title":"Supprimer .DS_Store par lots avec PowerShell"},{"content":"Shortcodes utiles dans HUGO YouTube {{\u0026lt;youtube 123456abc\u0026gt;}}\nTwitter {{\u0026lt;twitter 123456abc\u0026gt;}}\nInstagram {{\u0026lt;instagram 123456abc\u0026gt;}}\nFlickr {{\u0026lt;flickr 123456abc\u0026gt;}}\nVimeo {{\u0026lt;vimeo 123456abc\u0026gt;}}\nAutres Shortcodes\nRemarque supplémentaire Si vous souhaitez afficher {{\u0026lt; foo \u0026gt;}} sur le site, vous devez écrire {{\u0026lt;/* foo */\u0026gt;}}.\n","date":"2022-09-11T22:59:52+09:00","image":"http://kenji.blog/p/hugo%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89/img_hu415dc7e70376ac350673d0366f70ca4b_19909_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/hugo%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89/","title":"Shortcodes utiles dans HUGO"},{"content":"La disposition par défaut place l\u0026rsquo;image au centre avec une largeur de 100 %, mais comme je la trouvais parfois un peu grande, j\u0026rsquo;ai essayé de faire en sorte que l\u0026rsquo;image s\u0026rsquo;enroule sous le titre, et j\u0026rsquo;ai modifié la largeur à environ 150px.\nLes modifications apportées aux fichiers sont les suivantes.\nblank.css Pour modifier les marges, la taille de l\u0026rsquo;image et les lignes d\u0026rsquo;affichage du texte, ajoutez la description suivante dans blank.css.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 .entry-content { -webkit-line-clamp: 4; } .entry-footer { text-align: right; } .entry-cover { margin-bottom: initial; text-align: center; } .entry-cover img { border-radius: 4px; display: inline; max-width: 100%; } .post-meta { display: block; text-align: right; } post-entry.css Comme je n\u0026rsquo;ai pas pu supprimer la définition du côté de blank.css, j\u0026rsquo;ai supprimé 1 ligne à l\u0026rsquo;emplacement suivant dans post-entry.css.\n1 2 3 4 5 6 .entry-cover img { border-radius: var(--radius); pointer-events: none; /* width: 100%; */ ← Supprimer cette ligne height: auto; } list.html Pour modifier la disposition de l\u0026rsquo;image, j\u0026rsquo;ai modifié l\u0026rsquo;emplacement suivant dans list.html.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 \u0026lt;article class=\u0026#34;{{ $class }}\u0026#34;\u0026gt; \u0026lt;!-- {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }} --\u0026gt;\u0026lt;!-- Déplacé vers le bas --\u0026gt; \u0026lt;!-- {{- partial \u0026#34;cover.html\u0026#34; (dict \u0026#34;cxt\u0026#34; . \u0026#34;IsHome\u0026#34; true \u0026#34;isHidden\u0026#34; $isHidden) }} --\u0026gt;\u0026lt;!-- Déplacé vers le bas --\u0026gt; \u0026lt;header class=\u0026#34;entry-header\u0026#34;\u0026gt; \u0026lt;h2\u0026gt; {{- .Title }} {{- if .Draft }}\u0026lt;sup\u0026gt;\u0026lt;span class=\u0026#34;entry-isdraft\u0026#34;\u0026gt;\u0026amp;nbsp;\u0026amp;nbsp;[draft]\u0026lt;/span\u0026gt;\u0026lt;/sup\u0026gt;{{- end }} \u0026lt;/h2\u0026gt; \u0026lt;/header\u0026gt; \u0026lt;div style=\u0026#34;display:flex;\u0026#34;\u0026gt;\u0026lt;!-- Ajouté --\u0026gt; \u0026lt;div style=\u0026#34;max-width:150px;margin:11px 15px 0px 0px;\u0026#34;\u0026gt;\u0026lt;!-- Ajouté --\u0026gt; {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }}\u0026lt;!-- Déplacé du haut --\u0026gt; {{- partial \u0026#34;cover.html\u0026#34; (dict \u0026#34;cxt\u0026#34; . \u0026#34;IsHome\u0026#34; true \u0026#34;isHidden\u0026#34; $isHidden) }}\u0026lt;!-- Déplacé du haut --\u0026gt; \u0026lt;/div\u0026gt;\u0026lt;!-- Ajouté --\u0026gt; \u0026lt;div style=\u0026#34;width:100%;\u0026#34;\u0026gt;\u0026lt;!-- Ajouté --\u0026gt; {{- if (ne (.Param \u0026#34;hideSummary\u0026#34;) true) }} \u0026lt;div class=\u0026#34;entry-content\u0026#34;\u0026gt; \u0026lt;p\u0026gt;{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}\u0026lt;/p\u0026gt; \u0026lt;/div\u0026gt; {{- end }} {{- if not (.Param \u0026#34;hideMeta\u0026#34;) }} \u0026lt;footer class=\u0026#34;entry-footer\u0026#34;\u0026gt; {{- partial \u0026#34;post_meta.html\u0026#34; . -}} \u0026lt;/footer\u0026gt; {{- end }} \u0026lt;a class=\u0026#34;entry-link\u0026#34; aria-label=\u0026#34;post link to {{ .Title | plainify }}\u0026#34; href=\u0026#34;{{ .Permalink }}\u0026#34;\u0026gt;\u0026lt;/a\u0026gt; \u0026lt;/div\u0026gt;\u0026lt;!-- Ajouté --\u0026gt; \u0026lt;/div\u0026gt;\u0026lt;!-- Ajouté --\u0026gt; \u0026lt;/article\u0026gt; Il semble qu\u0026rsquo;il y ait pas mal de demandes similaires.\nhttps://github.com/adityatelange/hugo-PaperMod/discussions/159#discussioncomment-247844\nCe serait bien si les développeurs officiels pouvaient également le prendre en charge.\n","date":"2022-09-11T18:50:40+09:00","image":"http://kenji.blog/p/papermod%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%AE%E9%85%8D%E7%BD%AE%E5%A4%89%E6%9B%B4/images/img_hu42e770ebe6b22298fe9d1751d1191316_24734_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/modifier-la-disposition-des-images-dans-papermod/","title":"Modifier la disposition des images dans PaperMod"},{"content":"Introduction Le thème PaperMod prend en charge Twitter Card. Cependant, les paramètres de Twitter Card doivent être écrits dans le config.toml ou dans les informations d\u0026rsquo;en-tête du *.md de chaque article. Si vous le configurez à la fois dans chaque article et dans le config.toml, les informations d\u0026rsquo;en-tête de chaque article seront prioritaires.\nComment configurer config.toml Dans config.toml, ajoutez un élément appelé images sous [params]. Dans images, décrivez le chemin de l\u0026rsquo;image à afficher sur Twitter Card. Si vous placez l\u0026rsquo;image dans le dossier static, il suffit de spécifier uniquement le nom du fichier.\n1 2 [params] images = [\u0026#34;twitter_card.jpg\u0026#34;] Structure des dossiers\n1 2 3 4 5 6 7 8 9 10 root │ config.toml (Écrire ici) ├─content │ └─posts │ └─Dossier de l\u0026#39;article │ │ index.md (Écrire ici) │ └─images │ cover.png (Placer ici) └─static twitter_card.jpg (Placer ici) Informations d\u0026rsquo;en-tête de chaque article Dans les informations d\u0026rsquo;en-tête de chaque article, ajoutez un élément appelé image sous cover. Si vous définissez relative sur true, vous pouvez spécifier avec un chemin relatif à partir du *.md de l\u0026rsquo;article.\n1 2 3 cover: image: \u0026#34;images/cover.jpg\u0026#34; relative: true Si vous ne souhaitez pas l\u0026rsquo;afficher en haut de l\u0026rsquo;article Si vous ne souhaitez pas afficher l\u0026rsquo;image de couverture en haut de l\u0026rsquo;article, ajoutez un élément appelé hidden sous cover et définissez-le sur true.\n1 2 3 4 cover: image: \u0026#34;images/cover.jpg\u0026#34; relative: true hidden: true À propos de la taille de l\u0026rsquo;image Dans les spécifications actuelles de PaperMod, il semble que la taille de Twitter Card ne prenne en charge que summary_large_image. La taille appropriée (résolution) de summary_large_image a plusieurs théories, mais autour de 800 x 418 (ratio d\u0026rsquo;image 1.91:1) semble être bon.\nSite de référence 1 Site de référence 2\nSi possible, nous vous recommandons de redimensionner la taille de l\u0026rsquo;image avant de publier.\nComment vérifier les paramètres Pour vérifier les paramètres de Twitter Card, utilisez le Twitter Card Validator. Cependant, comme l\u0026rsquo;aperçu ne s\u0026rsquo;est pas affiché correctement dans mon environnement, si l\u0026rsquo;aperçu n\u0026rsquo;apparaît pas, je vous recommande de vérifier une fois avant de publier en utilisant un compte privé ou similaire.\n","date":"2022-09-10T18:41:22+09:00","image":"http://kenji.blog/p/papermod%E3%81%A7twitter-card%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_hu5e280b2f775d1811bb256626ef7709c6_973665_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/papermod%E3%81%A7twitter-card%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/","title":"Comment configurer Twitter Card avec PaperMod"},{"content":"Introduction GitHub Copilot est un outil de complétion de code basé sur l\u0026rsquo;IA développé par GitHub. Vous pouvez utiliser GitHub Copilot dans IntelliJ IDEA en installant le plugin GitHub Copilot dans l\u0026rsquo;environnement de développement IntelliJ IDEA. Un compte GitHub est requis pour l\u0026rsquo;activation.\nComment installer Sélectionnez Settings dans le menu File d\u0026rsquo;IntelliJ IDEA Sélectionnez Plugins et recherchez \u0026ldquo;GitHub Copilot\u0026rdquo; dans la recherche Installez à partir du bouton d\u0026rsquo;installation Appuyez sur le bouton Restart IDE pour redémarrer IntelliJ IDEA L\u0026rsquo;installation est terminée lorsque IntelliJ IDEA redémarre. Activation Cliquez sur l\u0026rsquo;icône dans le coin inférieur droit Cliquez sur Login to Github Cliquez sur le bouton Copy and Open Le navigateur s\u0026rsquo;ouvrira, donc si vous n\u0026rsquo;êtes pas connecté à GitHub, connectez-vous, puis collez le code avec Ctrl+V et cliquez sur le bouton Continue Cliquez sur le bouton Authorize GitHub Copilot Plugin Si l\u0026rsquo;écran ci-dessus s\u0026rsquo;affiche, l\u0026rsquo;activation est terminée. Comment l\u0026rsquo;utiliser Lorsque vous tapez quelques caractères dans l\u0026rsquo;éditeur d\u0026rsquo;IntelliJ IDEA, GitHub Copilot commencera à vous suggérer la suite de votre code. Profitez de la puissante fonctionnalité de complétion de l\u0026rsquo;IA !\n","date":"2022-09-10T09:44:55+09:00","image":"http://kenji.blog/p/intellij-idea%E3%81%A7github-copilot%E3%82%92%E4%BD%BF%E3%81%86/images/img_hu78c7d99017ff4692861292fedffeefef_291492_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/utiliser-github-copilot-dans-intellij-idea/","title":"Utiliser GitHub Copilot dans IntelliJ IDEA"},{"content":"Introduction Go est un langage de programmation relativement nouveau publié par Google en 2009. Le compilateur, les outils et les bibliothèques de Go sont open source. De plus, Go est un langage à typage statique comme C ou Java, mais il n\u0026rsquo;utilise pas de pointeurs comme le langage C.\nMéthode d\u0026rsquo;installation Installer Go\nLes programmes d\u0026rsquo;installation pour chaque plateforme sont publiés sur le site ci-dessus.\nSuivez les instructions à l\u0026rsquo;écran pour procéder à l\u0026rsquo;installation. Installation terminée. Facile, n\u0026rsquo;est-ce pas ?\nPremier programme Enregistrez le programme suivant sous le nom hello.go.\n1 2 3 4 5 6 7 package main import \u0026#34;fmt\u0026#34; func main() { fmt.Printf(\u0026#34;Hello World\\n\u0026#34;) } En exécutant go run hello.go depuis l\u0026rsquo;invite de commande ou le terminal, Hello, world! s\u0026rsquo;affichera.\nPour compiler, l\u0026rsquo;exécution de go build hello.go générera hello.exe. En exécutant hello.exe, Hello, world! s\u0026rsquo;affichera.\nVous pouvez également exécuter du code sur une page web https://go.dev/play/\nDocumentation japonaise http://go.shibu.jp/\nLes explications nécessaires pour apprendre Go sont regroupées dans le lien ci-dessus (version traduite en japonais). La technologie liée à Go est tellement ouverte et riche qu\u0026rsquo;il n\u0026rsquo;est presque pas nécessaire d\u0026rsquo;acheter des textes papier.\nAlors, profitez bien de Go !\n","date":"2022-09-10T00:48:17+09:00","image":"http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/cover_hu90f0e026fa77d6f7268f9adc11e245d4_5801_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-installer-go/","title":"Comment installer Go"},{"content":"Qu\u0026rsquo;est-ce que la dialectique de Hegel ? Hegel a saisi la signification positive de la contradiction dans laquelle tombe la raison, et a fait valoir qu\u0026rsquo;en général, toutes les choses finies génèrent leurs opposés en raison de la contradiction qui leur est inhérente, et par cette médiation, toutes deux sont élevées (Aufhebung) à un stade supérieur, faisant de cela le principe de tout mouvement dans le monde réel. (De Kotobank)\nMon interprétation est que toutes les idéologies et idées dans le monde réel ne sont pas simplement unilatéralement correctes, mais contiennent toujours des contradictions en interne, et en comprenant ou en intégrant ces structures opposées, notre perception se développe vers un niveau supérieur.\nJe pense que cela s\u0026rsquo;applique non seulement à la façon de penser humaine, mais aussi à tous les phénomènes du monde naturel.\nPour toute matière, s\u0026rsquo;il y a une action, il y a une réaction ; si un objet bouge, il y a de la friction ; la gravité affecte mutuellement non seulement le soleil et la terre, mais toutes les substances entre elles. Le cours des rivières et le souffle du vent ne vont pas seulement dans une seule direction, mais sont soumis à diverses forces, changeant à chaque instant.\nTechniquement parlant, les programmes informatiques contiennent également toujours des bugs en interne, et c\u0026rsquo;est en les supprimant qu\u0026rsquo;ils deviennent des programmes de niveau supérieur. Je pense qu\u0026rsquo;on peut dire qu\u0026rsquo;un programme sans bugs est un programme inintéressant qui ne se développe plus. Il finira par devenir obsolète.\nL\u0026rsquo;environnement qui nous entoure change constamment avec le temps. Plutôt que d\u0026rsquo;ignorer ou de justifier bizarrement nos propres contradictions, ou de figer notre façon de penser, je souhaite revoir constamment ma façon de penser et de percevoir les choses, et modifier mes réflexions avec souplesse.\n","date":"2022-09-09T23:13:19+09:00","image":"http://kenji.blog/p/%E3%83%98%E3%83%BC%E3%82%B2%E3%83%AB%E3%81%AE%E5%BC%81%E8%A8%BC%E6%B3%95/images/img_huf44f6813611a65fb4bf58b8763a4133a_83624_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/la-dialectique-de-hegel/","title":"La Dialectique de Hegel"},{"content":"Je suis allé au Kamukura (Ramen) pour la première fois depuis des années.\nRamen au Kimchi et à la Ciboule\nC\u0026rsquo;était délicieux. C\u0026rsquo;est une saveur qu\u0026rsquo;on a envie de manger de temps en temps.\n","date":"2022-09-09T21:45:19+09:00","image":"http://kenji.blog/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/images/img2_hu5b1c55ddd3b998ef9e1e7da203dc1109_434676_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/%E4%BD%95%E5%B9%B4%E3%81%8B%E3%81%B6%E3%82%8A%E3%81%AE%E7%A5%9E%E5%BA%A7%E3%81%8B%E3%82%80%E3%81%8F%E3%82%89%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%B3/","title":"Kamukura (Ramen) pour la première fois depuis des années"},{"content":"J\u0026rsquo;ai écrit un programme pour énumérer les nombres premiers en Rust.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 fn main() { let max = 1000; let mut primes = vec![2]; let mut n = 3; loop { let mut is_prime = true; for p in \u0026amp;primes { if n % p == 0 { is_prime = false; break; } } if is_prime { primes.push(n); } n += 2; if n \u0026gt; max { break; } } for p in \u0026amp;primes { println!(\u0026#34;{}\u0026#34;, p); } } ","date":"2022-09-09T07:08:49+09:00","image":"http://kenji.blog/p/rust%E3%81%A7%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B/images/img_hu5b7e04bd1dc0eefb45fd25ac4219842a_9797_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%C3%A9num%C3%A9ration-des-nombres-premiers-en-rust/","title":"Énumération des nombres premiers en Rust"},{"content":"Playlist de Jazz Calme ","date":"2022-09-08T17:40:26+09:00","image":"http://kenji.blog/p/%E8%90%BD%E3%81%A1%E7%9D%80%E3%81%84%E3%81%9F%E3%82%B8%E3%83%A3%E3%82%BA/images/img_huddf559c95c5d412c9cd6a131d9beecb1_1507891_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/jazz-calme/","title":"Jazz Calme"},{"content":"Up-tempo\nElectro Swing Collection Electro Swing Mix 2019 Vol.3 lofi hip hop radio(Live) LoFi Jazz C\u0026rsquo;est la motivation pour étudier dur tous les jours | 5 hour lofi hip hop / study / work / chill beats ","date":"2022-09-08T08:39:03+09:00","image":"http://kenji.blog/p/%E3%82%AB%E3%83%95%E3%82%A7%E9%9F%B3%E6%A5%BD/images/img_huc541091b3f264af05ecf07abbd33454f_519675_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/musique-de-cafe/","title":"Musique de Café"},{"content":"Ce n\u0026rsquo;est pas grave si vos efforts ne sont pas reconnus 45年の人生で手に入れた。ぐずぐずした時、いつも背中を押してくれる言葉たち。 pic.twitter.com/EQgmujOSpg\n\u0026mdash; いれぶん (@eleven_s_s) September 6, 2022 Les valeurs sont beaucoup plus diverses Yusuke Narita \u0026ldquo;Parmi les malheurs que portent les humains\u0026rdquo;\nVos actions se reflètent telles qu\u0026rsquo;elles sont Les pensées de Hayao Miyazaki ","date":"2022-09-08T02:22:52+09:00","image":"http://kenji.blog/p/%E3%83%A2%E3%83%81%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%B8%8A%E3%81%92%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E5%8B%95%E7%94%BB/images/img_hu390d0c8e5d67e265b0c5aa8749ccc95d_193793_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%83%A2%E3%83%81%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%B8%8A%E3%81%92%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E5%8B%95%E7%94%BB/","title":"Des vidéos qui augmentent votre motivation"},{"content":"Voici les spécifications de mon PC principal.\nNom de l\u0026rsquo;élément Valeur Processeur Intel Core i7-8700K CPU @ 3.70GHz 3.70 GHz Mémoire 32.0 GB Type de système Système d\u0026rsquo;exploitation 64 bits, processeur basé sur x64 Système d\u0026rsquo;exploitation Windows 11 Enterprise (Version 21H2, Build 22000.856) Fabricant Mouse Computer Co., Ltd. ","date":"2022-09-08T01:55:00+09:00","image":"http://kenji.blog/p/%E4%BB%8A%E3%81%AE%E3%83%A1%E3%82%A4%E3%83%B3pc%E3%82%B9%E3%83%9A%E3%83%83%E3%82%AF/images/img_hu731502385ac0a573daf05287c34d796a_240757_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/specifications-de-mon-pc-principal-actuel/","title":"Spécifications de mon PC principal actuel"},{"content":"Google Material Symbols and Icons https://fonts.google.com/icons GitHub Octicons https://primer.style/octicons/ Sargam Icons https://sargamicons.com/ Des milliers d\u0026rsquo;icônes gratuites https://icon-icons.com/ flaticon https://www.flaticon.com/ ICONFINDER https://www.iconfinder.com/ iconfont https://www.iconfont.cn/ open-iconic https://github.com/iconic/open-iconic ","date":"2022-09-07T16:46:56+09:00","image":"http://kenji.blog/p/%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A2%E3%82%A4%E3%82%B3%E3%83%B3%E9%9B%86%E3%82%B5%E3%82%A4%E3%83%88/img_2_hu3b0847646c9f4aefba079615d2db35cd_21041_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/sites-de-collection-dicones-simples/","title":"Sites de collection d'icônes simples"},{"content":"J\u0026rsquo;ai modifié la palette de couleurs du thème PaperMod. Je me suis référé au lien suivant pour la méthode de modification.\nhttps://github.com/adityatelange/hugo-PaperMod/discussions/645\nLe chemin du CSS est le suivant.\nthemes/PaperMod/assets/css/extended/blank.css\n1 2 3 4 5 6 7 8 9 10 11 12 13 :root { --entry: #fbf7ef; --primary: rgba(113, 103, 91, 1.00); --secondary: rgba(113, 103, 91, 0.95); --tertiary: rgba(113, 103, 91, 0.50); --content: rgba(113, 103, 91, 0.85); --hljs-bg: #34231B; --code-bg: #ebe4d7; --border: #fdfaf5; --theme: #fbf7ef; } .dark { } Aucun changement pour le mode sombre pour le moment.\n","date":"2022-09-07T15:30:21+09:00","image":"http://kenji.blog/p/papermod%E3%81%AE%E9%85%8D%E8%89%B2%E5%A4%89%E6%9B%B4/img_hu74d0722ae4db8273d5e32f97bb10689d_10515_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/papermod%E3%81%AE%E9%85%8D%E8%89%B2%E5%A4%89%E6%9B%B4/","title":"Modification de la palette de couleurs de PaperMod"},{"content":"Quand la mère est tombée malade et a dû rester au lit, Lors de la préparation du dîner ou du bain, j\u0026rsquo;ai demandé à ma fille (2 ans) : \u0026ldquo;Devrions-nous demander à maman de faire ça ?\u0026rdquo;, Elle a répondu : \u0026ldquo;Non, elle dort !\u0026rdquo; et j\u0026rsquo;ai pensé qu\u0026rsquo;à sa manière, elle était prévenante.\nJ\u0026rsquo;étais heureux de voir qu\u0026rsquo;elle devient quelqu\u0026rsquo;un qui se soucie des autres.\n","date":"2022-09-07T04:40:52+09:00","image":"http://kenji.blog/p/%E5%AD%90%E4%BE%9B%E3%81%AE%E3%81%9D%E3%82%93%E3%81%9F%E3%81%8F/images/img_hud61af1a628f352ef1641794e80547155_144893_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/la-consideration-d-un-enfant/","title":"La considération d'un enfant"},{"content":"Trouver des entreprises qui deviennent populaires Demandez aux personnes de Hot Pepper et aux comptables quelles sont les entreprises à la mode N\u0026rsquo;entrez pas dans des entreprises qui sont déjà saturées et ont des concurrents forts N\u0026rsquo;entrez que dans des entreprises où vous êtes sûr de pouvoir attirer des clients (n\u0026rsquo;entrez pas dans des entreprises où les concurrents existants utilisent des méthodes spéciales (inimitables) pour attirer les clients) Imiter minutieusement Recherchez la logique commerciale avant d\u0026rsquo;entrer Copiez minutieusement Améliorez sur cette base Systématiser Rédigez un manuel pour tout afin que n\u0026rsquo;importe qui puisse le faire sans effort Pensez à des idées pour augmenter les ventes (augmentation du nombre de clients, dépense par client) et réduire les coûts (frais de personnel, frais de publicité) et systématisez-les Philosophie de gestion La philosophie du gestionnaire est de \u0026ldquo;maximiser les profits de l\u0026rsquo;entreprise\u0026rdquo; et rien de plus ni de moins Faire de la contribution sociale ou être aimé par les employés n\u0026rsquo;est pas une bonne philosophie de gestion (pensez que ces choses viendront naturellement plus tard) ","date":"2022-09-07T02:36:11+09:00","image":"http://kenji.blog/p/%E7%B5%8C%E5%96%B6%E8%80%85%E3%83%A1%E3%83%A2/images/img_hu8e43d40b92b6a98e30d3360e9f3ab85a_162130_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/notes-de-gestion/","title":"Notes de Gestion"},{"content":"Je voudrais organiser ce que je trouve étrange et ce que je pense de la société japonaise.\nÀ propos des bourses d\u0026rsquo;études Quand on parle de bourses d\u0026rsquo;études au Japon, la plupart sont des prêts avec intérêts qui doivent être remboursés (prêts étudiants). De plus, les frais de scolarité universitaires n\u0026rsquo;ont cessé d\u0026rsquo;augmenter depuis 1950, et le taux de bénéficiaires de bourses est également en hausse.\nD\u0026rsquo;un autre côté, le montant total moyen emprunté récemment semble atteindre 3,24 millions de yens.\nParmi les utilisateurs de bourses de l\u0026rsquo;Organisation des services étudiants du Japon, le montant moyen total emprunté est de 3 243 000 yens. Référence\nSi quelqu\u0026rsquo;un obtient son diplôme universitaire à l\u0026rsquo;âge de 22 ans avec une dette pouvant atteindre 3 millions de yens, l\u0026rsquo;âge du mariage sera naturellement retardé et il sera plus difficile d\u0026rsquo;avoir des enfants, ce qui, je crois, est l\u0026rsquo;une des causes du problème de la baisse du taux de natalité au Japon.\nLa propagation du principe de responsabilité personnelle C\u0026rsquo;est peut-être plutôt une perception, mais je pense qu\u0026rsquo;il y a une attitude sociale froide du type \u0026ldquo;les affaires des autres sont les affaires des autres\u0026rdquo;. Avec une récession qui dure depuis des décennies, il est peut-être inévitable d\u0026rsquo;avoir cette tendance, mais même pour le problème des bourses d\u0026rsquo;études mentionné ci-dessus, il n\u0026rsquo;est pas considéré comme un problème de la société dans son ensemble, et j\u0026rsquo;ai le sentiment que les voix des jeunes, qui ont moins de votes, ou des minorités sont ignorées lors des élections. Même si, à long terme, c\u0026rsquo;est un problème très important pour le Japon dans son ensemble.\nPlutôt que de se diriger vers une compétition excessive, l\u0026rsquo;attitude de s\u0026rsquo;entraider tous ensemble s\u0026rsquo;il y a des personnes, des générations ou des groupes en difficulté est quelque chose que je trouve très important pour un pays. (Cependant, je ressens un certain malaise lorsque le gouvernement insiste sur \u0026ldquo;l\u0026rsquo;auto-assistance et l\u0026rsquo;assistance mutuelle\u0026rdquo;. J\u0026rsquo;aimerais qu\u0026rsquo;ils prennent l\u0026rsquo;initiative d\u0026rsquo;aider les plus vulnérables.)\n(Cet article sera mis à jour régulièrement.)\nLes caractéristiques des Japonais du point de vue de l\u0026rsquo;IA Oui, voici les caractéristiques des Japonais.\n【Aspects positifs】\nLes Japonais ont la culture d\u0026rsquo;être polis et de prêter attention au respect et au traitement des autres. La ponctualité est stricte et le respect des horaires est très apprécié. Il y a une forte mentalité collectiviste, et le travail en équipe et la coopération sont valorisés. La propreté est importante, et il y a une tendance à être diligent en matière de bonnes manières dans les lieux publics et de nettoyage. Les cadeaux et souvenirs sont valorisés, et la culture du remerciement est largement répandue. 【Aspects négatifs】\nParfois, ils ne sont pas doués pour affirmer leurs opinions personnelles et ont tendance à éviter les conflits d\u0026rsquo;opinion. C\u0026rsquo;est une culture de travail très stricte, où les heures supplémentaires et la mort par surmenage (karoshi) sont parfois considérées comme des problèmes. Il reste des problèmes de discrimination et d\u0026rsquo;exclusion envers les étrangers, et l\u0026rsquo;harmonie avec la communauté internationale est parfois remise en question. Il y a une tendance à l\u0026rsquo;autoritarisme, et on souligne souvent qu\u0026rsquo;ils acceptent inconditionnellement les opinions des supérieurs ou des aînés. Ils sont parfois critiqués pour être une société fermée ayant tendance à avoir du mal à accepter les cultures ou valeurs extérieures. ","date":"2022-09-06T02:24:11+09:00","image":"http://kenji.blog/p/%E6%97%A5%E6%9C%AC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E6%80%9D%E3%81%86%E3%81%93%E3%81%A8/images/img_hu105ea1ef9d38a7cb8901ff6c857b887e_168534_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/ce-que-je-pense-du-japon/","title":"Ce que je pense du Japon"},{"content":"Introduction Rust est un langage de programmation relativement nouveau qui vous permet d\u0026rsquo;écrire des modules rapides et économes en mémoire avec une syntaxe moderne. Il prend en charge le multiplateforme et est également utilisé dans le monde du WebAssembly et des systèmes embarqués. Il a notamment été adopté par Firefox, DropBox et Cloudflare.\nIl attire également l\u0026rsquo;attention en tant qu\u0026rsquo;alternative au C++.\nComment installer Installer Rust\nLe site ci-dessus fournit des instructions d\u0026rsquo;installation pour chaque plateforme.\nPremier programme Enregistrez le programme suivant sous le nom main.rs.\n1 2 3 fn main() { println!(\u0026#34;Hello, world!\u0026#34;); } En exécutant rustc main.rs depuis l\u0026rsquo;invite de commande ou le terminal, il sera compilé. L\u0026rsquo;exécution de ./main (main.exe sous Windows) affichera Hello, world!.\nDocumentation en japonais The Rust Programming Language Édition japonaise\nLes explications nécessaires pour apprendre Rust sont compilées dans le lien ci-dessus (version traduite en japonais). Elle est si complète que vous n\u0026rsquo;avez pas besoin d\u0026rsquo;acheter un livre sur Rust.\nSi vous voulez l\u0026rsquo;essayer sur le Web Si vous voulez l\u0026rsquo;essayer sur le Web sans installer le compilateur, vous pouvez utiliser The Rust Playground. Après avoir entré le code et cliqué sur le bouton \u0026ldquo;Run\u0026rdquo;, il sera compilé et exécuté sur le Web.\n","date":"2022-09-06T00:12:36+09:00","image":"http://kenji.blog/p/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/images/rust_logo_huefc2d075e966b0edc0b7186c50038553_22411_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/comment-d%C3%A9buter-avec-rust/","title":"Comment débuter avec Rust"},{"content":"Changement de l\u0026rsquo;environnement internet de la maison de Flet\u0026rsquo;s Hikari vers J:COM Sur la recommandation d\u0026rsquo;une connaissance, j\u0026rsquo;ai changé la ligne internet de ma maison de Flet\u0026rsquo;s Hikari vers J:COM. Les raisons sont,\nLes frais mensuels sont moins chers. 3 619 yens → 2 180 yens La vitesse d\u0026rsquo;internet passe de 100MBps à 320MBps Ce sont ces points.\nImpressions après utilisation Cela fait environ une semaine depuis le changement, et pour le moment il n\u0026rsquo;y a presque aucun problème. Je note ci-dessous quelques points qui m\u0026rsquo;ont interpellé.\nEn changeant réellement, j\u0026rsquo;ai remarqué que la vitesse de téléchargement est effectivement devenue plus rapide, passant de 60MBps à un peu moins de 320MBps. Cependant, en ce qui concerne la vitesse d\u0026rsquo;envoi, elle est tombée à environ 10MBps, alors qu\u0026rsquo;elle était de 40MBps à l\u0026rsquo;époque de Flet\u0026rsquo;s Hikari. Il semble que ce soit une spécification du côté de J:COM. Pour le moment, comme je ne fais pas de streaming ou de téléchargement de grandes quantités de données, je vais voir comment cela évolue.\nDe plus, ces derniers temps, ma famille et moi faisons principalement du télétravail, et aujourd\u0026rsquo;hui, pour la première fois, internet a été coupé pendant quelques dizaines de minutes. Il s\u0026rsquo;est rétabli automatiquement, mais ce n\u0026rsquo;est peut-être pas bon signe. Cela ne fait même pas une semaine depuis le changement\u0026hellip;\nPour information, comme J:COM restreint les communications P2P, il semble que la vitesse des applications P2P soit faible. Ceux qui utilisent le P2P devraient être prudents.\nÀ propos du service Lors de la signature du contrat, si l\u0026rsquo;on s\u0026rsquo;abonne à Netflix ou Disney+, on reçoit une carte QUO de 40 000 yens, ce qui compense les frais d\u0026rsquo;abonnement à chaque service et rend les frais mensuels légèrement moins chers en moyenne, j\u0026rsquo;ai donc souscrit au service en même temps que le contrat. Netflix a un contrat d\u0026rsquo;un an, Disney+ un contrat de six mois, et il semble qu\u0026rsquo;il faille procéder soi-même aux démarches de résiliation.\nComme le changement est encore récent, si de nouvelles impressions ou ressentis sur l\u0026rsquo;utilisation apparaissent, je mettrai à nouveau l\u0026rsquo;article à jour. À bientôt,\n09/06 Difficultés de connexion à internet 06/09/2022 vers 13:13 environ 3 à 5 minutes 06/09/2022 vers 13:30 environ 3 à 5 minutes Plusieurs fois par la suite\u0026hellip; Comme il semble que le problème vienne du DNS, j\u0026rsquo;ai configuré le serveur DNS en me référant à ici. On verra ce que cela donne\u0026hellip; Même avec la configuration DNS, je n\u0026rsquo;arrivais pas à me connecter, alors j\u0026rsquo;ai contacté le support qui m\u0026rsquo;a dit qu\u0026rsquo;une maintenance d\u0026rsquo;urgence était en cours\u0026hellip; L\u0026rsquo;état de la connexion s\u0026rsquo;est amélioré juste après ma demande, je pense donc qu\u0026rsquo;ils ont pris des mesures.\n","date":"2022-09-05T22:48:51+09:00","image":"http://kenji.blog/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/jcom_hub0ec31ac66f5927be8b28fe767bbeebb_3349_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E3%83%8D%E3%83%83%E3%83%88%E7%92%B0%E5%A2%83%E3%82%92%E3%83%95%E3%83%AC%E3%83%83%E3%83%84%E5%85%89jcom%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F/","title":"J'ai changé mon environnement internet de Flet's Hikari vers J:COM"},{"content":"Installation de HUGO Téléchargement Téléchargement de HUGO\nÀ partir du site ci-dessus, téléchargez et extrayez le module Windows adapté à votre environnement. Dans mon cas, j\u0026rsquo;ai téléchargé \u0026ldquo;hugo_0.102.3_Windows-64bit.zip\u0026rdquo;.\nExtraction Extrayez le fichier zip téléchargé, et copiez le fichier hugo.exe qui s\u0026rsquo;y trouve dans un dossier que vous avez créé, par exemple C:\\bin.\nEnregistrer dans les variables d\u0026rsquo;environnement Enregistrez-le dans les variables d\u0026rsquo;environnement pour pouvoir exécuter hugo.exe de n\u0026rsquo;importe où. Les opérations ci-dessous concernent Windows 11, mais vous devriez pouvoir l\u0026rsquo;enregistrer avec une procédure similaire :\nAppuyez sur Win+Pause pour ouvrir les informations de version Cliquez sur Paramètres système avancés Cliquez sur Variables d\u0026rsquo;environnement Sélectionnez Path et cliquez sur Modifier Cliquez sur Nouveau, entrez \u0026ldquo;C:\\bin\u0026rdquo; sur une nouvelle ligne, puis cliquez sur OK pour fermer la boîte de dialogue Prévisualiser le blog Dans l\u0026rsquo;invite de commandes, accédez au dossier du blog HUGO et exécutez la commande ci-dessous.\nhugo server -D\nLe résultat de l\u0026rsquo;exécution est ci-dessous. (-D est une option pour afficher les articles en brouillon.)\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 C:\\Users\\win11\\IdeaProjects\\kenji.blog\u0026gt;hugo server -D Start building sites … hugo v0.102.3-b76146b129d7caa52417f8e914fc5b9271bf56fc windows/amd64 BuildDate=2022-09-01T10:16:19Z VendorInfo=gohugoio | JA -------------------+----- Pages | 39 Paginator pages | 0 Non-page files | 7 Static files | 0 Processed images | 0 Aliases | 13 Sitemaps | 1 Cleaned | 0 Built in 161 ms Watching for changes in C:\\Users\\win11\\IdeaProjects\\kenji.blog\\{archetypes,content,themes} Watching for config changes in C:\\Users\\win11\\IdeaProjects\\kenji.blog\\config.toml Environment: \u0026#34;development\u0026#34; Serving pages from memory Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) Press Ctrl+C to stop Puisque l\u0026rsquo;adresse est affichée lors de l\u0026rsquo;exécution (dans l\u0026rsquo;exemple ci-dessus, http://localhost:1313/), copiez cette adresse dans votre navigateur. L\u0026rsquo;aperçu est mis à jour automatiquement à chaque fois que le fichier est enregistré. Pour terminer l\u0026rsquo;aperçu, tapez Ctrl+C dans l\u0026rsquo;invite de commandes.\n","date":"2022-09-05T12:28:01+09:00","image":"http://kenji.blog/p/hugo%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%A7%E7%92%B0%E5%A2%83%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC/img_hu415dc7e70376ac350673d0366f70ca4b_19909_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/hugoaper%C3%A7u-de-laffichage-dans-lenvironnement-local/","title":"【HUGO】Aperçu de l'affichage dans l'environnement local"},{"content":"Voici mes 3 recommandations de films avec des mathématiciens comme protagonistes.\nUn homme d\u0026rsquo;exception Un film qui retrace la vie d\u0026rsquo;un véritable génie mathématique américain. La fin réserve une surprise étonnante. Russell Crowe offre une excellente performance dans le rôle principal.\nEnigma Un film sorti en 2001, adapté du roman \u0026ldquo;Enigma\u0026rdquo; de Robert Harris. de Wikipédia\nL\u0026rsquo;histoire du décryptage de la machine de chiffrement Enigma, créée par l\u0026rsquo;Allemagne.\nImitation Game C\u0026rsquo;est aussi une histoire de décryptage impliquant Enigma. J\u0026rsquo;aime l\u0026rsquo;atmosphère de cette époque.\nL\u0026rsquo;Homme qui défiait l\u0026rsquo;infini Une œuvre qui dépeint l\u0026rsquo;interaction entre Hardy, un mathématicien de l\u0026rsquo;université de Cambridge, et Ramanujan, un mathématicien indien. On peut y ressentir la beauté des mathématiques.\nUne merveilleuse histoire du temps Un film retraçant la vie du Dr Hawking.\nLa Fièvre des particules ","date":"2022-09-05T10:41:00+09:00","image":"http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/images/img_hua361131ea597bbd428e36b721aabc571_406520_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/","title":"Films mettant en scène des mathématiciens"},{"content":"Le bureau des enfants Le moment où les enfants dorment est celui où je peux me concentrer sur mon travail. Allons jouer au parc après la sieste. Si j\u0026rsquo;avais un adaptateur Lightning vers HDMI pour mon iPad, je pourrais travailler au bureau de droite~\n","date":"2022-09-04T14:29:09+09:00","image":"http://kenji.blog/p/%E4%BB%8A%E6%97%A5%E3%81%AE%E4%BD%9C%E6%A5%AD%E7%92%B0%E5%A2%83/images/today_workplase_hu1fa3ba50725fc9c80ae774069d99ec20_2258565_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/environnement-de-travail-daujourdhui/","title":"Environnement de travail d'aujourd'hui"},{"content":"Introduction J\u0026rsquo;utilise IntelliJ IDEA lorsque j\u0026rsquo;écris ce blog. C\u0026rsquo;est pratique car sa compatibilité avec Git est bonne et il affiche un aperçu Markdown. À chaque fois que j\u0026rsquo;écris un blog, je dois écrire date dans l\u0026rsquo;en-tête du fichier md. Comme il ne semble pas y avoir de raccourci pour insérer la date, j\u0026rsquo;ai créé une commande pour l\u0026rsquo;insérer en me référant au site ci-dessous. J\u0026rsquo;espère que cela vous sera utile.\nIs there a shortcut for inserting date/time in IntelliJ IDEA?\nProcédure de configuration Ouvrez \u0026ldquo;File\u0026rdquo; \u0026gt; \u0026ldquo;Settings\u0026hellip;\u0026rdquo; dans le menu\nAvec \u0026ldquo;Editor\u0026rdquo; \u0026gt; \u0026ldquo;Live Template\u0026rdquo; \u0026gt; \u0026ldquo;HTML/XML\u0026rdquo; sélectionné, cliquez sur \u0026ldquo;+\u0026rdquo; Sélectionnez Live Template Entrez \u0026ldquo;date\u0026rdquo; dans Abbreviation Entrez \u0026ldquo;Insérer la date et l\u0026rsquo;heure\u0026rdquo; dans Description Entrez \u0026ldquo;$date$\u0026rdquo; dans Template Text Cliquez sur le bouton Edit Variables\nEntrez \u0026ldquo;date\u0026rdquo; dans Name Entrez date(\u0026quot;yyyy-MM-dd'T'HH:mm:ss'+09:00'\u0026quot;) dans Expression Fermez la boîte de dialogue avec OK Appuyez sur Define ou Change et cochez \u0026ldquo;Everywhere\u0026rdquo; Fermez la boîte de dialogue avec OK Tapez \u0026ldquo;date\u0026rdquo; dans l\u0026rsquo;éditeur de code et appuyez sur Entrée. Lorsque la date \u0026ldquo;2022-09-04T05:59:04+09:00\u0026rdquo; est insérée, la configuration est terminée ! C\u0026rsquo;est tout\nConclusion Si je trouve d\u0026rsquo;autres petites astuces pour IntelliJ IDEA, j\u0026rsquo;aimerais les publier à nouveau !\n","date":"2022-09-04T05:59:04+09:00","image":"http://kenji.blog/p/intellij-idea%E3%81%A7%E6%97%A5%E4%BB%98%E3%82%92%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/images/IntelliJ_logo_hu4c2377fba6118d83603ae0bd715d16f4_24441_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/intellij-idea%E3%81%A7%E6%97%A5%E4%BB%98%E3%82%92%E8%B2%BC%E3%82%8A%E4%BB%98%E3%81%91%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/","title":"Ajouter une commande pour insérer la date dans IntelliJ IDEA"},{"content":"J\u0026rsquo;ai commencé un blog Quelque chose comme des feux d\u0026rsquo;artifice, le code est ici\nBonjour. Pour une raison quelconque, j\u0026rsquo;ai décidé de commencer un blog.\nIl n\u0026rsquo;y a pas de grand objectif comme \u0026ldquo;Je veux publier ça !\u0026rdquo;, mais j\u0026rsquo;ai pensé que ce serait bien d\u0026rsquo;avoir un endroit où je pourrais écrire sur la technologie, la vie quotidienne, ou tout ce qui me passe par la tête.\nJ\u0026rsquo;ai l\u0026rsquo;intention de le faire comme un bloc-notes, sans trop forcer.\nJe le fais avec un truc appelé Hugo Ce blog est fait avec un générateur de site statique appelé \u0026ldquo;Hugo\u0026rdquo;. J\u0026rsquo;ai trouvé un thème sympa, alors j\u0026rsquo;ai décidé de l\u0026rsquo;adopter sur un coup de tête. (C\u0026rsquo;est un secret que j\u0026rsquo;ai mis environ 2 heures pour choisir le thème)\nJe prévois aussi de prendre des notes avec désinvolture sur le code et les outils qui m\u0026rsquo;intéressent.\nL\u0026rsquo;histoire du matin chez Komeda Au fait, ce matin, je me suis levé un peu tôt et je suis allé au café Komeda. Je suis parti à 8h30 et j\u0026rsquo;ai marché en respirant l\u0026rsquo;air du matin.\nJ\u0026rsquo;ai commandé le menu du matin A avec un mini Shiro-Noir et un café au lait. Je crois que c\u0026rsquo;était environ 800 yens ? (Je ne m\u0026rsquo;en souviens pas)\nLes cafés le matin, c\u0026rsquo;est agréable. Avoir un peu de temps pour se détendre avant le travail me donne l\u0026rsquo;impression que la journée va bien se passer.\nDe cette façon, je vais écrire de manière détendue à partir de maintenant. Je prévois de mélanger des sujets techniques et des histoires du quotidien.\nMerci de votre attention !\n","date":"2022-09-02T07:23:00+09:00","image":"http://kenji.blog/p/%E3%83%96%E3%83%AD%E3%82%B0%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F/images/komeda_hue1f0373fafb96162f461ac594cb3e53e_603414_120x120_fill_q75_box_smart1.jpeg","permalink":"http://kenji.blog/fr/p/jai-commence-un-blog/","title":"J'ai commencé un blog"},{"content":"Salesforce DevTools Vous pouvez rechercher des champs personnalisés ou exporter des champs d\u0026rsquo;objets personnalisés en masse.\nIl est également utile de pouvoir créer du SOQL sur place.\nSalesforce DevTools\nSalesforce advanced Code searcher Pratique lors de la recherche de code Salesforce.\nSalesforce advanced Code searcher\n","date":"2022-05-02T10:39:36+09:00","image":"http://kenji.blog/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/img_huc75a5c8c4d45e738551ca5afb26f380b_13227_120x120_fill_box_smart1_3.png","permalink":"http://kenji.blog/fr/p/salesforce%E3%81%8A%E3%81%99%E3%81%99%E3%82%81chrome%E6%8B%A1%E5%BC%B5/","title":"Extensions Chrome recommandées pour Salesforce"},{"content":"Dans la société Internet moderne, la sécurité des informations est protégée par des systèmes de cryptographie à clé publique tels que le chiffrement RSA. Le fondement de la sécurité du chiffrement RSA repose sur le fait suivant : « la factorisation de nombres composés géants est extrêmement difficile sur le plan de la complexité des calculs ».\nCet article décortique le mécanisme mathématique du « crible algébrique » (General Number Field Sieve, GNFS), l\u0026rsquo;algorithme de factorisation en nombres premiers le plus puissant sur les ordinateurs classiques, et explore en profondeur, à l\u0026rsquo;aide de formules et de schémas conceptuels, ce changement de paradigme et pourquoi il est complètement vaincu par « l\u0026rsquo;algorithme de Shor » découvert par Peter Shor.\n1. L\u0026rsquo;approche de la factorisation en nombres premiers dans le calcul classique : Évolution à partir de la méthode de factorisation de Fermat Le problème de la factorisation en nombres premiers consiste, pour un nombre composé $N$ donné, à trouver les nombres premiers $p, q$ tels que $N = p \\times q$.\nL\u0026rsquo;idée fondamentale se ramène à trouver des valeurs non triviales $x, y$ satisfaisant la congruence suivante.\n$$ x^2 \\equiv y^2 \\pmod N $$ En réécrivant cela, on obtient :\n$$ x^2 - y^2 \\equiv 0 \\pmod N $$ $$ (x - y)(x + y) \\equiv 0 \\pmod N $$ Ici, si $x \\not\\equiv \\pm y \\pmod N$, en calculant $\\gcd(x-y, N)$ ou $\\gcd(x+y, N)$, on peut obtenir un facteur non trivial de $N$. Ce fait constitue la base des algorithmes modernes de factorisation en nombres premiers tels que le GNFS.\n2. Le plus puissant algorithme classique : Les profondeurs du « crible algébrique » (GNFS) Le « GNFS » est l\u0026rsquo;algorithme de factorisation en nombres premiers pour ordinateurs classiques le plus rapide connu à ce jour. Sa complexité temporelle nécessite un temps sous-exponentiel (Sub-exponential).\nLa complexité du GNFS Si l\u0026rsquo;on note $b = \\log_2 N$ le nombre de chiffres du nombre $N$, la complexité du GNFS s\u0026rsquo;exprime comme suit :\n$$ O\\left( \\exp \\left( \\left(\\frac{64}{9} b\\right)^{1/3} (\\log b)^{2/3} \\right) \\right) $$ Comme le montre cette formule, la complexité n\u0026rsquo;est pas polynomiale, mais correspond à un « temps sous-exponentiel », légèrement plus lent qu\u0026rsquo;une fonction exponentielle. Néanmoins, lorsque le nombre de chiffres augmente, le temps de calcul croît de manière astronomique.\nLe mécanisme mathématique du GNFS Le GNFS se compose principalement de 4 étapes.\nSélection des polynômes (Polynomial Selection) Criblage (Sieving) Réduction matricielle (Matrix Reduction) Calcul de la racine carrée (Square Root) 2.1. Sélection des polynômes et corps de nombres Tout d\u0026rsquo;abord, on choisit des polynômes irréductibles $f(x)$ et $g(x)$ à coefficients entiers. Ceux-ci sont définis pour avoir une racine commune $m$ modulo $N$. C\u0026rsquo;est-à-dire :\n$$ f(m) \\equiv 0 \\pmod N $$ $$ g(m) \\equiv 0 \\pmod N $$ Généralement, $g(x)$ est choisi comme un polynôme de degré un $g(x) = x - m$. Si l\u0026rsquo;on note $\\alpha$ la racine de $f(x)$, un « corps de nombres » (Number Field) $\\mathbb{Q}(\\alpha)$ est construit. Les opérations dans l\u0026rsquo;anneau de $\\mathbb{Q}(\\alpha)$ et les opérations dans l\u0026rsquo;anneau usuel des entiers $\\mathbb{Z}$ sont comparées via l\u0026rsquo;homomorphisme $\\phi: \\alpha \\mapsto m$.\n2.2. Criblage (Sieving) Ensuite, on explore une grande quantité de paires d\u0026rsquo;entiers premiers entre eux $(a, b)$. L\u0026rsquo;objectif est de trouver des paires telles que les deux valeurs suivantes soient chacune « B-friables » (composées uniquement de facteurs premiers relativement petits).\n$a - bm$ (valeur sur l\u0026rsquo;anneau des entiers) $b^d f(a/b)$ (correspondant à la norme $N(a - b\\alpha)$ sur le corps de nombres) Ici, une méthode de recherche rapide appelée « crible » (Sieve) est utilisée. Cela permet d\u0026rsquo;extraire efficacement les paires $(a, b)$ remplissant les conditions parmi un très grand nombre de candidats.\n2.3. Réduction matricielle (Linear Algebra over GF(2)) À partir des paires $(a, b)$ collectées, on construit des vecteurs d\u0026rsquo;exposants et on détermine le noyau à gauche d\u0026rsquo;une énorme matrice creuse sur $\\mathbb{F}_2$ (le corps dont les éléments sont uniquement 0 et 1).\nOn trouve un vecteur $v$ comme solution de sorte que les relations $ \\prod (a_i - b_i m) $ et $ \\prod (a_i - b_i \\alpha) $ deviennent chacune un élément carré. Cela revient ni plus ni moins à résoudre le système d\u0026rsquo;équations linéaires :\n$$ M \\mathbf{x} \\equiv \\mathbf{0} \\pmod 2 $$ Ici, des algorithmes de calcul numérique avancés comme l\u0026rsquo;algorithme de Lanczos par blocs (Block Lanczos Algorithm) ou l\u0026rsquo;algorithme de Wiedemann par blocs (Block Wiedemann Algorithm) sont mis à profit.\n2.4. Calcul de la racine carrée Enfin, on extrait la racine carrée à la fois dans le corps de nombres et dans l\u0026rsquo;anneau des entiers, pour dériver la relation $x^2 \\equiv y^2 \\pmod N$. Ensuite, on calcule $\\gcd(x-y, N)$ pour obtenir les facteurs.\n3. La percée grâce au calcul quantique : « L\u0026rsquo;algorithme de Shor » Alors que le GNFS nécessite un temps sous-exponentiel, « l\u0026rsquo;algorithme de Shor », publié en 1994 par Peter Shor, peut résoudre ce problème en un « temps polynomial » en utilisant un ordinateur quantique.\nLa complexité de l\u0026rsquo;algorithme de Shor Si l\u0026rsquo;on suppose le nombre de qubits comme étant de $O(\\log N)$, la complexité temporelle est la suivante :\n$$ O((\\log N)^3) $$ Cela signifie qu\u0026rsquo;elle ne provoque pas d\u0026rsquo;explosion exponentielle par rapport au nombre de bits. C\u0026rsquo;est un résultat stupéfiant : même pour un nombre composé géant où le « calcul classique » nécessiterait une durée de vie supérieure à celle de l\u0026rsquo;univers, le « calcul quantique » pourrait le décrypter en quelques heures ou quelques jours.\nVue d\u0026rsquo;ensemble de l\u0026rsquo;algorithme de Shor : Réduction au problème de recherche de période L\u0026rsquo;algorithme de Shor ramène astucieusement le problème de la factorisation en nombres premiers au « problème de recherche de période ».\nChoisir un entier aléatoire $a$ premier avec $N$ ($1 \u003c a \u003c N$). Définir la fonction $f(x) = a^x \\bmod N$. Trouver la période $r$ de $f(x)$, c\u0026rsquo;est-à-dire le plus petit entier positif $r$ tel que $a^r \\equiv 1 \\pmod N$. Si $r$ est pair, vérifier si $a^{r/2} \\not\\equiv -1 \\pmod N$, puis calculer $\\gcd(a^{r/2} \\pm 1, N)$ pour obtenir les facteurs premiers. C\u0026rsquo;est cette étape 3, la « découverte de la période $r$ », qui est le goulet d\u0026rsquo;étranglement nécessitant un temps exponentiel sur un ordinateur classique, mais que l\u0026rsquo;ordinateur quantique résout instantanément grâce à la « superposition quantique » et à la « transformée de Fourier quantique » (QFT).\n4. Transformée de Fourier Quantique (QFT) et extraction de la période Regardons de plus près avec des formules les opérations sur les états quantiques, qui constituent le cœur de l\u0026rsquo;algorithme de Shor.\n4.1. Génération de la superposition quantique Tout d\u0026rsquo;abord, on prépare deux registres quantiques. Le registre 1 conserve l\u0026rsquo;état superposé de l\u0026rsquo;entrée $x$, et le registre 2 conserve le résultat calculé de la fonction $f(x)$. On applique une transformée de Hadamard (Hadamard Transform) sur l\u0026rsquo;état initial $|0\\rangle |0\\rangle$ pour créer une superposition de tous les $x$ possibles.\n$$ |\\psi_1\\rangle = \\frac{1}{\\sqrt{Q}} \\sum_{x=0}^{Q-1} |x\\rangle |0\\rangle $$ (où $Q$ est une puissance de 2 satisfaisant $N^2 \\le Q \u003c 2N^2$)\nEnsuite, à l\u0026rsquo;aide de l\u0026rsquo;oracle quantique $U_f$, on calcule $f(x) = a^x \\bmod N$ et on le stocke dans le registre 2.\n$$ |\\psi_2\\rangle = U_f |\\psi_1\\rangle = \\frac{1}{\\sqrt{Q}} \\sum_{x=0}^{Q-1} |x\\rangle |a^x \\bmod N\\rangle $$ Supposons ici que l\u0026rsquo;on ait mesuré le registre 2 (en réalité, la structure mathématique est la même même sans mesure). Si une valeur $y = a^{x_0} \\bmod N$ est observée, l\u0026rsquo;état du registre 1 s\u0026rsquo;effondre en une superposition de tous les $x$ tels que $f(x) = y$. Si la période est $r$, ces $x$ sont $x_0, x_0 + r, x_0 + 2r, \\dots$\n$$ |\\psi_3\\rangle = \\frac{1}{\\sqrt{M}} \\sum_{k=0}^{M-1} |x_0 + kr\\rangle $$ (où $M \\approx Q/r$ est le nombre de termes)\nCet état recèle les informations de la période $r$, mais une mesure directe donnerait seulement un $x_0 + kr$ aléatoire, sans que la période $r$ ne soit connue. C\u0026rsquo;est ici que la QFT entre en jeu.\n4.2. Application de la transformée de Fourier quantique (Quantum Fourier Transform) La QFT est une opération qui effectue une transformée de Fourier discrète sur les amplitudes des états quantiques. L\u0026rsquo;action de la QFT sur l\u0026rsquo;état $|x\\rangle$ est définie comme suit.\n$$ \\text{QFT} |x\\rangle = \\frac{1}{\\sqrt{Q}} \\sum_{y=0}^{Q-1} e^{2\\pi i \\frac{xy}{Q}} |y\\rangle $$ En appliquant cela à $|\\psi_3\\rangle$, il se produit des interférences de phase (interférence quantique).\n$$ |\\psi_4\\rangle = \\text{QFT} |\\psi_3\\rangle = \\frac{1}{\\sqrt{MQ}} \\sum_{y=0}^{Q-1} \\sum_{k=0}^{M-1} e^{2\\pi i \\frac{(x_0 + kr)y}{Q}} |y\\rangle $$ En développant la somme de cette équation, on obtient la partie :\n$$ \\sum_{k=0}^{M-1} e^{2\\pi i \\frac{kry}{Q}} $$ La somme de cette suite géométrique se renforce (Constructive Interference) uniquement lorsque $ry/Q$ est proche d\u0026rsquo;un entier, et s\u0026rsquo;annule (Destructive Interference) le reste du temps.\nPar conséquent, l\u0026rsquo;état mesuré $|y\\rangle$ avec une forte probabilité correspondra à un entier $y$ satisfaisant la condition :\n$$ \\frac{y}{Q} \\approx \\frac{c}{r} $$ (où $c$ est un certain entier).\n4.3. Détermination de la période par le développement en fractions continues Après avoir obtenu $y$ par la mesure, on utilise un ordinateur classique pour effectuer le « développement en fractions continues » (Continued Fraction Expansion) de $y/Q$. Cela permet de calculer la fraction approximative $c/r$ de $y/Q$, et d\u0026rsquo;extraire de manière hautement efficace les candidats pour la période $r$ à partir du dénominateur.\n5. Comparaison des modèles conceptuels et changement de paradigme Pour comprendre intuitivement la différence entre le GNFS et l\u0026rsquo;algorithme de Shor, voici un schéma conceptuel utilisant la notation Mermaid.\nSchéma conceptuel de l\u0026rsquo;algorithme de Shor par circuit quantique 1 2 3 4 5 6 7 8 9 10 11 12 13 graph TD A[État initial: 0...0] --\u0026gt; B[Superposition de tous les états par transformée de Hadamard] B --\u0026gt; C[Exponentiation modulaire a^x mod N] C --\u0026gt;|Intrication quantique| D[Effondrement vers un état présentant une périodicité] D --\u0026gt; E[Transformée de Fourier quantique QFT] E --\u0026gt;|Amplification des probabilités par interférence| F[Mesure: obtenir y] F --\u0026gt; G[Traitement classique: Développement en fractions continues] G --\u0026gt; H[Découverte de la période r] H --\u0026gt; I[Calcul des facteurs premiers de N] style A fill:#f9f,stroke:#333,stroke-width:2px style E fill:#bbf,stroke:#333,stroke-width:2px style I fill:#bfb,stroke:#333,stroke-width:2px L\u0026rsquo;essence du changement de paradigme Le GNFS adopte l\u0026rsquo;approche d\u0026rsquo;« explorer des relations dans un espace mathématique (corps de nombres) ». Cependant, comme l\u0026rsquo;espace de recherche s\u0026rsquo;étend exponentiellement par rapport au nombre de chiffres, avec la puissance de calcul des ordinateurs classiques (même en incluant la parallélisation), le décryptage devient virtuellement impossible lorsque la longueur de la clé dépasse 2048 bits par exemple.\nD\u0026rsquo;un autre côté, l\u0026rsquo;algorithme de Shor utilise la « nature ondulatoire due à l\u0026rsquo;interférence quantique ». Il évalue simultanément tous les chemins de calcul dans un état superposé, annule les mauvaises réponses par la QFT (interférence destructive), et amplifie uniquement l\u0026rsquo;amplitude de probabilité de la période correspondant à la bonne réponse (interférence constructive). De cette façon, il ne s\u0026rsquo;agit pas d\u0026rsquo;explorer l\u0026rsquo;espace, mais de « faire émerger la réponse exacte d\u0026rsquo;elle-même », réalisant ainsi une approche d\u0026rsquo;une dimension totalement différente.\n6. Résumé Cet article a profondément comparé les structures algorithmiques et le contexte mathématique du « GNFS », qui représente l\u0026rsquo;ultime limite classique, et de « l\u0026rsquo;algorithme de Shor », qui démontre la puissance du calcul quantique.\nAlors que le GNFS, grâce à des astuces mathématiques telles que le choix des polynômes et le calcul de matrices géantes, est parvenu à abaisser sa complexité à un temps sous-exponentiel, l\u0026rsquo;algorithme de Shor fusionne les principes fondamentaux de la mécanique quantique (superposition et interférence) avec un outil mathématique (la QFT) pour accomplir une percée immédiate vers le temps polynomial.\nActuellement, il n\u0026rsquo;existe pas d\u0026rsquo;ordinateur quantique tolérant aux pannes (FTQC) capable d\u0026rsquo;exécuter l\u0026rsquo;algorithme de Shor à une échelle pratique (plusieurs milliers de qubits). Cependant, l\u0026rsquo;existence même de ce changement de paradigme mathématique et théorique est la principale raison pour laquelle la transition vers la cryptographie post-quantique (PQC : Post-Quantum Cryptography) est si urgente partout dans le monde aujourd\u0026rsquo;hui.\n","date":"0001-01-01T00:00:00Z","image":"http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508_hud95a00206aa1dcf32de9cdc0ccb17972_1096815_120x120_fill_q75_box_smart1.jpg","permalink":"http://kenji.blog/fr/p/gnfs-to-shors-algorithm-math-deepdive/","title":"【Compréhension complète avec formules】Pourquoi le « GNFS », le plus puissant des algorithmes classiques, est-il vaincu par l'algorithme quantique ? Le changement de paradigme de la factorisation en nombres premiers"}]