مقالات ودروس مجانية تساعدك في رحلتك التعليمية — من أساسيات البرمجة إلى أحدث التقنيات.
الكود بيشتغل على 1000 سجل في 50ms، وبعد شهر في production بياخد 8 ثواني على مليون سجل. المشكلة مش في السيرفر - المشكلة في Big O. المقال يديك الخمسة تعقيدات اللي هتقابلك فعلًا، كود شغّال بقياسات حقيقية، وقرار واضح إمتى تهتم وإمتى لأ.
لو بتكتب كل تقرير تحليلي بـ subquery طويل وself-join عشان تجيب ترتيب موظف داخل قسمه أو مجموع تراكمي، الـ window functions بتوفر 80% من الكود وبتدي أداء أحسن 15 ضعف في الحالات الحقيقية. كود شغّال على PostgreSQL بقياسات وtrade-offs.
لو لسه بتستخدم Self Join أو Subquery علشان تجيب Running Total أو ترتيب داخل كل عميل، الـ Window Functions بتعمل نفس الشغل بسطر واحد وبأداء أحسن. المقال فيه أمثلة PostgreSQL شغالة وقياس Execution Plan وحالات ما تنفعش فيها.
لو بتكرر نفس الدالة 3 مرات لأنواع مختلفة، أو بتستخدم any عشان تخلّص، Generics بيحلّوا المشكلتين. كود شغّال، قواعد بتمنع bugs، وامتى Generic بيبقى over-engineering.
لو بتنسخ نفس كود الـ logging أو الـ timing في كل فانكشن، decorator واحد بيختصرهم. المقال يديك كود شغّال لـ logging، وcaching بـ lru_cache بقياسات حقيقية، وtrade-offs لازم تعرفها قبل ما تستخدمها في production.
لو عندك حقل بحث بيضرب الـ API مع كل حرف، المستخدم بيكتب 20 حرف، السيرفر بياخد 20 طلب. Debounce و Throttle بيحلوا المشكلة دي، لكن بطريقتين مختلفتين تمامًا. هنفك الفرق بكود جاهز وقرار واضح متى تستخدم أي منهما.
لو الـ script بتاعك بياكل ذاكرة في الملفات الكبيرة، الحل اللي بايثون بيديه ببلاش اسمه generators. هنفك إزاي بيشتغل، امتى يفيدك، وامتى لا تستخدمه بكود production.
لو استخدمت Promise.all في dashboard بيجيب بيانات من 4 مصادر وخدمة واحدة وقعت، المستخدم شاف شاشة فاضية. القرار بالظبط: إمتى "كل أو لا شيء"، وإمتى تحتاج نتيجة كل طلب على حدة مع كود جاهز للإنتاج.
مدونة أحمد حايس تجيب عن أسئلة مثل كيف أتعلم البرمجة أو التكنولوجيا أو الذكاء الاصطناعي، وتحوّل المفاهيم التقنية إلى مقالات عربية عملية واضحة.