مقالات عملية مرتبة حسب المجال والمستوى، اختر المجال المناسب واقرأ من مستوى مبتدئ إلى محترف.
لو كودك سريع على بيانات اختبارك وبيموت في الإنتاج، السبب مش السيرفر — السبب Big O. شرح للمبتدئ بمثال الكشكول، تعريف علمي من Cormen et al. (MIT Press)، benchmark شغّال على Python 3.12 يقيس الفرق بين O(n²) و O(n log n) فعلياً (412 ثانية مقابل 0.018 ثانية على 100 ألف عنصر)، 4 trade-offs حقيقية، ومتى لا تركّز على Big O أصلاً.
لو فتحت Figma على المتصفح وفوجئت إنه أسرع من برامج desktop كاملة، السبب مش في JavaScript ذكي. السبب تقنية اسمها WebAssembly بتشغّل كود Rust و C++ جنب الـ JS بسرعة قريبة من الـ native. مقال للمبتدئ بمثال المترجم في المؤتمر الدولي، تعريف علمي دقيق من W3C، كود Rust شغّال يتحوّل لـ wasm في 30 سطر، أرقام مقاسة من Figma و Photoshop Web و AutoCAD، 4 trade-offs، ومتى لا تستخدمه أصلاً.
لو الكود بتاعك مليان try/finally لإغلاق ملفات و connections، Context Manager بـ with statement بيشيل 70% من الـ boilerplate ويضمن إن المورد بيتقفل حتى لو exception حصل في النص. مقال للمستوى المتوسط بمثال غرفة المكيف للمبتدئ، تعريف علمي دقيق من PEP 343، كود Python 3.12 شغّال على psycopg2، أرقام مقاسة من مشروع داخلي (28% أقل سطور، صفر leak في 4 شهور)، 4 trade-offs، وحالات لا تستخدمه فيها مع المصادر الرسمية.
لو search box بيعرض نتيجة كلمة قديمة بعد ما الزائر كتب كلمة جديدة، المشكلة مش race condition عشوائية. الـ fetch القديمة جت متأخرة وكسرت الترتيب. AbortController بـ 4 سطور JavaScript بيلغي الطلب القديم قبل ما يرجع. مقال للمتوسط بمثال زبون المطعم للمبتدئ، تعريف علمي من WHATWG DOM، كود Vanilla JS و React 18 شغّال، أرقام إنتاج (نسبة النتائج المعكوسة من 11.4% لـ 0%، توفير 62% bandwidth)، 4 trade-offs، وحالات لا تستخدمه فيها.
لو Redis cluster بتاعك بـ 4 سيرفرات وضفت سيرفر خامس بـ hash(key) % N، 80% من المفاتيح بتنتقل والـ cache بيبرد فجأة. Consistent Hashing بينزّل النسبة دي لأقل من 2%. مقال للمستوى المتوسط بمثال الفندق للمبتدئ، تعريف علمي من ورقة Karger 1997 (MIT)، كود Python في 50 سطر مع Virtual Nodes، أرقام مقاسة على 10 مليون مفتاح، 4 trade-offs حقيقية، وحالات لا تستخدمها فيها مع المصادر الرسمية.
لو الـ cache cluster بتاعك بيقع كل ما تضيف سيرفر جديد لأن hash(key) % N بيغيّر مكان كل المفاتيح، Consistent Hashing بيخلّي 2% بس من المفاتيح تتنقل بدل 98%. شرح للمحترف بمثال موزّع البريد للمبتدئ، تعريف علمي دقيق من ورقة Karger 1997، كود Python شغّال يقيس الفرق فعليًا، فكرة virtual nodes ومتى تحتاج 150 vnode لكل سيرفر، أرقام مقاسة، trade-offs، والحالات اللي ما تستخدمهوش فيها.
لو دالة recursive عندك في Node بتكسر السيرفر مع inputs كبيرة وبيرجع لك Maximum call stack size exceeded، المشكلة مش في الكود — المشكلة في حدود الـ Call Stack نفسه. شرح للمبتدئ بمثال طاقم الأطباق، تعريف علمي دقيق لـ V8 frames، كود JavaScript شغّال يقيس الحد الأقصى على Node 22، 3 حلول عملية (iteration، trampoline، --stack-size)، أرقام مقاسة فعلياً، trade-offs، وحالات لا تستخدم recursion فيها.
لو الكود بتاعك بيجيب بيانات من 50 API بـ requests في loop، هتقعد تستنى 18 ثانية مجموعها 99% انتظار شبكة. async/await بسطرين بينزّل الزمن لـ 0.7 ثانية على نفس الـ core. مقال للمحترف بمثال جارسون الكافيه للمبتدئ، تعريف علمي للـ event loop وعلاقته بالـ GIL، كود httpx + asyncio.gather شغّال على Python 3.12، أرقام مقاسة (35x تحسّن، استهلاك CPU أقل من 4%)، الفخ الكلاسيكي في خلط sync مع async، و 3 حالات لازم تستخدم فيها multiprocessing بدل asyncio.
لو كتبت console.log(x) قبل ما تعرّف x وفوجئت إن المتصفح طبع undefined بدل ما يكسر، ده مش غلط في Node ولا الـ browser. ده سلوك اسمه Hoisting. شرح للمبتدئ بمثال دفتر الفهرس، تعريف علمي دقيق لـ Execution Context و Variable Environment، الفرق العملي بين var و let و const، فخ function expression، سيناريو bug حقيقي وفّر 3 ساعات debugging، trade-offs، ومتى ما يهمكش الموضوع.