00:00:00هذا هو Valor، أداة مفتوحة المصدر لإدارة متغيرات البيئة تتيح لك
00:00:04عدم تخزين الأسرار كنصوص مجردة على القرص مرة أخرى، وتعمل عبر جلب متغيرات البيئة
00:00:10محليًا أو عبر مدير كلمات مرور مثل 1Password وBitwarden وAWS وغيرها الكثير باستخدام
00:00:16مخطط آمن النوع (Type-safe)، ثم حقن أسرارك في تطبيقك عند التشغيل، مما يجعل ملف .env
00:00:21آمنًا للذكاء الاصطناعي وحتى للنشر علنًا على GitHub. ولكن كيف يعمل هذا فعليًا،
00:00:27وما قصة هذا السينتكس الغريب؟ اضغط اشتراك ولندخل في التفاصيل.
00:00:31كم مرة بدأت دورًا برمجيًا جديدًا، وحصلت على الكود، وشغلته محليًا
00:00:39ولم يعمل، لتكتشف لاحقًا أنك تفتقد ملف .env تحتاجه من مبرمج آخر
00:00:45أو من مخزن مشفر، وعليك تكرار هذه العملية مرارًا وتكرارًا
00:00:50في كل مرة يتم فيها تحديث ملف .env؟ هذه هي المشكلة التي وجد Valor لحلها، وأيضًا لحل
00:00:56مشكلة عملاء الذاء الاصطناعي الذين يتم اختراقهم لجلب أسرار لا ينبغي لهم الوصول إليها. لنرَ
00:01:02كيفية عمله. إليكم مشروع صغير أعمل عليه يقوم بإنشاء مقالات من
00:01:06فيديوهات تويتر باستخدام Whisper من OpenAI لتفريغ الفيديو وClaude لكتابة المقال.
00:01:12لكننا سنبدأ بشيء بسيط ونستخدم Valor لتغيير رقم المنفذ (Port). مع تثبيت Valor
00:01:17مسبقًا، يجب أن يكون لدينا ملف .env.schema فارغ حاليًا. سيكون هذا الملف هو المصدر
00:01:23الوحيد للحقيقة لكل متغيرات البيئة لدينا، ويمكن رفعه على GitHub في
00:01:28مستودع عام. سنبدأ بإضافة متغير بيئة بسيط باسم appenv وسنضبط قيمته لتكون
00:01:33testing، والآن يمكنني فتح تبويب جديد لتشغيل vlarock load للتحقق من المخطط. الآن
00:01:39يمكننا أن نرى هنا أنه قرأ متغير البيئة وضبطه كـ “حساس” (sensitive). وهذا
00:01:43لأن جميع متغيرات البيئة في vlarock تكون حساسة افتراضيًا، ولكن يمكننا تغيير ذلك.
00:01:48في هذا الملف، سأضيف أول مزخرف (decorator) وهو مزخرف جذري (root)
00:01:52لأنه سيؤثر على جميع متغيرات البيئة في الملف، وسنضبط الحساسية الافتراضية
00:01:56على false. لاحظ أن السينتكس هنا يبدأ بعلامة هاشتاج، وعادة ما تُفصل متغيرات الجذر
00:02:02بفاصل. هذا الملف بالكامل يستخدم لغة مخصصة تسمى mspec، وهي
00:02:08مواصفة مفتوحة كتبها فريق vlarock. الآن إذا تحققت من المخطط مرة أخرى، يمكننا رؤية
00:02:14قيمة متغير البيئة لأنه لم يعد مضبوطًا كحساس. ولكن يمكننا القيام بأشياء
00:02:19رائعة أخرى داخل ملف المخطط مثل إعطاء نوع لمتغير البيئة. سأعطيه
00:02:24نوع string (نص)، مما يعني أن كل شيء سيعمل، ولكن إذا غيرته إلى
00:02:29number (رقم)، فسنرى خطأً لأنه يتوقع نصًا. يمكنني أيضًا إعطاؤه
00:02:33مزخرف required (مطلوب) ثم حذف هذا النص، مما يعني أننا سنحصل على خطأ
00:02:39لأنه يتوقع قيمة. تسمى هذه “مزخرفات العناصر” ويمكنك العثور على قائمة كاملة
00:02:44بها في وثائق vlarock، بالإضافة إلى قائمة بالأنواع المتاحة. لنضف الآن
00:02:50متغير بيئة آخر، وسنسميه port بقيمة 3002. يمكنني إعطاؤه
00:02:55نوع port، وسأقوم أيضًا بضبط هذا كـ sensitive هنا وإعادة هذا إلى
00:03:01string. الآن تم التقاط كلا المتغيرين وإخفاء هذا لأنه حساس.
00:03:05لكن كيف ندخل هذه القيم إلى تطبيقنا؟ كل ما علينا فعله هو تشغيل
00:03:10vlarock run متبوعًا بالأوامر التي نحتاجها لتشغيل تطبيقنا. فإذا قرأنا ملف package.json
00:03:15سنرى أننا بحاجة لتشغيل أمر vite لتشغيل الواجهة الأمامية. الآن إذا شغلت vlarock run متبوعًا
00:03:21بأمر vite، سيقوم بتحميل الإعدادات وفكها ثم حقنها في متغيرات
00:03:27البيئة لدينا، وهذا بالضبط ما حدث لأن المنفذ الآن هو 3002، وهو ما يعمل في الكود
00:03:33لأنه يتحقق أولاً من متغير بيئة المنفذ الذي يتم حقنه حاليًا بواسطة vlarock.
00:03:38هذا الأمر لا يقتصر فقط على ملفات جافا سكريبت لأن vlarock يعمل مع أي مشروع، سواء
00:03:43بايثون أو غو أو راست، كل شيء سيعمل كما هو متوقع. وإذا كنت لا ترغب في
00:03:48تثبيته عبر npm، فهناك أيضًا vlarock cli الذي يعمل بنفس الطريقة. هذا كله جيد
00:03:54لمتغيرات البيئة المحلية، ولكن لنمر الآن بعملية جلبها من 1Password
00:03:59بدلاً من استخدام متغيرات الشيل المحلية لمفاتيح OpenAI وAnthropic.
00:04:05أنا لا أستخدم 1Password شخصيًا، لقد اشتركت في نسخة تجريبية فقط لعمل هذا الفيديو، ولكن
00:04:11كما ترون، أنشأت خزنة (vault) جديدة، وهو أمر مهم جدًا وسأشرح السبب لاحقًا. داخل هذه
00:04:16الخزنة لدينا عنصران، أحدهما مفتاح OpenAI والآخر مفتاح Anthropic، ولا مانع لدي من
00:04:24إظهارهما لأنهما وهميان تمامًا؛ إذا كشفت هذا، فهو ليس مفتاحًا حقيقيًا. الآن،
00:04:30للحصول على تلك القيم داخل مخطط vlarock، نحتاج أولاً لتثبيت إضافة 1Password
00:04:36وللعلم، يمكن للإضافات في vlarock إضافة مزخرفات جذر وعناصر خاصة بها، لذا قد ترون
00:04:42مزخرفات جديدة هنا غير موجودة في الوثائق، مثل مزخرف init-1password. بعد
00:04:49تثبيت vlarock-1password، يمكننا تحميل مزخرف الجذر الذي يحتوي على الإضافة التي
00:04:55ثبتناها للتو وتشغيل مزخرف init-1password. كل ما أحتاجه الآن هو التوكن (token)
00:05:01الذي يمكنني تحميله من هنا. للحصول على هذا التوكن، يجب ربطه بخزنة جديدة
00:05:06وليس خزنتك الشخصية، ويمكنك العثور عليه في حساب خدمة المطورين، ثم اتبع الخطوات
00:05:11لإنشاء توكن. بما أنني سأحذف التوكن وحساب 1Password بعد هذا الفيديو،
00:05:15فلا بأس بإظهاره. سأعطيه نوع 1password-service-token وهو
00:05:21مضبوط كحساس، وهو نوع يأتي من هذه الإضافة. قد تلاحظون أيضًا أن هذا الملف ليس
00:05:26به تمييز لألوان الكود (syntax highlighting)، وذلك لأن فريق vlarock أنشأ إضافة لـ VS Code
00:05:32تدعم ذلك، لكن حاليًا لا توجد واحدة لـ Neovim، مما يعني أنني قد أنشئ واحدة مستقبلاً
00:05:37أو أطلب من Claude فعل ذلك. الآن سأنشئ متغير بيئة جديد باسم openai-api-key-id،
00:05:43وللحصول عليه من 1Password، عليّ تشغيل دالة 1password
00:05:49متبوعة بهذا البروتوكول، ثم أحتاج لإضافة اسم الخزنة وهو test، واسم
00:05:55العنصر وهو openai، ثم اسم الحقل، وإذا تأكدنا سنرى هنا أنه
00:06:02credential. يمكنني أيضًا ضبطه كحساس، والآن إذا شغلت vlarock load فسيستغرق ثوانٍ
00:06:08قبل جلب مفتاح OpenAI من 1Password. يمكننا التأكد من عمله حتى عبر تغيير
00:06:14القيمة هنا لشيء مثل 1234، وإذا شغلت vlarock load مجددًا، فسيجلب القيم
00:06:20الصحيحة. وهكذا، ملف مخطط env الخاص بنا جاهز للنشر، لكنني أعرف ما يدور في ذهنكم:
00:06:25ماذا عن توكن 1Password هذا، هل هو آمن؟ صراحةً، إذا كنت تطور
00:06:31محليًا ولديك 1Password، فقد يكون لديك تطبيق سطح المكتب مثبتًا أو تستخدم الـ cli،
00:06:38وفي هذه الحالة يمكنك استخدام هذا الإعداد لفتح 1Password بصمتك بدلاً من استخدام
00:06:43توكن. كما يدعم vlarock إضافات أخرى مثل AWS وGCP وحتى Bitwarden
00:06:52بالإضافة لعديد من التكاملات الأخرى بما في ذلك Vite وNext.js وCloudflare Workers. هناك
00:06:57أيضًا ميزات كثيرة لم يتسع الوقت لذكرها مثل إنشاء أنواع TypeScript من
00:07:03المخطط، واستيراد متغيرات البيئة من ملفات أخرى، وحتى إخفاء المخرجات الحساسة
00:07:08من السجلات واستجابات HTTP الصادرة، وهي لمسة رائعة جدًا. يوجد حتى خادم MCP
00:07:15لمساعدة وكيل البرمجة الخاص بك في إعداد مخطط env لك تلقائيًا، وهناك أيضًا GitHub Action
00:07:21لتحميل والتحقق من متغيرات البيئة في عملية CI/CD. ولكن رغم روعة vlarock،
00:07:27هناك بعض المشاكل؛ مثلاً لا يمكنك استخدامه بدون إنترنت، فإذا كنت تبرمج في المطار
00:07:32ستضطر لاستخدام متغيرات البيئة المكتوبة يدويًا، ولكن صراحةً، من يبرمج الآن بدون
00:07:37إنترنت؟ وبالحديث عن الإنترنت، هناك تأخير بسيط عند جلب كلمات المرور من
00:07:41مزود مختلف، لذا سيستغرق تشغيل أوامرك وقتًا أطول قليلاً. هناك أيضًا
00:07:46نقص في المزودين مثل Dashlane وغيرهم، وقد واجهت خطأً غريبًا حيث إذا استخدمت نفس
00:07:53الاسم في ملف المخطط كاسم متغير بيئة في الشيل المحلي، فإنه يستخدم المتغير
00:07:59المحلي بدلاً من ذاك الموجود في 1Password. لكن vlarock يتم تطويره بنشاط
00:08:05وأنا متأكد أن الكثير من هذه الأمور سيتم معالجتها مستقبلاً. ومع ذلك، فإن المنتج
00:08:10بوضعه الحالي لا يزال مفيدًا جدًا لي، وأعتقد أنني سأستخدمه في كل
00:08:16مشاريعي الجانبية مستقبلاً، وربما حتى استبدال ملفات الشيل المحلية بملفات مخطط vlarock
00:08:21إذا كانت هناك طريقة لفعل ذلك. آمل حقًا وجودها لأنني لا أريد لأي وكيل ذكاء اصطناعي كشط
00:08:26معلوماتي.