لا تقم أبدًا بتعليق مؤشر ترابط في عمليتك الخاصة!

2025-04-15
لا تقم أبدًا بتعليق مؤشر ترابط في عمليتك الخاصة!

واجه أحد العملاء مشكلة تعليق منخفضة التردد وطويلة الأمد: قام مؤشر ترابط واجهة المستخدم الخاص به بالاتصال بالنواة، وتعليق ببساطة. لم يتمكن تفريغ النواة من عرض تتبع مُكدس من وضع المستخدم لأن المُكدس قد تم تفريغه. كشفت التحقيقات عن مؤشر ترابط مراقب يقوم بشكل دوري بتعليق مؤشر ترابط واجهة المستخدم لالتقاط تتبعات المُكدس، لكن هذه المرة تعلق لأكثر من خمس ساعات. السبب الجذر: طريق مسدود. مؤشر ترابط المراقب، الذي يحاول الحصول على تتبع مُكدس، يحتاج إلى قفل جدول الوظائف، لكن مؤشر ترابط واجهة المستخدم معلق، ويحتفظ بالقفل. تؤكد المقالة على عدم تعليق مؤشر ترابط داخل عملية خاصة به، حيث إنه يزيد من خطر الطرق المسدودة بسبب احتجاز الموارد. لتعليق مؤشر ترابط والتقاط مُكدسه، قم بذلك من عملية أخرى لتجنب الطرق المسدودة.

اقرأ المزيد

لغز محول الماوس السلبي من USB إلى PS/2

2025-03-28
لغز محول الماوس السلبي من USB إلى PS/2

كانت الفئران USB القديمة غالبًا ما تتضمن محولًا أخضر لتحويل قابس USB من النوع A إلى PS/2. لم يكن هذا محولًا ذكيًا ؛ كان ميكانيكيًا بحتًا ، بدون دوائر. قام الماوس نفسه بالتحويل ، واكتشف نوع الإشارة (USB أو PS/2) وقام بضبط نفسه وفقًا لذلك. إنه مشابه لمحول طاقة بسيط - توجد الذكاء في الجهاز ، وليس في المحول. لذلك ، إذا وجدت أحد هذه الأشياء ، تذكر أنه مجرد موصل جسدي ؛ يحدث التحويل الفعلي داخل فأرة الحافلة المزدوجة.

اقرأ المزيد
العتاد محول ماوس

تصحيح أخطاء حالة السباق: فخ RtlRunOnceExecuteOnce

2025-03-23
تصحيح أخطاء حالة السباق: فخ RtlRunOnceExecuteOnce

واجه أحد الزملاء مشكلة تعارض صعبة خلال جلسة تصحيح أخطاء أسبوعية: فشل قسم حرج في منع خيطين من دخول نفس كتلة التعليمات البرمجية، مما أدى إلى فشل تسجيل مزدوج لـ `TraceLoggingRegister`. كشف التصحيح العميق عن السبب الجذري: أعادت دالة الإعداد `InitializeCriticalSectionOnce` لـ `RtlRunOnceExecuteOnce` قيمة `STATUS_SUCCESS` (0) بشكل غير صحيح. هذا أدى إلى اعتقاد `RtlRunOnceExecuteOnce` بأن الإعداد فشل، مما تسبب في إعادة تهيئة القسم الحرج في كل مرة يتم فيها استدعاء الدالة، وبالتالي إطلاق حالة السباق. كان الحل هو تغيير قيمة الإرجاع إلى `TRUE`، أو بشكل أنيق أكثر، استبدال `CRITICAL_SECTION` بـ `SRWLOCK`. يبرز هذا المثال كيف يمكن أن تؤدي أخطاء دقيقة في قيمة الإرجاع إلى عواقب وخيمة، ويشدد على أهمية اختيار البدائي المناسب للمزامنة.

اقرأ المزيد
التطوير

مُجمِّع TypeScript الأصلي: زيادة الأداء بمقدار 10 أضعاف

2025-03-11
مُجمِّع TypeScript الأصلي: زيادة الأداء بمقدار 10 أضعاف

أعلن فريق TypeScript عن منفذ أصلي لمُجمِّع TypeScript وأدواته لتحسين الأداء بشكل كبير. من المتوقع أن يؤدي هذا التنفيذ الأصلي إلى تسريع تشغيل المحرر بشكل كبير، وتقليل معظم أوقات البناء بمقدار 10 أضعاف، وتقليل استخدام الذاكرة بشكل كبير. تُظهر الاختبارات الأولية تحسينات في سرعة التجميع تزيد عن 10 أضعاف بالنسبة للعديد من المشاريع الكبيرة (مثل VS Code و Playwright). سيُدعم TypeScript الأصلي في المستقبل (المُخطط له كـ TypeScript 7) عمليات إعادة التشكيل الأكثر تقدمًا، وتحليلًا أعمق للكود، وسيضع الأساس لأدوات تطوير الذكاء الاصطناعي من الجيل التالي. سيستمر الحفاظ على TypeScript 6 (القائم على JS) لضمان انتقال سلس.

اقرأ المزيد

مشكلة دقيقة في استدعاء C++/WinRT وحلها

2025-03-09
مشكلة دقيقة في استدعاء C++/WinRT وحلها

قام طلب سحب من C++/WinRT بإصلاح غموض في استدعاء `invoke` في `winrt::impl::promise_base::set_completed`، والذي سببه البحث المعتمد على الوسيطات (ADL). أدت الترقية إلى روتينات C++20 إلى توسيع مساحة بحث ADL، مما أدى إلى العثور على `std::invoke` بشكل غير متوقع بدلاً من `winrt::impl::invoke` المقصود. تشرح المقالة آلية ADL وتوفر تصحيحًا لإصدارات C++/WinRT القديمة: عن طريق إعلان دالة `invoke` أكثر ملاءمة في مساحة الاسم `winrt::Windows::Foundation` لإرشاد المترجم. يتضمن هذا التصحيح أيضًا تأكيدًا ثابتًا لضمان إزالته تلقائيًا بعد ترقية C++/WinRT.

اقرأ المزيد
التطوير

فخ "آخر" في الإحصاءات: توافق الإصدارات والإحصاءات المفتوحة

2025-03-02
فخ

تتناول هذه المقالة المشاكل المتعلقة باستخدام قيمة "آخر" (مثل WidgetFlavor::آخر) في الإحصاءات بلغة C++. يمثل إضافة قيم جديدة للإحصاء تحديًا: كيف يتم التعامل معها وكيفية ضمان التوافق مع إصدارات الكود القديمة؟ يقترح الكاتب تجنب استخدام "آخر" تمامًا وكتابة الإحصاء على أنه مفتوح، مما يسمح للبرامج بالتعامل مع القيم غير المعروفة بشكل مستقل. هذا يحل مشاكل توافق الإصدارات بشكل أنيق، متجنبًا الارتباك عند إضافة قيم جديدة للإحصاءات وضمان انتقال سلس بين الكود القديم والجديد.

اقرأ المزيد

تحسينات كبيرة في MSVC Address Sanitizer (ASan)

2025-02-25
تحسينات كبيرة في MSVC Address Sanitizer (ASan)

حسّنت مايكروسوفت بشكل كبير جودة MSVC Address Sanitizer (ASan). لقد نجحت في نقل أجزاء رئيسية من ASan إلى LLVM، مما يسمح بدمج أسرع للتحسينات من مجتمع LLVM. علاوة على ذلك، قامت بدمج ASan في قاعدة بيانات MSVC، بما في ذلك المترجم والرابط والأدوات، مما يسمح بالكشف عن مشاكل أمان الذاكرة في التكامل المستمر. يحتوي إصدار Visual Studio 2022 17.13 على العديد من الإصلاحات، مما يقلل من النتائج الإيجابية الخاطئة، ويحسن تقارير الأخطاء، ويدير سيناريوهات متعددة العمليات.

اقرأ المزيد
التطوير

برنامج إعداد Windows 95: قصة معقدة بشكل مدهش لنظام تشغيل مصغر

2025-02-17
برنامج إعداد Windows 95: قصة معقدة بشكل مدهش لنظام تشغيل مصغر

تكشف هذه المقالة عن التعقيد الخفي لبرنامج إعداد Windows 95. لإنشاء برنامج تثبيت بسيط للوهلة الأولى، كان على الفريق إنشاء نظام تشغيل مصغر من الصفر ضمن MS-DOS، بما في ذلك مكتبات الرسومات، ومدير النوافذ، ودعم اللغات المتعددة، وحتى التوافق مع Windows 3.1. أدركوا في النهاية أنه من الأفضل بكثير استخدام بيئة التشغيل الجاهزة لـ Windows 3.1، مما يجنبهم جهود تطوير هائلة. تبرز القصة أهمية إعادة استخدام الشفرة في هندسة البرمجيات، وتكشف عن الطبيعة المعقدة المدهشة لبرنامج إعداد Windows 95.

اقرأ المزيد
التطوير

شاشة "الآن أصبح من الآمن إيقاف تشغيل الكمبيوتر": رحلة حنين إلى نظام ويندوز 95

2025-02-16
شاشة

هل تتذكر رسالة "الآن أصبح من الآمن إيقاف تشغيل الكمبيوتر" في نظام ويندوز 95؟ تحكي هذه القصة موقفًا طريفًا حدث في طائرة حيث قام أحد الركاب بجوار الراوي بإعادة تشغيل حاسوبه المحمول مرارًا وتكرارًا بعد رؤية شاشة "تم إيقاف تشغيل ويندوز"، دون أن يدرك أنه يحتاج إلى إيقاف تشغيل الجهاز يدويًا. يبرز هذا الموقف نقص إدارة الطاقة في أجهزة الكمبيوتر القديمة، ويفسر سبب تضمين ويندوز 95 للرسالة: تذكير لطيف بأنه من الآمن الضغط على زر الطاقة.

اقرأ المزيد
التكنولوجيا ويندوز 95

حكاية من اجتماع مواصفات USB: علاوة اللون الأزرق الشفاف

2025-02-10
حكاية من اجتماع مواصفات USB: علاوة اللون الأزرق الشفاف

في اجتماع لمواصفات USB، عرضت إحدى الشركات محركات أقراص USB المرنة، وعرضت بشكل مفاجئ إصدارات منفصلة لأجهزة الكمبيوتر الشخصية وأجهزة ماك. شعر أعضاء اللجنة بالحيرة، لأن المواصفات تضمن عمل نفس محرك الأقراص على كلا النظامين. أوضح الممثل أن محركات الأقراص متطابقة إلكترونيًا؛ والفرق الوحيد هو أن إصدار ماك يأتي بلون أزرق شفاف ويكلف أكثر. هذا يعكس اتجاه البلاستيك الشفاف الشائع في أجهزة iMac في ذلك الوقت، ويسلط الضوء على كيفية استغلال بعض الشركات اختلافات التصميم للحصول على أسعار أعلى.

اقرأ المزيد

جامع القمامة الفارغ في برامج الصواريخ: تسرب الذاكرة؟ ليست مشكلة!

2025-02-07
جامع القمامة الفارغ في برامج الصواريخ: تسرب الذاكرة؟ ليست مشكلة!

يروي مطور قصة تطبيق ذكي لـ "جامع قمامة فارغ" في برنامج صاروخ. نظرًا لوقت الرحلة المحدود وذاكرة الأجهزة الكافية، لم تكن تسربات الذاكرة في البرنامج مصدر قلق. قام المهندسون بحساب تسرب الذاكرة المحتمل أثناء الرحلة وأضافوا ضعف هذه الكمية من الذاكرة لضمان عدم تعطل البرنامج قبل اكتمال المهمة. استخدم هذا النهج قيود وقت تشغيل البرنامج بذكاء، وحل مشكلة تسرب الذاكرة بكفاءة: نوع من "جمع القمامة النهائي".

اقرأ المزيد
التطوير تسرب الذاكرة

إصلاح كبير في تشفير Go 1.24: تحقيق الامتثال لمعيار FIPS 140-3

2025-02-06

أعادت Go 1.24 هيكلة حزم التشفير الخاصة بها بشكل كبير لتحقيق الامتثال لمعيار FIPS 140-3. وهذا يمثل قفزة كبيرة إلى الأمام، حيث تميزت بتطبيق نقي بلغة Go (وتجميع Go) لوحدة تشفير معتمدة من FIPS 140-3، مما يلغي الاعتماد على cgo أو استدعاءات النظام. كما تم تحديث Microsoft Go 1.24، حيث أضاف دعمًا تجريبيًا لنظام macOS ودعمًا محسنًا لنظام Azure Linux، ولكنه لا يزال يستخدم مكتبات النظام للتشفير، وهو ما يختلف عن النهج الرسمي في Go. تتحكم متغيرات بيئية جديدة مثل GODEBUG=fips140=on و GOFIPS140=latest في وضع FIPS؛ حيث يتم تفعيله تلقائيًا بواسطة وقت التشغيل على الأنظمة المتوافقة مع FIPS (Azure Linux، و Windows).

اقرأ المزيد
التطوير

عيب في التصميم و إبريق شاي مخفي في شاشة توفير طاقة Windows 3D Pipes

2024-12-28
عيب في التصميم و إبريق شاي مخفي في شاشة توفير طاقة Windows 3D Pipes

حافظة الشاشة 3D Pipes في نظام التشغيل Windows المحبوبة، والمعروفة برسوماتها الرائعة للأنابيب، تخفي سرًا غير معروف: إبريق شاي نادر الظهور. هذا الإبريق تكريم لإبريق ولاية يوتا، وهو نموذج مرجعي قياسي في رسومات الكمبيوتر، لكن معدل ظهوره المنخفض للغاية أدى إلى شكاوى المستخدمين بشأن انخفاض الإنتاجية. وتكشف المقالة أيضًا أنه في إصدارات Windows القديمة، تسببت حافظة الشاشة في ارتفاع استخدام وحدة المعالجة المركزية على الخوادم نظرًا لعملية العرض بالبرامج، موصيًا باستخدام حافظة شاشة سوداء للخوادم.

اقرأ المزيد

أخطاء مُجمِّع C++: أخطاء لا معنى لها من إعلان دالة

2024-12-12
أخطاء مُجمِّع C++: أخطاء لا معنى لها من إعلان دالة

واجه مطور أثناء إضافة دعم XAML إلى تطبيق C++ سلسلة من أخطاء المُجمِّع بمجرد تضمين ملف الرأس winrt/Windows.UI.Xaml.h. نشأت الأخطاء مما بدا وكأنه إعلان دالة عادي: `template struct consume_Windows_UI_Xaml_IExceptionRoutedEventArgs { [[nodiscard]] auto ErrorMessage() const; };` كان السبب الرئيسي هو وجود ماكرو موجود مسبقًا يسمى ErrorMessage في مشروع المطور، مما تسبب في تعارض مع اسم الدالة. أنشأ هذا الماكرو كائن ErrorMessageString وأعاد مؤشرًا إلى سلسلة رسالة خطأ. أدت حدود الماكرو غير المحددة إلى تفسير المُجمِّع الخاطئ لإعلان الدالة على أنه استدعاء ماكرو، مما أدى إلى أخطاء مثل "عدد غير كافٍ من الوسائط". كان الحل يتضمن تعطيل الماكرو باستخدام #pragma undef قبل تضمين الرأس أو إزالة الماكرو بالكامل واستبداله بدالة مضمنة.

اقرأ المزيد