مقالات عملية مرتبة حسب المجال والمستوى، اختر المجال المناسب واقرأ من مستوى مبتدئ إلى محترف.
لو محتاج تبني محرّر مستندات تعاوني زي Google Docs أو Figma، الـ Operational Transformation اللي بتشتغل في Google Docs محتاجة سيرفر مركزي يرتّب كل تعديل. CRDTs بـ Yjs بتدمج تعديلات 50 مستخدم محليًا بدون سيرفر مركزي، بـ convergence رياضية مضمونة وحجم state أصغر 8x من نسخة OT المماثلة. مقال للمحترف بمثال مفكرة الفريق للمبتدئ، تعريف علمي من ورقة Shapiro 2011 و Yjs CRDT spec، كود JavaScript شغّال على Yjs 13.6 مع y-websocket في 40 سطر، أرقام مقاسة من Linear وFigma وJupyterLab، 4 trade-offs حقيقية، وحالات OT لسه أفضل من CRDT.
لو سكربت Node.js عندك بيقرأ ملف 200MB ويعالجه ويكتبه على S3 وبياكل 4.2GB ذاكرة قبل ما يقع، المشكلة مش في الحجم. الـ Readable بيقرأ بـ 480MB/s والـ Writable بيكتب بـ 22MB/s، الفرق بيتراكم في buffer. مقال للمحترف بمثال عامل المخزن للمبتدئ، تعريف علمي للـ highWaterMark والـ drain من توثيق Node.js، كود stream.pipeline() شغّال على Node 22، أرقام مقاسة (98% توفير ذاكرة)، 4 trade-offs، ومتى لا تستخدمه أصلاً.
لو شغّلت PostgreSQL و RocksDB على نفس Samsung 990 Pro NVMe، PostgreSQL بيكتب 78MB/s متواصل و RocksDB بيكتب 340MB/s. الفرق مش في تحسين الكود — الفرق في data structure مختلفة بالكلية. مقال للمحترف بمثال موظف الأرشيف للمبتدئ، تعريف علمي من ورقة Bayer 1972 و O'Neil 1996، benchmark شغّال بـ pgbench و db_bench، أرقام مقاسة، 4 trade-offs (write/read/space amplification + tail latency)، ومتى لا تستخدم أي منهما أصلاً.
لو فريقك مكرّر 8 سطور لـ logging و auth في كل endpoint من 240 endpoint، انت بتدفع 1920 سطر boilerplate قابل يخبّي bugs. Python Decorators بتشيل الكلام ده بسطر واحد فوق كل function. مقال للمحترف بمثال حارس البنك للمبتدئ، تعريف علمي للـ higher-order functions و closures، كود FastAPI شغّال على Python 3.12 مع functools.wraps و contextvars، أرقام مقاسة من إنتاج (1920 سطر اتحوّلوا لـ 38 سطر)، 4 trade-offs حقيقية، ومتى Decorators بتبقى الاختيار الغلط أصلاً.
لو ZSET في Redis فيه 10 مليون عنصر وبترجّع top 100 في 0.3ms، الفضل لـ Skip List مش لشجرة متوازنة. شرح للمحترف بمثال قطار المترو للمبتدئ، تعريف علمي من ورقة Pugh 1990، كود Python في 50 سطر، أرقام مقاسة على Redis 7.2، 4 trade-offs حقيقية، ولماذا Salvatore اختار Skip List مش Red-Black Tree، مع المصادر الرسمية.
لو الـ cache cluster بتاعك بيقع كل ما تضيف سيرفر جديد لأن hash(key) % N بيغيّر مكان كل المفاتيح، Consistent Hashing بيخلّي 2% بس من المفاتيح تتنقل بدل 98%. شرح للمحترف بمثال موزّع البريد للمبتدئ، تعريف علمي دقيق من ورقة Karger 1997، كود Python شغّال يقيس الفرق فعليًا، فكرة virtual nodes ومتى تحتاج 150 vnode لكل سيرفر، أرقام مقاسة، trade-offs، والحالات اللي ما تستخدمهوش فيها.
لو الكود بتاعك بيجيب بيانات من 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.
لو شغّلت 8 threads في Python على CPU بـ 16 core وفوجئت إن الكود ماتسرّعش بل بطئ، السبب اسمه Global Interpreter Lock. مقال للمحترف بمثال الميكروفون الواحد للمبتدئ، تعريف علمي دقيق لـ CPython وbytecode evaluation، كود Python 3.12 شغّال يقيس الفرق بين threading و multiprocessing، أرقام مقاسة فعلياً، نظرة على PEP 703 وفكرة free-threaded Python، trade-offs واضحة، وحالات يبقى فيها threading منطقي رغم الـ GIL.
لو الـ API بتاعك بيتعرّض لـ 50 ألف طلب في الثانية ومحتاج تمنع زبون واحد من ابتلاع الموارد، Redis SETEX بيكلّفك 1.2 مللي ثانية لكل طلب من round-trip للشبكة. Token Bucket في الذاكرة بينزّل الزمن ده لـ 78 ميكروثانية. مقال للمحترف بمثال ماكينة الكافيه للمبتدئ، تعريف علمي دقيق، كود Python 3.12 شغّال مع threading.Lock، أرقام مقاسة بـ wrk، الفرق بين Token Bucket و Leaky Bucket و Sliding Window، trade-offs، وحالات لا تستخدمه فيها.