
مدوّنتنا
تصفّح مقالات مدوّنتنا حول تصميم وتطوير المواقع والتسويق الرقمي لتبقى على اطّلاع بأحدث التوجّهات والاستراتيجيات.
تم العثور على 101 مقال
أمان مستوى الصفوف في Postgres لتطبيقات Node.js متعددة المستأجرين: الأدوار والاتصالات المجمّعة والنقاط العمياء — ملاحظات ميدانية
ننقل عزل المستأجرين في تطبيقات Node.js ذات المخطط المشترك إلى ميزة Row-Level Security في PostgreSQL، فيُرجع الشرط المنسي WHERE tenant_id صفر صفوف بدلًا من بيانات عميل آخر. تغطي ملاحظاتنا شكل السياسة، وفصل الأدوار الذي يمنع تجاوز RLS بصمت، ونمط set_config الصامد أمام تجميع الاتصالات، والنقاط العمياء.
مكوّن Activity في React داخل Next.js 16: كيف نتعامل مع الصفحات المخفية وإعادة تشغيل التأثيرات وuseEffectEvent
عند تفعيل cacheComponents يتوقف Next.js 16 عن إزالة الصفحات ويخفيها بدلًا من ذلك باستخدام مكوّن Activity في React. نشرح هنا كيف يقرر فريقنا أي حالة يجب أن تبقى بعد الانتقال، وكيف نعيد ضبط الآثار الجانبية لعناصر DOM التي تستمر رغم display: none، وكيف نستخدم useEffectEvent لتقليل كلفة إعادة تشغيل التأثيرات، وكيف نمنع Playwright من النقر على صفحات غادرها المستخدم.
BullMQ 6 في NestJS: المهام المتوقفة، ومنع التكرار، ونقل المهام المتكررة إلى Job Schedulers — ملاحظات ميدانية
كيف نشغّل BullMQ 6 خلف NestJS في الإنتاج: Redis بإعداد noeviction، ومعالجات معزولة تمنع تنفيذ المهام المتوقفة مرتين، والفرق بين jobId وdeduplication، ونقل المهام المتكررة إلى Job Schedulers قبل الترقية إلى BullMQ 6.
تدوير رموز التحديث في NestJS وNext.js: كشف إعادة الاستخدام وعائلات الرموز وسباق التحديث المتوازي — ملاحظات ميدانية
كيف ندوّر رموز التحديث في كل استخدام داخل واجهات NestJS البرمجية، ونخزّنها كعائلات رموز مُجزّأة في Postgres، ونُلغي العائلة كاملة عند عودة رمز مستخدَم، ونمنع الطلبات المتوازية وعمليات الجلب المسبق في Next.js من تسجيل خروج المستخدمين.
قواعد التخمين المسبق (Speculation Rules) في Next.js: كيف نعرض التنقلات الكاملة مسبقًا دون كسر التحليلات أو سياسة CSP
تتيح واجهة Speculation Rules API لمتصفحات Chromium جلب الصفحة التالية أو عرضها بالكامل مسبقًا قبل النقر، لكنها في تطبيقات Next.js App Router لا تُسرّع إلا التنقلات الكاملة. هكذا نحصر القواعد، ونشغّلها بأمان تحت سياسة CSP صارمة، ونستبعد الروابط ذات الآثار الجانبية، ونُبقي العرض المسبق خارج إحصاءات التحليلات.
تدافع الكاش في Node.js: كيف نستخدم دمج الطلبات وأقفال Redis ونمط stale-while-revalidate للمفاتيح الساخنة
انتهاء صلاحية مفتاح كاش شائع تحت الضغط يرسل كل الطلبات المتزامنة إلى قاعدة البيانات دفعة واحدة. إليكم كيف نبني طبقات الحماية من تدافع الكاش في خدمات Node.js وNestJS لدينا: دمج الطلبات داخل العملية، وقفل Redis عبر SET NX بين النسخ، وTTL مرن يقدّم البيانات القديمة بينما يحدّثها عامل واحد، والانتهاء المبكر الاحتمالي، والتذبذب العشوائي في TTL.
عقود API مُنمَّطة من NestJS إلى Next.js عبر OpenAPI: كيف نُبقي أنواع الواجهة صادقة
توقفنا عن نسخ أنواع الـ DTO يدويًا بين واجهات NestJS البرمجية وتطبيقات Next.js، وأصبحنا نولّدها من مواصفة OpenAPI التي يُخرجها NestJS أصلًا. هذا مسارنا الكامل — إضافة Swagger CLI وopenapi-typescript وعميل openapi-fetch لكل طلب وفحص الانحراف في CI — والمواضع التي ما زالت الأنواع المولَّدة تكذب فيها.
نمط Transactional Outbox في Postgres و NestJS: كيف أنهينا الكتابة المزدوجة بين قاعدة البيانات وقائمة الانتظار
استبدلنا نمط الحفظ ثم النشر (الكتابة المزدوجة) في خدمات NestJS لدينا بنمط Transactional Outbox في Postgres: يُثبَّت صف الحدث مع التغيير الأساسي، وينشره ناقل يعتمد على SKIP LOCKED، ويزيل المستهلكون التكرار بمعرّف الحدث. إليك التصميم، وحالات الفشل التي يغلقها، وكيف نشغّله في الإنتاج.
JSON-LD في Next.js App Router: كيف نكتب أنواع البيانات المنظَّمة ونسلسلها ونختبرها — ملاحظات ميدانية
نعرض JSON-LD من مكوّنات الخادم في Next.js App Router، ونهرّب كل علامة «أصغر من» حتى لا يغلق المحتوى وسم script، ونكتب أنواع الرسم بحزمة schema-dts، ونُبقيه متطابقاً مع الصفحة عبر اختبار CI. وهذه أنواع schema.org التي لا تزال تستحق مكانها في 2026.
لماذا ينكسر CORS بين Next.js و NestJS: ملاحظاتنا الميدانية حول طلبات Preflight وملفات تعريف الارتباط والتمرير عبر وكيل
في كل مرة نفصل فيها واجهة Next.js عن واجهة برمجية NestJS نواجه أخطاء CORS الثلاثة نفسها: طلبات preflight مرفوضة، وأصل عام * ينكسر مع ملفات تعريف الارتباط، وجلسات لا تصل أبدًا. إليك ما تفعله كل ترويسة CORS فعلًا، وإعداد قائمة السماح الذي نعتمده، ومتى نمرّر /api عبر rewrite في Next.js بدلًا من ذلك.
الإيقاف الآمن لتطبيقات Node.js وNestJS داخل Docker: إشارة SIGTERM وتصريف الطلبات وترتيب الـ Hooks
كانت حاويات NestJS لدينا تنتهي برمز الخروج 137 عند النشر، أي أنها تُقتل بإشارة SIGKILL في منتصف الطلبات بعد مهلة Docker البالغة 10 ثوانٍ. نشرح هنا كيف أصلحنا وصول الإشارة، وفعّلنا shutdown hooks في NestJS، ونقلنا إغلاق الاتصالات إلى الـ hook الذي يعمل بعد انتهاء خادم HTTP من تصريف الطلبات.
خطافات Claude Code: كيف نحوّل قواعد وكلاء الذكاء الاصطناعي إلى حواجز حماية حتمية
القاعدة في CLAUDE.md طلبٌ يلتزم به النموذج غالبًا، أما خطاف Claude Code فيعمل في كل مرة. نشارك كيف يستخدم فريقنا خطافات PreToolUse وPostToolUse وStop لحظر ملفات الأسرار وتنسيق التعديلات تلقائيًا ورفض الإنهاء عند فشل فحص الأنواع.
ابقَ على اطّلاع
اشترك في نشرتنا البريدية للحصول على أحدث الرؤى حول تصميم وتطوير المواقع والتسويق الرقمي.