<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>برمجة on kenji.blog</title><link>http://kenji.blog/ar/categories/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</link><description>Recent content in برمجة on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ar</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 27 Sep 2025 10:02:59 +0900</lastBuildDate><atom:link href="http://kenji.blog/ar/categories/%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/index.xml" rel="self" type="application/rss+xml"/><item><title>ماذا تفعل عندما لا يمكنك إلغاء اشتراك Google One (Gemini)</title><link>http://kenji.blog/ar/p/%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D9%81%D8%B9%D9%84-%D8%B9%D9%86%D8%AF%D9%85%D8%A7-%D9%84%D8%A7-%D9%8A%D9%85%D9%83%D9%86%D9%83-%D8%A5%D9%84%D8%BA%D8%A7%D8%A1-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%D9%83-google-one-gemini/</link><pubDate>Sat, 27 Sep 2025 10:02:59 +0900</pubDate><guid>http://kenji.blog/ar/p/%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D9%81%D8%B9%D9%84-%D8%B9%D9%86%D8%AF%D9%85%D8%A7-%D9%84%D8%A7-%D9%8A%D9%85%D9%83%D9%86%D9%83-%D8%A5%D9%84%D8%BA%D8%A7%D8%A1-%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%D9%83-google-one-gemini/</guid><description>&lt;img src="http://kenji.blog/p/google-one-gemini%E3%81%8C%E8%A7%A3%E7%B4%84%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post ماذا تفعل عندما لا يمكنك إلغاء اشتراك Google One (Gemini)" />&lt;h1 id="تنبيه-هل-سيتم-تحصيل-رسوم-منك-بعد-انتهاء-الفترة-التجريبية-المجانية-لـ-gemini-ملخص-لكيفية-الإلغاء">[تنبيه] هل سيتم تحصيل رسوم منك بعد انتهاء الفترة التجريبية المجانية لـ Gemini؟ ملخص لكيفية الإلغاء
&lt;/h1>&lt;p>عندما تحاول تجربة خدمة الذكاء الاصطناعي &amp;ldquo;Gemini&amp;rdquo; من Google، يتم توفير ** فترة تجريبية مجانية لمدة شهر واحد ** في البداية.
أعتقد أن الكثير من الناس يسجلون معتقدين، &amp;ldquo;إذا كان مجانيًا، فسأجربه في الوقت الحالي&amp;rdquo;، ولكن هناك شيء يجب ملاحظته هنا.&lt;/p>
&lt;hr>
&lt;h2 id="ماذا-يحدث-عند-انتهاء-الفترة-التجريبية-المجانية">ماذا يحدث عند انتهاء الفترة التجريبية المجانية؟
&lt;/h2>&lt;p>بمجرد انتهاء الفترة التجريبية، ستتم محاسبتك تلقائيًا بمبلغ ** 2,900 ين شهريًا ** .
يرتبط هذا باشتراك يسمى &amp;ldquo;عضوية Google One&amp;rdquo;، وهي آلية تنتقل إلى الفوترة المستمرة إذا لم تفعل شيئًا بشكل خاص.&lt;/p>
&lt;hr>
&lt;h2 id="إذا-قمت-بالإلغاء-فلن-يتم-تحصيل-رسوم-منك-ولكن">إذا قمت بالإلغاء فلن يتم تحصيل رسوم منك، ولكن&amp;hellip;
&lt;/h2>&lt;p>بالطبع، لن تكون هناك رسوم إذا قمت بالإلغاء خلال الفترة التجريبية.
تحتوي صفحة الشرح الرسمية أيضًا على &amp;ldquo;كيفية إلغاء عضوية Google One&amp;rdquo;.&lt;/p>
&lt;p>👉 &lt;a class="link" href="https://support.google.com/googleone/answer/9056360" target="_blank" rel="noopener"
>إلغاء عضوية Google One (الرسمي)&lt;/a>&lt;/p>
&lt;p>ومع ذلك، عندما أحاول الوصول إليه بالفعل، أجد نفسي في وضع &amp;ldquo;لسبب ما لا يمكنني الإلغاء&amp;hellip;&amp;rdquo;.
لقد كنت مرتبكًا وفكرت، &amp;ldquo;حسنًا، من أين يجب أن أوقفه؟&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="انقر-هنا-للحصول-على-طريقة-الإلغاء-الصحيحة">انقر هنا للحصول على طريقة الإلغاء الصحيحة!
&lt;/h2>&lt;p>نتيجة للبحث عن أشياء مختلفة، كانت الصفحة التالية هي المكان الذي تمكنت فيه فعليًا من الإلغاء.&lt;/p>
&lt;p>👉 &lt;a class="link" href="https://myaccount.google.com/deleteservices" target="_blank" rel="noopener"
>حساب Google - حذف الخدمات&lt;/a>&lt;/p>
&lt;p>من هنا، حدد &amp;ldquo;Google One&amp;rdquo; واحذفه لإكمال الإلغاء.&lt;/p>
&lt;hr>
&lt;h2 id="ملخص">ملخص
&lt;/h2>&lt;ul>
&lt;li>النسخة التجريبية المجانية من Gemini هي شهر واحد&lt;/li>
&lt;li>بعد الانتهاء، ستتم محاسبتك تلقائيًا ** 2,900 ين شهريًا **&lt;/li>
&lt;li>قد لا يكون من الممكن الإلغاء من صفحة الشرح الرسمية&lt;/li>
&lt;li>يمكنك الإلغاء فعليًا من ** &amp;ldquo;صفحة حذف الخدمات&amp;rdquo; **&lt;/li>
&lt;/ul>
&lt;p>إذا كنت تعتقد، &amp;ldquo;لا بأس لأنها نسخة تجريبية مجانية&amp;rdquo;، فسيتم تحصيل رسوم منك قبل أن تدرك ذلك، لذا يرجى توخي الحذر!&lt;/p>
&lt;hr>
&lt;p>👉 إذا كنت تقرأ هذا المقال، فقد تواجه مشكلة حاليًا وتتساءل &amp;ldquo;من أين أقوم بالإلغاء؟&amp;rdquo; في الوقت الحالي، يرجى التحقق من الرابط أعلاه.&lt;/p>
&lt;hr></description></item><item><title>كيفية حذف البيانات الوصفية (المعلومات الشخصية) من Excel و Word وغيرها دفعة واحدة باستخدام PowerShell</title><link>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D8%B0%D9%81-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D8%B5%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%AE%D8%B5%D9%8A%D8%A9-%D9%81%D9%8A-excel-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-powershell/</link><pubDate>Wed, 30 Jul 2025 02:42:40 +0900</pubDate><guid>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AD%D8%B0%D9%81-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D8%B5%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D9%85%D8%B9%D9%84%D9%88%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%AE%D8%B5%D9%8A%D8%A9-%D9%81%D9%8A-excel-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-powershell/</guid><description>&lt;img src="http://kenji.blog/p/powershell-%E3%81%A7-excel-%E3%81%AE%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%80%8B%E4%BA%BA%E6%83%85%E5%A0%B1%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/powershell_metadata_eyecatch_1788588033601.jpg" alt="Featured image of post كيفية حذف البيانات الوصفية (المعلومات الشخصية) من Excel و Word وغيرها دفعة واحدة باستخدام PowerShell" />&lt;h1 id="كيفية-حذف-البيانات-الوصفية-المعلومات-الشخصية-من-excel-و-word-وغيرها-دفعة-واحدة-باستخدام-powershell">كيفية حذف البيانات الوصفية (المعلومات الشخصية) من Excel و Word وغيرها دفعة واحدة باستخدام PowerShell
&lt;/h1>&lt;p>تحتوي ملفات Office مثل Excel تلقائياً على &amp;ldquo;بيانات وصفية (معلومات شخصية)&amp;rdquo; مثل اسم المنشئ، وآخر من قام بالتعديل، واسم الشركة. في كثير من الحالات، ترغب في حذف هذه المعلومات، مثل عند مشاركة الملفات خارج الشركة.&lt;/p>
&lt;p>في هذه المقالة، سنشرح بالتفصيل كيفية حذف البيانات الوصفية في Excel بشكل أساسي باستخدام PowerShell، وسنتطرق أيضاً إلى ** المعالجة المجمعة للملفات داخل مجلد ** و ** تطبيق ذلك على ملفات Office الأخرى مثل Word و PowerPoint ** .&lt;/p>
&lt;hr>
&lt;h2 id="1-حذف-البيانات-الوصفية-لملف-excel-واحد">1. حذف البيانات الوصفية لملف Excel واحد
&lt;/h2>&lt;p>هذا هو النص البرمجي الأساسي لحذف المعلومات الشخصية من ملف Excel واحد. يتم استدعاء كائن COM الخاص بـ Excel، وضبط خاصية &lt;code>RemovePersonalInformation&lt;/code> على &lt;code>$true&lt;/code> ثم حفظ التغييرات.&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;/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="c"># بدء تطبيق Excel في الوضع المخفي&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">-ComObject&lt;/span> &lt;span class="n">Excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Application&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Visible&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">DisplayAlerts&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&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="c"># فتح الملف (*يجب تحديد مسار مطلق)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$filePath&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;C:\Path\To\Your\File.xlsx&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$wb&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Workbooks&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$filePath&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="c"># تفعيل إعداد حذف البيانات الوصفية (المعلومات الشخصية)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">RemovePersonalInformation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$true&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="c"># حفظ التغييرات والإغلاق&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Save&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Close&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="vm">$false&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="c"># إنهاء Excel وتحرير الذاكرة&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Quit&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="no">System.Runtime.Interopservices.Marshal&lt;/span>&lt;span class="p">]::&lt;/span>&lt;span class="n">ReleaseComObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$excel&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Null&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>** ملاحظة ** : تأكد من تحديد ** مسار مطلق (المسار الكامل) ** للمسار الذي يتم تمريره إلى &lt;code>Workbooks.Open()&lt;/code>. قد يؤدي استخدام مسار نسبي إلى حدوث خطأ.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="2-معالجة-جميع-ملفات-excel-في-مجلد-دفعة-واحدة">2. معالجة جميع ملفات Excel في مجلد دفعة واحدة
&lt;/h2>&lt;p>في العمل الفعلي، غالباً ما تكون هناك حالات &amp;ldquo;تريد فيها حذف البيانات الوصفية لعشرات ملفات Excel الموجودة في مجلد معين دفعة واحدة&amp;rdquo;. يمكن تحقيق ذلك باستخدام حلقة تكرار مع &lt;code>Get-ChildItem&lt;/code>.&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;/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="nv">$targetFolder&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;C:\Path\To\Your\Folder&amp;#34;&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="c"># الحصول على جميع ملفات .xlsx و .xls في المجلد&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excelFiles&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">Get-ChildItem&lt;/span> &lt;span class="n">-Path&lt;/span> &lt;span class="nv">$targetFolder&lt;/span> &lt;span class="n">-Include&lt;/span> &lt;span class="s2">&amp;#34;*.xlsx&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;*.xls&amp;#34;&lt;/span> &lt;span class="n">-Recurse&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="nv">$excelFiles&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Count&lt;/span> &lt;span class="o">-eq&lt;/span> &lt;span class="mf">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="nb">Write-Host&lt;/span> &lt;span class="s2">&amp;#34;لم يتم العثور على ملفات Excel.&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">exit&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="nv">$excel&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">-ComObject&lt;/span> &lt;span class="n">Excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Application&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Visible&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">DisplayAlerts&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&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">foreach&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nv">$file&lt;/span> &lt;span class="k">in&lt;/span> &lt;span class="nv">$excelFiles&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="nb">Write-Host&lt;/span> &lt;span class="s2">&amp;#34;جاري حذف البيانات الوصفية للملف &lt;/span>&lt;span class="p">$(&lt;/span>&lt;span class="nv">$file&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Name&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="s2">...&amp;#34;&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="c"># فتح الملف&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$wb&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Workbooks&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$file&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">FullName&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="c"># حذف البيانات الوصفية وحفظ التغييرات&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">RemovePersonalInformation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Save&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nv">$wb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Close&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="vm">$false&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="nv">$excel&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Quit&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="no">System.Runtime.Interopservices.Marshal&lt;/span>&lt;span class="p">]::&lt;/span>&lt;span class="n">ReleaseComObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$excel&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Null&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="nb">Write-Host&lt;/span> &lt;span class="s2">&amp;#34;اكتملت جميع العمليات!&amp;#34;&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="3-حذف-البيانات-الوصفية-لملفات-office-الأخرى-word--powerpoint">3. حذف البيانات الوصفية لملفات Office الأخرى (Word / PowerPoint)
&lt;/h2>&lt;p>يمكنك حذف البيانات الوصفية ليس فقط في Excel ولكن أيضاً في Word و PowerPoint باستخدام نفس المنطق تماماً. الاختلاف الوحيد هو اسم كائن COM الذي يتم استدعاؤه، ولكن توفر خاصية &lt;code>RemovePersonalInformation&lt;/code> هو أمر مشترك.&lt;/p>
&lt;h3 id="في-حالة-word">في حالة Word
&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;/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="nv">$word&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">-ComObject&lt;/span> &lt;span class="n">Word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Application&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Visible&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$false&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">DisplayAlerts&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="mf">0&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="nv">$doc&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Documents&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;C:\Path\To\Your\File.docx&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="nv">$doc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">RemovePersonalInformation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$doc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Save&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$doc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Close&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="nv">$word&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Quit&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="no">System.Runtime.Interopservices.Marshal&lt;/span>&lt;span class="p">]::&lt;/span>&lt;span class="n">ReleaseComObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$word&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Null&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="في-حالة-powerpoint">في حالة PowerPoint
&lt;/h3>&lt;p>في حالة PowerPoint، يكون إعداد خاصية &lt;code>RemovePersonalInformation&lt;/code> مشابهاً، ولكن سلوك التشغيل المخفي يختلف قليلاً.&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;/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="nv">$ppt&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">New-Object&lt;/span> &lt;span class="n">-ComObject&lt;/span> &lt;span class="n">PowerPoint&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Application&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="c"># فتح العرض التقديمي بتحديد الوضع المخفي (msoFalse) وغيرها في الوسائط من الثاني إلى الرابع&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$presentation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nv">$ppt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Presentations&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;C:\Path\To\Your\File.pptx&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="vm">$false&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="vm">$false&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="vm">$false&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$presentation&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">RemovePersonalInformation&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="vm">$true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$presentation&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Save&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$presentation&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Close&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="nv">$ppt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">Quit&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="no">System.Runtime.Interopservices.Marshal&lt;/span>&lt;span class="p">]::&lt;/span>&lt;span class="n">ReleaseComObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nv">$ppt&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Out-Null&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="الخلاصة">الخلاصة
&lt;/h2>&lt;p>من خلال الاستفادة من PowerShell وكائنات COM، يمكنك أتمتة عملية حذف البيانات الوصفية من ملفات Office بالكامل. لمنع تسرب المعلومات السرية أو الأسماء الشخصية عن غير قصد، من المفيد جداً أن يكون لديك نص برمجي جاهز لمعالجة المجلدات دفعة واحدة قبل تسليم الملفات.&lt;/p></description></item><item><title>خطوات استدعاء TinyLLaMA من C++ (باستخدام llama.cpp)</title><link>http://kenji.blog/ar/p/%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D8%A7%D8%B3%D8%AA%D8%AF%D8%B9%D8%A7%D8%A1-tinyllama-%D9%85%D9%86-cpp-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-llama-cpp/</link><pubDate>Sat, 19 Jul 2025 09:40:53 +0900</pubDate><guid>http://kenji.blog/ar/p/%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D8%A7%D8%B3%D8%AA%D8%AF%D8%B9%D8%A7%D8%A1-tinyllama-%D9%85%D9%86-cpp-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-llama-cpp/</guid><description>&lt;img src="http://kenji.blog/p/tinyllama-%E3%82%92-c-%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%9B%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E6%89%8B%E9%A0%86llama.cpp%E4%BD%BF%E7%94%A8/img.png" alt="Featured image of post خطوات استدعاء TinyLLaMA من C++ (باستخدام llama.cpp)" />&lt;h1 id="-خطوات-إعداد-tinyllama--c-باستخدام-llamacpp">✅ خطوات إعداد TinyLLaMA × C++ (باستخدام &lt;code>llama.cpp&lt;/code>)
&lt;/h1>&lt;hr>
&lt;h2 id="-الخطوة-1-تجهيز-llamacpp">🔧 الخطوة 1: تجهيز llama.cpp
&lt;/h2>&lt;h3 id="1-1-البيئة-المطلوبة-الحد-الأدنى">1-1. البيئة المطلوبة (الحد الأدنى)
&lt;/h3>&lt;ul>
&lt;li>نظام التشغيل: Windows / Linux / macOS&lt;/li>
&lt;li>بيئة التطوير: g++ / clang / MSVC&lt;/li>
&lt;li>Git / CMake&lt;/li>
&lt;/ul>
&lt;h3 id="1-2-الحصول-على-llamacpp-وبناؤه">1-2. الحصول على llama.cpp وبناؤه
&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-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone https://github.com/ggerganov/llama.cpp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> llama.cpp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir build
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> build
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cmake ..
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">cmake --build . --config Release
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>إذا كنت تستخدم Windows، فمن الأسهل استخدام &lt;code>Visual Studio Developer Command Prompt&lt;/code> مع &lt;code>cmake --build . --config Release&lt;/code>.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-الخطوة-2-تنزيل-نموذج-tinyllama-وتحويله">📦 الخطوة 2: تنزيل نموذج TinyLLaMA وتحويله
&lt;/h2>&lt;h3 id="2-1-الحصول-على-النموذج-الأصلي-من-huggingface">2-1. الحصول على النموذج الأصلي من HuggingFace
&lt;/h3>&lt;p>مثال: &lt;a class="link" href="https://huggingface.co/openaccess-ai-collective/TinyLlama-1.1B-Chat-v1.0" target="_blank" rel="noopener"
>TinyLLaMA-1.1B&lt;/a>&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">&lt;span class="c1"># قم بالتنزيل باستخدام transformers إذا لزم الأمر&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install transformers huggingface_hub
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python3 -m transformers.models.llama.convert_llama_weights_to_hf &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --input_dir ./TinyLlama-1.1B-Chat &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --model_size 1B &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --output_dir ./hf_model
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>هذه هي خطوة التحويل إلى تنسيق Hugging Face.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h3 id="2-2-التحويل-إلى-تنسيق-gguf-من-أجل-llamacpp">2-2. التحويل إلى تنسيق GGUF (من أجل &lt;code>llama.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;/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">&lt;span class="nb">cd&lt;/span> llama.cpp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python3 convert.py ./hf_model --outfile tinyllama.gguf
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="2-3-تكميم-النموذج-تقليل-الحجم">2-3. تكميم النموذج (تقليل الحجم)
&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;/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">./quantize ./tinyllama.gguf ./tinyllama-q4.gguf q4_0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>&lt;code>q4_0&lt;/code> هو تكميم 4 بت. سيتم تقليل حجم النموذج إلى حوالي ** 350 ميجابايت ** تقريباً.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-الخطوة-3-استدعاء-النموذج-من-c-مثال-على-الكود">🧪 الخطوة 3: استدعاء النموذج من C++ (مثال على الكود)
&lt;/h2>&lt;h3 id="3-1-كود-c-بسيط-استدلال">3-1. كود C++ بسيط (استدلال)
&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;span class="lnt">39
&lt;/span>&lt;span class="lnt">40
&lt;/span>&lt;span class="lnt">41
&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;#34;llama.h&amp;#34;&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">&lt;/span>
&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">llama_model_params&lt;/span> &lt;span class="n">model_params&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_model_default_params&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_context_params&lt;/span> &lt;span class="n">ctx_params&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_context_default_params&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">llama_model&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">model&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_load_model_from_file&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;tinyllama-q4.gguf&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">model_params&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_context&lt;/span> &lt;span class="o">*&lt;/span>&lt;span class="n">ctx&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_new_context_with_model&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">ctx_params&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">string&lt;/span> &lt;span class="n">prompt&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s">&amp;#34;يقول المستخدم إنه يريد تحميل بيانات Excel وتصفيتها وحفظها. ما هو تكوين العقدة؟&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">llama_batch&lt;/span> &lt;span class="n">batch&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_batch_init&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">512&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_token&lt;/span> &lt;span class="n">BOS&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_token_bos&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">batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">token&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">BOS&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">// تقسيم النص إلى رموز
&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="n">llama_token&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">prompt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">8&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_tokenize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">prompt&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="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">data&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">(),&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">resize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&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">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">size_t&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">();&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&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">batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">token&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&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">batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">n_tokens&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">tokens&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_decode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctx&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">batch&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">// الحصول على نتيجة الاستدلال
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="mi">50&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&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">llama_token&lt;/span> &lt;span class="n">next&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_sample_token&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctx&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">nullptr&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">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">llama_token_to_str&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">next&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_batch&lt;/span> &lt;span class="n">next_batch&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">llama_batch_init&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">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">next_batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">token&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">next&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">next_batch&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">n_tokens&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_decode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctx&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">next_batch&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">llama_free&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ctx&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">llama_free_model&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="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="-الخطوة-4-طريقة-الترجمة-مثال">🧱 الخطوة 4: طريقة الترجمة (مثال)
&lt;/h2>&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-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">g++ -I./llama.cpp main.cpp ./llama.cpp/build/libllama.a -o tiny_infer -pthread -std&lt;span class="o">=&lt;/span>c++11
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;blockquote>
&lt;p>يتم إنشاء &lt;code>libllama.a&lt;/code> في الدليل &lt;code>build/&lt;/code> بعد البناء.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="-مثال-على-بنية-المخرجات-منظمة">✅ مثال على بنية المخرجات (منظمة)
&lt;/h2>&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-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">my_app/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── tinyllama-q4.gguf # نموذج مكمم (~350 ميجابايت)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── main.cpp # كود C++ أعلاه
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── llama.cpp/ # نواة llama.cpp
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── build/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └── libllama.a # المكتبة المترجمة
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;hr>
&lt;h2 id="-ملاحظات-للتطبيق-على-حالات-الاستخدام">🧠 ملاحظات للتطبيق على حالات الاستخدام
&lt;/h2>&lt;ul>
&lt;li>وجود كود في C++ لـ &lt;code>مطابقة وتحديد قوالب العقدة&lt;/code> بناءً على المخرجات&lt;/li>
&lt;li>مثال: إذا كان يحتوي على &amp;ldquo;Excel&amp;rdquo; ، &amp;ldquo;تصفية&amp;rdquo; ، &amp;ldquo;حفظ&amp;rdquo; -&amp;gt; إنشاء مجموعة العقدة المقابلة&lt;/li>
&lt;li>هذا الجزء مقبول بتكوين بسيط مثل &lt;code>عبارة if + تحميل قالب JSON&lt;/code>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="-الخلاصة">📌 الخلاصة
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>العنصر&lt;/th>
&lt;th>المحتوى&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>النموذج الموصى به&lt;/td>
&lt;td>TinyLLaMA-1.1B-Chat v1.0 (GGUF + تكميم)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>الحجم&lt;/td>
&lt;td>~350-450 ميجابايت (تكميم 4 بت)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>تكامل C++&lt;/td>
&lt;td>ممكن باستخدام &lt;code>llama.cpp&lt;/code> ، لا توجد تبعيات خارجية تقريبًا&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>قوة المعالجة&lt;/td>
&lt;td>كافية لفهم النوايا البسيطة وإنشاء النص (نص طبيعي -&amp;gt; تكوين)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>قابلية التوسع&lt;/td>
&lt;td>يمكن تحويله إلى ذكاء اصطناعي لإنشاء العقدة عن طريق الدمج مع ملء الفتحات واستدعاء القالب&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table></description></item><item><title>مزايا وعيوب إنشاء برامج باستخدام Win32API + C++</title><link>http://kenji.blog/ar/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</link><pubDate>Sat, 12 Jul 2025 12:30:35 +0900</pubDate><guid>http://kenji.blog/ar/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/</guid><description>&lt;img src="http://kenji.blog/p/win32api-c-%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E4%BD%9C%E3%82%8B%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88%E3%81%A8%E3%83%87%E3%83%A1%E3%83%AA%E3%83%83%E3%83%88/img_1.png" alt="Featured image of post مزايا وعيوب إنشاء برامج باستخدام Win32API + C++" />&lt;h1 id="جاذبية-وتحديات-التطوير-باستخدام-win32api--c">جاذبية وتحديات التطوير باستخدام Win32API + C++
&lt;/h1>&lt;p>بالنسبة لأولئك الذين يرغبون في إتقان تطوير تطبيقات Windows، لا يزال &lt;strong>Win32API + C++&lt;/strong> خيارا قويا.
تجمع هذه المجموعة، التي تتيح لك التفاعل مع نظام التشغيل بأقرب مسافة، بين السرعة العالية والمرونة.&lt;/p>
&lt;p>من ناحية أخرى، نظرا لأنها تختلف اختلافا كبيرا عن أساليب التطوير الحديثة، فإن إتقانها يتطلب أيضا تصميما.&lt;/p>
&lt;p>في هذه الصفحة، سنشرح المزايا والعيوب بطريقة سهلة الفهم من &lt;strong>منظور مطور تطبيقات Windows نشط&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="المزايا">المزايا
&lt;/h2>&lt;h3 id="تنفيذ-أصلي-فائق-السرعة">تنفيذ أصلي فائق السرعة
&lt;/h3>&lt;p>نظرا لأن C++ و Win32API يعملان في الطبقة الأقرب لنظام التشغيل، فلا يوجد تقريبا أي عبء إضافي.
كفاءة استخدام وحدة المعالجة المركزية والذاكرة عالية جدا، وتتميز بـ &lt;strong>سرعة تنفيذ ساحقة&lt;/strong> .&lt;/p>
&lt;h3 id="مرونة-وحرية-عالية">مرونة وحرية عالية
&lt;/h3>&lt;p>يمكنك &lt;strong>التحكم الدقيق بنفسك&lt;/strong> في كل سلوك للتطبيق، مثل التحكم في النوافذ، والمعالجة غير المتزامنة، وتكامل COM، وإدارة العمليات.
من الممكن أيضا بناء أدوات متخصصة لغرض معين، أو إطارات عمل مخصصة خاصة بك.&lt;/p>
&lt;h3 id="سهل-التوزيع-بدون-الحاجة-إلى-وقت-تشغيل">سهل التوزيع بدون الحاجة إلى وقت تشغيل
&lt;/h3>&lt;p>نظرا لعدم الحاجة إلى أوقات تشغيل خارجية مثل .NET أو Java، &lt;strong>يمكن توزيعه كملف تنفيذي واحد فقط&lt;/strong> .
من الصعب حدوث مشاكل عند إعادة التوزيع، ومن الجذاب أنه من السهل تشغيله حتى بدون مثبت.&lt;/p>
&lt;h3 id="يمكن-إنشاء-تطبيقات-خفيفة-الوزن">يمكن إنشاء تطبيقات خفيفة الوزن
&lt;/h3>&lt;p>نظرا لأنه يتطلب فقط الحد الأدنى من التكوين، فإن الميزة هي أن &lt;strong>بصمة الذاكرة صغيرة جدا&lt;/strong> .
يعمل بشكل مريح حتى على أجهزة الكمبيوتر ذات المواصفات المنخفضة وبيئات الأجهزة الافتراضية.&lt;/p>
&lt;h3 id="تحكم-متقدم-على-مستوى-نظام-التشغيل-ممكن">تحكم متقدم على مستوى نظام التشغيل ممكن
&lt;/h3>&lt;p>يمكن أيضا تحقيق &lt;strong>تحكم يصعب باستخدام اللغات والمكتبات العادية&lt;/strong> ، مثل الخطافات العالمية للماوس ولوحة المفاتيح، والضبط الدقيق لأنماط النوافذ، وعمليات قائمة النظام.&lt;/p>
&lt;hr>
&lt;h2 id="العيوب">العيوب
&lt;/h2>&lt;h3 id="كفاءة-تطوير-منخفضة">كفاءة تطوير منخفضة
&lt;/h3>&lt;p>يجب أن يتم بناء واجهة المستخدم الرسومية بالكامل من خلال الكود، و &lt;strong>قد يتطلب إنشاء زر واحد عشرات الأسطر من التعليمات البرمجية&lt;/strong> .
تعديل التصميم عند التغيير مرهق أيضا، والإنتاجية منخفضة مقارنة بالتطوير باستخدام أطر عمل واجهة المستخدم.&lt;/p>
&lt;h3 id="الصيانة-تميل-إلى-الانخفاض">الصيانة تميل إلى الانخفاض
&lt;/h3>&lt;p>يحتوي على الكثير من &lt;strong>التعليمات البرمجية ذات البنية الخاصة&lt;/strong> ، مثل حلقات الرسائل وإجراءات النوافذ، مما يجعل من الصعب قراءتها وإعادة استخدامها.
هناك أيضا جوانب تجعلها غير مناسبة لتطوير الفريق أو الصيانة طويلة الأجل.&lt;/p>
&lt;h3 id="التكيف-مع-واجهة-المستخدم-الحديثة-مرهق">التكيف مع واجهة المستخدم الحديثة مرهق
&lt;/h3>&lt;p>&lt;strong>من الصعب التكيف مع تجربة المستخدم المطلوبة في السنوات الأخيرة&lt;/strong> ، مثل دعم DPI العالي، وواجهة اللمس، وإمكانية الوصول، والوضع المظلم.
يجب معالجة كل منها يدويا، الأمر الذي يتطلب الكثير من الجهد.&lt;/p>
&lt;h3 id="غير-مدعوم-عبر-المنصات">غير مدعوم عبر المنصات
&lt;/h3>&lt;p>نظرا لأنها واجهة برمجة تطبيقات مخصصة بالكامل لـ Windows، &lt;strong>لا يمكن نقلها إلى macOS أو Linux&lt;/strong> .
إذا كنت تتوقع النشر عبر منصات متعددة، فستحتاج إلى اختيار تقنية أخرى.&lt;/p>
&lt;h3 id="تكلفة-تعلم-عالية-جدا">تكلفة تعلم عالية جدا
&lt;/h3>&lt;p>يجب أن تفهم &lt;strong>المفاهيم والآليات التي نادرا ما تستخدم اليوم&lt;/strong> ، مثل المقابض، و GDI، و COM، و OLE.
العديد من المستندات قديمة أيضا، ويتطلب التعلم وقتا وصبرا.&lt;/p>
&lt;hr>
&lt;h2 id="الاستخدامات-المناسبة">الاستخدامات المناسبة
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>أدوات خفيفة الوزن&lt;/strong> مثل مشغلات الملفات ومساعدات مفاتيح الاختصار&lt;/li>
&lt;li>&lt;strong>أدوات النظام المساعدة&lt;/strong> مثل معالجة الحافظة والتحكم في IME&lt;/li>
&lt;li>&lt;strong>تطبيقات نظام التحكم الأصلي&lt;/strong> مثل الخطافات العالمية والتقاط النوافذ&lt;/li>
&lt;li>&lt;strong>أدوات مساعدة السائق&lt;/strong> التي ترتبط ارتباطا وثيقا بالأجهزة&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="الاستخدامات-غير-المناسبة">الاستخدامات غير المناسبة
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>التطبيقات الموجهة للمستهلكين العاديين&lt;/strong> حيث يتم التركيز على واجهة المستخدم / تجربة المستخدم الحديثة&lt;/li>
&lt;li>&lt;strong>النماذج الأولية وتطوير MVP&lt;/strong> حيث يتم تحديد الأولويات للسرعة&lt;/li>
&lt;li>&lt;strong>مشاريع واسعة النطاق&lt;/strong> تعتمد على التشغيل طويل الأجل وتطوير الفريق&lt;/li>
&lt;li>&lt;strong>المنتجات عبر المنصات&lt;/strong> التي تحتاج إلى دعم أنظمة تشغيل متعددة&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="ملخص-التقييم">ملخص التقييم
&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>الجانب&lt;/th>
&lt;th>التقييم&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>سرعة التنفيذ&lt;/td>
&lt;td>◎ سريع جدا&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>كفاءة الذاكرة&lt;/td>
&lt;td>◎ ممتاز&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>سرعة التطوير&lt;/td>
&lt;td>× بطيء&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>الصيانة&lt;/td>
&lt;td>× منخفض&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>دعم عبر المنصات&lt;/td>
&lt;td>× غير مدعوم&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>دعم واجهة المستخدم الحديثة&lt;/td>
&lt;td>× ضعيف&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>حرية تحكم نظام التشغيل&lt;/td>
&lt;td>◎ عالية جدا&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="الخاتمة">الخاتمة
&lt;/h2>&lt;p>&lt;strong>Win32API + C++ أداة مناسبة للمطورين الذين &amp;ldquo;يريدون التعامل مع كل شيء في نظام التشغيل بأنفسهم&amp;rdquo;.&lt;/strong>
في حين أن قوتها كبيرة جدا، إلا أن التعلم والتشغيل يتطلبان استعدادا مقابلا.&lt;/p>
&lt;blockquote>
&lt;p>ما إذا كان الأمر يستحق &amp;ldquo;الخيار المتعمد&amp;rdquo; يعتمد على طبيعة التطبيق الذي تهدف إليه.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>القفز إلى عالم &lt;code>#include &amp;lt;windows.h&amp;gt;&lt;/code> دون الاعتماد على أطر عمل واجهة المستخدم الرسومية أو اللغات الحديثة ――
هذا الاختيار لا يزال مهما كما كان دائما.&lt;/p></description></item><item><title>FizzBuzz</title><link>http://kenji.blog/ar/p/fizzbuzz/</link><pubDate>Fri, 18 Apr 2025 00:58:11 +0900</pubDate><guid>http://kenji.blog/ar/p/fizzbuzz/</guid><description>&lt;img src="http://kenji.blog/p/fizzbuzz/img.png" alt="Featured image of post FizzBuzz" />&lt;h2 id="ما-هو-fizzbuzz-في-النهاية">ما هو FizzBuzz في النهاية؟
&lt;/h2>&lt;p>مرحباً!&lt;/p>
&lt;p>اليوم أود أن أكتب عن &amp;ldquo;FizzBuzz&amp;rdquo;.&lt;/p>
&lt;p>سواء كنت شخصاً يقول &amp;ldquo;آه، أعرف ذلك!&amp;quot;، أو شخصاً يقول &amp;ldquo;سمعت عنه نوعاً ما، لكنني لا أفهمه حقاً&amp;rdquo;، يرجى البقاء معي لبعض الوقت. يمكنك قراءته في بضع دقائق، وربما تجعلك تفكر &amp;ldquo;أفهم ذلك الآن&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="هل-صحيح-أنك-لست-مبرمجا-إذا-لم-تستطع-كتابة-fizzbuzz">هل صحيح أنك &amp;ldquo;لست مبرمجاً إذا لم تستطع كتابة FizzBuzz&amp;rdquo;؟
&lt;/h3>&lt;p>بشكل تقريبي، هذا هو FizzBuzz.&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&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">101&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">15&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="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;FizzBuzz&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="k">elif&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&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="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Fizz&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="k">elif&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">5&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="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Buzz&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="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&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>نعم، هذه هي &amp;ldquo;مشكلة FizzBuzz&amp;rdquo; الشهيرة.&lt;/p>
&lt;p>أنت تنظر إلى الأرقام من 1 إلى 100 بالترتيب،&lt;br>
إذا كانت من مضاعفات العدد 3، فقم بطباعة &amp;ldquo;Fizz&amp;rdquo;، وإذا كانت من مضاعفات العدد 5، فقم بطباعة &amp;ldquo;Buzz&amp;rdquo;،&lt;br>
وإذا كانت من مضاعفات كليهما، فقم بطباعة &amp;ldquo;FizzBuzz&amp;rdquo;. إنه أمر بسيط للغاية.&lt;/p>
&lt;p>ومع ذلك، لسبب ما، غالباً ما يتم التعامل معها على أنها &amp;ldquo;اختبار كحد أدنى للمبرمجين&amp;rdquo;. يتم تقديمها في المقابلات، وهناك أحياناً تعليقات متعالية على وسائل التواصل الاجتماعي مثل &amp;ldquo;الأشخاص الذين لا يستطيعون حتى كتابة FizzBuzz&amp;hellip;&amp;rdquo;.&lt;/p>
&lt;p>لكن انتظر دقيقة.&lt;/p>
&lt;p>هل يمكننا حقاً القول &amp;ldquo;لا يمكنك كتابة FizzBuzz = لا يمكنك البرمجة&amp;rdquo;؟&lt;/p>
&lt;hr>
&lt;h3 id="لا-يتعلق-الأمر-بما-إذا-كان-بإمكانك-القيام-بذلك-بل-ما-إذا-كان-لديك-الحالة-للقيام-بذلك">لا يتعلق الأمر بما إذا كان بإمكانك القيام بذلك، بل ما إذا كان لديك &amp;ldquo;الحالة&amp;rdquo; للقيام بذلك
&lt;/h3>&lt;p>بالتأكيد، تتطلب مشكلة FizzBuzz فهماً للقواعد والتفكير المنطقي الأساسي. لذلك من المنطقي استخدامها &amp;ldquo;للتحقق من الأساسيات&amp;rdquo;.&lt;/p>
&lt;p>لكن مهلاً.&lt;/p>
&lt;p>إذا كانت البيئة مختلفة، فإن النتائج ستكون مختلفة.&lt;/p>
&lt;p>على سبيل المثال،&lt;/p>
&lt;ul>
&lt;li>عندما تكون متوتراً أمام محاور تقابله لأول مرة&lt;/li>
&lt;li>عندما يتم تسليمك فجأة سبورة بيضاء وليس لديك محرر نصوص في متناول يدك&lt;/li>
&lt;li>عندما لا تستطيع التذكر فجأة &amp;ldquo;مهلاً، ما هو modulo مرة أخرى؟&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>&amp;hellip; ألا تحدث أشياء كهذه؟ نحن بشر بعد كل شيء. أعتقد أن ذلك يحدث.&lt;/p>
&lt;p>لذا، بدلاً من &amp;ldquo;ما إذا كان بإمكانك كتابة FizzBuzz&amp;rdquo;، أعتقد أن الأهم حقاً هو &amp;ldquo;ما إذا كان يمكنك وضع نفسك في حالة يمكنك فيها كتابة FizzBuzz&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="فخ-النصيحة-الشائعة-ما-عليك-سوى-التدرب-وستكون-بخير">فخ النصيحة الشائعة &amp;ldquo;ما عليك سوى التدرب وستكون بخير&amp;rdquo;
&lt;/h3>&lt;p>عندما يتعلق الأمر بهذا الموضوع، غالباً ما تظهر نصيحة &amp;ldquo;لذا تدرب كل يوم!&amp;rdquo;.&lt;/p>
&lt;p>بالتأكيد، من الصحيح أن التدريب المتكرر سيسمح لك بالكتابة بطلاقة، وهذا في حد ذاته أمر جيد. ومع ذلك، إذا بدأت بافتراض أنك &amp;ldquo;فاشل إذا لم تتمكن من كتابة FizzBuzz&amp;rdquo;، فقد يتحول الأمر ببساطة إلى خوف.&lt;/p>
&lt;p>بمعنى آخر، من السهل الوقوع في هيكل حيث تشعر &amp;ldquo;لقد ارتكبت خطأ = أنا لست جيداً&amp;rdquo;.&lt;/p>
&lt;p>على سبيل المثال، في الأيام التي تنام فيها متأخراً، ألا تميل إلى الاعتقاد &amp;ldquo;أنا كسول&amp;hellip;&amp;quot;؟ لكن قد يكون جسدك متعباً فقط بالصدفة.&lt;/p>
&lt;p>الشيء نفسه ينطبق على FizzBuzz.&lt;/p>
&lt;hr>
&lt;h3 id="مع-ذلك-fizzbuzz-لا-يزال-سؤالا-جيدا-حقا">مع ذلك، FizzBuzz لا يزال سؤالاً جيداً حقاً
&lt;/h3>&lt;p>مع ذلك، فإن FizzBuzz ليس سيئاً.&lt;/p>
&lt;p>بدلاً من ذلك، أعتقد أنه سؤال مدروس جيداً. القواعد بسيطة، ومن السهل توسيعها. على سبيل المثال، إذا قمت بتغييره على هذا النحو، فإن التفكير يتعمق أكثر.&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-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&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">101&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&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">output&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34;Fizz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">5&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">output&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34;Buzz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">i&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>هذا مثال يوضح أنه &amp;ldquo;يمكنك كتابته بدون if-elif-else&amp;rdquo;. إنه ذكي قليلاً، أليس كذلك؟&lt;/p>
&lt;p>بعبارة أخرى، لا يقتصر دور FizzBuzz على التحقق &amp;ldquo;ما إذا كان بإمكانك القيام بذلك&amp;rdquo;، بل يمكن أن يكون أيضاً نقطة دخول لمعرفة &amp;ldquo;كيف تكتبه&amp;rdquo; و &amp;ldquo;إلى أي مدى تفهمه&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="في-الختام">في الختام
&lt;/h3>&lt;p>أعتقد أنه لا ينبغي لنا أن نعطي أهمية مفرطة لما إذا كان بإمكان شخص ما إكمال FizzBuzz.&lt;/p>
&lt;p>حتى لو لم تتمكن من كتابته، فقد يعني ذلك ببساطة أنك &amp;ldquo;لم تكن في حالة جيدة في تلك اللحظة&amp;rdquo;، وغالباً ما يمكنك القيام بذلك إذا فكرت في الأمر بعناية لاحقاً.&lt;/p>
&lt;p>لا تتسرع، فلنأخذ الأمور ببطء.&lt;/p>
&lt;p>الكود مكتوب بواسطة بشر. لأننا بشر، ننسى الأشياء أحياناً، وأحياناً نشعر بالتوتر. أعتقد أنه يكفي أن نتقبل ذلك ونمضي قدماً شيئاً فشيئاً.&lt;/p>
&lt;p>حسناً إذن، دعونا نأخذ الأمور ببساطة ونكتب بعض الأكواد اليوم.&lt;/p></description></item><item><title>برج هانوي</title><link>http://kenji.blog/ar/p/%D8%A8%D8%B1%D8%AC-%D9%87%D8%A7%D9%86%D9%88%D9%8A/</link><pubDate>Thu, 17 Apr 2025 22:23:14 +0900</pubDate><guid>http://kenji.blog/ar/p/%D8%A8%D8%B1%D8%AC-%D9%87%D8%A7%D9%86%D9%88%D9%8A/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%8F%E3%83%8E%E3%82%A4%E3%81%AE%E5%A1%94/img.png" alt="Featured image of post برج هانوي" />&lt;h1 id="برج-هانوي">برج هانوي
&lt;/h1>&lt;p>مرحباً!&lt;/p>
&lt;p>اليوم أود التحدث عن &amp;ldquo;برج هانوي&amp;rdquo; مع تقديم مثال لبرنامج باستخدام لغة Python.&lt;/p>
&lt;hr>
&lt;h2 id="ما-هو-برج-هانوي">ما هو برج هانوي؟
&lt;/h2>&lt;p>برج هانوي هو لغز يتكون من ثلاثة أعمدة وعدة أقراص. تختلف الأقراص في الحجم، وفي البداية تكون مكدسة على عمود واحد بترتيب تنازلي للحجم من الأسفل إلى الأعلى. القواعد هي كما يلي:&lt;/p>
&lt;ol>
&lt;li>يمكن نقل قرص واحد فقط في كل مرة.&lt;/li>
&lt;li>لا يمكن وضع قرص كبير فوق قرص أصغر منه.&lt;/li>
&lt;/ol>
&lt;p>يُعتبر هذا اللغز مادة ممتازة لتعلم التفكير العودي (Recursion). العودية هي طريقة لحل مشكلة عن طريق تقسيمها إلى مشاكل أصغر من نفس النوع. في برج هانوي، لتحريك n من الأقراص، نكرر عملية تحريك n-1 من الأقراص.&lt;/p>
&lt;hr>
&lt;h2 id="دعونا-نحل-برج-هانوي-باستخدام-python">دعونا نحل برج هانوي باستخدام Python
&lt;/h2>&lt;p>فيما يلي نموذج لشفرة برمجية بلغة Python لحل لغز برج هانوي.&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Move disk 1 from &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> to &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&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="k">return&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Move disk &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> from &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> to &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">target&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&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">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">auxiliary&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">target&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">source&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"># مثال: تحريك 3 أقراص من A إلى C&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">hanoi&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;A&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;C&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;B&amp;#39;&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>في هذه الشفرة، يتم استدعاء الدالة &lt;code>hanoi&lt;/code> بشكل عودي، وتُعرض خطوات تحريك الأقراص. على سبيل المثال، في حالة وجود 3 أقراص، سيتم الحصول على المخرجات التالية:&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-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Move disk 1 from A to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 2 from A to B
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from C to B
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 3 from A to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from B to A
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 2 from B to C
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Move disk 1 from A to C
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>بهذه الطريقة، باستخدام النهج العودي، يمكن حل المشاكل المعقدة ببساطة.&lt;/p>
&lt;hr>
&lt;h2 id="كم-من-الوقت-يستغرق-تحريك-64-قرصا">كم من الوقت يستغرق تحريك 64 قرصاً؟
&lt;/h2>&lt;p>الحد الأدنى لعدد الحركات في برج هانوي هو 2^n - 1 حركة. هذا يعني أنه لتحريك 64 قرصاً، يجب القيام بـ 2^64 - 1، أي حوالي 1.84×10^19 حركة. حتى لو كان بإمكاننا القيام بحركة واحدة كل ثانية، سيستغرق الأمر حوالي 584 مليار سنة. هذا يعادل تقريباً 42 ضعف عمر الكون (حوالي 13.7 مليار سنة).&lt;/p>
&lt;p>لذلك، مع زيادة عدد الأقراص، يزداد عدد الحركات المطلوبة بشكل أُسّي. وبالتالي، فإن تحريك 64 قرصاً فعلياً ليس أمراً واقعياً.&lt;/p>
&lt;hr>
&lt;h2 id="خاتمة">خاتمة
&lt;/h2>&lt;p>برج هانوي هو لغز ممتاز لتعلم التفكير العودي. باستخدام Python، يمكن بسهولة تنفيذ حله. ومع ذلك، يجب الحذر لأن عدد الحركات المطلوبة يزداد بشكل كبير مع زيادة عدد الأقراص.&lt;/p>
&lt;p>من خلال فهم النهج العودي وكتابة الشفرة بنفسك، يمكنك تحسين مهاراتك في البرمجة. لا تتردد في خوض تحدي برج هانوي.&lt;/p>
&lt;hr></description></item><item><title>مقتطفات كود بايثون</title><link>http://kenji.blog/ar/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/</link><pubDate>Mon, 24 Feb 2025 18:21:14 +0900</pubDate><guid>http://kenji.blog/ar/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/</guid><description>&lt;img src="http://kenji.blog/p/python%E3%82%B3%E3%83%BC%E3%83%89%E7%89%87/img.png" alt="Featured image of post مقتطفات كود بايثون" />&lt;p>مقدمة لنموذج كود باستخدام المكتبة القياسية.&lt;/p>
&lt;h1 id="تنزيل-وعرض-صورة">تنزيل وعرض صورة
&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;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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">urllib.request&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">tempfile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">os&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">webbrowser&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">time&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">url&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;https://www.aomori-ringo.or.jp/kids/wp-content/uploads/2021/11/apple.png&amp;#34;&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="k">with&lt;/span> &lt;span class="n">urllib&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">request&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">urlopen&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">img_data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">response&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read&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"># حفظ في ملف مؤقت وعرضه&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="n">tempfile&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">NamedTemporaryFile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">delete&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">False&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">suffix&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;.png&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">tmp&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">img_data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;file://&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&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">webbrowser&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">open&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;file://&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">tmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&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">time&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sleep&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">except&lt;/span> &lt;span class="ne">Exception&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">e&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;حدث خطأ: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">e&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&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="k">finally&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="s1">&amp;#39;tmp&amp;#39;&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">locals&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">os&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">unlink&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">tmp&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># حذف الملف المؤقت&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>استدعاء واجهة برمجة تطبيقات ChatGPT من curl</title><link>http://kenji.blog/ar/p/%D8%A7%D8%B3%D8%AA%D8%AF%D8%B9%D8%A7%D8%A1-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-chatgpt-%D9%85%D9%86-curl/</link><pubDate>Sat, 01 Feb 2025 17:15:34 +0900</pubDate><guid>http://kenji.blog/ar/p/%D8%A7%D8%B3%D8%AA%D8%AF%D8%B9%D8%A7%D8%A1-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-chatgpt-%D9%85%D9%86-curl/</guid><description>&lt;img src="http://kenji.blog/p/chatgpt-api%E3%82%92curl%E3%81%8B%E3%82%89%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99/img.png" alt="Featured image of post استدعاء واجهة برمجة تطبيقات ChatGPT من curl" />&lt;h1 id="استدعاء-واجهة-برمجة-تطبيقات-chatgpt-من-curl">استدعاء واجهة برمجة تطبيقات ChatGPT من curl
&lt;/h1>&lt;p>يفترض هذا استدعاءه من موجه أوامر Windows.&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">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">curl https://api.openai.com/v1/chat/completions -H &amp;#34;Content-Type: application/json&amp;#34; -H &amp;#34;Authorization: Bearer sk-proj-XXXXXXXXXXXXXXXXXXXX&amp;#34; -d &amp;#34;{&amp;#34;&amp;#34;model&amp;#34;&amp;#34;: &amp;#34;&amp;#34;gpt-3.5-turbo&amp;#34;&amp;#34;,&amp;#34;&amp;#34;messages&amp;#34;&amp;#34;: [{&amp;#34;&amp;#34;role&amp;#34;&amp;#34;: &amp;#34;&amp;#34;system&amp;#34;&amp;#34;, &amp;#34;&amp;#34;content&amp;#34;&amp;#34;: &amp;#34;&amp;#34;يرجى الإجابة بلهجة كانساي.&amp;#34;&amp;#34;}, {&amp;#34;&amp;#34;role&amp;#34;&amp;#34;: &amp;#34;&amp;#34;user&amp;#34;&amp;#34;, &amp;#34;&amp;#34;content&amp;#34;&amp;#34;: &amp;#34;&amp;#34;أدخل الرسالة التي تريد إرسالها هنا&amp;#34;&amp;#34;}]}&amp;#34;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>لا يحتاج LoadIcon إلى استدعاء DestroyIcon</title><link>http://kenji.blog/ar/p/loadicon%E3%81%AFdestroyicon%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%AF%E3%81%AA%E3%81%84/</link><pubDate>Fri, 19 Apr 2024 01:55:17 +0900</pubDate><guid>http://kenji.blog/ar/p/loadicon%E3%81%AFdestroyicon%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%AF%E3%81%AA%E3%81%84/</guid><description>&lt;h1 id="الحاجة-إلى-استدعاء-destroyicon">الحاجة إلى استدعاء DestroyIcon
&lt;/h1>&lt;p>يجب استدعاء DestroyIcon في الحالات التالية:&lt;/p>
&lt;ul>
&lt;li>CreateIconFromResourceEx (عند استدعائه بدون علامة LR_SHARED)&lt;/li>
&lt;li>CreateIconIndirect&lt;/li>
&lt;li>CopyIcon&lt;/li>
&lt;/ul>
&lt;p>عند إنشائها بواسطة الوظائف المذكورة أعلاه.&lt;/p>
&lt;ul>
&lt;li>LoadIcon&lt;/li>
&lt;li>LoadImage (عند استخدام علامة LR_SHARED)&lt;/li>
&lt;li>CopyImage (عند استخدام علامة LR_COPYRETURNORG، ويكون المعلمة hImage أيقونة مشتركة)&lt;/li>
&lt;li>CreateIconFromResource&lt;/li>
&lt;li>CreateIconFromResourceEx (عند استخدام علامة LR_SHARED)&lt;/li>
&lt;/ul>
&lt;p>يجب ألا تستدعي الأيقونات التي تم إنشاؤها وتحميلها في الحالات المذكورة أعلاه DestroyIcon.&lt;/p>
&lt;h3 id="مراجع">مراجع
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://learn.microsoft.com/ja-JP/windows/win32/api/winuser/nf-winuser-destroyicon" target="_blank" rel="noopener"
>وظيفة DestroyIcon (winuser.h)&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>مجموعة خطوط للبرمجة</title><link>http://kenji.blog/ar/p/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D8%A9-%D8%AE%D8%B7%D9%88%D8%B7-%D9%84%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</link><pubDate>Sat, 30 Mar 2024 02:21:31 +0900</pubDate><guid>http://kenji.blog/ar/p/%D9%85%D8%AC%D9%85%D9%88%D8%B9%D8%A9-%D8%AE%D8%B7%D9%88%D8%B7-%D9%84%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/</guid><description>&lt;img src="http://kenji.blog/p/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E9%9B%86/img.png" alt="Featured image of post مجموعة خطوط للبرمجة" />&lt;h2 id="jetbrains-mono">JetBrains Mono
&lt;/h2>&lt;p>إنه خط برمجة مفتوح المصدر مقدم من JetBrains.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://www.jetbrains.com/ja-jp/lp/mono/" target="_blank" rel="noopener"
>https://www.jetbrains.com/ja-jp/lp/mono/&lt;/a>&lt;/p>
&lt;h2 id="hackgen">HackGen
&lt;/h2>&lt;p>Hakugen (HackGen) هو خط برمجة تم إنشاؤه من خلال دمج الخط الإنجليزي Hack المخصص للبرمجة مع خط Genjyuu Gothic، وهو خط مشتق من Source Han Sans.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://github.com/yuru7/HackGen/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/HackGen/releases&lt;/a>&lt;/p>
&lt;h2 id="ricty-diminished">Ricty Diminished
&lt;/h2>&lt;p>&lt;code>Ricty Diminished&lt;/code> هو خط شقيق لـ &lt;code>Ricty&lt;/code>، وهو خط تم إنشاؤه بدمج &lt;code>Inconsolata&lt;/code> و &lt;code>Circle M+ 1m&lt;/code> باستخدام برنامج نصي لإنشاء &lt;code>Ricty&lt;/code> بدلاً من &lt;code>Inconsolata&lt;/code> و &lt;code>Migu 1M&lt;/code>. نظراً لأنه لا يحتوي على رموز IPA Gothic، فإن عدد رموز الكانجي القابلة للاستخدام قليل، ولكن في المقابل يمكن توزيعه بموجب ترخيص &lt;code>SIL Open Font License&lt;/code>.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://rictyfonts.github.io/diminished" target="_blank" rel="noopener"
>https://rictyfonts.github.io/diminished&lt;/a>&lt;/p>
&lt;h2 id="cica">Cica
&lt;/h2>&lt;p>خط برمجة يستخدم &lt;code>Hack&lt;/code> + &lt;code>DejaVu Sans Mono&lt;/code> للأحرف والأرقام الإنجليزية والرموز.
ويستخدم &lt;code>Rounded Mgen+&lt;/code> للأحرف الأخرى.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://github.com/miiton/Cica/releases" target="_blank" rel="noopener"
>https://github.com/miiton/Cica/releases&lt;/a>&lt;/p>
&lt;p>مرجع:&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://sourcefoundry.org/hack/" target="_blank" rel="noopener"
>Hack&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://dejavu-fonts.github.io/" target="_blank" rel="noopener"
>DejaVu Sans Mono&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="http://jikasei.me/font/rounded-mgenplus/" target="_blank" rel="noopener"
>Rounded Mgen+&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="migu">Migu
&lt;/h2>&lt;p>إنه خط مدمج من M+ و IPA.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://itouhiro.github.io/mixfont-mplus-ipa/migu/" target="_blank" rel="noopener"
>https://itouhiro.github.io/mixfont-mplus-ipa/migu/&lt;/a>&lt;/p>
&lt;h2 id="osaka">Osaka
&lt;/h2>&lt;p>إنه خط يتيح لك استخدام &lt;code>Osaka&lt;/code>، وهو خط قياسي في Mac OS، على نظام Windows.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/" target="_blank" rel="noopener"
>http://ifs.nog.cc/osakattf.hp.infoseek.co.jp/&lt;/a>&lt;/p>
&lt;h2 id="plemoljp">PlemolJP
&lt;/h2>&lt;p>إنه خط برمجة يجمع بين خط &lt;code>IBM Plex Sans JP&lt;/code> الياباني مفتوح المصدر الذي أصدرته IBM و &lt;code>IBM Plex Mono&lt;/code> من سلسلة Plex الخاصة بـ IBM.&lt;/p>
&lt;p>تنزيل: &lt;a class="link" href="https://github.com/yuru7/PlemolJP/releases" target="_blank" rel="noopener"
>https://github.com/yuru7/PlemolJP/releases&lt;/a>&lt;/p></description></item><item><title>كيفية إخراج الوقت الحالي بتنسيق ISO8601 في C++</title><link>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%AE%D8%B1%D8%A7%D8%AC-%D8%A7%D9%84%D9%88%D9%82%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D9%84%D9%8A-%D8%A8%D8%AA%D9%86%D8%B3%D9%8A%D9%82-iso8601-%D9%81%D9%8A-c-/</link><pubDate>Sat, 15 Apr 2023 19:35:27 +0900</pubDate><guid>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D8%AE%D8%B1%D8%A7%D8%AC-%D8%A7%D9%84%D9%88%D9%82%D8%AA-%D8%A7%D9%84%D8%AD%D8%A7%D9%84%D9%8A-%D8%A8%D8%AA%D9%86%D8%B3%D9%8A%D9%82-iso8601-%D9%81%D9%8A-c-/</guid><description>&lt;img src="http://kenji.blog/p/c-%E3%81%A7%E7%8F%BE%E5%9C%A8%E6%99%82%E5%88%BB%E3%82%92iso8601%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E5%87%BA%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post كيفية إخراج الوقت الحالي بتنسيق ISO8601 في C++" />&lt;h3 id="المتطلبات-الأساسية">المتطلبات الأساسية
&lt;/h3>&lt;ul>
&lt;li>معيار ISO C++ 20 (/std:c++20)&lt;/li>
&lt;/ul>
&lt;h3 id="الشفرة">الشفرة
&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-c++" data-lang="c++">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;chrono&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;format&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="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">string&lt;/span> &lt;span class="n">datetime&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">format&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;{:%FT%TZ}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">system_clock&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">now&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>هذه كانت طريقة إخراج الوقت الحالي بتنسيق ISO8601 في C++.&lt;/p>
&lt;h3 id="مراجع">مراجع
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://eel.is/c&amp;#43;&amp;#43;draft/time.format" target="_blank" rel="noopener"
>std::format&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>【حسب اللغة】ملخص بيئات تنفيذ الأكواد عبر الإنترنت</title><link>http://kenji.blog/ar/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</link><pubDate>Sun, 09 Apr 2023 14:01:00 +0900</pubDate><guid>http://kenji.blog/ar/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E5%AE%9F%E8%A1%8C%E7%92%B0%E5%A2%83%E3%81%BE%E3%81%A8%E3%82%81/img.png" alt="Featured image of post 【حسب اللغة】ملخص بيئات تنفيذ الأكواد عبر الإنترنت" />&lt;h2 id="python">Python
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://colab.research.google.com/#create=true" target="_blank" rel="noopener"
>Google Colaboratory&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة Google Colaboratory هي بيئة لتنفيذ Python يمكن تشغيلها عبر الإنترنت.&lt;/p>
&lt;ul>
&lt;li>يمكن أيضاً استخدام GPU.&lt;/li>
&lt;li>باستخدام دفاتر Colab، يمكنك كتابة كود قابل للتنفيذ ونص غني (مثل الصور و HTML و LaTeX وما إلى ذلك) في مستند واحد.&lt;/li>
&lt;/ul>
&lt;p>وهي مبنية على Jupyter Notebook.&lt;/p>
&lt;h2 id="rust">Rust
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.rust-lang.org/?version=stable&amp;amp;mode=debug&amp;amp;edition=2021" target="_blank" rel="noopener"
>Rust Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="javascript">JavaScript
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://playcode.io/" target="_blank" rel="noopener"
>Javascript Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="java">Java
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/ja/projects/new?language=java" target="_blank" rel="noopener"
>paiza.IO Online Java compiler&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="haskell">Haskell
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://play.haskell.org/" target="_blank" rel="noopener"
>Haskell Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="swift">Swift
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://online.swiftplayground.run/" target="_blank" rel="noopener"
>Online Swift Playground&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="c">C++
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://www.onlinegdb.com/online_c&amp;#43;&amp;#43;_compiler" target="_blank" rel="noopener"
>C++ 14&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="أخرى">أخرى
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://aws.amazon.com/jp/cloud9/" target="_blank" rel="noopener"
>AWS Cloud9&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تطوير متكاملة عبر الإنترنت تقدمها Amazon AWS. تأتي مع أدوات مجمعة مسبقاً لأكثر من 40 لغة برمجة مثل Node.js و JavaScript و Python و PHP و Ruby و Go و C++ وغيرها.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://vscode.dev/" target="_blank" rel="noopener"
>Visual Studio Code for the Web&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تطوير عبر الإنترنت تقدمها Microsoft. ومع ذلك، لا يمكن تنفيذ أو تصحيح اللغات التي تتطلب تجميعاً (compile).&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://paiza.io/projects/CGAcQLfW-IOXYy8Dq2OHBw?locale=ja-jp" target="_blank" rel="noopener"
>paiza.IO&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تنفيذ عبر الإنترنت تدعم 24 لغة رئيسية مثل C و C++ و Java و Ruby و Python و PHP و Perl وغيرها.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codepen.io/" target="_blank" rel="noopener"
>CodePen&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تنفيذ عبر الإنترنت لـ HTML و CSS و JavaScript.&lt;/p>
&lt;ul>
&lt;li>&lt;a class="link" href="https://codeanywhere.com/" target="_blank" rel="noopener"
>codeanywhere&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>بيئة تطوير متكاملة (IDE) عبر الإنترنت. يمكنك مشاركة الكود والدردشة.&lt;/p></description></item><item><title>كيفية التغريد باستخدام Twitter API و Google Colaboratory</title><link>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%BA%D8%B1%D9%8A%D8%AF-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-twitter-api-%D9%88-google-colaboratory/</link><pubDate>Sat, 08 Apr 2023 18:48:32 +0900</pubDate><guid>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D9%84%D8%AA%D8%BA%D8%B1%D9%8A%D8%AF-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-twitter-api-%D9%88-google-colaboratory/</guid><description>&lt;img src="http://kenji.blog/p/twitter-api%E3%81%A8google-colaboratory%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6tweet%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post كيفية التغريد باستخدام Twitter API و Google Colaboratory" />&lt;h1 id="المتطلبات">المتطلبات
&lt;/h1>&lt;ul>
&lt;li>Twitter API&lt;/li>
&lt;li>Twitter API SECRET&lt;/li>
&lt;li>Twitter ACCESS TOKEN&lt;/li>
&lt;li>Twitter ACCESS TOKEN SECRET&lt;/li>
&lt;li>حساب Google&lt;/li>
&lt;/ul>
&lt;p>يرجى الرجوع إلى المواقع المرجعية لمعرفة كيفية الحصول على Twitter API.&lt;/p>
&lt;h1 id="خطوات-التغريد-باستخدام-api">خطوات التغريد باستخدام API
&lt;/h1>&lt;ol>
&lt;li>قم بزيارة &lt;a class="link" href="https://colab.research.google.com/" target="_blank" rel="noopener"
>https://colab.research.google.com/&lt;/a>&lt;/li>
&lt;li>حدد &amp;ldquo;ملف&amp;rdquo; -&amp;gt; &amp;ldquo;دفتر ملاحظات جديد&amp;rdquo;&lt;/li>
&lt;li>الصق الكود التالي وقم بتشغيله (استخدم القيم الفعلية التي حصلت عليها بنفسك)&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;/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">API_KEY = &amp;#39;9Smu2f2RoLqbVQHQq6n79Z2JW&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">API_SECRET = &amp;#39;uGVRIkLL2l8sRyPv2Lr4mXxXppnQF1isMoRnvktcXCtFgAK2R8&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ACCESS_TOKEN = &amp;#39;0367292979164670705-7hSErDoQbO6fkFtnn5UY0vqpvecy0O&amp;#39;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">ACCESS_TOKEN_SECRET = &amp;#39;pUv81U9GVzZirz5g4AxZPHAJ4GpSXnBo8GUcZ1egtjw9q&amp;#39;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="3">
&lt;li>الصق الكود التالي وقم بتشغيله&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;/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">import tweepy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="4">
&lt;li>الصق الكود التالي وقم بتشغيله (API v1.1)&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;/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">auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">api = tweepy.API(auth)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">api.update_status(&amp;#34;hello&amp;#34;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>→ سيتم نشر تغريدة &lt;code>hello&lt;/code>&lt;/p>
&lt;ol start="5">
&lt;li>الصق الكود التالي وقم بتشغيله (API v2.0)&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;/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">client = tweepy.Client(consumer_key=API_KEY, consumer_secret=API_SECRET, access_token=ACCESS_TOKEN, access_token_secret=ACCESS_TOKEN_SECRET)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">client.create_tweet(text=&amp;#39;hello v2&amp;#39;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>→ سيتم نشر تغريدة &lt;code>hello v2&lt;/code>&lt;/p>
&lt;p>هذا كل شيء&lt;/p>
&lt;h1 id="المراجع">المراجع
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://bloomtectec.com/twitter-api-application-procedure/" target="_blank" rel="noopener"
>[اعتبارًا من أبريل 2021] شرح شامل لطلب استخدام Twitter API مع أمثلة للاستخدام ولقطات شاشة&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://bloomtectec.com/use-twitter-api-in-google-colab/" target="_blank" rel="noopener"
>[لا حاجة لإعدادات مزعجة!] نوصي بـ Google Colaboratory كبيئة تجريبية لـ Twitter API [سنشارك الكود المصدري أيضًا]&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://3pysci.com/tweepy-28/" target="_blank" rel="noopener"
>[Tweepy] Twitter API v2: تغريدة، رد، تغريدة مع استطلاع، تغريدة مع وسائط (v1.1) [Python]&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>طريقة إنشاء عرض تقديمي باستخدام HTML (reveal.js)</title><link>http://kenji.blog/ar/p/html%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95reveal.js/</link><pubDate>Thu, 06 Apr 2023 23:23:46 +0900</pubDate><guid>http://kenji.blog/ar/p/html%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95reveal.js/</guid><description>&lt;img src="http://kenji.blog/p/html%E3%81%A7%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E8%B3%87%E6%96%99%E3%82%92%E4%BD%9C%E3%82%8B%E6%96%B9%E6%B3%95reveal.js/img.png" alt="Featured image of post طريقة إنشاء عرض تقديمي باستخدام HTML (reveal.js)" />&lt;h1 id="طريقة-إنشاء-عرض-تقديمي-باستخدام-html">طريقة إنشاء عرض تقديمي باستخدام HTML
&lt;/h1>&lt;p>أداة reveal.js هي أداة لإنشاء العروض التقديمية باستخدام HTML و Markdown، وتحتوي على الميزات التالية:&lt;/p>
&lt;ul>
&lt;li>ميزات عرض تقديمي متنوعة مثل المعادلات الرياضية، الرسوم المتحركة، وعمليات السحب&lt;/li>
&lt;li>إمكانية تخصيص السمة والتخطيط&lt;/li>
&lt;li>ميزات تنقل تدعم أجهزة متعددة مثل الماوس، لوحة المفاتيح، ولوحة اللمس&lt;/li>
&lt;li>توفير ميزات متقدمة مثل التشغيل التلقائي للشرائح وتضمين الفيديو&lt;/li>
&lt;li>إمكانية التصدير بصيغة PDF&lt;/li>
&lt;/ul>
&lt;p>من خلال هذه الميزات، يمكن للمستخدمين بسهولة إنشاء عروض تقديمية تفاعلية وجذابة.&lt;/p>
&lt;h1 id="تثبيت-واستخدام-revealjs">تثبيت واستخدام reveal.js
&lt;/h1>&lt;p>أسهل طريقة للاستخدام هي تنزيل ملف ZIP بالكامل من الصفحة التالية وفك ضغطه.&lt;/p>
&lt;ol>
&lt;li>افتح &lt;a class="link" href="https://revealjs.com/installation" target="_blank" rel="noopener"
>https://revealjs.com/installation&lt;/a> وقم بتنزيل &lt;code>master.zip&lt;/code> من الرابط&lt;/li>
&lt;li>افتح ملف index.html الموجود في المجلد المستخرج باستخدام المتصفح&lt;/li>
&lt;li>قم بتعديل index.html لإنشاء العرض التقديمي الخاص بك&lt;/li>
&lt;/ol>
&lt;p>※ تمت كتابة كود HTML تجريبي في demo.html لذا يمكنك استخدامه كمرجع.&lt;/p>
&lt;h1 id="طرق-الاستفادة">طرق الاستفادة
&lt;/h1>&lt;p>يمكنك نشر العرض التقديمي الذي قمت بإنشائه كصفحة ويب كما هو، أو تصديره كملف PDF.
أيضًا، نظرًا لأن مصدر العرض التقديمي عبارة عن نص، فمن السهل إدارته باستخدام أنظمة التحكم في الإصدار.&lt;/p>
&lt;p>يبدو أنه يمكنك أيضًا إنشاء عروض تقديمية بتنسيق Markdown.&lt;/p>
&lt;h1 id="المراجع">المراجع
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiita.com/Targityen/items/40ae4795e2cb77c1adc6" target="_blank" rel="noopener"
>لنستخدم reveal.js للعروض التقديمية المستقبلية&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://qiita.com/jkjoluvjlajelljicvjzojieoaid/items/01cd7ff819bc2e69b652" target="_blank" rel="noopener"
>قائمة أمثلة على صيغة Markdown&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>كيفية إنشاء صور توضيحية باستخدام الذكاء الاصطناعي (StableDiffusion)</title><link>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B5%D9%88%D8%B1-%D8%AA%D9%88%D8%B6%D9%8A%D8%AD%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-stablediffusion/</link><pubDate>Thu, 06 Apr 2023 00:43:19 +0900</pubDate><guid>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B5%D9%88%D8%B1-%D8%AA%D9%88%D8%B6%D9%8A%D8%AD%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%B0%D9%83%D8%A7%D8%A1-%D8%A7%D9%84%D8%A7%D8%B5%D8%B7%D9%86%D8%A7%D8%B9%D9%8A-stablediffusion/</guid><description>&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post كيفية إنشاء صور توضيحية باستخدام الذكاء الاصطناعي (StableDiffusion)" />&lt;h1 id="ما-هو-stable-diffusion">ما هو Stable diffusion
&lt;/h1>&lt;p>Stable diffusion هو ذكاء اصطناعي لإنشاء الصور من المعلومات النصية المدخلة، طوره فريق بحث في جامعة ميونخ في ألمانيا.
من خلال تدريبه على صور متنوعة، يمكنه إنشاء صور مختلفة من الصور الواقعية إلى الرسوم التوضيحية.&lt;/p>
&lt;p>في هذه المرة، سأقدم طريقة لإنشاء صور توضيحية باستخدام البيانات المدربة مسبقًا لـ Stable diffusion.&lt;/p>
&lt;h1 id="الأشياء-المطلوبة">الأشياء المطلوبة
&lt;/h1>&lt;ul>
&lt;li>حساب Google&lt;/li>
&lt;/ul>
&lt;p>فقط&lt;/p>
&lt;h1 id="خطوات-الإنشاء">خطوات الإنشاء
&lt;/h1>&lt;ol>
&lt;li>افتح &lt;a class="link" href="https://colab.research.google.com" target="_blank" rel="noopener"
>https://colab.research.google.com&lt;/a>&lt;/li>
&lt;li>من &lt;code>ملف&lt;/code> في الزاوية العلوية اليسرى، حدد &lt;code>إنشاء دفتر ملاحظات جديد&lt;/code>&lt;/li>
&lt;li>من &lt;code>تعديل&lt;/code>، حدد &lt;code>إعدادات دفتر الملاحظات&lt;/code>&lt;/li>
&lt;li>قم بتغيير &lt;code>مسرع الأجهزة&lt;/code> إلى &lt;code>GPU&lt;/code>
&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2.png"
width="627"
height="324"
srcset="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hud7bbdf6a24e33b2b36528d9e25b016c8_23961_480x0_resize_box_3.png 480w, http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_2_hud7bbdf6a24e33b2b36528d9e25b016c8_23961_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="193"
data-flex-basis="464px"
>&lt;/li>
&lt;li>الصق الكود التالي وقم بتشغيله&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;/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">!pip install diffusers==0.8.0 transformers
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="6">
&lt;li>الصق الكود التالي وقم بتشغيله&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;/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">from diffusers import StableDiffusionPipeline
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="7">
&lt;li>الصق الكود التالي وقم بتشغيله&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;/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">pipe = StableDiffusionPipeline.from_pretrained(&amp;#34;gsdf/Counterfeit-V2.5&amp;#34;)
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pipe.to(&amp;#34;cuda&amp;#34;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="8">
&lt;li>الصق الكود التالي وقم بتشغيله&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">prompt = &amp;#34;((masterpiece,best quality)),1girl, solo, animal ears, rabbit, barefoot, knees up, dress, sitting, rabbit ears, short sleeves, looking at viewer, grass, short hair, smile, white hair, puffy sleeves, outdoors, puffy short sleeves, bangs, on ground, full body, animal, white dress, sunlight, brown eyes, dappled sunlight, day, depth of field&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">n_prompt = &amp;#34;EasyNegative, extra fingers,fewer fingers&amp;#34;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">image = pipe(prompt, negative_prompt = n_prompt).images[0]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">image
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>إن &lt;code>Prompt&lt;/code> المستخدم هنا مبني على &lt;code>Prompt&lt;/code> من &lt;a class="link" href="https://huggingface.co/gsdf/Counterfeit-V2.5" target="_blank" rel="noopener"
>https://huggingface.co/gsdf/Counterfeit-V2.5&lt;/a>.&lt;/p>
&lt;h2 id="نتائج-الإنشاء-بعض-منها">نتائج الإنشاء (بعض منها)
&lt;/h2>&lt;p>&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="512"
height="512"
srcset="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu1ec19e515fd7538067cc14f2c3c8bddf_594392_480x0_resize_box_3.png 480w, http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hu1ec19e515fd7538067cc14f2c3c8bddf_594392_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3.png"
width="512"
height="512"
srcset="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu67e673668e1b02812ead4fb15912ac36_533749_480x0_resize_box_3.png 480w, http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_3_hu67e673668e1b02812ead4fb15912ac36_533749_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4.png"
width="512"
height="512"
srcset="http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hu2b826ec3ad4d7685d995efaa40aac0c5_597506_480x0_resize_box_3.png 480w, http://kenji.blog/p/aistablediffusion%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%A4%E3%83%A9%E3%82%B9%E3%83%88%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_4_hu2b826ec3ad4d7685d995efaa40aac0c5_597506_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_4.png"
class="gallery-image"
data-flex-grow="100"
data-flex-basis="240px"
>&lt;/p>
&lt;h2 id="مراجع">مراجع
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://huggingface.co/gsdf/Counterfeit-V2.5" target="_blank" rel="noopener"
>https://huggingface.co/gsdf/Counterfeit-V2.5&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.youtube.com/watch?v=l8-fVSM2PVQ" target="_blank" rel="noopener"
>حاولت إنشاء برنامج توليد صور باستخدام الذكاء الاصطناعي (AI) في 15 دقيقة【برمجة حية】&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>كيفية تحديث rustc</title><link>http://kenji.blog/ar/p/rustc%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Sat, 18 Mar 2023 10:27:02 +0900</pubDate><guid>http://kenji.blog/ar/p/rustc%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/rustc%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post كيفية تحديث rustc" />&lt;h1 id="كيفية-تحديث-rustc">كيفية تحديث rustc
&lt;/h1>&lt;p>ما عليك سوى تشغيل الأمر التالي.&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">rustup update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="مثال-على-المخرجات">مثال على المخرجات
&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;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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">rustup&lt;/span> &lt;span class="n">update&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">syncing&lt;/span> &lt;span class="n">channel&lt;/span> &lt;span class="n">updates&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="s1">&amp;#39;stable-x86_64-pc-windows-msvc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">warning&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">Signature&lt;/span> &lt;span class="n">verification&lt;/span> &lt;span class="n">failed&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="s1">&amp;#39;https://static.rust-lang.org/dist/channel-rust-stable.toml&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">latest&lt;/span> &lt;span class="n">update&lt;/span> &lt;span class="n">on&lt;/span> &lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">09&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">rust&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="mf">1.68&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="n">c8cc3432&lt;/span> &lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">06&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-src&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;cargo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;clippy&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-docs&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-std&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mf">63.9&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">63.9&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mf">37.5&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">ETA&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustfmt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-src&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;cargo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;clippy&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-docs&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-std&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">removing&lt;/span> &lt;span class="n">previous&lt;/span> &lt;span class="n">version&lt;/span> &lt;span class="n">of&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustfmt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-src&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;cargo&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;clippy&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-docs&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mf">19.4&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">19.4&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mf">2.4&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">ETA&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rust-std&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mf">27.6&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">27.6&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mf">12.7&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">ETA&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustc&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="mf">63.9&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mf">63.9&lt;/span> &lt;span class="n">MiB&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">100&lt;/span> &lt;span class="o">%&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="mf">13.8&lt;/span> &lt;span class="n">MiB&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="n">s&lt;/span> &lt;span class="n">ETA&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="n">s&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">installing&lt;/span> &lt;span class="n">component&lt;/span> &lt;span class="s1">&amp;#39;rustfmt&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">checking&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">updates&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">downloading&lt;/span> &lt;span class="bp">self&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">update&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">stable&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">x86_64&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">pc&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">windows&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">msvc&lt;/span> &lt;span class="n">updated&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">rustc&lt;/span> &lt;span class="mf">1.68&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="n">c8cc3432&lt;/span> &lt;span class="mi">2023&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">03&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">06&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">from&lt;/span> &lt;span class="n">rustc&lt;/span> &lt;span class="mf">1.64&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="mi">0&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">a55dd71d5&lt;/span> &lt;span class="mi">2022&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">09&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">19&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">info&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">cleaning&lt;/span> &lt;span class="n">up&lt;/span> &lt;span class="n">downloads&lt;/span> &lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">tmp&lt;/span> &lt;span class="n">directories&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>عرض نافذة بسيطة في Rust</title><link>http://kenji.blog/ar/p/%D8%B9%D8%B1%D8%B6-%D9%86%D8%A7%D9%81%D8%B0%D8%A9-%D8%A8%D8%B3%D9%8A%D8%B7%D8%A9-%D9%81%D9%8A-rust/</link><pubDate>Sat, 01 Oct 2022 19:08:58 +0900</pubDate><guid>http://kenji.blog/ar/p/%D8%B9%D8%B1%D8%B6-%D9%86%D8%A7%D9%81%D8%B0%D8%A9-%D8%A8%D8%B3%D9%8A%D8%B7%D8%A9-%D9%81%D9%8A-rust/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%A7%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/images/rust_logo.png" alt="Featured image of post عرض نافذة بسيطة في Rust" />&lt;p>عرض نافذة بسيطة في Rust&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-Cargo.toml" data-lang="Cargo.toml">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">package&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">name&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;win&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">version&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">edition&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;2021&amp;#34;&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="c"># See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html&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="p">[&lt;/span>&lt;span class="nx">dependencies&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">winapi&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">version&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.3&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">features&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;winuser&amp;#34;&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>المصدر أدناه&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;span class="lnt">55
&lt;/span>&lt;span class="lnt">56
&lt;/span>&lt;span class="lnt">57
&lt;/span>&lt;span class="lnt">58
&lt;/span>&lt;span class="lnt">59
&lt;/span>&lt;span class="lnt">60
&lt;/span>&lt;span class="lnt">61
&lt;/span>&lt;span class="lnt">62
&lt;/span>&lt;span class="lnt">63
&lt;/span>&lt;span class="lnt">64
&lt;/span>&lt;span class="lnt">65
&lt;/span>&lt;span class="lnt">66
&lt;/span>&lt;span class="lnt">67
&lt;/span>&lt;span class="lnt">68
&lt;/span>&lt;span class="lnt">69
&lt;/span>&lt;span class="lnt">70
&lt;/span>&lt;span class="lnt">71
&lt;/span>&lt;span class="lnt">72
&lt;/span>&lt;span class="lnt">73
&lt;/span>&lt;span class="lnt">74
&lt;/span>&lt;span class="lnt">75
&lt;/span>&lt;span class="lnt">76
&lt;/span>&lt;span class="lnt">77
&lt;/span>&lt;span class="lnt">78
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-main.rs" data-lang="main.rs">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#![windows_subsystem = &lt;/span>&lt;span class="s">&amp;#34;windows&amp;#34;&lt;/span>&lt;span class="cp">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">winapi&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">um&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winuser&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="n">RegisterClassW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">WNDCLASSW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CS_HREDRAW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CS_VREDRAW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">LoadIconW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">IDI_APPLICATION&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">LoadCursorW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">IDC_ARROW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">CreateWindowExW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">ShowWindow&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">SW_NORMAL&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">UpdateWindow&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">GetMessageW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">TranslateMessage&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DispatchMessageW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">MSG&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">WM_DESTROY&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">PostQuitMessage&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DefWindowProcW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">WS_OVERLAPPEDWINDOW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">CW_USEDEFAULT&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">wingdi&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="n">GetStockObject&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">WHITE_BRUSH&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">shared&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">windef&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="no">HWND&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">HBRUSH&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">minwindef&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="no">UINT&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">WPARAM&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">LPARAM&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">LRESULT&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">};&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">std&lt;/span>::&lt;span class="n">ptr&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">std&lt;/span>::&lt;span class="n">mem&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">encode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;my_window_class_name&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">!&lt;/span>&lt;span class="n">register_wndclass&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">create_window&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">is_null&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ShowWindow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">SW_NORMAL&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">UpdateWindow&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">mem&lt;/span>::&lt;span class="n">uninitialized&lt;/span>::&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="no">MSG&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">loop&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">GetMessageW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">TranslateMessage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">DispatchMessageW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">encode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">source&lt;/span>: &lt;span class="kp">&amp;amp;&lt;/span>&lt;span class="kt">str&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>-&amp;gt; &lt;span class="nb">Vec&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">u16&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">source&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">encode_utf16&lt;/span>&lt;span class="p">().&lt;/span>&lt;span class="n">chain&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">Some&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">collect&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">register_wndclass&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">class_name&lt;/span>: &lt;span class="kp">&amp;amp;&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="kt">u16&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="w"> &lt;/span>-&amp;gt; &lt;span class="kt">bool&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">mem&lt;/span>::&lt;span class="n">zeroed&lt;/span>::&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="no">WNDCLASSW&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">style&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CS_HREDRAW&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CS_VREDRAW&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">lpfnWndProc&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">Some&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">win_proc&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">hIcon&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">LoadIconW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">IDI_APPLICATION&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">hCursor&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">LoadCursorW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">IDC_ARROW&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">hbrBackground&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">GetStockObject&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">WHITE_BRUSH&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">i32&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">HBRUSH&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">lpszClassName&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">RegisterClassW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">winc&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">create_window&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">class_name&lt;/span>: &lt;span class="kp">&amp;amp;&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="kt">u16&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="w"> &lt;/span>-&amp;gt; &lt;span class="nc">HWND&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">CreateWindowExW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">class_name&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">encode&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello, World!&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">WS_OVERLAPPEDWINDOW&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">CW_USEDEFAULT&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">CW_USEDEFAULT&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">extern&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;system&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">win_proc&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hwnd&lt;/span>: &lt;span class="nc">HWND&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>: &lt;span class="nc">UINT&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">w_param&lt;/span>: &lt;span class="nc">WPARAM&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">l_param&lt;/span>: &lt;span class="nc">LPARAM&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>-&amp;gt; &lt;span class="nc">LRESULT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">match&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">WM_DESTROY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">PostQuitMessage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">_&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">return&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DefWindowProcW&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">hwnd&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msg&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">w_param&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">l_param&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">};&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="مرجع">مرجع
&lt;/h2>&lt;p>&lt;a class="link" href="https://qiita.com/benki/items/c01f7da1e1a71cc91d11" target="_blank" rel="noopener"
>برمجة Windows في Rust - قسم CreateWindow&lt;/a>&lt;/p></description></item><item><title>كتابة الاختبارات في Rust</title><link>http://kenji.blog/ar/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/</link><pubDate>Sat, 01 Oct 2022 02:00:59 +0900</pubDate><guid>http://kenji.blog/ar/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%A7%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F/images/rust_logo.png" alt="Featured image of post كتابة الاختبارات في Rust" />&lt;p>لكتابة اختبارات في Rust، قم بإنشاء دالة وأضف السمة &lt;code>#[test]&lt;/code> سطراً واحداً فوق تعريف دالة الاختبار.&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-rust" data-lang="rust">&lt;span class="line">&lt;span class="cl">&lt;span class="k">fn&lt;/span> &lt;span class="nf">plus&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>:&lt;span class="kt">i32&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">b&lt;/span>:&lt;span class="kt">i32&lt;/span>&lt;span class="p">)&lt;/span>-&amp;gt;&lt;span class="kt">i32&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="n">b&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="cp">#[test]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">plus_test&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="fm">assert_eq!&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">plus&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>يمكن تنفيذ كود الاختبار باستخدام &lt;code>cargo test&lt;/code>. عند نجاح الاختبار، يتم إخراج &lt;code>ok&lt;/code>.
عند الفشل، يتم إخراج &lt;code>FAILED&lt;/code>.&lt;/p>
&lt;p>في حالة النجاح&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;/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">C:&lt;span class="se">\U&lt;/span>sers&lt;span class="se">\a&lt;/span>dmin&lt;span class="se">\D&lt;/span>esktop&lt;span class="se">\t&lt;/span>est1&amp;gt;cargo &lt;span class="nb">test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Compiling test1 v0.1.0 &lt;span class="o">(&lt;/span>C:&lt;span class="se">\U&lt;/span>sers&lt;span class="se">\a&lt;/span>dmin&lt;span class="se">\D&lt;/span>esktop&lt;span class="se">\t&lt;/span>est1&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Finished &lt;span class="nb">test&lt;/span> &lt;span class="o">[&lt;/span>unoptimized + debuginfo&lt;span class="o">]&lt;/span> target&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> in 0.35s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Running unittests src&lt;span class="se">\m&lt;/span>ain.rs &lt;span class="o">(&lt;/span>target&lt;span class="se">\d&lt;/span>ebug&lt;span class="se">\d&lt;/span>eps&lt;span class="se">\t&lt;/span>est1-be5d3118bc52cb3a.exe&lt;span class="o">)&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">running &lt;span class="m">1&lt;/span> &lt;span class="nb">test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">test&lt;/span> plus_test ... ok
&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="nb">test&lt;/span> result: ok. &lt;span class="m">1&lt;/span> passed&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> failed&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> ignored&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> measured&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> filtered out&lt;span class="p">;&lt;/span> finished in 0.00s
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>في حالة الفشل&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;/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">C:&lt;span class="se">\U&lt;/span>sers&lt;span class="se">\a&lt;/span>dmin&lt;span class="se">\D&lt;/span>esktop&lt;span class="se">\t&lt;/span>est1&amp;gt;cargo &lt;span class="nb">test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Compiling test1 v0.1.0 &lt;span class="o">(&lt;/span>C:&lt;span class="se">\U&lt;/span>sers&lt;span class="se">\a&lt;/span>dmin&lt;span class="se">\D&lt;/span>esktop&lt;span class="se">\t&lt;/span>est1&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Finished &lt;span class="nb">test&lt;/span> &lt;span class="o">[&lt;/span>unoptimized + debuginfo&lt;span class="o">]&lt;/span> target&lt;span class="o">(&lt;/span>s&lt;span class="o">)&lt;/span> in 0.33s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Running unittests src&lt;span class="se">\m&lt;/span>ain.rs &lt;span class="o">(&lt;/span>target&lt;span class="se">\d&lt;/span>ebug&lt;span class="se">\d&lt;/span>eps&lt;span class="se">\t&lt;/span>est1-be5d3118bc52cb3a.exe&lt;span class="o">)&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">running &lt;span class="m">1&lt;/span> &lt;span class="nb">test&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">test&lt;/span> plus_test ... FAILED
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">failures:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">---- plus_test stdout ----
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">thread &lt;span class="s1">&amp;#39;plus_test&amp;#39;&lt;/span> panicked at &lt;span class="s1">&amp;#39;assertion failed: `(left == right)`
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> left: `2`,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> right: `3`&amp;#39;&lt;/span>, src&lt;span class="se">\m&lt;/span>ain.rs:7:5
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">note: run with &lt;span class="sb">`&lt;/span>&lt;span class="nv">RUST_BACKTRACE&lt;/span>&lt;span class="o">=&lt;/span>1&lt;span class="sb">`&lt;/span> environment variable to display a backtrace
&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>&lt;/span>&lt;span class="line">&lt;span class="cl">failures:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> plus_test
&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="nb">test&lt;/span> result: FAILED. &lt;span class="m">0&lt;/span> passed&lt;span class="p">;&lt;/span> &lt;span class="m">1&lt;/span> failed&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> ignored&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> measured&lt;span class="p">;&lt;/span> &lt;span class="m">0&lt;/span> filtered out&lt;span class="p">;&lt;/span> finished in 0.00s
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">error: &lt;span class="nb">test&lt;/span> failed, to rerun pass &lt;span class="s1">&amp;#39;--bin test1&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>عرض MessageBox في Rust</title><link>http://kenji.blog/ar/p/%D8%B9%D8%B1%D8%B6-messagebox-%D9%81%D9%8A-rust/</link><pubDate>Fri, 30 Sep 2022 23:54:31 +0900</pubDate><guid>http://kenji.blog/ar/p/%D8%B9%D8%B1%D8%B6-messagebox-%D9%81%D9%8A-rust/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/images/rust_logo.png" alt="Featured image of post عرض MessageBox في Rust" />&lt;p>يمكنك عرض MessageBox في Rust باتباع الخطوات التالية.&lt;/p>
&lt;ol>
&lt;li>قم بتثبيت Rust. راجع &lt;a class="link" href="https://kenji.blog/posts/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/" target="_blank" rel="noopener"
>كيفية البدء مع Rust&lt;/a>&lt;/li>
&lt;li>قم بتشغيل &lt;code>cargo new --bin MessageBox&lt;/code> في موجه الأوامر.&lt;/li>
&lt;li>انتقل إلى الدليل &lt;code>MessageBox&lt;/code>.&lt;/li>
&lt;li>افتح &lt;code>Cargo.toml&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;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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-toml" data-lang="toml">&lt;span class="line">&lt;span class="cl">&lt;span class="p">[&lt;/span>&lt;span class="nx">package&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">name&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;hello_world&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">version&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">edition&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;2021&amp;#34;&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="c"># See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html&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="p">[&lt;/span>&lt;span class="nx">dependencies&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">winapi&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.2.7&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">user32-sys&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s2">&amp;#34;0.2.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="5">
&lt;li>افتح &lt;code>src\main.rs&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;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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-main.rs" data-lang="main.rs">&lt;span class="line">&lt;span class="cl">&lt;span class="k">extern&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">crate&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user32&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">extern&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">crate&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">winapi&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">std&lt;/span>::&lt;span class="n">ffi&lt;/span>::&lt;span class="n">CString&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user32&lt;/span>::&lt;span class="n">MessageBoxA&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">winapi&lt;/span>::&lt;span class="n">winuser&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="no">MB_OK&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">MB_ICONINFORMATION&lt;/span>&lt;span class="p">};&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">fn&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">lp_text&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">CString&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello, world!&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">unwrap&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">lp_caption&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">CString&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;MessageBox Example&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">unwrap&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">unsafe&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">MessageBoxA&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">std&lt;/span>::&lt;span class="n">ptr&lt;/span>::&lt;span class="n">null_mut&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">lp_text&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">lp_caption&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">as_ptr&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="no">MB_OK&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">MB_ICONINFORMATION&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="6">
&lt;li>
&lt;p>قم بتشغيل &lt;code>cargo run&lt;/code> في موجه الأوامر.
&lt;img src="http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/img.png"
width="160"
height="152"
srcset="http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/img_hu634f1117052e2b61756baa5f3866eef5_4266_480x0_resize_box_3.png 480w, http://kenji.blog/p/rust%E3%81%A7messagebox%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B/img_hu634f1117052e2b61756baa5f3866eef5_4266_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="105"
data-flex-basis="252px"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>لإنشاء إصدار (release build)، قم بتشغيل &lt;code>cargo build --release&lt;/code>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h1 id="مرجع">مرجع
&lt;/h1>&lt;p>&lt;a class="link" href="https://wesleywiser.github.io/post/rust-windows-messagebox-hello-world/" target="_blank" rel="noopener"
>Hello World MesssageBox example in Rust&lt;/a>&lt;/p></description></item><item><title>حذف ملفات .DS_Store دفعة واحدة باستخدام PowerShell</title><link>http://kenji.blog/ar/p/powershell%E3%81%A7.ds_store%E3%82%92%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B/</link><pubDate>Mon, 12 Sep 2022 10:11:42 +0900</pubDate><guid>http://kenji.blog/ar/p/powershell%E3%81%A7.ds_store%E3%82%92%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/powershell%E3%81%A7.ds_store%E3%82%92%E4%B8%80%E6%8B%AC%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B/img.png" alt="Featured image of post حذف ملفات .DS_Store دفعة واحدة باستخدام PowerShell" />&lt;p>انقل الدليل الحالي إلى المجلد المستهدف وقم بتشغيل الأمر التالي لحذف ملفات .DS_Store دفعة واحدة، بما في ذلك المجلدات الفرعية.&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-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Get-ChildItem&lt;/span> &lt;span class="p">.&lt;/span> &lt;span class="n">-include&lt;/span> &lt;span class="s1">&amp;#39;.DS_Store&amp;#39;&lt;/span> &lt;span class="n">-Recurse&lt;/span> &lt;span class="n">-Force&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">Remove-Item&lt;/span> &lt;span class="n">-Force&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>كيفية تثبيت Go</title><link>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-go/</link><pubDate>Sat, 10 Sep 2022 00:48:17 +0900</pubDate><guid>http://kenji.blog/ar/p/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-go/</guid><description>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/cover.png" alt="Featured image of post كيفية تثبيت Go" />&lt;h1 id="مقدمة">مقدمة
&lt;/h1>&lt;p>Go هي لغة برمجة حديثة نسبيًا أصدرتها Google في عام 2009.
إن المترجم والأدوات والمكتبات الخاصة بـ Go مفتوحة المصدر.
بالإضافة إلى ذلك، Go هي لغة ذات كتابة ثابتة مثل C و Java، ولكنها لا تستخدم المؤشرات مثل لغة C.&lt;/p>
&lt;h1 id="طريقة-التثبيت">طريقة التثبيت
&lt;/h1>&lt;p>&lt;a class="link" href="https://go.dev/dl/" target="_blank" rel="noopener"
>تثبيت Go&lt;/a>&lt;/p>
&lt;p>المثبتات متاحة لكل منصة من الموقع أعلاه.&lt;/p>
&lt;p>اتبع التعليمات التي تظهر على الشاشة لمتابعة التثبيت.
&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_hudec02a4f1dfaca9415d58a56d502b14f_18782_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_hudec02a4f1dfaca9415d58a56d502b14f_18782_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_1.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_1_hu803f0fb268a2cf0fa74e4e36a5b3a765_20314_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_1_hu803f0fb268a2cf0fa74e4e36a5b3a765_20314_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_2.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_2_hu05fb3923212918b7539badd0200ea75c_11067_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_2_hu05fb3923212918b7539badd0200ea75c_11067_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_3.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_3_hu316d63501ec24e1e74dc3cb674d4cc1f_11612_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_3_hu316d63501ec24e1e74dc3cb674d4cc1f_11612_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_3.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_5.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_5_hu8bb188f8700bed3c70acaed6e511012d_14167_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_5_hu8bb188f8700bed3c70acaed6e511012d_14167_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_5.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_6.png"
width="495"
height="387"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_6_hu0a1b7e9cf2cb725ed5a7ea7685880608_16796_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_6_hu0a1b7e9cf2cb725ed5a7ea7685880608_16796_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_6.png"
class="gallery-image"
data-flex-grow="127"
data-flex-basis="306px"
>&lt;/p>
&lt;p>اكتمل التثبيت. إنه سهل، أليس كذلك؟&lt;/p>
&lt;h1 id="برنامجك-الأول">برنامجك الأول
&lt;/h1>&lt;p>احفظ البرنامج التالي باسم &lt;code>hello.go&lt;/code>.&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-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">package&lt;/span> &lt;span class="nx">main&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="kn">import&lt;/span> &lt;span class="s">&amp;#34;fmt&amp;#34;&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="kd">func&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="nx">fmt&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">Printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Hello World\n&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="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>عندما تقوم بتشغيل &lt;code>go run hello.go&lt;/code> من موجه الأوامر أو الجهاز الطرفي، سيتم إخراج &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;p>إذا كنت تريد التجميع، فإن تشغيل &lt;code>go build hello.go&lt;/code> سيولد &lt;code>hello.exe&lt;/code>.
سيؤدي تشغيل &lt;code>hello.exe&lt;/code> إلى إخراج &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;h1 id="يمكنك-أيضا-تشغيل-التعليمات-البرمجية-على-صفحة-الويب">يمكنك أيضًا تشغيل التعليمات البرمجية على صفحة الويب
&lt;/h1>&lt;p>&lt;a class="link" href="https://go.dev/play/" target="_blank" rel="noopener"
>https://go.dev/play/&lt;/a>&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_7.png"
width="793"
height="668"
srcset="http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_7_hu4549f097b6cd8fd929d9562692076ffb_15605_480x0_resize_box_3.png 480w, http://kenji.blog/p/go%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/images/img_7_hu4549f097b6cd8fd929d9562692076ffb_15605_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_7.png"
class="gallery-image"
data-flex-grow="118"
data-flex-basis="284px"
>&lt;/p>
&lt;h1 id="المستندات">المستندات
&lt;/h1>&lt;p>&lt;a class="link" href="http://go.shibu.jp/" target="_blank" rel="noopener"
>http://go.shibu.jp/&lt;/a>&lt;/p>
&lt;p>التفسيرات اللازمة لتعلم Go مجمعة في الرابط أعلاه.
التقنيات المتعلقة بـ Go مفتوحة ومكتملة لدرجة أنك لست بحاجة إلى شراء نصوص ورقية.&lt;/p>
&lt;p>إذن، استمتع بحياتك مع Go!&lt;/p></description></item><item><title>سرد الأعداد الأولية في Rust</title><link>http://kenji.blog/ar/p/rust%E3%81%A7%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B/</link><pubDate>Fri, 09 Sep 2022 07:08:49 +0900</pubDate><guid>http://kenji.blog/ar/p/rust%E3%81%A7%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%A7%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B/images/img.png" alt="Featured image of post سرد الأعداد الأولية في Rust" />&lt;p>لقد كتبت برنامجًا لسرد الأعداد الأولية في Rust.&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;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-rust" data-lang="rust">&lt;span class="line">&lt;span class="cl">&lt;span class="k">fn&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">max&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">primes&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="fm">vec!&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">];&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">loop&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">mut&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">is_prime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">for&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">in&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">primes&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">==&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">is_prime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">is_prime&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">primes&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">push&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">+=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">max&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">break&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">for&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">in&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">primes&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="fm">println!&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="si">{}&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>كيف تبدأ مع Rust</title><link>http://kenji.blog/ar/p/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/</link><pubDate>Tue, 06 Sep 2022 00:12:36 +0900</pubDate><guid>http://kenji.blog/ar/p/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/</guid><description>&lt;img src="http://kenji.blog/p/rust%E3%81%AE%E3%81%AF%E3%81%98%E3%82%81%E3%81%8B%E3%81%9F/images/rust_logo.png" alt="Featured image of post كيف تبدأ مع Rust" />&lt;h1 id="مقدمة">مقدمة
&lt;/h1>&lt;p>Rust هي لغة برمجة حديثة نسبيًا تتيح لك كتابة وحدات سريعة وفعالة في استخدام الذاكرة باستخدام بناء جملة حديث.
إنها تدعم منصات متعددة وتُستخدم في WebAssembly والأنظمة المدمجة.
ومن الجدير بالذكر أنها معتمدة من قبل Firefox و DropBox و Cloudflare.&lt;/p>
&lt;p>تحظى باهتمام أيضًا كبديل لـ C++.&lt;/p>
&lt;h1 id="طريقة-التثبيت">طريقة التثبيت
&lt;/h1>&lt;p>&lt;a class="link" href="https://www.rust-lang.org/tools/install" target="_blank" rel="noopener"
>تثبيت Rust&lt;/a>&lt;/p>
&lt;p>تتوفر تعليمات التثبيت لكل منصة على الموقع أعلاه.&lt;/p>
&lt;h1 id="أول-برنامج-لك">أول برنامج لك
&lt;/h1>&lt;p>احفظ البرنامج التالي باسم &lt;code>main.rs&lt;/code>.&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;/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">fn main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> println!(&amp;#34;Hello, world!&amp;#34;);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>عند تشغيل &lt;code>rustc main.rs&lt;/code> من موجه الأوامر أو الجهاز الطرفي،
سيتم تجميعه، وعند تشغيل &lt;code>./main&lt;/code> (أو &lt;code>main.exe&lt;/code> في نظام Windows) سيطبع &lt;code>Hello, world!&lt;/code>.&lt;/p>
&lt;h1 id="الوثائق-اليابانية">الوثائق اليابانية
&lt;/h1>&lt;p>&lt;a class="link" href="https://doc.rust-jp.rs/book-ja/" target="_blank" rel="noopener"
>The Rust Programming Language النسخة اليابانية&lt;/a>&lt;/p>
&lt;p>جميع الشروحات اللازمة لتعلم Rust مجمعة في الرابط أعلاه (النسخة المترجمة لليابانية).
إنها شاملة لدرجة أنك لن تحتاج إلى شراء كتاب عن Rust.&lt;/p>
&lt;h1 id="إذا-كنت-تريد-تجربتها-على-الويب">إذا كنت تريد تجربتها على الويب
&lt;/h1>&lt;p>إذا كنت ترغب في تجربتها على الويب دون تثبيت المترجم، فيمكنك استخدام &lt;a class="link" href="https://play.rust-lang.org/" target="_blank" rel="noopener"
>The Rust Playground&lt;/a>.
أدخل الكود واضغط على زر &amp;ldquo;التشغيل&amp;rdquo; ليتم تجميعه وتشغيله على الويب.&lt;/p></description></item></channel></rss>