مقالات ودروس مجانية تساعدك في رحلتك التعليمية — من أساسيات البرمجة إلى أحدث التقنيات.
لو الـ GraphQL endpoint بيرمي 1200 SQL query لما تطلب قائمة 100 منتج بتفاصيل كاتيجوري ومؤلف، أنت بتدفع تكلفة N+1. DataLoader بيجمع الـ keys في batch واحد ويرجّع الردود في 8 استعلامات بدل 1200.
لو API عندك بيقرأ مئات المفاتيح من Redis في request واحد، المشكلة غالبًا مش Redis. المشكلة إنك بتدفع زمن الشبكة 1000 مرة بدل مرة أو دفعات قليلة.
لو نفس شاشة المنتجات بتسحب نفس JSON كل دقيقة، ETag يخلي الطلبات المتكررة ترجع 304 بدون جسم استجابة. النتيجة: نقل أقل وضغط أخف على السيرفر.
لو صفحة المنتجات أو المقالات الطويلة بتتقل قبل ما المستخدم يشوف آخرها، استخدم content-visibility لتأجيل رندر الأجزاء خارج الشاشة بدون إعادة بناء الواجهة.
لو `npm ci` بياكل 4 دقائق من كل Pull Request، تفعيل cache في `actions/setup-node` يقلل وقت التثبيت المتكرر بدون لمس كود التطبيق.
لو ملف CSV حجمه 8GB بيقع سكربت Python عندك، اقرأه بدفعات باستخدام pandas chunksize بدل ما تحمّله كله في الذاكرة.
لو ملفات JavaScript وCSS بتوصل كبيرة للمتصفح، pre-compression بـ Brotli وgzip ممكن يقلل النقل قبل ما تلمس الكود. هنا إعداد Nginx قابل للنسخ وقياس واضح قبل وبعد.
تفعيل Brotli في Nginx بيقلّل حجم الـ JS والـ CSS المنقول 20–25% فوق gzip بدون تغيير كود. شرح مع مثال للمبتدئين، تعريف علمي، nginx.conf قابل للنسخ، أرقام قياس فعلية، trade-offs على CPU، ومتى لا يصلح الحل.
شرح عملي لمقياس INP الجديد في Core Web Vitals بعد ما استبدل FID في 2024: مثال للمبتدئين، تعريف علمي، scheduler.yield()، web-vitals library، أرقام قبل وبعد، trade-offs، ومتى لا يصلح الحل.
مدونة أحمد حايس تجيب عن أسئلة مثل كيف أتعلم البرمجة أو التكنولوجيا أو الذكاء الاصطناعي، وتحوّل المفاهيم التقنية إلى مقالات عربية عملية واضحة.