المدونة
مقالات عملية مرتبة حسب المجال والمستوى، اختر المجال المناسب واقرأ من مستوى مبتدئ إلى محترف.
AbortController: إلغاء طلبات fetch قبل ما تأكل ذاكرة المتصفح
لما المستخدم يغيّر الصفحة وسط fetch شغّال، الطلب بيفضل يستهلك ذاكرة ويحاول setState على مكون اتشال. AbortController بيوقفه فورًا. كود React جاهز، أرقام قياس حقيقية، وtrade-offs لازم تعرفها قبل ما تستخدمه في POST.
Big O Notation بالعربي: إزاي تعرف إن الكود هيقع قبل ما يدخل production
الكود بيشتغل على 1000 سجل في 50ms، وبعد شهر في production بياخد 8 ثواني على مليون سجل. المشكلة مش في السيرفر - المشكلة في Big O. المقال يديك الخمسة تعقيدات اللي هتقابلك فعلًا، كود شغّال بقياسات حقيقية، وقرار واضح إمتى تهتم وإمتى لأ.
SQL Window Functions: احسب ranking و running total في query واحدة
لو بتكتب كل تقرير تحليلي بـ subquery طويل وself-join عشان تجيب ترتيب موظف داخل قسمه أو مجموع تراكمي، الـ window functions بتوفر 80% من الكود وبتدي أداء أحسن 15 ضعف في الحالات الحقيقية. كود شغّال على PostgreSQL بقياسات وtrade-offs.
SQL Window Functions: احسب Running Total وRanking بدون Self Join
لو لسه بتستخدم Self Join أو Subquery علشان تجيب Running Total أو ترتيب داخل كل عميل، الـ Window Functions بتعمل نفس الشغل بسطر واحد وبأداء أحسن. المقال فيه أمثلة PostgreSQL شغالة وقياس Execution Plan وحالات ما تنفعش فيها.
TypeScript Generics: دالة واحدة لكل الأنواع من غير any
لو بتكرر نفس الدالة 3 مرات لأنواع مختلفة، أو بتستخدم any عشان تخلّص، Generics بيحلّوا المشكلتين. كود شغّال، قواعد بتمنع bugs، وامتى Generic بيبقى over-engineering.
Python Decorators: أضف Logging و Caching بدون تعديل الدالة
لو بتنسخ نفس كود الـ logging أو الـ timing في كل فانكشن، decorator واحد بيختصرهم. المقال يديك كود شغّال لـ logging، وcaching بـ lru_cache بقياسات حقيقية، وtrade-offs لازم تعرفها قبل ما تستخدمها في production.
Debounce و Throttle في JavaScript: الفرق اللي بيوفرلك 90% من طلبات الـ API
لو عندك حقل بحث بيضرب الـ API مع كل حرف، المستخدم بيكتب 20 حرف، السيرفر بياخد 20 طلب. Debounce و Throttle بيحلوا المشكلة دي، لكن بطريقتين مختلفتين تمامًا. هنفك الفرق بكود جاهز وقرار واضح متى تستخدم أي منهما.
Python Generators: ليه range(10**8) مش بيفجر الذاكرة؟
لو الـ script بتاعك بياكل ذاكرة في الملفات الكبيرة، الحل اللي بايثون بيديه ببلاش اسمه generators. هنفك إزاي بيشتغل، امتى يفيدك، وامتى لا تستخدمه بكود production.
Promise.all ضد Promise.allSettled: الفرق اللي بيكسر الـ production
لو استخدمت Promise.all في dashboard بيجيب بيانات من 4 مصادر وخدمة واحدة وقعت، المستخدم شاف شاشة فاضية. القرار بالظبط: إمتى "كل أو لا شيء"، وإمتى تحتاج نتيجة كل طلب على حدة مع كود جاهز للإنتاج.
CVE-2026-4747: ثغرة FreeBSD NFS عمرها 17 سنة — خطوات الاستجابة خلال 24 ساعة
ثغرة CVE-2026-4747 في kgssapi.ko كشفها Claude Mythos وبتدّي root عن بُعد على أي FreeBSD شغّال NFS مع Kerberos. القرار مش "patch بكرة"، القرار بالظبط: إيه المطلوب خلال 24 ساعة وإيه اللي ينفع يستنى أسبوع.