صفحة ثابتة هي في الخفاء اختبار A/B
عادةً ما يُبنى اختبار A/B بحيث تسقط الصفحة من الـ CDN إلى تصيير عند كل طلب. لا يجب أن يكون كذلك. أبقِ كل متغيّر ثابتًا بالكامل ودع الـ proxy (الـ middleware الذي أعادت Next.js تسميته) يحلّ الإسناد عبر منصّة تجارب، اعتمادًا على device id ثابت — ثم أعِد الكتابة فقط حين لا يكون الزائر في المجموعة الضابطة. الرابط لا يتغيّر أبدًا، والـ CDN ما زال يخزّن مؤقتًا، والمسار الشائع لا يكلّف شيئًا.
النشر إلى Vercel من الـ CI حين لا يكون صاحب الـ commit عضوًا في الفريق
انقل مستودعًا إلى منظمة على GitHub، وسيبدأ Vercel بحجب عمليات النشر بهدوء: الـ commit «تعذّر مطابقته بعضو في الفريق». إليك كيف أنشر بدلًا من ذلك من GitHub Actions عبر واجهة Vercel السطرية — تبقى commit‑اتي محسوبة في رسم مساهماتي على GitHub، ولا يزال اللوح يُظهر من دفع، ولا أشتري مقعدًا لكل مساهم.
تسريب ذاكرة Next.js: Fetch + وضع Standalone — سنتان دون إصلاح
يقوم Next.js بترقيع دالة fetch العامة ويضيف طبقة تخزين مؤقت تتسرب منها الذاكرة مع كل طلب. في Docker/K8s يؤدي هذا إلى انهيارات OOM كل بضع ساعات. توجد العلة منذ Next.js 14 ولا تزال دون حل في 16.2.x.
تشغيل عدة حسابات Claude Code على جهاز واحد
كيفية استخدام حسابين (أو أكثر) من Claude Code جنبًا إلى جنب — شخصي وحساب الشركة — بعزل كامل باستخدام متغيّر بيئة واحد.
التحميل الكسول لمحتوى المدونة في SolidStart دون فقدان الـ SSG
على الأرجح تشحن مدونتك متن كل مقالة في حزمة (bundle) واحدة — وقد بلغ حجم مدونتي 2.88 MB، وكان يُحمَّل حتى في صفحة الفهرس حيث لا تحتاج سوى العناوين. إليك كيف قسّمت نص كل مقالة إلى chunk كسول يُحمَّل عند الطلب، مع بقاء كل صفحة مُصيَّرة بالكامل على الخادم من أجل الـ SEO.
CRAFT: طريقة لاستخدام الذكاء الاصطناعي دون أن تفقد حِرفيّتك
تسمية المشكلة دون تقديم حلٍّ لا تزرع سوى القلق. بعد التدوينة عن فقدان المهارة بسبب الذكاء الاصطناعي، إليك الوصفة: CRAFT — خمسة مبادئ (Challenge First, Review Adversarially, Ask Why Not What, Friction on Purpose, Test Your Understanding) تحت بديهيةٍ واحدة: الذكاء الاصطناعي يفعل ما أتقنته، وأنت تفعل ما لا تزال تتعلّمه. طريقة عملية سهلة الاستحضار لاستخدام الذكاء الاصطناعي كل يوم دون أن تفقد المهارة في صمت.
مستمع واحد بدلاً من مكوّن عميل لكل زر
في اللحظة التي تضيف فيها تحليلات النقر إلى مكوّن، يتحوّل إلى مكوّن عميل يشحن جافاسكريبت. افعل ذلك عبر الموقع بأكمله، ويكفي التتبّع وحده لتضخيم الحزمة. إليك البديل الموجود في المنصّة منذ الأزل: مستمع واحد مفوَّض، وسمات data تصريحية، ومكوّنات تبقى HTML صرفًا مُصيَّرًا على الخادم.
أكورديون سلس بدون أي JavaScript
يلجأ الجميع إلى حالة React وخطّاف يقيس الارتفاع لبناء أكورديون. لقد وفّر المتصفح عنصرًا أصليًا لسنوات — واعتبارًا من 2024 صار يحرّك الفتح والإغلاق بـ CSS خالص. إليك التقنية الكاملة: details[name] و ::details-content و interpolate-size والخاصية الوحيدة التي تجعل الإغلاق يتحرّك أيضًا.
التقط قيمة من طرف ثالث لحظة وصولها إلى window
سكريبت لا تتحكم فيه يكتب نتيجته في global على window في وقت لا يمكنك التنبؤ به. معظم الأكواد تتسابق معه باستخدام timeout أو تهدر main thread في polling. إليك حيلة accessor property التي تحوّل الكتابة إلى event — بالإضافة إلى getter الذي يجب ألا تنساه، وكيفية استبدال القيمة بالكامل.
لجعل النص يتلاءم مع حاويته باستخدام CSS خالص — دون JavaScript
الجميع يكتب خطاف JavaScript يقلّص font-size حتى يتّسع النص داخل الحاوية. إليك بديلاً يعمل بالكامل ودون أي JS باستخدام وحدات container query وclamp() والفصل المقطعي بشرطة حسب اللغة — بما في ذلك فخ التتالي (cascade) الذي يجعل كثيرين يستسلمون.
next/dynamic لن ينقذك: لماذا تُرسل صفحات Next.js المدارة عبر CMS كل حزمة (chunk)؟
كانت صفحات Next.js لدينا، المدارة عبر CMS، تُرسل نحو 100 مكوّن قسم على كل مسار — رغم استخدام next/dynamic بشكل مثالي وفق الكتاب. استنفدنا كل إصلاح على مستوى المُجمِّع (import() المباشر، وتقسيم الملفات، وإعداد Turbopack، و splitChunks في webpack) قبل أن نكتشف السبب الحقيقي: إمكانية الوصول (reachability)، لا التقطيع إلى حزم (chunking). أدى توليد الكود في وقت البناء مع rewrites إلى خفض JavaScript التحميل الأول بنسبة 53%.
أُخرج لوحاتي من Miro إلى Obsidian
زر Export في Miro يمنحك ملف PNG أو PDF — صورة فوتوغرافية للبيانات، لا البيانات نفسها. إن كانت لوحاتك خرائط تفكير حاملة للأثقال تراكمت على مدى سنوات، فمكانها Obsidian: قابلة للتحرير، قابلة للبحث، في vault محلي. إليك كيف أخرجت اللوحات من Miro عبر REST API وحوّلتها إلى Excalidraw / Obsidian Canvas — مع الحفاظ على المواضع والألوان والخطوط والموصّلات المنحنية وعُقد الخرائط الذهنية — والدرس أوسع من Miro: كل SaaS يستحق خطة خروج قبل أن تفتحه أصلاً.
Claude Code متعدّد الملفات الشخصية، v2: بنية XDG نظيفة
بعد شهر على الأسلوب القديم القائم على الـ alias، أعدت بناء إعداد Claude Code متعدّد الملفات الشخصية لديّ إلى بنية متوافقة مع XDG تحت ~/.config/claude-profiles/. لم يكن السبب الحقيقي هو الترتيب — بل اكتشاف أن ~/.claude.json ملف منفصل في جذر الـ home، تعيش فيه بصمت خوادم MCP المُضافة عبر --scope user.
الصمت الذي أطفأه الـ AI
هل ما زال يستحق تعلّم البرمجة ما دام الـ AI موجودًا؟ الجواب الصاخب خاطئ من الجانبين. مع قاعدة أدلة 2025–2026 (Nature وAnthropic وAI & Society) فالسؤال ليس "AI أم لا"، بل أيّ المهارات تسلّمها للـ AI وأيّها تحتفظ بها لنفسك — وأمر واحد تغيّر فعلًا: كان الواقع يُجبرك على التعلّم عبر الاحتكاك، فأطفأ الـ AI هذا الضغط بهدوء.
كيف تكتب وكلاء Claude Code لا يكذبون عليك
قاعدتان لبناء خطوط معالجة موثوقة لوكلاء Claude Code: وكيل واحد لكل تخصص، وأوامر shell بدل المُوجِّهات في كل موضع تكون فيه الإجابة كمّية.
كيف تربط Claude Desktop بـ Obsidian — رحلة عبر 4 خوادم MCP
قصة حقيقية عن البحث عن طريقة مستقرّة لأتمتة إعادة هيكلة الـ vault في Obsidian عبر Claude. ما الذي انكسر، وما الذي نجح، ولماذا تبيّن أن VaultForge هو الخيار الوحيد الذي يعمل.
الثقوب السوداء بوصفها أكوانًا عوديّة: من الفيزياء إلى غرض الوجود
ماذا لو كان كل ثقب أسود انفجارًا عظيمًا لكونٍ جديد؟ استكشافٌ لعلم الكونيات العَوْدي، وإشعاع هوكينغ، والانغلاق الإدراكي، ولماذا قد يكون الكون مصمّمًا لإرغامنا على تحسين الذات.
الذكاء الاصطناعي قتل نظام إدارة المحتوى — على الأقل للمواقع البسيطة
لماذا صارت أنظمة إدارة المحتوى التقليدية غير ضرورية لمعارض الأعمال والمدونات وصفحات الهبوط — وكيف تستبدل أدوات الذكاء الاصطناعي طبقة نظام إدارة المحتوى بأكملها باللغة الطبيعية.
كيفية ربط Perplexity AI بـ Obsidian عبر MCP — تدوين الملاحظات مباشرةً من المحادثة
اضبط Perplexity Desktop لقراءة vault الخاص بك في Obsidian والكتابة إليه باستخدام خادم MCP filesystem. ابحث على الويب واحفظ في ملاحظاتك في محادثة واحدة.
ملخص أخبار AI اليومي عبر Claude Code CLI وObsidian — صفر تبعيات
كيف بنيت وكيل بحث إخباري يومي بسكربت bash من 6 أسطر، ووضع headless في Claude Code، وmacOS launchd. يبحث في 11 موضوعًا ويكتب الملخصات مباشرةً إلى Obsidian.
الوضع الداكن في Next.js دون وميض أو تحذيرات React 19
كيفية استبدال next-themes بـ Zustand مع useServerInsertedHTML للحصول على وضع داكن دون وميض في Next.js 15+، ودون إطلاق تحذيرات سكربت React 19.
كيف تخلّصت من 94 ملف CSS حاجب للعرض في Next.js 16 بميزة Turbopack موثَّقة بشكل ضعيف
بعد أيام من تجربة كل نهج — من experimental.inlineCss إلى حيل MutationObserver — اكتشفت Turbopack Import Attributes التي تحل مشكلة CSS الحاجب للعرض في Next.js App Router.