المدونة
مقالات عملية من شركة كومورا سوفت حول تطوير المواقع، وتحسين محركات البحث، وإعلانات جوجل، وتطوير ويندوز، وإعادة استخدام الأصول القديمة، والتحقيق في الأخطاء.
بحث ذكي في الموقع بالكامل
تُرسل استعلامات البحث إلى Cloudflare AI Search لإنشاء النتائج. يُرجى عدم إدخال معلومات شخصية.
-
دعم DPI العالي في WPF ── أسباب الضبابية والتلطّخ رغم أنه «يفترض أن يكون محصّناً ضد DPI» وطرق العلاج
WPF واعٍ بـ System DPI، لكن نقل النافذة إلى شاشة مختلفة DPI يجعل الشاشة كلّها تتلطّخ، وتصبح الصور النقطية ضبابية. نرتّب تشخيص السبب، ودعم Per-Monitor DPI، وا...
-
مشكلة بقاء EXCEL.EXE عند التعامل مع Excel من C# ── أنماط تحرير مراجع COM وقرار الاستبدال
نرتّب مشكلة بقاء عملية EXCEL.EXE عند تشغيل Excel عبر COM من C#، انطلاقاً من آلية عدّ مراجع COM وRCW. نشرح فخ قاعدة النقطتين، وأنماط التحرير عبر ReleaseComObj...
-
دعم DPI العالي في WinForms ── أسباب الضبابية والانهيار على شاشات 4K والمعالجة الواقعية
نرتّب أسباب ضبابية تطبيقات WinForms وانهيار تخطيطها على شاشات 4K انطلاقاً من DPI virtualization وأوضاع إدراك DPI (System Aware / Per-Monitor V2). نشرح طريقة ...
-
كيف تختار وسيلة الاتّصال بين عمليّات Windows ── جدول قرار للأنابيب المسمّاة / TCP / gRPC / الذاكرة المشتركة / COM
كيف تختار وسيلة التواصل بين تطبيقات Windows؟ ننظّم في جدول قرار مجالات تفوّق ومطبّات الأنابيب المسمّاة، وTCP المحليّ، وgRPC، والذاكرة المشتركة، وتكامل الملفّ...
-
استخدام SQLite في تطبيقات C# للأعمال ── وضع WAL، والتحكّم الحصريّ، والوقاية من التلف، والتمييز عن EF Core
نرتّب هنا المعرفة العمليّة اللازمة لدمج SQLite في تطبيقات الأعمال عبر Microsoft.Data.Sqlite. نشرح وضع WAL، وSQLITE_BUSY وتوحيد مسار الكتابة، ومطبّات تخطيط ال...
-
كيفيّة إنشاء خدمات Windows وتشغيلها ── من التمييز عن جدولة المهام إلى تحويل BackgroundService إلى خدمة
هل ينبغي تحويل المعالجة المقيمة إلى خدمة Windows، أم تكفي جدولة المهام؟ نرتّب من منظور عمليّ جدول القرار، وكيفيّة إنشاء الخدمة عبر .NET Worker Service، وحساب...
-
هل WebView2 خليفة مناسبة لوضع IE؟ ── قيد عدم عمل ActiveX وتصميم واقعيّ للانتقال
نشرح البنية الأساسيّة لـ WebView2، واستراتيجيّتَي توزيع Evergreen وFixed Version، ومطبّ مجلد بيانات المستخدم، وطرق التكامل بين الجزء الأصليّ والويب، والترتيب...
-
كيف تختار مكان حفظ بيانات تطبيق Windows محليّاً ── جدول قرار بين SQLite وJSON وRegistry وAccess
أين ينبغي حفظ بيانات تطبيق سطح مكتب Windows، وبأيّ صيغة؟ نرتّب الفرق بين AppData وProgramData، ونقاط قوّة وعيوب كلّ من SQLite وملفّات JSON وRegistry وAccess ...
-
لماذا لا تُنفَّذ مهامّ Task Scheduler أو تنتهي بالرمز 0x1 ── تشخيص الأسباب وتصميم تشغيل آمن
نرتّب هنا حساب التشغيل ونوع تسجيل الدخول في Task Scheduler على Windows، والسبب النمطيّ لانتهاء المهمّة بالرمز 0x1، وتفعيل السجلّ (History)، ومنع التشغيل المت...
-
أتمتة الأعمال باستخدام Power Automate ── الفصل بين التدفّق السحابي وتدفّق سطح المكتب وتصميم معالجة الأخطاء
نستعرض الفرق بين التدفّق السحابي وتدفّق سطح المكتب في Power Automate، والفصل بينهما وبين PowerShell/VBA، والرخص، ومعالجة الأخطاء، وتثبيت أتمتة واجهة المستخدم...
-
البرمجة العامّة (Generics) في Ada ── كتابة العقود بالأنواع، وتحقيق إعادة الاستخدام دون تكلفة إضافيّة
شرح شامل للبرمجة العامّة (generic programming) في Ada، من الإجراءات العامّة، والحزم العامّة، والمعطيات الفرعيّة (formal subprograms)، وفئات الأنواع، وحتّى إر...
-
برمجة أنظمة الوقت الفعليّ بلغة Ada ── التطبيق العمليّ للتحكّم في الأولويّة والدوريّة ووقت التنفيذ
نتعلّم الملحق D (أنظمة الوقت الفعليّ) في Ada عبر ثمانية أمثلة برمجيّة تطبيقيّة. نرتِّب تدريجيّاً أولويّة المهامّ، وبروتوكول Ceiling_Locking، والتنفيذ الدوريّ...
-
Fable لم يعد ضمن الاشتراك، لكن لا تتوقف ── الصمود بـ OpenRouter Fusion ونماذج LLM الصينية وطبقة المراجعة
لا يضاهي Fable. لكن بدمج خمسة نماذج LLM صينية عبر OpenRouter Fusion، ثم مراجعة من gpt-5.5-pro أو مراجعة PR من Codex، يصبح الناتج وكيل برمجة أفضل بكثير من gpt...
-
التزامن الآمن في Ada ── دليل عملي للمهامّ والكائنات المحميّة
مقال تمهيدي عن التزامن المدمج في لغة Ada عبر المهامّ (tasks) والكائنات المحمية (protected objects). نستعرض الرندفو (entry/accept)، والقبول الانتقائي (selecti...
-
مدخل إلى التحقّق الشكلي باستخدام SPARK ── من عقود Ada إلى البرهان الرياضي
مقالة تطبيقيّة تقدّم مدخلاً إلى التحقّق الشكلي باستخدام SPARK، المجموعة الفرعيّة من Ada. نرتّب الانتقال من العقود (Pre/Post) إلى البرهان، واستخدام GNATprove،...
-
جاذبيّة لغة Ada ── لغة تعبّر عن التصميم بالأنواع وتسند برمجيّات تعمل لعقود
نقدّم جاذبيّة لغة Ada. الأنواع القويّة، وقيود المدى، والفصل بين المواصفة والتنفيذ عبر الحزم، والتصميم بالعقد، والمهامّ المدمجة في اللغة، والتحقّق الشكلي عبر ...
-
ما هو MFC في Windows؟ ── المعرفة الأساسية لصيانة الأصول القائمة
نستعرض لمحة عامة عن Microsoft Foundation Classes (MFC)، وعلاقته بـ Win32، وبنية التطبيق، وخريطة الرسائل (Message Map)، وDocument/View، وDDX/DDV، ونقاط الحذر ...
-
ما ينبغي فعله قبل التخلّص من حاسوب Windows ── قائمة تحقّق عمليّة لمحو البيانات وفكّ ربط الحسابات والنسخ الاحتياطيّ
نستعرض ما ينبغي فعله قبل التخلّص من حاسوب Windows أو تسليمه أو بيعه أو إعادته بموجب عقد إيجار، من زاوية النسخ الاحتياطيّ، ومحو البيانات، وBitLocker، وحساب Mi...
-
PDB (قاعدة بيانات البرنامج) ما هي؟ ── فهم معلومات التصحيح والرموز (symbols) وSource Link
نُنظّم من منظور عمليّ ما هو PDB (Program Database / قاعدة بيانات البرنامج)، وما الذي يحتويه وما لا يحتويه، والعلاقة بين Debug / Release، وPortable PDB، وSour...
-
ما هو Roslyn ── قراءة شيفرة C# وإصلاحها وتوليدها من منظور المُصرِّف (compiler)
نرتّب هنا نظرة عامّة على Roslyn (.NET Compiler Platform)، وSyntax Tree، وSemanticModel، وWorkspace، وAnalyzer، وSource Generator، ومواضع استخدامها في العمل ا...
-
ما ينبغي تنظيمه قبل طلب التعهيد أو التطوير التعاقديّ لتطبيق Windows
قبل تكليف جهة خارجية بتطوير تطبيق Windows تعاقديّاً، إليك النقاط التي ينبغي تنظيمها: تعديل البرمجيّات القائمة، وتكامل الأجهزة، وCOM/ActiveX، والتوزيع/التحديث...
-
استخدام الأنواع الجبرية للبيانات (Algebraic Data Types) في .NET Framework / .NET ── تصميم يعبّر عن الحالة والنتيجة بالنوع
نرتّب طرق استخدام الأنواع الجبرية للبيانات، وبخاصّة الأنواع الاتحادية (sum types) والاتحادات المُميَّزة (discriminated unions)، في .NET Framework وNET، ومزاي...
-
التعامل الصحيح مع رموز انتحال الهوية في Windows ── استعارة الصلاحيّات على مستوى مؤشّر الترابط والعودة الآمنة
حول رموز انتحال الهوية في Windows، نستعرض طريقة التفكير اللازمة للتعامل الآمن معها في العمل الفعليّ، بدءاً من رمز الوصول ورمز العمليّة الأساسيّ ورمز مؤشّر ال...
-
المفهوم الخاطئ بأنّ الاستقبال يتطابق مع وحدة الإرسال في TCP ── تصميم الاستقبال بالتعامل مع TCP كتدفّق بايتات
في اتّصالات TCP، إن افترضنا أنّ البيانات تُستقبَل بنفس وحدات الإرسال (Send أو Write) فقد يحدث تجزّؤ ودمج وتشوّه للنصوص وتلف في البروتوكول. نستعرض فكرة التعام...
-
التمييز بين انتظار GC وتسريب الذاكرة في .NET ── الإجراء العمليّ لمراقبة الذاكرة المتزايدة ومقارنتها وإثباتها
نُنظّم هنا الإجراء الذي يُميّز، في تطبيقات .NET، بين كون سبب تزايد الذاكرة هو انتظار جمع القمامة (garbage collection) أو تسريب ذاكرة حقيقيّ، باستخدام dotnet-...
-
طريقة تشغيل PowerShell من C# (CSharp) واستقبال النتيجة ككائن
نرتّب من منظور عمليّ طريقة تشغيل PowerShell من C# واستقبال النتيجة ككائن PSObject بدل نصّ، بدءًا من PowerShell SDK وAddCommand وAddParameter وBaseObject وPro...
-
تهيئة اختبارات PowerShell عبر Pester ── الأسلوب العمليّ لجعل سكربتات التشغيل أقلّ عرضةً للكسر
نُنظِّم الإجراءات العمليّة لاختبار سكربتات PowerShell عبر Pester v5، بدءاً من معالجة التواريخ وعمليّات الملفّات وعمليّات الحذف، مروراً بالـ Mock، وصولاً إلى ...
-
لماذا أصبح Windows على هذا الشكل الآن: تطوّر إصدارات Windows عبر التاريخ من منظور المطوّر
نرتّب التغيّرات من Windows 95 إلى Windows 11، لا كجدول زمنيّ للمظهر، بل من منظور مطوّر تطبيقات Windows: التوافق، والاستقرار، وإدارة الصلاحيّات، وبرامج التشغي...
-
مدخل إلى إعدادات المعالج لمطوّري تطبيقات Windows: الأولويّة، والانتماء (Affinity)، ونواة الأداء/نواة الكفاءة
نرتّب لمطوّري تطبيقات Windows العلاقة بين أولويّة المعالج، والانتماء (Affinity)، ونواة الأداء/نواة الكفاءة، وإعدادات توفير الطاقة، وEcoQoS/Efficiency Mode، و...
-
الحبّ الشاذّ للمطوّر، أو كيف تعلّمت أن أكفّ عن القلق وأن أحبّ Windows
Windows ثقيل في التعامل. لكن هذا الثقل ثقل نظام تشغيل حمل أعمالاً واقعية طوال عقود.