لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 10/26/23 في كل الموقع
-
السلام عليكم هل بإتمامي الدورة استطيع ايجاد عمل (اسف على هذا السؤال الذي ليس متعلق بمحتوى الدورة)3 نقاط
-
2 نقاط
-
هل يجب ان يكون امتحان الحصول عل الشهاده بعد 6 اشهر ام هو مفتوح المده2 نقاط
-
1 نقطة
-
السلام عليكم ... ما هو الفرق بين web app و web site ؟ لم أفهم الفرق جيدا بينهما...1 نقطة
-
نستخدم نفس اللغات الأساسية للويب وهي HTML, CSS, JS بالنسبة للواجهة الأمامية في مواقع الويب الديناميكية (تطبيقات الويب) لكن لإنشاء تطبيق SPA نحن بحاجة إلى استخدام تقنية مثل مكتبة React أو إطارات مثلAngular أو Vue.js وهي مبنية باستخدام جافاسكريبت ونقوم من خلالها بإنشاء تطبيقات SPA بسهولة، فلو قمنا بذلك بمفردنا من خلال جافاسكريبت سيصبح الأمر معقد ويستغرق وقت أكثر. وبالطبع الواجهة الخلفية قد تختلف حيث هناك لغات مختلفة للواجهة الخلفية ولكل لغة إطار عمل، مثل PHP ولارافل أو جافاسكريبت وnode.js أو بايثون ودجانغو، ونستخدم اللغة والإطار بناءًا على نوع واحتياجات المشروع، ومن الممكن الجمع ما بين أكثر من لغة وإطار.1 نقطة
-
فهمت جزاك الله خيرا فقط للتأكيد على فهمي الآن هن فقط عبارة عن مسميات يطلق على حسب نوع المحتوى؟ وهو لا يؤثر في طريقة كتابه وهيكلة الكود ؟هل هكذا صحيح؟1 نقطة
-
الفرق الرئيسي بين تطبيق الويب (Web App) وموقع الويب (Web Site) هو أن تطبيق الويب يتفاعل مع المستخدم، بينما موقع الويب يعرض فقط المعلومات.لذلك هي مسميات فقط للتوضيح تطبيق الويب هو برنامج تطبيقي يتم تشغيله على خادم ويب يمكن للمستخدمين التفاعل مع تطبيق الويب عن طريق إرسال بيانات إلى الخادم وتلقي ردود من الخادم. بينما موقع الويب هو مجموعة من صفحات الويب التي يتم الوصول إليها عبر الإنترنت. يتم إنشاء مواقع الويب باستخدام HTML و CSS و JavaScript، وهي لغات برمجة ويب. يمكن للمستخدمين عرض مواقع الويب، ولكن لا يمكنهم التفاعل معها بنفس الطريقة التي يتفاعلون بها مع تطبيقات الويب.1 نقطة
-
السؤال متعلق بدورة علوم الحاسب أرجو التعليق أسفل فيديو الدورة في المرة القادمة لمساعدتك بشكل أفضل. وإن كنت قد فهمت سؤالك بشكل صحيح، فالفرق الرئيسي بين تطبيق الويب (web app) وموقع الويب (web site) هو أن تطبيق الويب يوفر تفاعل أكثر مع المستخدم، بينما موقع الويب هو مجموعة من الصفحات التي يمكن عرضها من خلال مستعرض الويب. وكأمثلة، موقع فيسبوك هو تطبيق ويب وليس موقع ويب، بينما المواقع الإخبارية أو Wikipedia مثلاً هي مواقع ويب، بمعنى أن تطبيقات الويب المحتوى بها متغير بناءًا على تفاعل المستخدم معها، وهي مواقع ديناميكية، أي محتواها يتغير بدون تدخل من مديري الموقع، فمثلاً أنتِ في أكاديمية حسوب تقومين بإنشاء حساب وتغيير صورتك ونشر سؤال والتعليق ورفع ملفات وصور وخلافه. لكن الفرق بين أكاديمية حسوب وموقع فيسبوك هو أن فيسبوك عبارة SPA أي تطبيق من صفحة واحدة، بمعنى أنه يتم إنشاء محتوى الصفحة بالكامل في وقت واحد باستخدام لغة برمجة جافا سكريبت، وبالتالي المستخدم لا يحتاج إلى تحميل صفحة جديدة كلما قام بإجراء تغيير، مثل التفاعل مع منشور أو مشاركة صورة. وذلك النوع من تطبيقات الويب الديناميكية له مزايا فريدة مثل تحديث المحتوى بدون الحاجة إلى إعادة تحديث الصفحة وأيضًا القدرة على التنقل السريع ومزايا أخرى.1 نقطة
-
الدورة متاحة لك مدى الحياة، وتستطيع التقدم للإمتحان في أي وقت وأيضًا أكثر من مرة في حال لم تجتازه من المرة الأولىولكن من الأفضل الاستعداد جيدًا، وكنصيحة قم بتحديدجدول زمني واقعي بالنسبة للوقت المتاح لك والتزم به ولا تترك الأمر بدون تخطيط.1 نقطة
-
الامتحان مفتوح المدة ويمكنك التقدم له متى اردت ذلك وكذلك الامر يمكن التقدم له عدد غير محدد من المرات اعرف اكثر عن الامتحان من هنا : https://support.academy.hsoub.com/exams1 نقطة
-
سلام عليكم مرحبا أعزائي الكرام حاولت ان أربط موقع نتائج البحث مع الموقع الرئيسي الاندكس للاسف لا أجد المشكلة فين بارك الله فيكم youtobe.rar1 نقطة
-
1 نقطة
-
السلام عليكم اوجه مشكله تفتح عندي صفحه gpt chat لكن عند الكتابه و الضغط ارسال لا يظهر لي شيء مجرد صفحه فارغه1 نقطة
-
1 نقطة
-
الأمر طبيعي لأنك لا ترسل البيانات بالشكل المطلوب إلى قالب ejs، بل تقوم بإرسال الرد من الخادم على هيئة كائن، والطريقة الصحيحة لتمرير البيانات إلى القالب هي كالتالي: // في ملف التطبيق Express const express = require('express'); const app = express(); app.get('/', (req, res) => { const jsonData = { link: 'http://example.com' }; res.render('index.ejs', { data: jsonData }); }); في ملف القالب: <!-- في ملف قالب EJS (مثلاً index.ejs) --> <!DOCTYPE html> <html> <body> <a href="{{data.link}}">الرابط</a> </body> </html>1 نقطة
-
ما يجب أن يكون هو أن الباك اند مسؤول عن إصدار وتخزين التوكن لمراجعته عند إرسال الطلبات، حيث أنه هو المسؤول عن المصادقة وإصدار التوكنات، يجب أن يرسل الباك اند التوكن إلى الفرونت اند في استجابة لطلب تسجيل الدخول الناجح، ثم يمكن للفرونت اند بعد ذلك تخزين التوكن في ملفات تعريف الارتباط أو التخزين المحلي. ولكن إن تم تخزين التوكن في الفرونت اند، فسيتم فقده إذا قام المستخدم بحذف ملفات تعريف الارتباط أو التخزين المحلي. وبخصوص اختيار استخدام Breeze API أو الطريقة العادية في بناء الـ Backend، يعتمد ذلك على ما تريده، حيث Breeze API هو إطار عمل يساعد في تسهيل تطوير التطبيقات بلغة PHP باستخدام Laravel ولا مشكلة في استخدامه إن كنت تفضل بساطة التطوير واستخدام أفضل الممارسات الموصى بها من قبل Laravel، ولكن عند الحاجة إلى مزيد من التحكم في بنية وعمل باك اند، فمن الأفضل بناء الباك اند بالطريقة العادية. وبخصوص مشكلة تخزين التوكن: تأكد من أن الباك اند يقوم بإصدار التوكن بشكل صحيح عن طريق اختبار طلب تسجيل الدخول باستخدام أداة مثل Postman. ثم التحقق من أن الباك اند يرسل التوكن إلى الفرونت اند في استجابة لطلب تسجيل الدخول الناجح من خلال تسجيل استجابة الباك اند. ثم تفقد هل الفرونت اند يقوم بتخزين التوكن بشكل صحيح عن طريق فحص الكود الخاص بذلك.1 نقطة
-
يمكن للمبرمج النظر إلى بعض العلامات المميزة لكل منهما. في نمط CommonJS، يُستخدم الدالة `require()` لاستيراد وحدات الكود، ويتم تعريف الوحدات باستخدام `module.exports` في الملفات المستوردة. على سبيل المثال: // استيراد وحدة في CommonJS const module = require('module'); // تصدير وحدة في CommonJS module.exports = { // ... }; أما في ES6، يُستخدم الكلمة المفتاحية `import` لاستيراد وحدات الكود، ويتم تعريف الوحدات باستخدام `export` في الملفات المستوردة. على سبيل المثال: // استيراد وحدة في ES6 import module from 'module'; // تصدير وحدة في ES6 export default { // ... }; بالتالي، إذا وجدت الاستيرادات تستخدم `require()` وتصديرات تستخدم `module.exports`، فإن الكود يتبع نمط CommonJS. وإذا وجدت الاستيرادات تستخدم `import` وتصديرات تستخدم `export`، فإن الكود يتبع نمط ES6. أما بخصوص المصطلح "ديناميكيًا" في البرمجة، فهو يشير إلى القدرة على تغيير وتعديل سلوك البرنامج أثناء تشغيله. على سبيل المثال، فيمكن تحميل وحدات الكود (مثل المكتبات أو المكونات) ديناميكيًا أثناء تنفيذ البرنامج بدلاً من تحميلها في وقت التجميع أو الترجمة.( بقصد الcompiling ) يتيح ذلك مرونة أكبر في تطوير البرمجيات وإمكانية توسيع وتغيير الوظائف بسهولة. على سبيل المثال، يمكن استخدام الدوال الديناميكية لتحميل وحدات الكود ( مثل الcomponents ) في وقت التشغيل باستخدام دوال مثل `require()` في CommonJS أو `import()` في ES6. هذا يتيح إمكانية تحميل وتنفيذ الوحدات اللازمة فقط عند الحاجة إليها، بدلاً من تحميل جميع الوحدات في بداية التنفيذ. بينما إذا قمنا بتحميل جميع الدوال عند تشغيل البرنامج , استخدمنا منها ما نحتاجه , فهذا سوف يجعل الموقع بطيء جداً في حال تواجد لدينا وحدات كثيرا ( compoents او ملفات js ). أتمنى أن يكون ذلك واضحًا ومفيدًا لك.1 نقطة
-
الإصدار 1.0.0
20386 تنزيل
رافقت زيادة استخدام شبكة الإنترنت زيادةً كبيرةً في عدد الحواسيب التي تعمل مخدماتٍ لمختلف الخدمات الشائعة، كمواقع الويب والبريد الإلكتروني والمراسلة الفورية وخواديم الملفات وخلافه؛ وقد أثبت لينُكس تفوقه في مجال الخواديم، وخصوصًا بعد الانتشار الواسع لتوزيعة أوبنتو الخاصة بالخواديم؛ الذي يُعنى هذا الدليل بشرح طرق تثبيت وضبط مختلف خدماتها. آمل أن يكون هذا الكتاب إضافةً مفيدةً للمكتبة العربية؛ وأن يفيد القارئ العربي في تعلم إدارة أشهر نظام لتشغيل الخواديم. والله وليُّ التوفيق.1 نقطة -
عند العمل مع أو بمقربة فرق هندسة أو تطوير المنتجات أو البرامج، فإننا غالبًا ما نسمع مصطلح سكرام scrum scrum، الذي هو عبارة عن إطار عمل مصمم للفرق التي تبني وتكرر بسرعة، ويمكن أن يساعد تطبيق هذه الطريقة على العمل الجماعي لحل المشكلات المعقدة، فسكرام scrum هو أحد أشهر أطر عمل أجايل التي تسمح للفريق بالتركيز على التحسين المستمر بالتزامن مع البناء والتكرار السريع؛ ويمكن أن يستفيد حتى الأشخاص خارج فرق الهندسة أو تطوير المنتجات والبرامج من هذه المنهجية. سنتناول في هذا المقال كل ما ينبغي معرفته حول إطار العمل سكرام scrum، بما في ذلك مفهومها ولماذا تلقى نجاحًا كبيرًا. ما هو إطار عمل سكرام scrum؟ سكرام scrum هو واحد من أطر عمل منهجية أجايل التي تساعد فرق العمل على التعاون وإنجاز الأعمال عالية التأثير، يوفر سكرام scrum مخططًا للقيّم والأدوار والإرشادات لمساعدة الفرق لتركز على التكرار والتحسين المستمر، إذ يقسّم سير عمل المشاريع الكبرى إلى أجزاء أصغر يستطيع الفريق العمل عليها بسرعة وبوتيرة متكررة. ولأنه إطار عمل يعتمد على نفسه ويشجع التكرار التدريجي، يمكن استخدامه للتحسين المستمر للمخرجات المتعاقبة حتى الانتهاء من المشروع ككل. تاريخ إطار عمل سكرام scrum ظهر إطار عمل سكرام scrum بشكله الحالي المعروف اليوم لأول مرة سنة 1986 في مقال نشر بمجلة Harvard Business Review بعنوان لعبة تطوير المنتجات الجد جديدة The New New Product Development Game لصاحبيه هيروتاكا تاكايوشي Hirotaka Takaeuchi وإيكوجيرو نوناكا Ikujiro nonaka، وأخذ المؤلفان مصطلح سكرام scrum من لعبة كرة القدم الأمريكية rugby، إذ تُمرر الكرة في هذه اللعبة داخل الفريق في نفس الوقت الذي تتحرك فيه كوحدة واحدة في الملعب. طُوّر إطار عمل سكرام scrum أكثر بعد ذلك ورُمِّز من قِبل كل من كين شوابر Ken Schwaber وجيف سذرلاند Jeff Sutherland سنة 1955 عندما نشرا بيان منهجية أجايل للتطوير Agile Manifesto وعملية التطوير حسب إطار العمل سكرام scrum. Scrum Development Process، وكان إطار العمل سكرام scrum التي قدّمها شوابر وسذرلاند جزئيًا رفضًا لنموذج تدفق المياه Waterfall لتطوير البرامج، والذي تُقسم فيه المشاريع إلى مراحل متسلسلة تفتح فيها مخرجات كل مرحلة المرحلة الموالية من العمل. كان شوابر وسوذرلاند يؤمنان بأن مطوري البرامج يمكنهم الاستفادة من مقاربة تكرارية أكثر مرونة، تسمح لهم بالاستجابة المستمرة وتكييف محيطهم من أجل بناء أفضل منتج لعملائهم. وبعد المقال الأول لهما، نشر شوابر وسذرلاند دليل إطار العمل سكرام Scrum Guide وهو وثيقة متجددة تُحدَّث باستمرار يمكن الاطلاع على نسخة منها باللغة العربية من scrumguides، وحسب هذا الدليل فإن إطار عمل سكرام scrum يشجع الفرق للنظر في فعالية تقنيات عملها، وتشجعها على التطور المستمر لتحسينها. طريقة عمل إطار عمل سكرام scrum يعمل إطار عمل سكرام scrum تقليديًا في صورة دورات تطوير Sprints، وهي عادةً جلسات عمل تدوم أسبوعين مع مخرجات محددة في نهايتها، كما يوجد حدثان إضافيان لإطار العمل سكرام scrum: الاجتماعات اليومية السريعة daily stand-ups: وكما يدل اسمها فهي حدث يومي يمثل فرصة لفريق سكرام scrum للتواصل لمدة 15 دقيقة وتنسيق الأنشطة اليومية. الاجتماعات الاسترجاعية retrospective meetings: وتكون بعد نهاية دورة التطوير، يديرها مسؤول سكرام scrum Scrum Master وتُعد فرصةً للفريق للتعلم من في الفترة الماضية وتعديل عمل الفترات القادمة بناءً على ما تعلمه. أهم شيء ينبغي معرفته عند استخدام عملية سكرام scrum هو أن إطار عملها يعتمد على نظام للتحسين المستمر، ففي هذه المنهجية، نعلم أننا ربما لم نكن نعرف شيئًا في بداية دورة التطوير، ونستطيع تعديل العمليات والاحتياجات حسب الحاجة بناءً على المعلومات المكتسبة خلال عملية دورة التطوير. أحداث سكرام scrum أحداث سكرام scrum أو مراسيم سكرام Scrum events هي العناصر المتكررة لكل دورة تطوير، حيث يخدم كل واحد منها هدفًا محددًا لضمان هيكلة وإنتاجية دورة التطوير. 1. تنظيم قائمة المهام من أجل بدء دورة التطوير، يُحدِد قائد الفريق العمل المُختار من قائمة مهام المنتج product backlog، والذي يمكن أن يكون عملًا محددًا ينبغي إنجازه. ومن أجل الاستغلال الأمثل لدورة التطوير، ينبغي الحرص على أن تكون قائمة المهام موثقةً بوضوح في مكان واحد، كما يُنصح باستخدام أداة لإدارة المشاريع لتنظيم كل هذه المعلومات. 2. تنظيم جلسة لتخطيط دورة التطوير قبل أن نتمكن من بدء دورة التطوير، ينبغي معرفة ما الذي سنركز عليه خلالها ولماذا، وفي هذه المرحلة، تُحدَد أهداف الفترة ويُشرح للفريق قيمة مرحلة دورة التطوير بالنسبة لأصحاب المصلحة. وانطلاقًا من ذلك، يمكن تحديد عناصر قائمة مهام دورة التطوير المستهدفة خلال فترة سكرام scrum الحالية وكيفية تنفيذها دورة تطوير. 3. انطلاق دورة التطوير تدوم دورة التطوير عادةً أسبوعين، ويمكن أن تكون أقصر أو أطول حسب ما يناسب فريق العمل، وخلال هذه المدة يعمل الفريق على إنجاز مهام من القائمة المحددة خلال جلسة التخطيط. 4. تنظيم وقفات سكرام scrum اليومية يتكفل قائد الفريق بالتخطيط للقاء مع الفريق لمدة 5 دقائق يوميًا، وهذه الاجتماعات السريعة هي فرصة لاستخلاص المعلومات حول ما يعمل عليه كل فرد في الفريق وتوضيح أي عوائق غير متوقعة يمكن أن تواجهه. 5. عرض العمل المنجز خلال اجتماع مراجعة دورة التطوير عند نهاية دورة التطوير، يجتمع فريق العمل معًا من اجل مراجعتها، وخلال هذا الاجتماع، يعرض الفريق العمل المكتمل لأصحاب المصلحة من أجل الموافقة عليه أو فحصه. 6. التواصل والمراجعة خلال الاجتماع الاسترجاعي عند نهاية دورة التطوير، يُخصص الوقت لمناقشة ما جرى خلالها وما يمكن تحسينه في المستقبل، إذ أن إطار العمل سكرام scrum تؤمن بعملية التحسين المستمر، لذلك لا ينبغي التخوف من تجربة عمليات جديدة أو إعادة استعمال استراتيجيات تبدوا أقل فعاليةً خلال دورة التطوير القادمة. قد تبدو هذه الأحداث متكررة، إلا أنها ضرورية خلال كل دورة تطوير، وخاصةً بالنسبة للفرق حديثة العهد مع إطار العمل سكرام scrum، فالحرص على المرور بكل هذه الأحداث يضمن أن تكون جميع أقسام المنظمة على علم بما يجري، وبأن كل الملاحظات أُخذت في الحسبان، فهذه الأحداث صُممت للإبقاء على دورة التطوير متحركةً بسرعة وسهولة. أدوات إطار العمل سكرام scrum الأداة artefact ضمن إطار العمل سكرام scrum هي شيء نصنعه كوسيلة لحل مشكلة معينة، وتوجد ثلاث أدوات ضمن إطار العمل هذا تتمثل في الآتي: قائمة مهام المنتج قائمة مهام دورة التطوير الزيادة التراكمية للمنتج product increment. 1. قائمة مهام المنتج قائمة مهام المنتج product backlog هي القائمة الأساسية للعمل الذي ينبغي إنجازه، وينبغي تنقيح هذه القائمة من طرف مدير المشروع أو مالكه، وتجدر الإشارة إلى أن وجود عنصر معيّن في قائمة مهام المنتج لا يعني أن فريق العمل سيعمل عليه، فعناصر قائمة المهام هي خيارات يمكن للفريق العمل عليها خلال دورة التطوير. بالإضافة إلى ذلك، يجب أن يعيد مالك المشروع ترتيب وتحيين قائمة مهام المنتج باستمرار بناءً على المعلومات الجديدة المحصل عليها من العملاء ومن السوق، أو من فريق المشروع. 2. قائمة مهام دورة التطوير قائمة مهام دورة التطوير Sprint backlog هي مجموعة من الأعمال أو المنتجات التي التزم بها فريق العمل خلال دورة التطوير المعنية، وهذه العناصر مختارة من قائمة مهام المنتج خلال اجتماع تخطيط دورة التطوير ومنقولة إلى مشروع مخطط دورة التطوير للفريق في حالة ما إذا كان موجودًا. قد لا يتمكن الفريق من تسليم كل العناصر المطلوبة في قائمة المهام عند نهاية كل دورة تطوير، ولكن من غير الشائع إضافة مهام أخرى لقائمة مهام دورة التطوير أثناء العمل عليها، وإذا حدث ذلك بكثرة فهو دليل على الحاجة إلى قضاء المزيد من الوقت في تخطيط مرحلة دورة التطوير حتى تتوضح المهام التي سيعمل عليها الفريق بالفعل خلال الفترة المعنية. 3. الزيادة التراكمية للمنتج product increment الزيادة التراكمية للمنتج هي المخرجات التي سيسلمها فريق العمل عند نهاية دورة التطوير، ويمكن أن تأخذ شكل منتج أو خاصية جديدين، أو تحسينًا أو إصلاح ثغرة معينة، أو أي أمر آخر حسب الفريق، وينبغي التخطيط لتقديم الزيادة التراكمية في المنتج خلال اجتماع مراجعة دورة التطوير. وعند هذه النقطة، ستُقبل أو تُرفضُ بناءً على رأي أصحاب المصلحة في الزيادة التراكمية، وما إذا اعتبروها مكتملة، ففي إطار العمل سكرام scrum لا شيء مثالي. ونظرًا لأن الفريق مرن ويتحسن باستمرار، فإن كون المنتج مكتملًا لا يعني أنه لا يمكن أن يكون أفضل، بل يعني فقط أن الفريق سيتوقف عن العمل عليه حاليًا. وعلى سبيل المثال، فيما يأتي بعض تعاريف "مكتمل" حسب مجموعات مختلفة من فرق سكرام scrum: المنتج جاهز للإطلاق. اختُبر المنتج وهو جاهز للإطلاق في وسط تجريبي. اختُبر المنتج وقُبل وهو قابل للإطلاق لكل المستخدمين. ومهما كان تعريف "مكتمل" الذي يتبناه فريق العمل، ينبغي الحرص على أن يتشارك الجميع داخل الفريق هذا المفهوم، وعند تحديده، من المفيد الإبقاء عليه في مصدر مركزي والعودة إليه باستمرار، خاصةً خلال اجتماع مراجعة دورة التطوير. أدوار إطار العمل سكرام scrum يُنسب أعضاء الفريق ضمن إطار العمل سكرام scrum إلى ثلاثة أدوار رئيسية هي كالتالي: مالك المنتج product owner مسؤول سكرام scrum master فريق سكرام scrum team وتُستخدم هذه الأدوار لتخصيص مهام محددة لكل عضو في الفريق. 1. مالك المنتج وهو الشخص المسؤول عن قائمة مهام المنتج، إذ يكون على تواصل مع احتياجات المستخدمين ومركزًا على رواية قصتهم إلى فريقه وباقي أصحاب المصلحة التنفيذيين. يضيف ملّاك المنتج الجيّدون عامل الوضوح حول أهم ما يمكن تسليمه خلال الفترة القادمة، وفي النهاية، مالك المنتج هو الشخص الذي يقرر ما إذا كان أمر ما جاهزًا للتسليم، علمًا أنهم يميلون عادةً إلى القول بالتسليم. 2. مسؤول السكرام scrum مسؤول السكرام scrum هو الشخص الذي ينظم مختلف أحداث سكرام scrum، ويمكن تشبيههم بمدير مشروع سكرام scrum أو بمُيسِر له، إذ ينبغي عليه تيسير الاجتماعات اليومية السريعة وتنظيم اجتماعات التخطيط والمراجعة والاجتماعات الاسترجاعية لكل اجتماع دورة تطوير. 3. فريق سكرام scrum يشمل فريق سكرام scrum كل الأفراد العاملين خلال دورة التطوير، وينبغي أن يكون أفراد الفريق ذاتيوا التنظيم ومتعاونين من أجل تحقيق هدف سكرام scrum المتمثل في التحسين المستمر. المبادئ الستة لمنهجية سكرام scrum تعتمد منهجية سكرام scrum على ستة مبادئ أساسية لضمان الحفاظ على تركيز الفريق والإبقاء على المشروع في الطريق السليم، وتتمثل هذه المبادئ فيما يلي: السيطرة على العملية التجريبية: ففرق أجايل تؤمن بالشفافية والرقابة والتكيّف. التنظيم الذاتي: فرغم أن فريق سكرام scrum يمتلك أدوارًا وقواعد، إلا أن كل عضو منه يتمتع بصلاحية تولي مهامه وعمله، فإطار عمل سكرام scrum مثلًا يؤمن بأن الصلاحية المشتركة تقود إلى فرق أكثر ديناميكيةً وإبداعًا. التعاون: يقدّم الفريق أفضل النتائج عندما يعمل معًا خلال وبعد دورة التطوير. صياغة الأولويات بناءً على القيمة: إذ تهدف دورة التطوير داخل إطار العمل سكرام scrum إلى تقديم أفضل قيمة ممكنة للعمل، ومن أجل تحقيق لك، ينبغي إعطاء الأولوية للعمل منذ البدايات المبكرة لعملية سكرام scrum. تحديد الوقت: تتخلل عملية سكرام scrum العديد من الأنشطة التي تعتمد على عامل الزمن، مثل دورة التطوير في حد ذاتها، والوقفات اليومية والاجتماع الاسترجاعي، ولأن إطار العمل سكرام scrum يعمل على أساس التحسين المستمر، من المهم تحديد العمل زمنيًا من أجل المرور إلى المهام التالية وتحسين العمل المستقبلي. التطوير التكراري: لن يكون المنتج الأول ضمن إطار العمل سكرام scrum مثاليًا، ولكن من خلال البناء التكراري يمكن للفريق أن يتكيف مع احتياجات المستخدم ويعدّل المنتج والمخرجات بناءً على إعطاء الأولية للعناصر ذات القيمة الأكبر. القيم الخمسة لإطار العمل سكرام scrum حتى تستفيد الفرق من إطار العمل سكرام scrum ينبغي عليها احترام القيم الخمسة للتدافع والمحددة في دليل إطار العمل سكرام scrum كما يلي: الالتزام: فريق سكرام scrum هو وحدة واحدة، وينبغي أن يثق أعضاؤه في بعضهم البعض، وأن يكون الأعضاء ملتزمين بمرحلة دورة التطوير طيلة فترتها، ومكرسين للتحسين المستمر من أجل إيجاد أفضل الحلول. الشجاعة: خلال فترة تنفيذ إطار العمل سكرام scrum يمكن أن يواجه الفريق مشكلات صعبة لا يوجد حل دقيق لها. تتمتع فرق سكرام scrum بالشجاعة لطرح الأسئلة المفتوحة والصعبة والإجابة عنها بصدق من أجل الوصول إلى أفضل الحلول. التركيز: يعمل فريق سكرام scrum خلال أي دورة تطوير على إحدى المهام الموجودة في قائمة مهام المنتج، فالفريق مركز على العمل الذي اختاره من هذه القائمة من أجل الوصول إلى الهدف المحدد مع نهاية دورة التطوير. الانفتاح: لا يسير كل شيء بمثالية خلال فترة تنفيذ إطار العمل سكرام scrum، لذلك ينبغي أن يكون أعضاء فريق سكرام scrum منفتحين على الفرص والأفكار الجديدة التي تساعدهم على التعلم على المستوى الفردي، كما يمكن أن تساعد على تحسين المنتج أو العملية. الاحترام: التعاون هو جوهر عملية سكرام scrum، ومن أجل دعم التعاون داخل الفريق، ينبغي أن يحترم الأفراد بعضهم البعض وأن يحترموا مسؤول سكرام scrum وعملية سكرام scrum ككل. الفرق بين سكرام scrum وأجايل طريقة سكرام scrum هي إحدى أشهر أطر عمل أجايل، فإذا كان الفريق يستخدم نمط سكرام scrum فهو فريق مرن، غير أن إطار عمل سكرام scrum لديه أدوار وأنظمة إضافية لمساعدة الفرق على أن تكون مرنة. من جهة أخرى، يعمل كل من فرق أجايل وفرق سكرام scrum باتجاه التحسين المستمر، ولكن خلافًا لأجايل الذي يميل أكثر لأن يكون فلسفةً أو إطار عمل، فإن إطار العمل سكرام scrum يضع طرقًا معينة لتستخدمها الفرق من أجل التحسين المستمر، مثل فترات دورة التطوير والوقفات اليومية والاجتماعات الاسترجاعية. الفرق بين إطار العمل كانبان Kanban و إطار العمل سكرام scrum رغم أن إطار عمل كانبان هو أيضًا أحد فروع أجايل على غرار سكرام scrum، إلا أن هذين النمطين يخدمان هدفين مختلفين، فأدوات كانبان تساعد الفريق على تصوير حركة العمل خلال مختلف مراحله إلى غاية اكتماله، في حين يركز إطار العمل سكرام scrum على أجزاء من المخرجات خلال فترة زمنية قصيرة عِوض المشروع كاملًا. بالإضافة إلى ذلك، فإن دورة كانبان مستمرة، بينما تدوم دورة التطوير في إطار العمل سكرام scrum ما بين أسبوع واحد إلى أربعة أسابيع، وعادةً ما تستخدم الفرق التي تختار إطار سكرام scrum ألواح كانبان لتطبيقها، رغم أن ذلك ليس من متطلبات إطار عمل سكرام scrum، يمكن أيضًا الجمع بين اُطري العمل سكرام scrum وكانبان فيما يعرف بالسكرامبان Scrumban. هل يجب على فريقي استخدام إطار عمل سكرام scrum خلال عمله؟ لا يصلح إطار العمل سكرام scrum للجميع، ولكنه لا تقتصر أيضًا على فرق هندسة وتطوير المنتجات والبرمجيات، إذ يمكن لأي فريق تبني إطار عمل سكرام scrum واستخدام التحسين المستمر لإنجاز عمل ممتاز، وفيما يأتي بعض ميزات وعيوب استخدام إطار سكرام scrum. ميزات إطار العمل سكرام scrum يكون إطار العمل سكرام scrum أكثر فعاليةً للفرق التي تحتاج إلى بناء الأشياء وتسليمها باستمرار، سواءً تعلق الأمر بالمنتجات التقليدية مثل التعليمات codes أو الخاصيات الجديدة، أو المنتجات غير النمطية مثل الحملات التسويقية أو الأصول المبتكرة، وتشمل بعض الميزات المحددة لهذا الإطار ما يلي: سهولة التكيّف: إطار العمل سكرام scrum مصمم للتكيّف مع الدروس المستقاة من دورات دورة التطوير السابقة ومن تغيرات السوق. التوقعات الواضحة: ضمن إطار العمل سكرام scrum، لا يوجد أدنى شك حول ما سيعمل عليه عضو معين في الفريق خلال دورة التطوير، ذلك لأن إطار عمل سكرام scrum ينسب أدوارًا ومسؤوليات معينة لكل عضو في الفريق. إعطاء الأولوية للعائد على الاستثمار Return on investment ROI: وهذه الميزة ظاهرة خاصةً في فرق تطوير البرامج، إذ يعطي إطار العمل سكرام scrum الأولية للمهام ذات التأثير الأكبر على العائد على الاستثمار، وبما أن العملية تسير تراكميًا، فيمكن للشركات إطلاق الأجزاء ذات الأثر الأكبر أولًا. مخاطر أدنى: يخفض إطار العمل سكرام scrum من احتمالات الأخطاء الكبيرة من خلال العمل بأجزاء تراكمية وأخذ الملاحظات والتغذية العكسية في الحسبان خلال دورة التطوير، وتسمح هذه الهيكلة بالوقوع في عدد أقل من الأخطاء. محدودية إطار العمل سكرام scrum كثيرًا ما تعاني مشاريع إطار عمل سكرام scrum من مشكلة زحف النطاق، وذلك لأنها تدعم وتشجع التغيير، فإذا أدخلنا تغييرات كبيرة أو تحصلنا على ردود أفعال متناقضة من العملاء، فهذا يدل على إعادة العملية التكرارية مرات ومرات دون نتائج حقيقية. لحل هذه المشكلة ينبغي الحرص على التحديد الدقيق لأهداف ومخرجات كل دورة تطوير، بالإضافة إلى ذلك، يجب التأكد من أن كامل فريق سكرام scrum يتشارك فهمًا واضحًا لمعنى مصطلح "مكتمل" حتى لا يستمروا في العمل بعد بلوغ درجة معينة، وعند الضرورة يمكن تطبيق عملية للرقابة على التغيير لتجنب هذه المشكلات. لدى فرق سكرام scrum عدد كبير من الاجتماعات، فبالإضافة إلى اجتماعات تخطيط ومراجعة فترات دورة التطوير الدورية، يلتقي الفريق يوميًا في اجتماعات الوقفات السريعة daily standups. الحل هنا هو إذا بدت اجتماعات سكرام scrum اليومية غير مفيدة، ينبغي إيجاد حل لتغييرها، إذ يمكن السماح لأفراد مختلفين من الفريق بقيادة الاجتماعات من أجل الحصول على وجهات نظر مختلفة حول المشاريع والعمليات. يمكن أن يكون إطار العمل سكرام scrum صعبة التطبيق على الفرق خارج مجال هندسة وتطوير المنتجات والبرامج، ولكنها غير مستحيلة. مع ذلك لتجاوز هذه المشكلة ينبغي على الفريق عند اتخاذ قرار استخدام إطار العمل سكرام scrum توضيح الكيفية التي سيساعده بها إطار العمل هذا بالضبط، وإن أمكن تحديد الصعوبات الحالية وربطها بأحداث إطار العمل سكرام scrum التي يمكن أن تساعد على حلها، بالإضافة إلى تخطيط عدة حصص تدريبية خلال فترات دورة التطوير الأولى من أجل مساعدة الفريق على النجاح. ترجمة -وبتصرّف- للمقال Scrum: The most popular Agile framework. اقرأ أيضًا دليل المبتدئين لمنهجية أجايل Agile المراسم الأربعة لمنهجية أجايل Agile ceremonies ما هي إدارة المنتجات؟ مفهوم مدير المنتجات ودوره في عملية تطوير المنتج1 نقطة
-
يملك لينُكس أنظمةً صلبةً وأدواتٍ عمليةً لإدارة الأجهزة والعتاد، بما في ذلك أجهزة التخزين. سنشرح في درسنا هذا كيفية تمثيل تلك الأجهزة في لينكس وكيف يمكن تحويل المساحات الخام إلى مساحاتٍ تخزينيةٍ قابلةٍ للاستخدام على الخواديم. ما هو التخزين الكتلي؟ التخزين الكتلي (Block storage) هو اسمٌ آخر لما تدعوه نواة لينُكس بالجهاز الكتلي (block device). والجهاز الكتلي هو قطعةٌ من العتاد التي يمكن استعمالها لتخزين البيانات، مثل أقراص التخزين الصلبة الاعتيادية (HDD) أو أقراص التخزين ذات الحالة الثابتة (solid state drive أي SSD) أو وحدات الذاكرة الفلاشية (flash memory stick) …إلخ. تلك تسمى «أجهزةً كتليةً» لأنَّ النواة تتعامل مع العتاد على أنَّه كتلٌ ثابتةُ الحجم، أو قطعٌ من المساحة. بشكلٍ أساسي، التخزين الكتلي هو ما نعتبر أنَّه التخزين الاعتيادي المتواجد في الحواسيب، والذي –بعد ضبطه وإعداده– سيعمل على أنَّه جزءٌ من شجرة نظام الملفات الحالية، وستتمكن من قراءة أو كتابة المعلومات منه وإليه بسلاسة. ما هي الأقسام في الأقراص؟ الأقسام (partitions) هي طريقةٌ لتقسيم جهاز التخزين إلى وحدات قابلة للاستخدام أصغر حجمًا، إذ أنَّ القسم هو جزءٌ من جهاز التخزين الذي يمكن معاملته بطريقةٍ مشابهةٍ لطريقة التعامل مع القرص نفسه. يسمح لك التقسيم بتجزئة المساحة المتوافرة لديك واستخدام كل قسمٍ لغرضٍ مختلف. وهذا يعطي المستخدمين الكثير من المرونة سامحًا لهم بتجزئة النظام لديهم لتحديثه بسهولة أو لتثبيت أكثر من نظام تشغيل أو لإنشاء مساحة تبديل (swap) أو لاستخدام أنظمة ملفات خاصة على تلك الأجزاء. وصحيحٌ أنَّ الأقراص يمكن أن تُهيّئ (format) وتُستعمَل دون تقسيم، إلا أنَّ بعض أنظمة التشغيل تتوقع وجود «جدول أقسام» (partition table) حتى ولو كان هنالك قسمٌ وحيدٌ في القرص؛ لذا يُستحسَن ويُنصَح عمومًا إنشاء أقسام في الأجهزة الجديدة لضمان مرونة استخدامها مهما كانت الظروف. MBR أم GPT؟ من المهم عند تقسيم القرص معرفة ما هي «صيغة» التقسيم التي ستستعملها، وسينتهي بك المطاف بالاختيار بين MBR (اختصار للعبارة Master Boot Record) و GPT (اختصار للعبارة GUID Partition Table). MBR هو نظام التقسيم التقليدي الذي بقي مُستخدَمًا طيلة 30 عامًا الماضية؛ ونتيجةً لعمره الطويل، فهو يعاني من بعض المحدوديات التي لها وقعٌ كبير. فمثلًا لا يمكننا استخدامه للأقراص التي حجمها التخزيني أكبر من 2 تيرابايت، ولا يمكن إنشاء أكثر من أربعة أقسام رئيسية (primary partitions)؛ ونتيجةً لذلك نضبط عادةً القسم الرابع على أنَّه «قسمٌ ممتد» (extended partition) الذي سيُنشَأ داخله «أقسامٌ منطقيةٌ» (logical partitions). وهذا يسمح لك بتجزئة آخر قسم لإنشاء أي عدد إضافي من الأقسام. GPT على الجانب الآخر هو تخطيط حديث للتقسيم الذي يحاول حلّ بعضًا من المشكلات الموروثة من MBR، الأنظمة التي تستعمل GPT يمكن فيها إنشاء أي عددٍ نريده من الأقسام، لكن هذا محدودٌ عادةً بالقيود المفروضة من نظام التشغيل نفسه. إضافةً إلى ما سبق، لا تعاني أقراص GPT من محدوديات في حجم القرص، ومعلوماتُ جدولِ الأقسامِ متوافرةٌ في مواضعَ عدَّة مما يحميها من التلف. يمكن أيضًا كتابة سجل «protective MBR» الذي يخبر الأدوات التي تتعامل مع أقراص MBR فقط أنَّ القرص قيد الاستخدام حاليًا. من الأفضل في أغلبية الحالات اختيار GPT ما لم يمنعك نظام تشغيلك أو الأدوات التي ستستعملها من ذلك. التهيئة وأنظمة الملفات صحيحٌ أنَّ نواة لينكس يمكنها التعرف على الأقراص الخام (raw disks) إلا أنَّ القرص لا يمكن أن يُستعمل كما هو؛ وإنما يجب تهيئته (format) قبل استعماله. التهيئة هي عملية كتابة نظام ملفات إلى القرص وتجهيزه لإجراء عمليات لها علاقة بالملفات. أما نظام الملفات (filesystem) فهو النظام الذي يُنظِّم البيانات ويتحكم بكيفية كتابة المعلومات إلى القرص والحصول على المعلومات من القرص؛ فبدون نظام الملفات لن تتمكن من استخدام جهاز التخزين لأيّة عمليات لها علاقة بالملفات. هنالك الكثير من صيغ أنظمة الملفات المختلفة، والتي تتباين فيما بينها بامتلاكها لميزاتٍ مختلفة، بما في ذلك دعمُ أنظمة التشغيل. لكن بشكلٍ أساسي، تمنح جميع أنظمة الملفات للمستخدم تمثيلًا مألوفًا للقرص، لكن الميزات التي يدعمها كل نظام ملفات وآلية سماحه للمستخدم بالتعامل وإجراء عمليات على القسم مختلفةٌ تمامًا. بعضٌ من أشهر أنظمة الملفات المتاحة للينكس: Ext4: أشهر نظام ملفاتٍ افتراضيٍ في لينكس هو Ext4 (اختصار للعبارة the fourth version of the extended filesystem) وهو نظام ملفات ذو سجل (journaled)، ومتوافق مع الأنظمة القديمة، ومستقر للغاية، ومدعومٌ دعمًا واسعًا وتتوافر له أدواتٌ كثيرة؛ وهو خيارٌ جيدٌ إن لم تكن لديك احتياجاتٌ خاصة. XFS: نظام ملفات XFS متخصصٌ بموضوع الأداء وبالملفات كبيرة الحجم، وستتم تهيئته بسرعة وأداؤه جيد عند التعامل مع الملفات الكبيرة ومع الأقراص الضخمة. ولديه ميزة أخذ snapshot من نظام الملفات. يعتمدXFS على تسجيل البيانات الوصفية (metadata journaling) فقط والذي يختلف عن تسجيل البيانات الوصفية والبيانات نفسها؛ وهذا يؤدي إلى سرعةٍ في الأداء، لكن قد يؤدي في الوقت نفسه إلى حدوث تلفٍ في البيانات في حال حدوث فقدان غير متوقع للطاقة الكهربائية. Btrfs: نظام ملفات Btrfs هو نظامٌ حديثٌ له ميزاتٌ كثيرة وهو من نمط copy-on-write بدل كونه journaled، هذه المعمارية تسمح لبعض وظائف إدارة الحجوم (volume management) بأن تُدمَج مع طبقة نظام الملفات، بما في ذلك snapshots، والنسخ (cloning)، والحجوم (volumes) …إلخ. لكن نظام ملفات Btrfs ما يزال يواجه مشاكل عند التعامل مع الأقراص الممتلئة. هنالك بعض الجدال الدائر حول جاهزية نظام الملفات هذا لاستعماله في بيئات العمل الإنتاجية، وينتظر الكثير من مدراء الأنظمة أن يصل Btrfs إلى درجةً أكبر من الدعم والانتشار. ZFS: هو نظام ملفاتٍ من نمط copy-on-write وفيه مدير حجوم (volume manager) بمجموعة متينةٍ ومستقرةٍ من الميزات. يحتوي أيضًا على ميزاتٍ ممتازةٍ لضمان سلامة البيانات المُخزَّنة عليه، ويمكنه التعامل مع أقسام ذات مساحات تخزينية كبيرة، وفيه ميزات إدارة الحجوم التقليدية مثل snapshotting و cloning، ويمكن فيه تنظيم الحجوم (volumes) إلى مصفوفة RAID أو مصفوفات شبيهة بمصفوفات RAID لغرض إنشاء نظام تخزيني مستقر وذي أداءٍ عالٍ. أما عن وضع دعم ZFS في لينكس، فيجدر بالذكر أنَّ له تاريخٌ جدليٌ نتيجةً لمخاوف من رخصة استعماله. أصبحت توزيعة أوبنتو توفِّر وحدة ثنائية (binary module) من وحدات النواة للتعامل معه، وتضع توزيعة دبيان الشيفرة المصدرية له في مستودعاتها، لكن لم يُحدَّد دعمه في بقية التوزيعات بعد. كيف يُدير لينُكس أقراص التخزين ملفات التخزين الموجودة في /dev من المعروف أنَّ كل شيء في لينُكس (تقريبًا) يُمثَّل بملف؛ بما في ذلك الأجهزة العتادية مثل أجهزة التخزين والتي تُمثَّل في النظام كملفات في مجلد /dev، وعمومًا تبدأ أسماء الملفات التي تُمثِّل أجهزة التخزين بالحرفين sd أو hd متبوعَين بحرفٍ آخر؛ فمثلًا: أوّل قرص تخزين على الخادوم يكون اسمه شبيهًا بالاسم /dev/sda. تملك الأقسام على تلك الأجهزة ملفاتٍ هي الأخرى ضمن مجلد /dev، ممثلةً بإضافة رقم القسم إلى نهاية اسم الجهاز، فعلى سبيل المثال، أوّل قسمٍ في القرص المذكور في المثال السابق سيكون على الشكل /dev/sda1. وعلى الرغم من أنَّ ملفات الأجهزة /dev/sd* و /dev/hd* هي الطريقة التقليدية للإشارة إلى الأجهزة والأقسام، إلا أنَّ هنالك جانبٌ سلبيٌ لاستخدام تلك المسارات، إذ أنَّ نواة لينكس تُقرِّر ما هو الجهاز الذي سيحصل على الاسم الفلاني عند كل إقلاعٍ للنظام، لذا قد يودي ذلك إلى تضاربات حيث تتغير أسماء عقد الأجهزة. حلٌ التفافيٌ على هذه المشكلة هو احتواء المجلد /dev/disk على مجلدات فرعية تَنظُمُ الأقراص والأقسام بطرائق ثابتةٍ لا تتغير؛ وتلك المجلدات تحتوي على وصلاتٍ رمزيةٍ (symbolic links) التي تُنشَأ عند الإقلاع لتشير إلى ملفات /dev/[sh]da* الصحيحة. تُسمى تلك الوصلات وفقًا لنوع طريقة التنظيم والموضَّحة باسم المجلد (على سبيل المثال، ستسمى الوصلات حسب «لُصيقة» [label] القسم في مجلد /dev/disk/by-partlabel). ستُشير تلك الوصلات دومًا إلى الأجهزة الصحيحة، لذا يمكننا استخدامها كمُعرِّفات ثابتة لأجهزة التخزين. بعض (أو جميع) المجلدات الآتية موجودةٌ ضمن مجلد /dev/disk: by-label: أغلبية أنظمة الملفات لها آلية لإعطاء لُصيقة سامحةً بإسناد أسماء يُحدِّدها المستخدم إلى القرص أو القسم؛ يحتوي هذا المجلد على وصلاتٍ مسماةٍ تِبعًا للُصيقات التي كتبها المستخدم. by-uuid: المُعرِّفات العالمية الفريدة (اختصارًا UUIDs) هي سلسلةٌ طويلةٌ فريدةٌ من الحروف والأرقام التي يمكن أن تُستعمَل كمُعرِّف لوسيط التخزين. تلك المُعرِّفات ليست سهلة القراءة من البشر، لكنها فريدة، وستبقى ثابتةً حتى لو بدَّلنا الخادوم أو النظام؛ لذا من الأفضل استخدام مُعرِّفات UUID للإشارة إلى أجهزة التخزين التي قد تُنقَل بين الأنظمة بين الحين والآخر، لأنَّ من غير المحتمل أن يحدث تضاربٌ في الأسماء. by-partlabel و by-partuuid: توفِّر جداول GPT لافتاتٍ ومعرِّفات UUID خاصة بها، والتي يمكن أن تُستعمَل أيضًا بغرض تمييز الأقسام، وتعمَل بنفس طريقة عَمَل المجلدين السابقين، إلا أنَّها تستعمل مُعرِّفات خاصة بجداول GPT. by-id: يحتوي هذا المجلد على وصلات مُولَّدةٌ أسماؤها من الرقم التسلسلي لجهاز التخزين وللجهاز الموصول إليه، وتلك الأسماء غير ثابتة تمامًا، لأنَّ طريقة وصل الجهاز إلى النظام قد تُغيّر من اسم وصلات المجلد by-id. by-path: وكما في مجلد by-id، تعتمد الوصلات الموجودة في هذا المجلد على أجهزة التخزين الموصول إلى النظام نفسه، وتُبنى تلك الوصلات اعتمادًا على طريقة تمثيل العتاد الذي يُستعمَل للوصول إلى وسيط التخزين في نظام التشغيل. وللوصلات الموجودة في هذا المجلد نفس الإشكاليات التي تواجهها تلك الموجودة في by-id لأنَّ وصل جهاز التخزين إلى منفذٍ آخر قد يؤدي إلى تغيير هذه القيمة. يُفضَّل عادةً استخدام by-label أو by-uuid إذ أنَّ تمثيلها للأقراص ثابتٌ. وصل أجهزة التخزين الكتلية تُستعمَل ملفات الأجهزة الموجودة في /dev للتواصل مع التعريف القادر على التعامل مع الجهاز المُعيّن في النواة؛ لكن يجب إنشاء طبقة تُمكّننا من معاملة الجهاز كوسيط تخزين يحتوي على مساحةٍ تخزينيةٍ قابلةٍ للاستعمال. في لينكس وغيره من الأنظمة الشبيهة بيونكس (Unix-like)، يُمثَّل نظام التشغيل كشجرة ملفات موحّدة بغض النظر عن عدد الأجهزة الفيزيائية التي تُستعمَل فيه؛ ولكي يُستعمَل نظامُ ملفاتٍ أو قرصٌ في النظام، فيجب ربطه بمكانٍ ما في تلك الشجرة. عملية «الوصل» (mounting) تعني ربط قسم مُهيئ أو قرص إلى مجلدٍ موجودٍ ضمن نظام ملفات لينُكس؛ ومن ثم سنتمكّن من الوصول إلى محتويات القرص أو القسم من ذاك المجلد. توصل الأقراص أو الأقسام دومًا في مجلدات فارغة مخصصة لهذا الغرض (الوصل في مجلد غير فارغ يعني أنَّنا لن نتمكن من الوصول إلى محتويات المجلد حتى نفصل [unmount] القرص أو القسم). هنالك الكثير من خيارات الوصل التي يمكن ضبطها لتعديل سلوك الأجهزة الموصولة، على سبيل المثال، يمكن أن يوصل القرص بوضع «القراءة فقط» لضمان عدم تغيير محتوياته. ينصح معيار هيكلة نظام الملفات باستخدام /mnt أو مجلدٍ فرعيٍ داخله لوصل أنظمة الملفات مؤقتًا. إذا كان وصلك للأقراص مؤقتًا فهذا أفضل مكانٍ لوصلها؛ لكن المعيار لم يُقدِّم أيّة اقتراحات لمكان وصل وسائط التخزين الدائمة، لذا يمكنك وصلها أينما تشاء؛ لكن في أغلبية الحالات توصل وسائط التخزين الدائمة في مجلد /mnt أو في مجلدٍ فرعيٍ داخله. جعل الوصل دائمًا باستخدام /etc/fstab تنظر أنظمة لينكس إلى ملفٍ يدعى /etc/fstab (أي filesystem table) الذي يُحدِّد ما هي أنظمة الملفات التي يجب وصلها أثناء الإقلاع. توصل أنظمة الملفات غير الموجودة في ذاك الملف تلقائيًا (باستثناء تلك المُعرَّفة بملفات systemd .mount، التي ليست شائعةً حاليًا). ملف /etc/fstab بسيطٌ جدًا، فكلُ سطرٍ فيه يُمثِّل نظام ملفاتٍ مختلفٍ الذي يجب أن يوصل؛ يُحدِّد هذا السطر ما هو الجهاز الكتلي، وما هي نقطة الوصل (mount point) التي سيُربَط إليها، وما هي صيغة القسم، وما هي خيارات الوصل، بالإضافة إلى معلوماتٍ أخرى. إدارة متقدمة لأجهزة التخزين صحيحٌ أنَّ أغلبية الاستخدامات البسيطة لا تحتاج إلى بُنى إدارية إضافية، إلا أنَّنا سنحصل على أداءٍ عالٍ ومرونة وقدرة على تعويض تلف الأقراص عند استخدامنا لطرائق الإدارة المتقدمة. ما هي مصفوفات RAID؟ مصفوفات RAID ترمز إلى «redundant array of independent disks»، وهي تقنية إدارة تخزين تسمح لك بتجميع الأجهزة مع بعضها لإدارتها كجهاز تخزين وحيد له ميزاتٌ إضافيةٌ. خصائص مصفوفة RAID تعتمد على مستوى RAID المستعمل، والذي يُعرِّف ما هو عدد الأقراص في المصفوفة وكيف تتعلق ببعضها. للمستوى المختار تأثيرٌ على الأداء والقدرة على تعويض تلف الأقراص، بعض المستويات الشائعة هي: RAID 0: يعتمد هذا المستوى على «توزيع البيانات» (drive striping) والذي يعني أنَّه عندما تُكتَب البيانات إلى المصفوفة، فستُقسَّم وتوزَّع على الأقراص الموجودة في المصفوفة، وهذا يعني زيادةً في الأداء لأنَّ بالإمكان الكتابة على أو القراءة من أكثر من قرص في آنٍ واحد. الجانب السلبي لهذا المستوى هو عندما يحدث عطبٌ في أحد الأقراص فسنفقد جميع المعلومات في كامل المصفوفة، لعدم وجود قرص يحتوي على معلوماتٍ كافيةٍ لإعادة بناء المصفوفة. RAID 1: مستوى RAID 1 يعتمد على إنشاء نسخة مماثلة للبيانات (drive mirroring). فأي شيء يُكتَب إلى مصفوفة RAID 1 سيُكتَب على عدِّة أقراص؛ الميزة الأساسية لهذا المستوى هو القدرة على تعويض الأقراص، مما يعني أنَّ البيانات ستبقى موجودةً في المصفوفة حتى لو حدث عطبٌ في أحد الأقراص؛ وذلك لأنَّ عدِّة أقراص تحتوي على نفس البيانات، لكن في المقابل سيؤدي ذلك تقليل المساحة التخزينية للمصفوفة إلى النصف. RAID 5: مستوى RAID 5 يوزِّع البيانات على عدِّة أقراص بشكلٍ شبيهٍ بمستوى RAID 0؛ لكن هذا المستوى يتضمن تكرار توزيع جزء من البيانات على قرصٍ آخر، وهذا يعني أنَّه لو حدثت مشكلة في أحد الأقراص، فستتمكن بقية الأقراص من إعادة بناء المصفوفة باستخدام البيانات المُكرَّرة التي يمكن تجميعها معًا. تلك البيانات المكررة كافية لإعادة بناء قرصٍ وحيد، وهذا يعني أنَّ المصفوفة ستتمكن من إعادة بناء نفسها إن حدث عطبٌ في قرصٍ وحيدٍ فقط. يؤدي تكرار توزيع البيانات إلى تقليل المساحة التخزينية لكامل المصفوفة إلى ما يعادل المساحة التخزينية لقرصٍ وحيد. RAID 6: يملك المستوى RAID 6 نفس خصائص RAID 5، إلا أنَّه يُكرِّر جزءًا من البيانات على قرصين، وهذا يعني أنَّ مصفوفات RAID 6 ستتمكن من إعادة بناء نفسها إن فقدت قرصين؛ وستتأثر المساحة التخزينية لكامل المصفوفة بتكرار البيانات، وهذا يعني أنَّ المساحة التخزينية القابلة للاستخدام لكامل المصفوفة مساويةٌ للمساحة التخزينية لقرصين. RAID 10: هذا المستوى هو دمجٌ بين المستويين 1 و 0، فبدايةً ستُنشَأ مجموعتين متماثلتين (mirrored) من المصفوفات؛ ثم ستُوزَّع البيانات عليها، وهذا يُنشِئ مصفوفةً لها نفس القدرة التعويضية لكن أداءها عالٍ. لكن هذا المستوى يتطلب عددًا كبيرًا نسبيًا من الأقراص، والمساحة التخزينية القابلة للاستخدام هي نصف مساحة جميع الأقراص. ما هو LVM؟ LVM، أو مدير الحجوم المنطقية (Logical Volume Manager) هو نظامٌ يُشكِّل «طبقةً» تعلو البنية الفيزيائية لوسائط التخزين وخصائصها لتوفير مرونة عالية وقدرات كبيرة. يسمح لك LVM بإنشاء مجموعة من الأجهزة الفيزيائية وإدارتها كما لو أنَّها قرصٌ وحيد، ويمكنك تقسيم المساحة عند الحاجة إلى «حجوم منطقية» (logical volumes) والتي تعمل عمل الأقسام. يعمل LVM بناءً على الأقسام العادية، ويحّل الكثير من المحدوديات الموجودة في الأقسام التقليدية، فعلى سبيل المثال، يمكنك بكل سهولة عند استخدام حجوم LVM أن توسِّع الأقسام وتُنشِئ أقسامًا تمتد على أكثر من قرص، وتأخذ نسخ snapshot من الأقسام، وتنقل الحجوم إلى أقراص فيزيائية مختلفة. يجدر بالذكر أنَّ بالإمكان استخدام LVM مع مصفوفات RAID ذات الأداء والوفرة العالية لتوفير نظام إدارة مرن. ما هي الخطوة القادمة؟ إذا كان لديك جهاز تخزين جديد تريد استخدامه مع نظام لينكس، فألقِ نظرةً على هذه المقالة التي ستُرشِدُكَ إلى طريقة تقسيم وتهيئة ووصل نظام الملفات الجديد الذي ستُنشِئه. يجب أن تكفيك المقالة السابقة لأغلبية حالات الاستخدام حيث سيكون همّك الرئيسي هو زيادة القدرات التخزينية. لتعلم المزيد عن مهام إدارة أجهزة التخزين الأساسية، فانظر إلى هذه المقالة ترجمة -وبتصرّف- للمقال An Introduction to Storage Terminology and Concepts in Linux لصاحبه Justin Ellingwood1 نقطة