<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Outils Et Environnement De Développement on kenji.blog</title><link>http://kenji.blog/fr/categories/outils-et-environnement-de-d%C3%A9veloppement/</link><description>Recent content in Outils Et Environnement De Développement on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 19 Jul 2025 10:03:51 +0900</lastBuildDate><atom:link href="http://kenji.blog/fr/categories/outils-et-environnement-de-d%C3%A9veloppement/index.xml" rel="self" type="application/rss+xml"/><item><title>Comment appeler Microsoft.Windows.AI depuis C++</title><link>http://kenji.blog/fr/p/comment-appeler-microsoft-windows-ai-depuis-c-/</link><pubDate>Sat, 19 Jul 2025 10:03:51 +0900</pubDate><guid>http://kenji.blog/fr/p/comment-appeler-microsoft-windows-ai-depuis-c-/</guid><description>&lt;img src="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.png" alt="Featured image of post Comment appeler Microsoft.Windows.AI depuis C++" />&lt;h1 id="-comment-appeler-microsoftwindowsai-depuis-c-avec-code-dexemple">🎯 Comment appeler &lt;code>Microsoft.Windows.AI&lt;/code> depuis C++ 【Avec code d&amp;rsquo;exemple】
&lt;/h1>&lt;p>Depuis Windows 10, Windows inclut en standard un &lt;strong>runtime capable d&amp;rsquo;exécuter des modèles d&amp;rsquo;IA au format ONNX&lt;/strong> . Il s&amp;rsquo;agit de &lt;strong>Windows ML (Windows.AI.MachineLearning)&lt;/strong> .&lt;/p>
&lt;p>Dans cet article, nous expliquerons concrètement comment appeler &lt;code>Microsoft.Windows.AI.MachineLearning&lt;/code> depuis &lt;strong>C++ (basé sur une application Win32)&lt;/strong> avec &lt;strong>du code d&amp;rsquo;exemple&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="-préparation">✅ Préparation
&lt;/h2>&lt;h3 id="-environnement-requis">◾ Environnement requis
&lt;/h3>&lt;ul>
&lt;li>Windows 10 (1809+) ou Windows 11&lt;/li>
&lt;li>Visual Studio 2019 ou ultérieur (l&amp;rsquo;édition Community suffit)&lt;/li>
&lt;li>Prise en charge de C++/WinRT (&lt;code>Microsoft.Windows.CppWinRT&lt;/code>)&lt;/li>
&lt;li>Windows SDK 10.0.17763.0 ou supérieur&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-structure-du-projet">✅ Structure du projet
&lt;/h2>&lt;p>Créez un projet avec la structure suivante dans Visual Studio.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Type : Application de bureau Windows C++ (projet vide)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Sous-système : Windows (&lt;code>WinMain&lt;/code>)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Ajoutez le package suivant via NuGet&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Microsoft.Windows.CppWinRT
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-code-dexemple">✅ Code d&amp;rsquo;exemple
&lt;/h2>&lt;p>Voici un exemple minimal utilisant &lt;code>WinMain&lt;/code> qui combine l&amp;rsquo;API Win32 et &lt;code>Windows.AI.MachineLearning&lt;/code>.&lt;/p>
&lt;blockquote>
&lt;p>※ Le modèle ONNX utilisé sera nommé &lt;code>model.onnx&lt;/code> et doit être placé dans le même dossier que le fichier exécutable.&lt;/p>
&lt;/blockquote>
&lt;h3 id="maincpp">&lt;code>main.cpp&lt;/code>
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;windows.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;winrt/Windows.AI.MachineLearning.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;winrt/Windows.Storage.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma comment(lib, &amp;#34;windowsapp&amp;#34;) &lt;/span>&lt;span class="c1">// Pour le lien WinRT
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">winrt&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">Windows&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">AI&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">MachineLearning&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">Windows&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">Storage&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="n">WINAPI&lt;/span> &lt;span class="nf">WinMain&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">HINSTANCE&lt;/span> &lt;span class="n">hInstance&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">HINSTANCE&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">LPSTR&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">nCmdShow&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Initialisation WinRT (MTA ou STA sont acceptés)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">winrt&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">init_apartment&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">try&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Charger le fichier du modèle
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">auto&lt;/span> &lt;span class="n">modelFile&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">StorageFile&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">GetFileFromPathAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;model.onnx&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LearningModel&lt;/span> &lt;span class="n">model&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">LearningModel&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">LoadFromStorageFileAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">modelFile&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Créer une session
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">LearningModelSession&lt;/span> &lt;span class="n">session&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LearningModelBinding&lt;/span> &lt;span class="n">binding&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">session&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Entrée/Sortie du modèle (ici une entrée vide à titre d&amp;#39;exemple)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// En pratique, une liaison avec TensorFloat etc. est nécessaire
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// Exécution de l&amp;#39;inférence
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">auto&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">session&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">EvaluateAsync&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">binding&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">get&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MessageBox&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">nullptr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Inférence terminée&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Windows ML (C++)&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">MB_OK&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">catch&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">winrt&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">hresult_error&lt;/span> &lt;span class="k">const&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">ex&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">MessageBox&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">nullptr&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ex&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">message&lt;/span>&lt;span class="p">().&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Erreur&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">MB_ICONERROR&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-supplément--comment-spécifier-les-tenseurs-dentrée-et-de-sortie">✅ Supplément : Comment spécifier les tenseurs d&amp;rsquo;entrée et de sortie
&lt;/h2>&lt;p>Selon le modèle, il est nécessaire de &lt;strong>créer et lier un tenseur (Tensor)&lt;/strong> avant l&amp;rsquo;inférence.&lt;/p>
&lt;p>Exemple :&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Convertir un tableau float 1D en Tenseur
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">float&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">inputData&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mf">0.5f&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">0.3f&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">0.2f&lt;/span>&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int64_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">shape&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">};&lt;/span> &lt;span class="c1">// Forme : [1, 3]
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">auto&lt;/span> &lt;span class="n">tensor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TensorFloat&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">CreateFromArray&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">shape&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">inputData&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Liaison d&amp;#39;entrée (doit correspondre au nom d&amp;#39;entrée du modèle)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">binding&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Bind&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;input_0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">tensor&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>La sortie peut également être obtenue de la même manière avec &lt;code>result.Outputs().Lookup(L&amp;quot;output_0&amp;quot;)&lt;/code>.&lt;/p>
&lt;hr>
&lt;h2 id="-points-dattention-lors-du-débogage">✅ Points d&amp;rsquo;attention lors du débogage
&lt;/h2>&lt;ul>
&lt;li>Si le fichier du modèle n&amp;rsquo;est pas dans le dossier d&amp;rsquo;exécution, une &lt;code>FileNotFoundException&lt;/code> sera levée.&lt;/li>
&lt;li>Si les noms d&amp;rsquo;entrée et de sortie ne correspondent pas, une erreur &lt;code>invalid_argument&lt;/code> se produira.&lt;/li>
&lt;li>Les spécifications exactes des E/S du modèle peuvent être vérifiées avec des outils comme &lt;a class="link" href="https://netron.app" target="_blank" rel="noopener"
>Netron&lt;/a>.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-résumé">✅ Résumé
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Élément&lt;/th>
&lt;th>Contenu&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>API utilisée&lt;/td>
&lt;td>Windows.AI.MachineLearning (WinRT)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Langage&lt;/td>
&lt;td>C++ (basé sur Win32)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Méthode recommandée&lt;/td>
&lt;td>Via l&amp;rsquo;en-tête C++/WinRT&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Avantages&lt;/td>
&lt;td>Les modèles ONNX fonctionnent nativement, prise en charge du GPU possible&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Attention&lt;/td>
&lt;td>Faites attention aux noms d&amp;rsquo;entrée du modèle et à la forme du tenseur&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="-alternative--pour-ceux-qui-ne-veulent-pas-utiliser-winrt">✅ Alternative : Pour ceux qui ne veulent pas utiliser WinRT
&lt;/h2>&lt;ul>
&lt;li>En utilisant &lt;code>ONNX Runtime&lt;/code> de Microsoft, &lt;strong>vous pouvez gérer des modèles ONNX depuis C++ sans utiliser WinRT du tout&lt;/strong> .&lt;/li>
&lt;li>Il est multiplateforme, permettant d&amp;rsquo;utiliser un code commun sur Windows/Linux.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-en-conclusion">📌 En conclusion
&lt;/h2>&lt;p>Windows ML (Microsoft.Windows.AI) est un moteur d&amp;rsquo;inférence d&amp;rsquo;IA puissant qui peut être utilisé de manière robuste même depuis C++. Si vous avez besoin d&amp;rsquo;une inférence native sous Windows, n&amp;rsquo;hésitez pas à l&amp;rsquo;essayer.&lt;/p>
&lt;p>Si 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 !&lt;/p></description></item><item><title>Comment publier un message dans Microsoft Teams depuis C++ (WinHTTP + Graph API)</title><link>http://kenji.blog/fr/p/comment-publier-un-message-dans-microsoft-teams-depuis-c-winhttp-graph-api/</link><pubDate>Mon, 14 Jul 2025 23:40:15 +0900</pubDate><guid>http://kenji.blog/fr/p/comment-publier-un-message-dans-microsoft-teams-depuis-c-winhttp-graph-api/</guid><description>&lt;img src="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.png" alt="Featured image of post Comment publier un message dans Microsoft Teams depuis C++ (WinHTTP + Graph API)" />&lt;h1 id="comment-publier-un-message-dans-microsoft-teams-depuis-c-winhttp--graph-api">Comment publier un message dans Microsoft Teams depuis C++ (WinHTTP + Graph API)
&lt;/h1>&lt;p>Vous souhaitez publier automatiquement dans une conversation Microsoft Teams —&lt;br>
C&amp;rsquo;est là que l&amp;rsquo; &lt;strong>API Microsoft Graph&lt;/strong> s&amp;rsquo;avère utile.&lt;br>
Dans cet article, nous présenterons un &lt;strong>exemple de code C++ utilisant WinHTTP&lt;/strong> et &lt;strong>les étapes de configuration d&amp;rsquo;authentification API nécessaires&lt;/strong> étape par étape.&lt;/p>
&lt;hr>
&lt;h2 id="-préparation-requise-configuration-de-lauthentification-de-lapi-microsoft-graph">🔧 Préparation requise (Configuration de l&amp;rsquo;authentification de l&amp;rsquo;API Microsoft Graph)
&lt;/h2>&lt;h3 id="1-inscription-de-lapplication-sur-le-portail-azure">1. Inscription de l&amp;rsquo;application sur le portail Azure
&lt;/h3>&lt;p>Tout d&amp;rsquo;abord, pour utiliser l&amp;rsquo;API Microsoft Graph, vous devez enregistrer une application sur Azure.&lt;/p>
&lt;ol>
&lt;li>Accédez au &lt;a class="link" href="https://portal.azure.com" target="_blank" rel="noopener"
>Portail Azure&lt;/a>&lt;/li>
&lt;li>&lt;strong>Microsoft Entra ID&lt;/strong> &amp;gt; &lt;strong>+ Ajouter&lt;/strong> &amp;gt; &lt;strong>Inscriptions d&amp;rsquo;applications&lt;/strong> &amp;gt; &lt;strong>Nouvelle inscription&lt;/strong>&lt;/li>
&lt;li>Entrez un nom d&amp;rsquo;application arbitraire et cliquez sur &amp;ldquo;S&amp;rsquo;inscrire&amp;rdquo;&lt;/li>
&lt;/ol>
&lt;h3 id="2-ajouter-des-autorisations-dapi">2. Ajouter des autorisations d&amp;rsquo;API
&lt;/h3>&lt;ol>
&lt;li>Allez dans le menu de gauche &amp;ldquo;Autorisations de l&amp;rsquo;API&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Microsoft Graph&lt;/strong> &amp;gt; &lt;strong>Sélectionner les autorisations&lt;/strong>, recherchez les portées ci-dessous et cliquez sur &lt;strong>Mettre à jour les autorisations&lt;/strong>&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>Chat.ReadWrite&lt;/li>
&lt;li>User.Read&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>※ Si vous souhaitez publier sur un canal, &lt;code>ChannelMessage.Send&lt;/code> est également requis&lt;/p>
&lt;/blockquote>
&lt;h3 id="3-notez-lid-client-et-lid-locataire">3. Notez l&amp;rsquo;ID client et l&amp;rsquo;ID locataire
&lt;/h3>&lt;p>Gardez une trace des deux éléments suivants affichés dans l&amp;rsquo;onglet &amp;ldquo;Vue d&amp;rsquo;ensemble&amp;rdquo; :&lt;/p>
&lt;ul>
&lt;li>ID d&amp;rsquo;application (client)&lt;/li>
&lt;li>ID de répertoire (locataire)&lt;/li>
&lt;/ul>
&lt;h3 id="4-créer-un-secret-client">4. Créer un secret client
&lt;/h3>&lt;ol>
&lt;li>Allez dans l&amp;rsquo;onglet &amp;ldquo;Certificats et secrets&amp;rdquo;&lt;/li>
&lt;li>&amp;ldquo;Nouveau secret client&amp;rdquo; &amp;gt; définissez une date d&amp;rsquo;expiration et cliquez sur &amp;ldquo;Ajouter&amp;rdquo;&lt;/li>
&lt;li>&lt;strong>Assurez-vous de noter&lt;/strong> la valeur (secret) affichée à ce moment-là&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="-obtention-du-jeton-daccès-oauth2">🔐 Obtention du jeton d&amp;rsquo;accès (OAuth2)
&lt;/h2>&lt;p>Nous utiliserons le flux &lt;code>client_credentials&lt;/code> pour l&amp;rsquo;obtention.&lt;br>
Exécutez la commande ci-dessous avec curl pour obtenir le jeton d&amp;rsquo;accès.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X POST ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> https://login.microsoftonline.com/&lt;span class="o">{&lt;/span>ID_locataire&lt;span class="o">}&lt;/span>/oauth2/v2.0/token ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -H &lt;span class="s2">&amp;#34;Content-Type: application/x-www-form-urlencoded&amp;#34;&lt;/span> ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d &lt;span class="s2">&amp;#34;client_id={ID_client}&amp;#34;&lt;/span> ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d &lt;span class="s2">&amp;#34;scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&amp;#34;&lt;/span> ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d &lt;span class="s2">&amp;#34;client_secret={Secret_client}&amp;#34;&lt;/span> ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -d &lt;span class="s2">&amp;#34;grant_type=client_credentials&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="exemple-de-réponse">Exemple de réponse
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;token_type&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="s2">&amp;#34;Bearer&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;expires_in&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">3599&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;ext_expires_in&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="mi">3599&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;access_token&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;eyJ0eXAiOiJKV1QiLCJub... (omis)&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Utilisez cet access_token pour appeler l&amp;rsquo;API Microsoft Graph.&lt;/p>
&lt;h2 id="-exemple-c-pour-publier-dans-une-conversation-teams">💬 Exemple C++ pour publier dans une conversation Teams
&lt;/h2>&lt;p>Voici un exemple C++ qui utilise WinHTTP pour publier dans une conversation.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;span class="lnt">33
&lt;/span>&lt;span class="lnt">34
&lt;/span>&lt;span class="lnt">35
&lt;/span>&lt;span class="lnt">36
&lt;/span>&lt;span class="lnt">37
&lt;/span>&lt;span class="lnt">38
&lt;/span>&lt;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&lt;/span>&lt;span class="lnt">42
&lt;/span>&lt;span class="lnt">43
&lt;/span>&lt;span class="lnt">44
&lt;/span>&lt;span class="lnt">45
&lt;/span>&lt;span class="lnt">46
&lt;/span>&lt;span class="lnt">47
&lt;/span>&lt;span class="lnt">48
&lt;/span>&lt;span class="lnt">49
&lt;/span>&lt;span class="lnt">50
&lt;/span>&lt;span class="lnt">51
&lt;/span>&lt;span class="lnt">52
&lt;/span>&lt;span class="lnt">53
&lt;/span>&lt;span class="lnt">54
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;windows.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;winhttp.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;string&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#pragma comment(lib, &amp;#34;winhttp.lib&amp;#34;)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">PostToTeamsChat&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">accessToken&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">chatId&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">message&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hSession&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpOpen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;TeamsPoster/1.0&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_ACCESS_TYPE_DEFAULT_PROXY&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_NO_PROXY_NAME&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_NO_PROXY_BYPASS&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hConnect&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpConnect&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;graph.microsoft.com&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">INTERNET_DEFAULT_HTTPS_PORT&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">endpoint&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;/v1.0/chats/&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">chatId&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;/messages&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">HINTERNET&lt;/span> &lt;span class="n">hRequest&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpOpenRequest&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;POST&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">endpoint&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WINHTTP_NO_REFERER&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_DEFAULT_ACCEPT_TYPES&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">WINHTTP_FLAG_SECURE&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">jsonBody&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;{&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">body&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">: {&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">content&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">: &lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">&amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">message&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\&amp;#34;&lt;/span>&lt;span class="s">}}&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Authorization: Bearer &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">accessToken&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\r\n&lt;/span>&lt;span class="s">Content-Type: application/json&lt;/span>&lt;span class="se">\r\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">BOOL&lt;/span> &lt;span class="n">bResult&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">WinHttpSendRequest&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">headers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DWORD&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1L&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">LPVOID&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="n">jsonBody&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">c_str&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">DWORD&lt;/span>&lt;span class="p">)(&lt;/span>&lt;span class="n">jsonBody&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">length&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">wchar_t&lt;/span>&lt;span class="p">)),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="n">DWORD&lt;/span>&lt;span class="p">)(&lt;/span>&lt;span class="n">jsonBody&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">length&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">wchar_t&lt;/span>&lt;span class="p">)),&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">bResult&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpReceiveResponse&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nb">NULL&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DWORD&lt;/span> &lt;span class="n">dwSize&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpQueryDataAvailable&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">dwSize&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">dwSize&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dwSize&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="k">sizeof&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">wchar_t&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">DWORD&lt;/span> &lt;span class="n">dwDownloaded&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpReadData&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">response&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="n">dwSize&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">dwDownloaded&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Response: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">response&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hRequest&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hConnect&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">WinHttpCloseHandle&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hSession&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">access&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">chatId&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;19:&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wstring&lt;/span> &lt;span class="n">message&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Hello from C++!&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Enter your access token: &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">getline&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcin&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">access&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="sa">L&lt;/span>&lt;span class="s">&amp;#34;Enter chat ID: &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">getline&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">wcin&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">chatId&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PostToTeamsChat&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">access&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">chatId&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">message&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="-comment-obtenir-lid-de-conversation">🔍 Comment obtenir l&amp;rsquo;ID de conversation
&lt;/h2>&lt;p>L&amp;rsquo;ID de conversation peut être vérifié avec GET /v1.0/me/chats.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">curl -X GET ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> https://graph.microsoft.com/v1.0/me/chats ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -H &amp;#34;Authorization: Bearer {access_token}&amp;#34; ^
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> -H &amp;#34;Content-Type: application/json&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="exemple-de-réponse-1">Exemple de réponse
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;value&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;19:abc123xyz@thread.v2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;topic&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">null&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;chatType&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;oneOnOne&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="-points-dattention">📌 Points d&amp;rsquo;attention
&lt;/h2>&lt;ul>
&lt;li>Cet exemple est une implémentation minimale. En production :
&lt;ul>
&lt;li>Gestion de l&amp;rsquo;expiration des jetons&lt;/li>
&lt;li>Vérification des certificats HTTPS&lt;/li>
&lt;li>Amélioration de la gestion des erreurs&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Les publications de canal utilisent teams/{team-id}/channels/{channel-id}/messages.&lt;/li>
&lt;li>L&amp;rsquo;envoi de pièces jointes nécessite un traitement multipart ou l&amp;rsquo;API Graph Drive.&lt;/li>
&lt;/ul>
&lt;h2 id="résumé">Résumé
&lt;/h2>&lt;h2 id="-résumé">📎 Résumé
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Fonctionnalité&lt;/th>
&lt;th>Aperçu&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Graph API&lt;/td>
&lt;td>API officielle pour interagir avec Teams&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Inscription de l&amp;rsquo;application&lt;/td>
&lt;td>Procédures d&amp;rsquo;authentification requises sur Azure&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Jeton d&amp;rsquo;accès&lt;/td>
&lt;td>Obtenu via OAuth2 et utilisé pour les requêtes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Implémentation C++&lt;/td>
&lt;td>Appelle l&amp;rsquo;API Graph en utilisant WinHTTP&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="-prochaines-étapes">🚀 Prochaines étapes
&lt;/h2>&lt;p>Pour des exemples plus avancés, les éléments suivants sont également possibles :&lt;/p>
&lt;ul>
&lt;li>Publication sur un canal d&amp;rsquo;équipe (&lt;code>/teams/{team-id}/channels/...&lt;/code>)&lt;/li>
&lt;li>Publication avec pièces jointes&lt;/li>
&lt;li>Basculement entre les comptes bot et les comptes utilisateurs&lt;/li>
&lt;li>Implémentation C++ complète, y compris l&amp;rsquo;obtention de jetons&lt;/li>
&lt;/ul>
&lt;p>N&amp;rsquo;hésitez pas à commenter si vous avez des demandes !&lt;/p></description></item><item><title>【Pour les débutants】Guide d'installation de libcurl (avec support OpenSSL) dans Visual Studio à l'aide de vcpkg</title><link>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/</link><pubDate>Mon, 07 Jul 2025 21:46:08 +0900</pubDate><guid>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/</guid><description>&lt;img src="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.png" alt="Featured image of post 【Pour les débutants】Guide d'installation de libcurl (avec support OpenSSL) dans Visual Studio à l'aide de vcpkg" />&lt;h2 id="si-vous-souhaitez-utiliser-libcurl-avec-support-openssl-dans-visual-studio-linstallation-de-vcpkg-est-facile-et-recommandée">Si vous souhaitez utiliser libcurl (avec support OpenSSL) dans Visual Studio, l&amp;rsquo;installation de vcpkg est facile et recommandée
&lt;/h2>&lt;p>Lorsqu&amp;rsquo;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&amp;rsquo;est-ce pas ?&lt;/p>
&lt;p>Dans de tels moments, l&amp;rsquo;outil de gestion de bibliothèques C++ de Microsoft, ** &amp;ldquo;vcpkg&amp;rdquo; ** , s&amp;rsquo;avère très utile.
Cette fois-ci, nous allons vous présenter les étapes depuis l&amp;rsquo;installation de libcurl (compatible OpenSSL) en utilisant cpkg, jusqu&amp;rsquo;à ce qu&amp;rsquo;il puisse être utilisé sans problème dans Visual Studio.&lt;/p>
&lt;hr>
&lt;h3 id="installation-de-vcpkg-uniquement-pour-ceux-qui-ne-lont-pas-encore-installé">Installation de vcpkg (uniquement pour ceux qui ne l&amp;rsquo;ont pas encore installé)
&lt;/h3>&lt;p>Tout d&amp;rsquo;abord, installons cpkg. Veuillez exécuter les étapes suivantes dans PowerShell.&lt;/p>
&lt;p>&lt;code>powershell git clone https://github.com/microsoft/vcpkg cd vcpkg .ootstrap-vcpkg.bat &lt;/code>&lt;/p>
&lt;p>※Si Git n&amp;rsquo;est pas encore installé, veuillez l&amp;rsquo;installer depuis le &lt;a class="link" href="https://git-scm.com/" target="_blank" rel="noopener"
>Site officiel de Git&lt;/a>.&lt;/p>
&lt;hr>
&lt;h3 id="installation-de-libcurl-compatible-openssl">Installation de libcurl (compatible OpenSSL)
&lt;/h3>&lt;p>Ensuite, nous allons utiliser vcpkg pour installer libcurl. Pour spécifier la version 64 bits prenant en charge OpenSSL, exécutez la commande suivante.&lt;/p>
&lt;p>&lt;code>powershell vcpkg install curl[ssl] --triplet x64-windows &lt;/code>&lt;/p>
&lt;p>L&amp;rsquo;exécution de cette commande configurera automatiquement les dépendances nécessaires (telles que OpenSSL).&lt;/p>
&lt;hr>
&lt;h3 id="paramètres-dintégration-avec-visual-studio">Paramètres d&amp;rsquo;intégration avec Visual Studio
&lt;/h3>&lt;p>Afin de pouvoir utiliser facilement les bibliothèques installées avec vcpkg à partir d&amp;rsquo;un projet Visual Studio, définissez les paramètres d&amp;rsquo;intégration avec la commande suivante.&lt;/p>
&lt;p>&lt;code>powershell vcpkg integrate install &lt;/code>&lt;/p>
&lt;p>Une fois ceci configuré, #include &amp;lt;curl/curl.h&amp;gt; sera automatiquement disponible dans les projets Visual Studio, et vous n&amp;rsquo;aurez plus besoin de configurer manuellement les chemins des bibliothèques ou les paramètres de l&amp;rsquo;éditeur de liens.&lt;/p>
&lt;hr>
&lt;h2 id="conclusion">Conclusion
&lt;/h2>&lt;p>Ainsi, la préparation pour introduire libcurl (compatible OpenSSL) dans Visual Studio est terminée.&lt;/p>
&lt;ul>
&lt;li>Avec vcpkg, vous pouvez gérer toutes les dépendances complexes en une seule fois&lt;/li>
&lt;li>Introduisez facilement libcurl avec cpkg install curl[ssl] &amp;ndash;triplet x64-windows&lt;/li>
&lt;li>L&amp;rsquo;intégration automatique avec Visual Studio est possible avec cpkg integrate install&lt;/li>
&lt;/ul>
&lt;p>Ensuite, il ne vous reste plus qu&amp;rsquo;à inclure l&amp;rsquo;en-tête dans votre projet et à utiliser l&amp;rsquo;API libcurl pour commencer le développement.
Tirez parti de cet outil pratique qu&amp;rsquo;est vcpkg et améliorez considérablement votre efficacité de développement.&lt;/p></description></item><item><title>J'ai été de nouveau récompensé par le titre de Microsoft MVP (2024-2025)</title><link>http://kenji.blog/fr/p/jai-ete-de-nouveau-recompense-par-le-titre-de-microsoft-mvp-2024-2025/</link><pubDate>Tue, 03 Sep 2024 21:25:20 +0900</pubDate><guid>http://kenji.blog/fr/p/jai-ete-de-nouveau-recompense-par-le-titre-de-microsoft-mvp-2024-2025/</guid><description>&lt;img src="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.png" alt="Featured image of post J'ai été de nouveau récompensé par le titre de Microsoft MVP (2024-2025)" />&lt;h1 id="jai-été-de-nouveau-récompensé-par-le-titre-de-microsoft-mvp-2024-2025">J&amp;rsquo;ai été de nouveau récompensé par le titre de Microsoft MVP (2024-2025)
&lt;/h1>&lt;p>&lt;img src="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_1.png"
width="510"
height="680"
srcset="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_1_hu43fc94f004bc47efe4ebeb44e3c1c9ff_744182_480x0_resize_box_3.png 480w, 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_1_hu43fc94f004bc47efe4ebeb44e3c1c9ff_744182_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img\_1.png"
class="gallery-image"
data-flex-grow="75"
data-flex-basis="180px"
>&lt;/p>
&lt;p>Bonjour, je suis kenji.
J&amp;rsquo;ai le plaisir de vous annoncer que j&amp;rsquo;ai de nouveau reçu le prix &lt;strong>Microsoft MVP (Most Valuable Professional)&lt;/strong> cette année. C&amp;rsquo;est la 8ème fois que je reçois cette distinction.&lt;/p>
&lt;p>Puisque l&amp;rsquo;occasion se présente, j&amp;rsquo;aimerais écrire un peu sur ce qu&amp;rsquo;est un MVP.&lt;/p>
&lt;hr>
&lt;h2 id="quest-ce-que-le-microsoft-mvp-">Qu&amp;rsquo;est-ce que le Microsoft MVP ?
&lt;/h2>&lt;p>Même si on l&amp;rsquo;appelle MVP, il ne s&amp;rsquo;agit pas du meilleur joueur de sport (bien qu&amp;rsquo;on me le demande parfois&amp;hellip;).
Le &lt;strong>Microsoft MVP (Most Valuable Professional)&lt;/strong> est un titre décerné à ceux qui partagent activement leurs connaissances et leurs expériences sur les technologies Microsoft avec la communauté.&lt;/p>
&lt;p>Écrire des blogs techniques, répondre à des questions sur des sites de Q&amp;amp;A, publier des exemples de code, ou faire des présentations lors d&amp;rsquo;événements.
&amp;ldquo;Partager ce que l&amp;rsquo;on sait d&amp;rsquo;une manière utile aux autres&amp;rdquo; ―― ces efforts constants sont évalués.&lt;/p>
&lt;p>Il y a des lauréats dans le monde entier, mais leur nombre est limité chaque année, et il n&amp;rsquo;est pas facile d&amp;rsquo;être à nouveau récompensé.
Dans ces conditions, je suis vraiment reconnaissant d&amp;rsquo;avoir été reconnu une fois de plus.&lt;/p>
&lt;hr>
&lt;h2 id="raison-de-la-récompense">Raison de la récompense
&lt;/h2>&lt;p>Cette récompense est un renouvellement dans la catégorie &amp;ldquo;Developer Technologies&amp;rdquo;.
Au cours de l&amp;rsquo;année écoulée, j&amp;rsquo;ai participé aux activités suivantes :&lt;/p>
&lt;ul>
&lt;li>Rédaction d&amp;rsquo;articles de blog sur les technologies liées à Microsoft&lt;/li>
&lt;li>Publication de réponses sur des sites techniques de Q&amp;amp;A&lt;/li>
&lt;li>Publication d&amp;rsquo;exemples de code sur GitHub&lt;/li>
&lt;li>Conférences lors de groupes d&amp;rsquo;étude et d&amp;rsquo;événements technologiques&lt;/li>
&lt;/ul>
&lt;p>Rien de tout cela n&amp;rsquo;est extraordinaire, mais j&amp;rsquo;ai toujours essayé de partager &amp;ldquo;ce que j&amp;rsquo;ai essayé et qui a marché&amp;rdquo; et &amp;ldquo;là où j&amp;rsquo;ai buté mais où j&amp;rsquo;ai pu résoudre le problème&amp;rdquo; d&amp;rsquo;une manière qui puisse être utile.&lt;/p>
&lt;p>Je suis sincèrement heureux que cela ait pris cette forme.&lt;/p>
&lt;hr>
&lt;h2 id="perspectives-davenir">Perspectives d&amp;rsquo;avenir
&lt;/h2>&lt;p>Le monde de la technologie évolue à une telle vitesse que le simple fait d&amp;rsquo;essayer de suivre est difficile.
Mais c&amp;rsquo;est pour cette raison que je pense que partager de &amp;ldquo;vraies informations&amp;rdquo; — comment c&amp;rsquo;était de l&amp;rsquo;utiliser en pratique, et ce qui était difficile à comprendre — a beaucoup de sens.&lt;/p>
&lt;p>Je prévois de continuer à mon propre rythme, sans trop me forcer.
Je serais heureux de pouvoir continuer à fournir des informations qui feront penser à quelqu&amp;rsquo;un : &amp;ldquo;Ah, ça m&amp;rsquo;a aidé&amp;rdquo;.&lt;/p>
&lt;p>Merci beaucoup pour votre soutien continu.&lt;/p></description></item><item><title>Extensions Recommandées pour Visual Studio Code</title><link>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/</link><pubDate>Wed, 29 May 2024 17:20:19 +0900</pubDate><guid>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/</guid><description>&lt;img src="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.png" alt="Featured image of post Extensions Recommandées pour Visual Studio Code" />&lt;h1 id="liste-des-extensions-recommandées-pour-visual-studio-code">Liste des Extensions Recommandées pour Visual Studio Code
&lt;/h1>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Catégorie&lt;/th>
&lt;th>Nom&lt;/th>
&lt;th>Fournisseur&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Gestion de Machines Virtuelles et Conteneurs&lt;/td>
&lt;td>Remote Devlopment&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge le développement à distance en se connectant aux conteneurs virtuels/WSL via SSH&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestion de Machines Virtuelles et Conteneurs&lt;/td>
&lt;td>Docker&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge la gestion des conteneurs Docker&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestion de Code&lt;/td>
&lt;td>GitHub Pull Requests&lt;/td>
&lt;td>GitHub&lt;/td>
&lt;td>Gère les Pull Requests GitHub dans VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestion de Code&lt;/td>
&lt;td>GitHub Copilot&lt;/td>
&lt;td>GitHub&lt;/td>
&lt;td>Prend en charge la complétion de code par IA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestion de Code&lt;/td>
&lt;td>Git Graph&lt;/td>
&lt;td>mhutchie&lt;/td>
&lt;td>Affiche graphiquement les branches et commits Git&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Gestion de Code&lt;/td>
&lt;td>Git History&lt;/td>
&lt;td>Don Jayamanne&lt;/td>
&lt;td>Affiche l&amp;rsquo;historique Git&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navigateur et Développement Web&lt;/td>
&lt;td>Debugger for Firefox&lt;/td>
&lt;td>Firefox DevTools&lt;/td>
&lt;td>Utilise le débogueur Firefox dans VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navigateur et Développement Web&lt;/td>
&lt;td>Microsoft Edge Tool For VScode&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Utilise les outils de développement Edge dans VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navigateur et Développement Web&lt;/td>
&lt;td>Vue Language Features(Volar)&lt;/td>
&lt;td>Vue&lt;/td>
&lt;td>Prend en charge les fonctionnalités linguistiques de Vue&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navigateur et Développement Web&lt;/td>
&lt;td>JavaScript (ES6) code snippets&lt;/td>
&lt;td>charalampos karypidis&lt;/td>
&lt;td>Fournit des snippets JavaScript&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Navigateur et Développement Web&lt;/td>
&lt;td>Tailwind CSS IntelliSense&lt;/td>
&lt;td>Tailwind Labs&lt;/td>
&lt;td>Fournit des snippets Tailwind CSS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Développement Cloud&lt;/td>
&lt;td>AWS Toolkit&lt;/td>
&lt;td>Amazon Web Services&lt;/td>
&lt;td>Prend en charge le développement AWS&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Développement Cloud&lt;/td>
&lt;td>Azure Tools&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge le développement Azure&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Développement Cloud&lt;/td>
&lt;td>Google Cloud Tools&lt;/td>
&lt;td>Google Cloud&lt;/td>
&lt;td>Prend en charge le développement Google Cloud&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base de Données&lt;/td>
&lt;td>MySQL&lt;/td>
&lt;td>Jun Han&lt;/td>
&lt;td>Prend en charge le développement MySQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base de Données&lt;/td>
&lt;td>SQL Server(mssql)&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge le développement SQL Server&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Base de Données&lt;/td>
&lt;td>PostgreSQL&lt;/td>
&lt;td>Chris Kolkman&lt;/td>
&lt;td>Prend en charge le développement PostgreSQL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Systèmes Embarqués&lt;/td>
&lt;td>PlatformIO&lt;/td>
&lt;td>PlatformIO&lt;/td>
&lt;td>Prend en charge le développement PlatformIO&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Systèmes Embarqués&lt;/td>
&lt;td>Arduino&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge le développement Arduino&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Systèmes Embarqués&lt;/td>
&lt;td>WorkBench&lt;/td>
&lt;td>Particle&lt;/td>
&lt;td>Prend en charge le développement pour l&amp;rsquo;IoT, incluant l&amp;rsquo;environnement de développement fourni par Particle, le firmware, les bibliothèques et l&amp;rsquo;intégration cloud&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C/C++&lt;/td>
&lt;td>C/C++ Extension Pack&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge le développement C/C++&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C/C++&lt;/td>
&lt;td>C/C++ Runner&lt;/td>
&lt;td>franneck94&lt;/td>
&lt;td>Exécute le code C/C++ (prend en charge les compilateurs gcc, msvc et cuda nvcc)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C/C++&lt;/td>
&lt;td>Cortex-Debug&lt;/td>
&lt;td>marus25&lt;/td>
&lt;td>Prend en charge le débogage des microcontrôleurs Cortex-A/R/M&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Python&lt;/td>
&lt;td>Python Extension Pack&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge le développement Python&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Python&lt;/td>
&lt;td>jupyter&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge le développement Jupyter Notebook&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitaires et Extensions UI&lt;/td>
&lt;td>Makrdown All in One&lt;/td>
&lt;td>Yu Zhang&lt;/td>
&lt;td>Prend en charge l&amp;rsquo;écriture en Markdown&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitaires et Extensions UI&lt;/td>
&lt;td>Hex Editor&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Édite les fichiers binaires&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitaires et Extensions UI&lt;/td>
&lt;td>vscode-pdf&lt;/td>
&lt;td>tomoki1207&lt;/td>
&lt;td>Affiche les fichiers PDF&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitaires et Extensions UI&lt;/td>
&lt;td>Rainbow CSV&lt;/td>
&lt;td>mechatroner&lt;/td>
&lt;td>Affiche les fichiers CSV de manière colorée&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitaires et Extensions UI&lt;/td>
&lt;td>Draw.io Integration&lt;/td>
&lt;td>Henning Dieterichs&lt;/td>
&lt;td>Utilise Draw.io dans VSCode&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitaires et Extensions UI&lt;/td>
&lt;td>Japanese Language Pack for Visual Studio Code&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Pack de langue Japonaise&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Utilitaires et Extensions UI&lt;/td>
&lt;td>Live Share&lt;/td>
&lt;td>Microsoft&lt;/td>
&lt;td>Prend en charge la collaboration en temps réel&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Comment annuler un git reset</title><link>http://kenji.blog/fr/p/comment-annuler-un-git-reset/</link><pubDate>Wed, 15 May 2024 23:32:43 +0900</pubDate><guid>http://kenji.blog/fr/p/comment-annuler-un-git-reset/</guid><description>&lt;img src="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.png" alt="Featured image of post Comment annuler un git reset" />&lt;h1 id="comment-annuler-un-git-reset">Comment annuler un git reset
&lt;/h1>&lt;p>Après avoir effectué un git commit, si vous exécutez accidentellement un git reset, voici comment annuler le git reset (comment restaurer l&amp;rsquo;état au moment du git commit).&lt;/p>
&lt;ol>
&lt;li>Vérifiez l&amp;rsquo;ID du commit avant le reset avec &lt;code>git reflog&lt;/code>&lt;/li>
&lt;li>Revenez à l&amp;rsquo;état avant le reset avec &lt;code>git reset --hard HEAD@{numéro}&lt;/code>&lt;/li>
&lt;/ol>
&lt;p>C&amp;rsquo;est tout sur la façon d&amp;rsquo;annuler un git reset.&lt;/p></description></item><item><title>Obtenir uniquement la dernière version du dépôt git</title><link>http://kenji.blog/fr/p/obtenir-uniquement-la-derniere-version-du-depot-git/</link><pubDate>Sat, 27 Apr 2024 02:54:12 +0900</pubDate><guid>http://kenji.blog/fr/p/obtenir-uniquement-la-derniere-version-du-depot-git/</guid><description>&lt;img src="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.png" alt="Featured image of post Obtenir uniquement la dernière version du dépôt git" />&lt;h1 id="obtenir-uniquement-la-dernière-version-du-dépôt-git">Obtenir uniquement la dernière version du dépôt git
&lt;/h1>&lt;p>Vous pouvez obtenir uniquement la dernière version du dépôt avec la commande suivante.
C&amp;rsquo;est utile lorsque vous souhaitez obtenir le dépôt rapidement pour économiser de l&amp;rsquo;espace disque.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">git clone --depth 1 &amp;lt;URL du dépôt&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>Comment résoudre l'erreur de certificat empêchant l'utilisation de GitHub Copilot</title><link>http://kenji.blog/fr/p/comment-resoudre-erreur-certificat-github-copilot/</link><pubDate>Sun, 21 Apr 2024 18:47:26 +0900</pubDate><guid>http://kenji.blog/fr/p/comment-resoudre-erreur-certificat-github-copilot/</guid><description>&lt;img src="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.png" alt="Featured image of post Comment résoudre l'erreur de certificat empêchant l'utilisation de GitHub Copilot" />&lt;h1 id="que-faire-lorsque-lerreur-suivante-saffiche-dans-github-copilot">Que faire lorsque l&amp;rsquo;erreur suivante s&amp;rsquo;affiche dans GitHub Copilot
&lt;/h1>&lt;p>Depuis environ le 19/04/2024, GitHub Copilot a cessé de fonctionner. Le message d&amp;rsquo;erreur est le suivant :&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[ERROR] [ghostText] [2024-04-21T04:06:46.900Z] Error on ghost text request: (FetchError) unable to verify the first certificate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[ERROR] [certificates] [2024-04-21T04:06:46.901Z] Your current Copilot license doesn&amp;#39;t support proxy connections with custom certificates. Please visit https://gh.io/copilot-network-errors to learn more. Original cause: {&amp;#34;type&amp;#34;:&amp;#34;system&amp;#34;,&amp;#34;_name&amp;#34;:&amp;#34;FetchError&amp;#34;,&amp;#34;code&amp;#34;:&amp;#34;UNABLE_TO_VERIFY_LEAF_SIGNATURE&amp;#34;}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="solution">Solution
&lt;/h2>&lt;p>Il semble que ce soit un bug de ESET. Dans les paramètres avancés de ESET, désactivez &amp;ldquo;Activer SSL/TLS&amp;rdquo;.
&lt;img src="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_1.png"
width="679"
height="468"
srcset="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_1_hu79798d24a79f4dc94eb7f8ca51727896_114738_480x0_resize_box_3.png 480w, 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_1_hu79798d24a79f4dc94eb7f8ca51727896_114738_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="145"
data-flex-basis="348px"
>&lt;/p>
&lt;h2 id="référence">Référence
&lt;/h2>&lt;p>Il semble que la même erreur se produise également dans AWS CDK.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://repost.aws/questions/QU2H94hF04SIuEVejK_a1mtQ/aws-cdk-bootstrap-certificate-warning-error" target="_blank" rel="noopener"
>AWS CDK bootstrap certificate warning-error&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Introduction à vim</title><link>http://kenji.blog/fr/p/vim%E5%85%A5%E9%96%80/</link><pubDate>Fri, 19 Apr 2024 22:06:34 +0900</pubDate><guid>http://kenji.blog/fr/p/vim%E5%85%A5%E9%96%80/</guid><description>&lt;img src="http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img.png" alt="Featured image of post Introduction à vim" />&lt;p>&lt;img src="http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img_1.png"
width="1920"
height="1080"
srcset="http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img_1_hue190cb5546151f3c9f61d693ae541095_45716_480x0_resize_box_3.png 480w, http://kenji.blog/p/vim%E5%85%A5%E9%96%80/img_1_hue190cb5546151f3c9f61d693ae541095_45716_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="177"
data-flex-basis="426px"
>&lt;/p>
&lt;h1 id="introduction-à-vim">Introduction à vim
&lt;/h1>&lt;h2 id="téléchargement-et-installation">Téléchargement et Installation
&lt;/h2>&lt;p>&lt;a class="link" href="https://www.vim.org/download.php" target="_blank" rel="noopener"
>https://www.vim.org/download.php&lt;/a>&lt;/p>
&lt;p>À partir du site ci-dessus, téléchargez et installez le module approprié pour votre système d&amp;rsquo;exploitation.&lt;/p>
&lt;p>Pour Windows, choisir &lt;code>gvim_X.X.X_x64_signed.exe&lt;/code> est une bonne option.&lt;/p>
&lt;h2 id="comment-démarrer">Comment Démarrer
&lt;/h2>&lt;p>Sous Windows, il est nécessaire d&amp;rsquo;enregistrer le dossier contenant &lt;code>vim.exe&lt;/code> dans la variable d&amp;rsquo;environnement Path.&lt;/p>
&lt;p>Comment démarrer :&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">vim
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Pour démarrer en spécifiant un nom de fichier :&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">vim filename.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="comment-quitter">Comment Quitter
&lt;/h2>&lt;p>Pour quitter, tapez &lt;code>:&lt;/code> (deux-points), puis &lt;code>q&lt;/code>, et appuyez sur Entrée.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:q
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si le fichier a été modifié, le message &lt;code>Aucune écriture depuis la dernière modification (ajoutez ! pour forcer)&lt;/code> s&amp;rsquo;affichera.
Vous pouvez forcer la fermeture en abandonnant les modifications.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:q!
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Pour sauvegarder le fichier et quitter :&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:wq
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Ce qui suit a également la même signification :&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">:x
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Vous pouvez également quitter en maintenant &lt;code>Shift&lt;/code> et en appuyant deux fois sur &lt;code>z&lt;/code>. (Équivalent à :wq)&lt;/p>
&lt;h2 id="modes">Modes
&lt;/h2>&lt;p>Le vim possède un &lt;code>Mode Commande&lt;/code> et un &lt;code>Mode Insertion&lt;/code>. Au démarrage de vim, il est en &lt;code>Mode Commande&lt;/code>, et appuyer sur la touche &lt;code>i&lt;/code> passe en &lt;code>Mode Insertion&lt;/code>.&lt;/p>
&lt;p>En &lt;code>Mode Insertion&lt;/code>, comme son nom l&amp;rsquo;indique, vous pouvez saisir du texte. Pour revenir du &lt;code>Mode Insertion&lt;/code> au &lt;code>Mode Commande&lt;/code>, appuyez sur la touche &lt;code>ESC&lt;/code>.&lt;/p>
&lt;p>Cette bascule entre les modes d&amp;rsquo;insertion est une caractéristique clé de vim.&lt;/p>
&lt;h2 id="déplacement-du-curseur-et-défilement">Déplacement du Curseur et Défilement
&lt;/h2>&lt;p>Résumé des déplacements du curseur et du défilement en &lt;code>Mode Commande&lt;/code>.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Touche&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>h&lt;/code> (ou &lt;code>Ctrl&lt;/code>+&lt;code>H&lt;/code>, &lt;code>BackSpace&lt;/code>, &lt;code>←&lt;/code>)&lt;/td>
&lt;td>Déplacer vers la gauche&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>j&lt;/code> (ou &lt;code>Ctrl&lt;/code>+&lt;code>J&lt;/code> / &lt;code>N&lt;/code>, &lt;code>↓&lt;/code>)&lt;/td>
&lt;td>Déplacer vers le bas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>k&lt;/code> (ou &lt;code>Ctrl&lt;/code>+&lt;code>P&lt;/code>, &lt;code>↑&lt;/code>)&lt;/td>
&lt;td>Déplacer vers le haut&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>l&lt;/code> (ou &lt;code>Space&lt;/code>, &lt;code>→&lt;/code>)&lt;/td>
&lt;td>Déplacer vers la droite&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>+&lt;/code> (ou &lt;code>Enter&lt;/code>)&lt;/td>
&lt;td>Déplacer au début de la ligne suivante&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>-&lt;/code>&lt;/td>
&lt;td>Déplacer au début de la ligne précédente&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>B&lt;/code> (ou &lt;code>PageUp&lt;/code>)&lt;/td>
&lt;td>Faire défiler vers le haut (page)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>F&lt;/code> (ou &lt;code>PageDown&lt;/code>)&lt;/td>
&lt;td>Faire défiler vers le bas (page)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>U&lt;/code>&lt;/td>
&lt;td>Faire défiler d&amp;rsquo;une demi-page vers le haut&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>D&lt;/code>&lt;/td>
&lt;td>Faire défiler d&amp;rsquo;une demi-page vers le bas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>Y&lt;/code>&lt;/td>
&lt;td>Faire défiler d&amp;rsquo;une ligne vers le haut&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>E&lt;/code>&lt;/td>
&lt;td>Faire défiler d&amp;rsquo;une ligne vers le bas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>Enter&lt;/code>&lt;/td>
&lt;td>Faire défiler la ligne du curseur vers le haut de l&amp;rsquo;écran&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>.&lt;/code>&lt;/td>
&lt;td>Faire défiler la ligne du curseur vers le centre de l&amp;rsquo;écran&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>z&lt;/code> &lt;code>-&lt;/code>&lt;/td>
&lt;td>Faire défiler la ligne du curseur vers le bas de l&amp;rsquo;écran&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>0&lt;/code> (ou &lt;code>|&lt;/code>)&lt;/td>
&lt;td>Déplacer le curseur au début de la ligne&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$&lt;/code>&lt;/td>
&lt;td>Déplacer le curseur à la fin de la ligne&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>^&lt;/code> (ou &lt;code>_&lt;/code>)&lt;/td>
&lt;td>Déplacer le curseur au début de la ligne (hors espaces et Tab)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>G&lt;/code> (ou &lt;code>:$&lt;/code>)&lt;/td>
&lt;td>Déplacer le curseur à la dernière ligne&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>:numéro_de_ligne&lt;/code> &lt;code>Enter&lt;/code>&lt;/td>
&lt;td>Déplacer à la ligne spécifiée&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>En tapant un &lt;code>chiffre&lt;/code> avant les touches de déplacement ci-dessus, vous pouvez vous déplacer de cette quantité plusieurs fois.
(Par exemple, taper &lt;code>3j&lt;/code> vous déplacera de 3 lignes vers le bas à partir de la position actuelle du curseur.)&lt;/p>
&lt;h2 id="autres-commandes">Autres Commandes
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Touche&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>L&lt;/code>&lt;/td>
&lt;td>Redessiner l&amp;rsquo;écran&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code>+&lt;code>G&lt;/code>&lt;/td>
&lt;td>Afficher le nombre total de lignes, la position du curseur, etc.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>Liste des raccourcis Microsoft Word</title><link>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/</link><pubDate>Sun, 07 Apr 2024 14:18:51 +0900</pubDate><guid>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/</guid><description>&lt;img src="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.png" alt="Featured image of post Liste des raccourcis Microsoft Word" />&lt;h2 id="liste-des-raccourcis">Liste des raccourcis
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Raccourci clavier&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>B&lt;/code>&lt;/td>
&lt;td>Mettre en gras&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>I&lt;/code>&lt;/td>
&lt;td>Mettre en italique&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>U&lt;/code>&lt;/td>
&lt;td>Souligner&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>E&lt;/code>&lt;/td>
&lt;td>Centrer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>L&lt;/code>&lt;/td>
&lt;td>Aligner à gauche&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>R&lt;/code>&lt;/td>
&lt;td>Aligner à droite&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>]&lt;/code>&lt;/td>
&lt;td>Augmenter la taille de la police&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>[&lt;/code>&lt;/td>
&lt;td>Diminuer la taille de la police&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>C&lt;/code>&lt;/td>
&lt;td>Copier&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>V&lt;/code>&lt;/td>
&lt;td>Coller&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>&lt;/td>
&lt;td>Couper&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Z&lt;/code>&lt;/td>
&lt;td>Annuler&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Y&lt;/code>&lt;/td>
&lt;td>Rétablir&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>A&lt;/code>&lt;/td>
&lt;td>Tout sélectionner&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Shift&lt;/code> + &lt;code>Flèches&lt;/code>&lt;/td>
&lt;td>Sélectionner une plage&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Rechercher du texte&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>H&lt;/code>&lt;/td>
&lt;td>Remplacer du texte&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>P&lt;/code>&lt;/td>
&lt;td>Aperçu avant impression&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>S&lt;/code>&lt;/td>
&lt;td>Enregistrer le document&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F12&lt;/code>&lt;/td>
&lt;td>Enregistrer sous&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Home&lt;/code>&lt;/td>
&lt;td>Aller au début du document&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>End&lt;/code>&lt;/td>
&lt;td>Aller à la fin du document&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="référence">Référence
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://support.microsoft.com/fr-fr/office/word-%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88-95ef89dd-7142-4b50-afb2-f762f663ceb2" target="_blank" rel="noopener"
>Raccourcis clavier dans Word&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Liste des raccourcis de Visual Studio</title><link>http://kenji.blog/fr/p/liste-des-raccourcis-de-visual-studio/</link><pubDate>Sat, 06 Apr 2024 11:27:37 +0900</pubDate><guid>http://kenji.blog/fr/p/liste-des-raccourcis-de-visual-studio/</guid><description>&lt;img src="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.png" alt="Featured image of post Liste des raccourcis de Visual Studio" />&lt;h1 id="liste-des-raccourcis-de-visual-studio">Liste des raccourcis de Visual Studio
&lt;/h1>&lt;p>J&amp;rsquo;ai fait une liste des raccourcis de Visual Studio que j&amp;rsquo;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&amp;rsquo;hésitez pas à les utiliser.&lt;/p>
&lt;p>※Vérifié sur Visual Studio 2022.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Touche de raccourci&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>F1&lt;/code>&lt;/td>
&lt;td>Afficher l&amp;rsquo;aide pour le mot sélectionné&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F2&lt;/code>&lt;/td>
&lt;td>Accéder au signet&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F2&lt;/code>&lt;/td>
&lt;td>Ajouter un signet&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>F2&lt;/code>&lt;/td>
&lt;td>Supprimer tous les signets&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F5&lt;/code>&lt;/td>
&lt;td>Générer et exécuter (avec débogage)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F5&lt;/code>&lt;/td>
&lt;td>Générer et exécuter (sans débogage)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F7&lt;/code>&lt;/td>
&lt;td>Générer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F9&lt;/code>&lt;/td>
&lt;td>Ajouter un point d&amp;rsquo;arrêt à la ligne du curseur&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F9&lt;/code>&lt;/td>
&lt;td>Désactiver le point d&amp;rsquo;arrêt sur la ligne du curseur&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Shift&lt;/code> + &lt;code>Ctrl&lt;/code> + &lt;code>F9&lt;/code>&lt;/td>
&lt;td>Supprimer tous les points d&amp;rsquo;arrêt&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F10&lt;/code>&lt;/td>
&lt;td>Pas à pas principal (Step over)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F11&lt;/code>&lt;/td>
&lt;td>Pas à pas détaillé (Step in)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>F12&lt;/code>&lt;/td>
&lt;td>Accéder à la définition&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>D&lt;/code>&lt;/td>
&lt;td>Dupliquer la ligne du curseur&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>&lt;/td>
&lt;td>Couper la ligne (sans sélection)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>]&lt;/code>&lt;/td>
&lt;td>Sélectionner jusqu&amp;rsquo;à la parenthèse/accolade correspondante&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Alt&lt;/code> + &lt;code>Flèches haut/bas&lt;/code>&lt;/td>
&lt;td>Déplacer la ligne du curseur vers le haut ou vers le bas&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Alt&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>Flèches&lt;/code>&lt;/td>
&lt;td>Multi-curseur/Sélection de bloc&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Tab&lt;/code>&lt;/td>
&lt;td>Basculer la vue code source/fenêtre&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>V&lt;/code>&lt;/td>
&lt;td>Afficher l&amp;rsquo;historique du presse-papiers&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>K&lt;/code> puis &lt;code>Ctrl&lt;/code> + &lt;code>C&lt;/code>&lt;/td>
&lt;td>Commenter la ligne du curseur&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>K&lt;/code> puis &lt;code>Ctrl&lt;/code> + &lt;code>U&lt;/code>&lt;/td>
&lt;td>Décommenter la ligne du curseur&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>G&lt;/code>&lt;/td>
&lt;td>Accéder au numéro de ligne spécifié&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Rechercher&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Recherche globale&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>H&lt;/code>&lt;/td>
&lt;td>Remplacer&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>F&lt;/code>&lt;/td>
&lt;td>Remplacement global&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Tab&lt;/code>&lt;/td>
&lt;td>Basculer la vue code source/fenêtre&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Space&lt;/code>&lt;/td>
&lt;td>Autocomplétion de mots&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Alt&lt;/code> + &lt;code>L&lt;/code>&lt;/td>
&lt;td>Ouvrir la fenêtre de l&amp;rsquo;Explorateur de solutions&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>Shift&lt;/code> + &lt;code>E&lt;/code>&lt;/td>
&lt;td>Ouvrir la fenêtre de l&amp;rsquo;Affichage des ressources&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>Ctrl&lt;/code> + &lt;code>0&lt;/code> puis &lt;code>Ctrl&lt;/code> + &lt;code>G&lt;/code>&lt;/td>
&lt;td>Ouvrir la fenêtre de validation Git&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="référence">Référence
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://learn.microsoft.com/ja-jp/visualstudio/ide/default-keyboard-shortcuts-in-visual-studio?view=vs-2022&amp;amp;utm_source=vshelp&amp;amp;wt.mc_id=visualstudio_inproduct_shortcuts_csaapp" target="_blank" rel="noopener"
>Raccourcis clavier par défaut dans Visual Studio&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="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_1.png"
width="1094"
height="823"
srcset="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_1_hu4eaca85d6437d1dd6b23efd21afacc82_582969_480x0_resize_box_3.png 480w, 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_1_hu4eaca85d6437d1dd6b23efd21afacc82_582969_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="132"
data-flex-basis="319px"
>&lt;/p></description></item><item><title>Ajouter Hidemaru Editor grep au menu contextuel de l'Explorateur</title><link>http://kenji.blog/fr/p/ajouter-hidemaru-editor-grep-au-menu-contextuel-de-l-explorateur/</link><pubDate>Wed, 03 Apr 2024 00:00:46 +0900</pubDate><guid>http://kenji.blog/fr/p/ajouter-hidemaru-editor-grep-au-menu-contextuel-de-l-explorateur/</guid><description>&lt;img src="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.png" alt="Featured image of post Ajouter Hidemaru Editor grep au menu contextuel de l'Explorateur" />&lt;p>Voici comment ajouter le grep de Hidemaru Editor au menu contextuel (clic droit) de l&amp;rsquo;Explorateur sous Windows 10/11.&lt;/p>
&lt;p>&lt;strong>Avertissement : La procédure suivante modifie le registre. Veuillez le faire à vos propres risques.&lt;/strong>&lt;/p>
&lt;h2 id="procédure">Procédure
&lt;/h2>&lt;ol>
&lt;li>Ouvrez le lien ci-dessous et enregistrez-le dans n&amp;rsquo;importe quel dossier.&lt;/li>
&lt;/ol>
&lt;p>&lt;a class="link" href="%e7%a7%80%e4%b8%b8%e3%83%ac%e3%82%b8%e3%82%b9%e3%83%88%e3%83%aa%e7%99%bb%e9%8c%b2.reg" >秀丸レジストリ登録.reg&lt;/a>&lt;/p>
&lt;ol start="2">
&lt;li>Double-cliquez sur le fichier &lt;code>秀丸レジストリ登録.reg&lt;/code> pour l&amp;rsquo;ajouter au registre.&lt;/li>
&lt;/ol>
&lt;h2 id="référence">Référence
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://aimek-developer.blogspot.com/2019/02/grep.html" target="_blank" rel="noopener"
>秀丸grepをフォルダの右クリックメニューから行う&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Comment installer l'éditeur de texte micro sur Windows</title><link>http://kenji.blog/fr/p/comment-installer-l-editeur-de-texte-micro-sur-windows/</link><pubDate>Sun, 31 Mar 2024 21:50:39 +0900</pubDate><guid>http://kenji.blog/fr/p/comment-installer-l-editeur-de-texte-micro-sur-windows/</guid><description>&lt;img src="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.png" alt="Featured image of post Comment installer l'éditeur de texte micro sur Windows" />&lt;h2 id="télécharger-micro">Télécharger micro
&lt;/h2>&lt;p>&lt;a class="link" href="https://github.com/zyedidia/micro/releases" target="_blank" rel="noopener"
>https://github.com/zyedidia/micro/releases&lt;/a>&lt;/p>
&lt;p>Ouvrez le lien ci-dessus, cliquez sur &lt;code>Show all XX assets&lt;/code> (où X est un nombre) et téléchargez &lt;code>micro-X.X.XX-win64.zip&lt;/code> (où X est un nombre).
Décompressez le fichier zip et placez tous les fichiers dans un dossier de votre choix.&lt;/p>
&lt;h2 id="configurer-les-variables-denvironnement">Configurer les variables d&amp;rsquo;environnement
&lt;/h2>&lt;p>Pour utiliser &lt;code>micro.exe&lt;/code> depuis l&amp;rsquo;Invite de commandes, vous devez configurer les variables d&amp;rsquo;environnement.&lt;/p>
&lt;ol>
&lt;li>Appuyez sur la &lt;code>Touche Win&lt;/code> + &lt;code>Touche R&lt;/code>, tapez &lt;code>sysdm.cpl&lt;/code> et appuyez sur &lt;code>Entrée&lt;/code>.&lt;/li>
&lt;li>Cliquez sur &lt;code>Paramètres système avancés&lt;/code> dans les &lt;code>Propriétés système&lt;/code>.&lt;/li>
&lt;li>Cliquez sur &lt;code>Variables d'environnement&lt;/code>.&lt;/li>
&lt;li>Sélectionnez &lt;code>Path&lt;/code> dans les &lt;code>Variables système&lt;/code> et cliquez sur &lt;code>Modifier&lt;/code>.&lt;/li>
&lt;li>Cliquez sur &lt;code>Nouveau&lt;/code> et ajoutez le chemin du dossier contenant &lt;code>micro.exe&lt;/code>.&lt;/li>
&lt;li>Cliquez sur &lt;code>OK&lt;/code> pour fermer toutes les boîtes de dialogue.&lt;/li>
&lt;li>Redémarrez l&amp;rsquo;Invite de commandes et tapez &lt;code>nano&lt;/code> pour vérifier si vous pouvez l&amp;rsquo;exécuter.&lt;/li>
&lt;/ol>
&lt;h2 id="comment-utiliser-micro">Comment utiliser micro
&lt;/h2>&lt;p>Lorsque vous tapez &lt;code>micro&lt;/code> dans l&amp;rsquo;Invite de commandes et l&amp;rsquo;exécutez, l&amp;rsquo;écran suivant s&amp;rsquo;affiche.
&lt;img src="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_3.png"
width="962"
height="512"
srcset="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_3_hucac22a4d580735ddd83b1fd5173c3197_6852_480x0_resize_box_3.png 480w, 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_3_hucac22a4d580735ddd83b1fd5173c3197_6852_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="187"
data-flex-basis="450px"
>&lt;/p>
&lt;p>Les principales opérations et les raccourcis clavier sont les suivants :&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Raccourci clavier&lt;/th>
&lt;th>Opération&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Ctrl+Q&lt;/td>
&lt;td>Fermer le fichier&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+S&lt;/td>
&lt;td>Enregistrer le fichier&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+O&lt;/td>
&lt;td>Ouvrir un fichier&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+A&lt;/td>
&lt;td>Tout sélectionner&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+X&lt;/td>
&lt;td>Couper la sélection&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+C&lt;/td>
&lt;td>Copier la sélection&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+V&lt;/td>
&lt;td>Coller&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+Z&lt;/td>
&lt;td>Annuler&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+Y&lt;/td>
&lt;td>Rétablir&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Ctrl+E&lt;/td>
&lt;td>Exécuter la commande de l&amp;rsquo;éditeur&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="référence">Référence
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://micro-editor.github.io/" target="_blank" rel="noopener"
>micro&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Comment installer l'éditeur de texte CLI nano sur Windows</title><link>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/</link><pubDate>Sun, 31 Mar 2024 18:09:32 +0900</pubDate><guid>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/</guid><description>&lt;img src="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.png" alt="Featured image of post Comment installer l'éditeur de texte CLI nano sur Windows" />&lt;h2 id="télécharger-nanoexe">Télécharger nano.exe
&lt;/h2>&lt;p>&lt;a class="link" href="https://sourceforge.net/projects/nano-for-windows/" target="_blank" rel="noopener"
>https://sourceforge.net/projects/nano-for-windows/&lt;/a>&lt;/p>
&lt;p>Ouvrez le lien ci-dessus, cliquez sur &lt;code>Download&lt;/code> et téléchargez &lt;code>GNU-Nano_Win32(static).zip&lt;/code>.
Extrayez le fichier zip et placez &lt;code>nano.exe&lt;/code> dans n&amp;rsquo;importe quel dossier.&lt;/p>
&lt;ul>
&lt;li>La saisie en japonais n&amp;rsquo;est pas prise en charge (au 31/03/2024).&lt;/li>
&lt;/ul>
&lt;h2 id="configurer-les-variables-denvironnement">Configurer les variables d&amp;rsquo;environnement
&lt;/h2>&lt;p>Pour utiliser &lt;code>nano.exe&lt;/code> à partir de l&amp;rsquo;invite de commande, vous devez configurer les variables d&amp;rsquo;environnement.&lt;/p>
&lt;ol>
&lt;li>Appuyez sur la &lt;code>Touche Win&lt;/code> + &lt;code>Touche R&lt;/code>, tapez &lt;code>sysdm.cpl&lt;/code> et appuyez sur &lt;code>Entrée&lt;/code>.&lt;/li>
&lt;li>Cliquez sur &lt;code>Paramètres système avancés&lt;/code> dans la fenêtre Propriétés système.&lt;/li>
&lt;li>Cliquez sur &lt;code>Variables d'environnement&lt;/code>.&lt;/li>
&lt;li>Sélectionnez &lt;code>Path&lt;/code> sous &lt;code>Variables système&lt;/code> et cliquez sur &lt;code>Modifier&lt;/code>.&lt;/li>
&lt;li>Cliquez sur &lt;code>Nouveau&lt;/code> et ajoutez le chemin vers &lt;code>nano.exe&lt;/code>.&lt;/li>
&lt;li>Cliquez sur &lt;code>OK&lt;/code> pour fermer toutes les boîtes de dialogue.&lt;/li>
&lt;li>Redémarrez l&amp;rsquo;invite de commande, tapez &lt;code>nano&lt;/code> et vérifiez s&amp;rsquo;il s&amp;rsquo;exécute.&lt;/li>
&lt;/ol>
&lt;h2 id="comment-utiliser-nano">Comment utiliser nano
&lt;/h2>&lt;p>Lorsque vous tapez &lt;code>nano&lt;/code> et l&amp;rsquo;exécutez, l&amp;rsquo;écran suivant s&amp;rsquo;affiche.&lt;/p>
&lt;p>&lt;img src="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_2.png"
width="1082"
height="632"
srcset="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_2_hucb9efcdf08d2eda99abffd0a9502a2c3_16316_480x0_resize_box_3.png 480w, 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_2_hucb9efcdf08d2eda99abffd0a9502a2c3_16316_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="171"
data-flex-basis="410px"
>&lt;/p>
&lt;p>Les descriptions des raccourcis sont affichées au bas de l&amp;rsquo;écran.&lt;/p>
&lt;p>La signification des symboles est la suivante :&lt;/p>
&lt;ul>
&lt;li>&lt;code>^&lt;/code> représente la touche &lt;code>Ctrl&lt;/code>.&lt;/li>
&lt;li>&lt;code>M-&lt;/code> représente la touche &lt;code>Alt&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>Pour enregistrer et fermer, appuyez sur &lt;code>Ctrl&lt;/code> + &lt;code>S&lt;/code>, puis sur &lt;code>Ctrl&lt;/code> + &lt;code>X&lt;/code>.&lt;/p>
&lt;h2 id="référence">Référence
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.nano-editor.org/" target="_blank" rel="noopener"
>GNU nano&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Comment lancer l'éditeur Hidemaru avec la commande 'hide'</title><link>http://kenji.blog/fr/p/comment-lancer-l-editeur-hidemaru-avec-la-commande-hide/</link><pubDate>Fri, 29 Mar 2024 23:45:37 +0900</pubDate><guid>http://kenji.blog/fr/p/comment-lancer-l-editeur-hidemaru-avec-la-commande-hide/</guid><description>&lt;img src="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.png" alt="Featured image of post Comment lancer l'éditeur Hidemaru avec la commande 'hide'" />&lt;h2 id="voici-comment-lancer-léditeur-hidemaru-avec-la-commande-hide">Voici comment lancer l&amp;rsquo;éditeur Hidemaru avec la commande &amp;lsquo;hide&amp;rsquo;.
&lt;/h2>&lt;p>Remarque : Cette méthode a été testée sur &lt;code>Windows 10/11&lt;/code>.&lt;/p>
&lt;ol>
&lt;li>Ouvrez l&amp;rsquo;Éditeur du Registre.&lt;/li>
&lt;li>Accédez à &lt;code>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths&lt;/code>.&lt;/li>
&lt;li>Créez une clé nommée &lt;code>hide.exe&lt;/code> sous &lt;code>App Paths&lt;/code>. &lt;strong>La partie avant &lt;code>.exe&lt;/code> dans le nom de cette clé devient le nom de la commande.&lt;/strong>&lt;/li>
&lt;li>Définissez la valeur &lt;code>(par défaut)&lt;/code> de la clé &lt;code>hide.exe&lt;/code> sur le chemin du fichier exécutable de l&amp;rsquo;éditeur Hidemaru. Dans mon environnement, c&amp;rsquo;était &lt;code>&amp;quot;C:\Program Files (x86)\Hidemaru\Hidemaru.exe&amp;quot;&lt;/code>.&lt;/li>
&lt;li>Créez une valeur Chaîne nommée &lt;code>Path&lt;/code> dans la clé &lt;code>hide.exe&lt;/code>.&lt;/li>
&lt;li>Définissez les données de &lt;code>Path&lt;/code> sur le chemin du dossier contenant le fichier exécutable de l&amp;rsquo;éditeur Hidemaru. Dans mon environnement, c&amp;rsquo;était &lt;code>&amp;quot;C:\Program Files (x86)\Hidemaru&amp;quot;&lt;/code>.&lt;/li>
&lt;li>Maintenant, dans la boîte de dialogue &lt;strong>Exécuter&lt;/strong> (ouverte en appuyant sur la touche &lt;code>Win&lt;/code> + &lt;code>R&lt;/code>), vous pouvez lancer l&amp;rsquo;éditeur Hidemaru en utilisant la commande &lt;code>hide&lt;/code>. De plus, dans l&amp;rsquo;Invite de commandes, vous pouvez le lancer avec la commande &lt;code>start hide&lt;/code>.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Windows Registry Editor Version 5.00
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\hide.exe]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">@=&amp;#34;\&amp;#34;C:\\Program Files (x86)\\Hidemaru\\Hidemaru.exe\&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;#34;Path&amp;#34;=&amp;#34;\&amp;#34;C:\\Program Files (x86)\\Hidemaru\\\&amp;#34;&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Si vous enregistrez le contenu ci-dessus dans un fichier &lt;code>.reg&lt;/code> et que vous l&amp;rsquo;exécutez, les paramètres seront ajoutés au registre.&lt;/p>
&lt;p>&lt;img src="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_1.png"
width="399"
height="206"
srcset="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_1_hue374203b955e2a50cac4186ada52cd43_10600_480x0_resize_box_3.png 480w, 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_1_hue374203b955e2a50cac4186ada52cd43_10600_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="464px"
>&lt;/p></description></item><item><title>Installer PowerToys via l'Invite de commandes</title><link>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/</link><pubDate>Sat, 30 Sep 2023 21:23:00 +0900</pubDate><guid>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/</guid><description>&lt;img src="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.png" alt="Featured image of post Installer PowerToys via l'Invite de commandes" />&lt;h1 id="installer-powertoys-via-linvite-de-commandes">Installer PowerToys via l&amp;rsquo;Invite de commandes
&lt;/h1>&lt;p>Voici comment installer PowerToys à l&amp;rsquo;aide de l&amp;rsquo;Invite de commandes.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">winget install Microsoft.PowerToys --source winget
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="désinstaller-powertoys-via-linvite-de-commandes">Désinstaller PowerToys via l&amp;rsquo;Invite de commandes
&lt;/h1>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">winget uninstall --name PowerToys
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>À propos de la récompense Microsoft MVP (2023-2024)</title><link>http://kenji.blog/fr/p/%C3%A0-propos-de-la-r%C3%A9compense-microsoft-mvp-2023-2024/</link><pubDate>Mon, 31 Jul 2023 19:15:14 +0900</pubDate><guid>http://kenji.blog/fr/p/%C3%A0-propos-de-la-r%C3%A9compense-microsoft-mvp-2023-2024/</guid><description>&lt;img src="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.png" alt="Featured image of post À propos de la récompense Microsoft MVP (2023-2024)" />&lt;h1 id="à-propos-de-la-récompense-microsoft-mvp-2023-2024">À propos de la récompense Microsoft MVP (2023-2024)
&lt;/h1>&lt;p>J&amp;rsquo;ai le plaisir d&amp;rsquo;annoncer que j&amp;rsquo;ai reçu le prix Microsoft MVP (2023-2024).
C&amp;rsquo;est ma 7ème année consécutive de réception de ce prix depuis 2017.&lt;/p>
&lt;p>La catégorie récompensée est &lt;strong>Developer Technologies&lt;/strong> .&lt;/p>
&lt;p>En repensant à mes activités passées, j&amp;rsquo;ai participé aux éléments suivants :&lt;/p>
&lt;ul>
&lt;li>Publication de code sur &lt;a class="link" href="https://github.com/kenjinote" target="_blank" rel="noopener"
>GitHub&lt;/a>&lt;/li>
&lt;li>Partage d&amp;rsquo;informations techniques sur le blog et les &lt;a class="link" href="https://twitter.com/kenjinote" target="_blank" rel="noopener"
>réseaux sociaux (comme Twitter)&lt;/a>&lt;/li>
&lt;li>Contributions sur le &lt;a class="link" href="https://social.msdn.microsoft.com/Forums/ja-JP/home" target="_blank" rel="noopener"
>forum MSDN&lt;/a>&lt;/li>
&lt;li>Retours d&amp;rsquo;expérience sur les produits Microsoft&lt;/li>
&lt;/ul>
&lt;p>Je continuerai à faire de mon mieux pour écrire de meilleurs articles et partager des informations à l&amp;rsquo;avenir.&lt;/p>
&lt;p>Merci pour votre soutien continu.&lt;/p></description></item><item><title>Recherche de sponsors GitHub</title><link>http://kenji.blog/fr/p/recherche-de-sponsors-github/</link><pubDate>Tue, 17 Jan 2023 18:13:56 +0900</pubDate><guid>http://kenji.blog/fr/p/recherche-de-sponsors-github/</guid><description>&lt;img src="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.png" alt="Featured image of post Recherche de sponsors GitHub" />&lt;h1 id="recherche-de-sponsors-github">Recherche de sponsors GitHub
&lt;/h1>&lt;p>Je serais ravi si vous pouviez devenir sponsor GitHub via le bouton ci-dessous.&lt;/p>
&lt;iframe src="https://github.com/sponsors/kenjinote/button" title="Sponsor kenjinote" height="35" width="116" style="border: 0;">&lt;/iframe>
&lt;p>Cela sera utilisé pour le développement d&amp;rsquo;outils, etc.&lt;/p>
&lt;p>Je veux faire de mon mieux jusqu&amp;rsquo;à ce que je puisse ajouter un certificat de signature de code !&lt;/p></description></item><item><title>Installer des applications via la ligne de commande avec WinGet</title><link>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/</link><pubDate>Wed, 05 Oct 2022 12:15:20 +0900</pubDate><guid>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/</guid><description>&lt;img src="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.png" alt="Featured image of post Installer des applications via la ligne de commande avec WinGet" />&lt;h2 id="prérequis">Prérequis
&lt;/h2>&lt;p>Être sous Windows 11&lt;/p>
&lt;h2 id="procédure">Procédure
&lt;/h2>&lt;ol>
&lt;li>Installez le &lt;code>Programme d'installation d'application&lt;/code> depuis le Microsoft Store
&lt;a class="link" href="https://www.microsoft.com/store/productId/9NBLGGH4NNS1" target="_blank" rel="noopener"
>https://www.microsoft.com/store/productId/9NBLGGH4NNS1&lt;/a>&lt;/li>
&lt;li>Installez l&amp;rsquo;application dans l&amp;rsquo;invite de commande
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="n">winget&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">Google&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Chrome&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;/li>
&lt;/ol>
&lt;h2 id="principales-applications-pouvant-être-installées">Principales applications pouvant être installées
&lt;/h2>&lt;ul>
&lt;li>Google Chrome (Commande &lt;code>winget install Google.Chrome&lt;/code>)&lt;/li>
&lt;li>Microsoft Edge (Commande &lt;code>winget install Microsoft.Edge&lt;/code>)&lt;/li>
&lt;li>Microsoft Teams (Commande &lt;code>winget install Microsoft.Teams&lt;/code>)&lt;/li>
&lt;li>Microsoft Office (Commande &lt;code>winget install Microsoft.Office&lt;/code>)&lt;/li>
&lt;li>Visual Studio Code (Commande &lt;code>winget install vscode&lt;/code>)&lt;/li>
&lt;li>Slack (Commande &lt;code>winget install SlackTechnologies.Slack&lt;/code>)&lt;/li>
&lt;li>Discord (Commande &lt;code>winget install Discord.Discord&lt;/code>)&lt;/li>
&lt;li>Docker Desktop (Commande &lt;code>winget install Docker.DockerDesktop&lt;/code>)&lt;/li>
&lt;li>Git (Commande &lt;code>winget install Git&lt;/code>)&lt;/li>
&lt;li>7zip (Commande &lt;code>winget install 7zip&lt;/code>)&lt;/li>
&lt;li>VLC (Commande &lt;code>winget install VideoLAN.VLC&lt;/code>)&lt;/li>
&lt;/ul>
&lt;h2 id="référence">Référence
&lt;/h2>&lt;p>&lt;a class="link" href="https://learn.microsoft.com/fr-fr/windows/package-manager/winget/" target="_blank" rel="noopener"
>Utiliser l&amp;rsquo;outil winget pour installer et gérer des applications&lt;/a>&lt;/p>
&lt;h3 id="aparté">Aparté
&lt;/h3>&lt;p>Je pensais pouvoir installer Paint.Net aussi, mais ce n&amp;rsquo;était pas possible.&lt;/p>
&lt;p>&lt;a class="link" href="https://forums.getpaint.net/topic/118574-please-add-paintnet-to-the-available-packages-for-windows-package-manager-winget/" target="_blank" rel="noopener"
>https://forums.getpaint.net/topic/118574-please-add-paintnet-to-the-available-packages-for-windows-package-manager-winget/&lt;/a>&lt;/p></description></item><item><title>Supprimer des tags dans git</title><link>http://kenji.blog/fr/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/</link><pubDate>Sun, 02 Oct 2022 02:18:04 +0900</pubDate><guid>http://kenji.blog/fr/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/</guid><description>&lt;img src="http://kenji.blog/p/git%E3%81%A7%E3%82%BF%E3%82%B0%E3%82%92%E6%B6%88%E3%81%99/img.png" alt="Featured image of post Supprimer des tags dans git" />&lt;h1 id="supprimer-un-tag-local">Supprimer un tag local
&lt;/h1>&lt;ol>
&lt;li>Vérifiez les tags locaux existants avec &lt;code>git tag&lt;/code>.&lt;/li>
&lt;li>Supprimez le tag avec &lt;code>git tag -d v0.1.0&lt;/code>. (Spécifiez le tag que vous souhaitez supprimer à la place de &lt;code>v0.1.0&lt;/code>)&lt;/li>
&lt;/ol>
&lt;h1 id="supprimer-un-tag-distant">Supprimer un tag distant
&lt;/h1>&lt;ol>
&lt;li>Vérifiez les tags distants existants avec &lt;code>git ls-remote --tags&lt;/code>.&lt;/li>
&lt;li>Supprimez le tag distant existant avec &lt;code>git push origin --delete v0.1.0&lt;/code>. (Spécifiez le tag que vous souhaitez supprimer à la place de &lt;code>v0.1.0&lt;/code>)&lt;/li>
&lt;/ol>
&lt;h2 id="référence">Référence
&lt;/h2>&lt;p>&lt;a class="link" href="https://qumeru.com/magazine/528" target="_blank" rel="noopener"
>gitでtagをリモートとローカルで削除する方法！&lt;/a>&lt;/p></description></item></channel></rss>