هذا الملف الواحد أصلح بيئة التطوير الخاصة بي (Devbox)
BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology
Transcript
00:00:00ملف الـ readme الخاص بك يكذب عليك، يقول إن الإعداد يستغرق خمس دقائق، ثم يتبين أن نسخة نود خاطئة وبايثون خاطئة
00:00:07بوستجرس مفقود، ودوكر يستغرق وقتاً طويلاً، والآن نحن نقوم بالتصحيح قبل أن نبدأ حتى
00:00:13بيئة التطوير الخاصة بك يجب ألا تعيش في ملف readme، بل يجب أن تكون في git، هذا ما تفعله devbox
00:00:20ملف devbox json واحد، أمر devbox shell واحد، نفس البيئة لكل مطور بدون تثبيتات عامة
00:00:28ولا حاجة لمعرفة بـ nix، دعني أرِك
00:00:30في البداية تبدو devbox بسيطة للغاية، أنت تنشئ devbox json وتدرج الأدوات التي يحتاجها مشروعك
00:00:42نود، جو، بايثون، بوستجرس، أي شيء يحتاجه مشروعك فعلياً، أنت ترفع ذلك الملف، ثم يمكن لأي شخص آخر فقط
00:00:50تشغيل devbox shell وسيحصلون على نفس البيئة التي لديك، نفس الإصدارات والأدوات والسكربتات، لا تثبيتات
00:00:58عامة، لا “يرجى تثبيت هذه الأشياء الثمانية أولاً”، لا حالات homebrew من سنوات مضت، إعدادك
00:01:03يتوقف عن العيش في ذاكرة شخص ما ويبدأ في العيش داخل المستودع الخاص بك، الآن هذا يبدو صغيراً ولكن إذا سبق لك
00:01:09أن أضعت نصف يوم بسبب إعداد محلي معطل فأنت تعلم بالفعل أن هذا ليس صغيراً، إذا كنت تستمتع
00:01:16بأدوات البرمجة لتسريع سير عملك، تأكد من الاشتراك، لدينا فيديوهات تصدر طوال الوقت
00:01:20الآن نحن نبدأ من هنا، لذا سأبدأ بمشروع فارغ، سأنشئ مجلداً جديداً
00:01:25سنسميه devbox demo، ندخل إلى المجلد وكل ما نحتاجه بمجرد حصولنا على devbox هو تشغيل
00:01:31devbox init، تقوم devbox بإنشاء ملف يسمى devbox json، في الوقت الحالي هو فارغ تقريباً، إنه مجرد
00:01:39هيكل أساسي توفره devbox، الآن لنضف الأدوات التي يحتاجها هذا المشروع فعلياً، لإضافة أدوات يمكننا
00:01:45تنفيذ devbox add وسأقوم بتثبيت أشياء مثل جو و node.js وبعض بايثون، الآن هذا هو
00:01:52الجزء المهم، أنا لا أقوم بتثبيت هذه الأشياء عالمياً، أنا لا أغير نسخة نود الخاصة بنظامي، أنا لا ألمس نظامي
00:02:00مع بايثون، هذه الأدوات تنتمي لهذا المشروع الآن، عندما أشغل devbox shell وأنا داخل بيئة مشروع نظيفة
00:02:09الآن بعد أن أصبحت في هذه البيئة، يمكنك فقط التحقق من الإصدارات، صحيح؟ go version، node
00:02:14version، python version، صحيح؟ يمكنني التحقق من كل شيء للتأكد من أنه يعمل، الآن تلك هي المكافأة الكبرى
00:02:19طلب المشروع أدوات محددة، منحتني devbox تلك الأدوات، الآن لنضف سكربت، وداخل devbox
00:02:27json يمكننا في الواقع تحديد اختبار، وسأقوم فقط بطباعة أن الاختبارات تعمل وسأحصل على إصدار نود
00:02:34وإصدار جو عندما تشغل devbox run test، والآن نفس الأمر يعمل لأي شخص يستخدم هذا المستودع
00:02:42نفس السكربت، نفس الأدوات، نفس البيئة، الآن شاهد ما يحدث عندما أغادر، يمكنك فقط تشغيل exit
00:02:48ستغادر تلك البيئة، وسأعود إلى بيئة جهازي الطبيعية، إذاً كان ذلك بسيطاً جداً، أليس كذلك؟
00:02:53ما الذي تفعله devbox فعلياً؟ حسناً، تستخدم devbox نظام nix تحت كل ذلك، nix رائع لأنه
00:03:00مصمم للتكرار، بدلاً من قول “ثبت أياً كان ما يصادف أنه الأحدث اليوم”
00:03:06يمكنه تثبيت الأدوات الدقيقة التي يحتاجها مشروعك فعلياً، الآن هذا هو الجزء الجيد، الجزء الصعب هو
00:03:12أن nix قد يبدو كعالم جديد تماماً، هناك الكثير من المفاهيم الرائعة ولكنها ليست بالضبط
00:03:18ودودة عندما كان كل ما تريده هو إصدار نود الصحيح، devbox تقدم لنا شيئاً مختلفاً
00:03:23هنا تقول: ماذا لو حافظنا على التكرارية ولكن جعلنا سير العمل يبدو طبيعياً؟ فبدلاً من
00:03:29كتابة تعبيرات nix، يمكنك استخدام أوامر مثل devbox add و devbox search و shell و run و services، كل
00:03:37هذه الأوامر أبسط بكثير، ويحصل مشروعك على ملفين مهمين: ملف json وملف
00:03:44lock، فكر في devbox json على أنه ما تحتاجه بيئتنا، وفكر في ملف devbox lock على أنه التثبيت لتثبيت
00:03:52ما حصلت عليه بالضبط، أنت ترفع كليهما، والآن بيئتك ليست مجرد فقرة في ملف readme
00:03:58بل هي جزء من المشروع الفعلي، تعمل devbox على mac os و linux و wsl، ويمكنها التكامل مع vs code، ويمكنها
00:04:06تحديد السكربتات، ويمكنها إدارة الخدمات مثل قواعد البيانات، وعندما تحتاج إلى ذلك يمكنها التصدير لأشياء مثل
00:04:12docker و dev containers وسير عمل ci، قيمة هذا ليست مجرد “أداة رائعة”، صحيح؟ إنها أداة بسيطة للغاية، القيمة
00:04:19هي أعتقد الوقت فقط، المشكلة الأولى هي الـ readme، صحيح؟ يمكن للـ readme أن يقول أي شيء حقاً، يمكنه
00:04:26أن يقول “مهلا، ثبت نود 18” ولكن التطبيق قد تغير، إنه يحتاج حقاً إلى نود 20، المشكلة الثانية
00:04:32التي يساعد فيها هذا بالفعل هي التهيئة، إنه يومك الأول في العمل، يجب أن يكون من السهل البدء
00:04:37نحن نعلم أن هذا ليس هو الحال، صحيح؟ لذا لا ينبغي أن تحتاج إلى سؤال “ما هو إصدار نود الذي أحتاجه؟”، لا ينبغي
00:04:43أن تحتاج إلى مراسلة شخص ما: “مهلاً، ما هو إصدار بايثون الذي نستخدمه؟ هل أحتاج حقاً إلى بوستجرس محلياً؟ ولماذا
00:04:48هذا يعمل فقط مع تيمي الصغير هناك؟”، يجب أن يضطروا فقط إلى استنساخ المستودع، والدخول إلى الـ shell
00:04:52وتشغيل المشروع، إذا تعطل شيء ما، على الأقل الجميع يبدأون من نفس البيئة، المشكلة
00:04:58هي التلوث العالمي، تجربة الأدوات يجب ألا تدمر حاسوبك المحمول، أنت تريد جو 1.22 لهذا المستودع، فأنت تضيفه، أنت
00:05:06تريد نود 20 هنا ولكن شيئاً آخر في مكان آخر، جيد، لا بأس، الأدوات تعيش مع المشروع، نظامك
00:05:13يبقى أنظف، مع devbox يمكن مشاركة تعريف بيئتك بين التطوير المحلي
00:05:18والأتمتة، هل يحل ذلك كل مشاكل الـ ci؟ لا، لن يفعل ذلك، ولكنه يزيل فئة ضخمة من المشاكل الغبية
00:05:26والمشاكل الغبية هي التي تؤذينا أكثر، إنها بسيطة وما زلنا نعاني منها طوال
00:05:32الوقت، أخيراً هنا، هل سير عمل دوكر المحلي الثقيل؟ دوكر لا يزال رائعاً وبفارق كبير إذا
00:05:40كنت بحاجة إلى حاويات، استخدم حاويات، ولكن الكثير من الفرق تستخدم دوكر محلياً لأنهم لا يملكون طريقة أفضل
00:05:46لإدارة الأدوات، الآن ما هو جيد هنا هو أن سير العمل بسيط جداً: devbox add و shell و run، أنت
00:05:52لا تضطر إلى تعلم الكثير، تصبح البيئة جزءاً حقيقياً من مشروعك، ملفاً حقيقياً
00:05:57في المستودع، عندما يستخدم الجميع نفس الإصدارات والسكربتات، يصبح التصحيح أسهل، ولكن هذا رائع
00:06:03سوبر بسيط، ما سيزعجك هو حسناً، أول تنزيل لـ nix، استغرق الأمر بعض الوقت للتنزيل
00:06:09لا بأس، إنها المرة الأولى، حسناً، json بسيط ولكنه قد يصبح قبيحاً كما نعلم إذا أضفنا الكثير
00:06:15إليه، بالنسبة للسكربتات الأساسية لا بأس، بالنسبة لمنطق الإعداد المعقد لا تحشر أمر shell عملاق في json
00:06:22فقط ضع المنطق في ملف sh، ثم استدعه من devbox، وأخيراً devbox ليست بيئة تطوير سحابية كاملة
00:06:30إذا كنت بحاجة إلى برمجة تعتمد على المتصفح وعناوين url للمعاينة الفورية، فقد تظل ترغب في شيء مثل codespaces
00:06:36devbox هي الأفضل في التكرارية المحلية والـ ci، devbox لن تحل كل مشكلة تطوير
00:06:42ولكن يمكنها حل تلك التي تزعجنا أكثر، وهي في الحقيقة مجرد جعل المشروع
00:06:46يعمل، لذا قد تستحق التجربة، خاصة إذا كان مشروعك يحتوي على أكثر من لغة أو أكثر من
00:06:51أداة cli واحدة، إذا كنت تستمتع بأدوات برمجة كهذه، تأكد من الاشتراك في قناة better stack، سوف
00:06:56نراك في فيديو آخر.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video