البرمجة بالعربي
مقالات عملية مرتبة حسب المجال والمستوى، اختر المجال المناسب واقرأ من مستوى مبتدئ إلى محترف.
JavaScript Proxy: اعمل Reactive State بـ 20 سطر بدل Vue
لو عايز state object بيعيد render لوحده لما يتغير من غير ما تجيب Zustand أو Vue كاملة، الـ Proxy في JavaScript بيعمل ده في 20 سطر بس. هنفك إزاي بيشتغل، قياسات performance حقيقية، وإمتى المكتبات الكبيرة هتبقى أفضل.
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.