November 22, 2020
إعداد: عبدالعزيز حويمد الشماسي.
عبدالعزيز الشماسي، مدرب معتمد في مجال تقنيات إمكانية الوصول، ومستشار لتطوير إمكانية الوصول في المواقع والتطبيقات.
حاصل على ترخيص تدريب المؤسسات والأفراد من منظمة NVAccess المطورة لقارئ الشاشة NVDA الأشهر على مستوى العالم.
حاصل على شهادات في تطوير الويب الشامل (FullStack Development) وتطوير واجهات الويب (FrontEnd Development) من أكاديمية مؤسسة الأمير محمد بن سلمان الخيرية (مسك) بالتعاون مع شركة Udacity العالمية.
مطور برمجيات باستخدام لغة Python البرمجية.
بنهاية هذا البرنامج التدريبي، سيكون المتدرب -بإذن الله- قادرًا على أن:
يستهدف هذا البرنامج التدريبي ذوي الإعاقة البصرية، ويجب أن تتحقق في المتدربين الشروط التالية:
يجب على المتدربين توفير التجهيزات التالية؛ لضمان الاستفادة من محتوى البرنامج التدريبي:
في عالمٍ غدا أصغر فأصغر، وباتت التقنية فيه أحد المحركات الأساسية للتقدم والنماء، كان لزامً علينا الالتحاق بركب التطور، والتعرف على التقنيات الجديدة التي تساهم في تحسين حياتنا.
ومن خلال هذه الحقيبة التدريبية، سأسلط الضوء على مجموعة من الأدوات المهمة لمطوري المستقبل، التي تساعدهم في تسهيل عمليات التطوير، واختصار الوقت للوصول إلى نتائج إيجابية.
وبما أن البدايات هي الأهم، فسيتم التطرق أولاً إلى أهمية البرمجة في هذا العصر، والخطوات التي يمكن اتباعها للمساهمة في رسم المستقبل من خلال البرمجة والتطوير.
ثم سأتطرق إلى مجموعة من الأدوات التي تساعد المبرمجين على الإنتاجية، بدءًا بالمحرر البرمجي Visual Studio Code, أحد أفضل المحررات البرمجية، مرورًا بسطر الأوامر ونظام GitHub, وصولاً إلى أساسيات نظام Linux وأهميته لمطوري الويب.
أسأل الله تعالى أن تكون هذه الحقيبة التدريبية دافعًا ومشجعًا لدخول هذا المجال المثير، وعونًا على الاستمرار والتفوق فيه.
بنهاية هذا اليوم التدريبي، سيكون المتدرب -بإذن الله- قادرًا على أن:
تعد البرمجة أحد أهم مجالات الاختصاص في العصر الحديث، حيث امتد تأثيرها إلى كافة نواحي حياتنا، مغيرةً بذلك مجالات العمل إلى الأبد.
فمن المحاسبة إلى الطب، ومن الزراعة إلى الطيران، نجد بأن البرمجة غيرت شكل العمل، وطورت الإنتاجية، معلنةً عن عصرٍ جديد، يساهم فيه المبرمجون بتحسين جودة الحياة.
واليوم، نجد بأن الحاجة إلى صناعة جيلٍ جديد من المبرمجين باتت ضرورةً ذات أهمية بالغة، ولذا كان لزامًا علينا تطوير مهارات المبرمجين، ودفعهم للمشاركة في دفع عجلة التنمية، والمساهمة في بناء الاقتصاد المزدهر لهم ولمجتمعهم.
تعنى البرمجة بإنشاء المواقع والتطبيقات الخدمية والترفيهية والمعلوماتية بشتى أنواعها، وذلك من خلال كتابة ما يسمى بالأوامر البرمجية.
وتُعْرَف هذه الأوامر البرمجية بلغة البرمجة، ويوجد عدد كبير من لغات البرمجة التي تختلف في مجال عملها والأنظمة التي تدعمها والاحتياج لها في سوق العمل، إضافةً إلى عوامل أخرى كثيرة.
هنالك العديد من الأسباب التي تدفع الكثيرين لتعلم البرمجة، ولعل من أهمها:
بعد البحث في المواقع المتخصصة، حدد أكثر لغات البرمجة شيوعًا في عام 2020، وكم بلغت نسبة استخدامها مقارنةً بالعام السابق؟
تختلف لغات البرمجة بشكل كبير، ولعل أكثرها شيوعًا هي اللغات التالية:
بعد البحث في الإنترنت، حدد أبرز استخدامات لغات البرمجة المذكورة أعلاه.
تختلف الأفكار الخاطئة عن البرمجة والمبرمجين، ولعل من أهمها:
لا شك بأن الطريق إلى تعلم البرمجة مملوء بالعقبات والتحديات، فهو مجال ينبغي فيه التحلي بالصبر لاكتساب المهارات، وبالدقة عند تنفيذ المهام المختلفة.
كما أن أبرز الأمور التي ينبغي علينا الوعي بها وترسيخها في الذاكرة قبل البدء، هي العزيمة والإصرار على المتابعة حتى نصل إلى أهدافنا، فالطريق طويلة وشاقة، ولكن لذة النجاح لا تعادلها لذة.
ولعل أبرز الصفات التي ينبغي على المبرمج التحلي بها هي:
هنالك مجموعة من الأدوات التي تساعد المبرمج على أداء عمله بشكل مميز، كما توجد مجموعة كبيرة من المواقع والتي يمكن اللجوء إليها عند الحاجة إلى المساعدة.
وفي هذه الدورة، سنتطرق معًا لاستخدام الأدوات التالية؛ لزيادة الإنتاجية وتسهيل عملك كمبرمج:
سيتم خلال هذه الدورة استعمال برنامج Visual Studio Code لكتابة الأكواد البرمجية، والذي يعد أحد أفضل برامج التحرير البرمجي وأكثرها توافقية.
سنستعرض سويةً الأدوات المستخدمة للتعامل مع سطر الأوامر، ومنها برنامج GitBash وبرنامج Windows Terminal.
GitHub هي منصة مشاركة البرامج مفتوحة المصدر الأشهر على مستوى العالم. ومن خلال هذه الدورة، سنتعرف على كيفية استخدام أشهر مزاياها بالشكل الأمثل.
تعد منصة Windows Subsystem for Linux هي المنصة الأمثل لتطوير مواقع وخدمات الويب على نظام Windows. وسنستعرض خلال هذه الدورة أساسيات التعامل معها واستخدامها بالشكل الأمثل.
من خلال ما تعلمته اليوم، وبالاعتماد على مصادر البحث المختلفة والمواقع الموجودة في مرجع الحقيبة التدريبية، قم بما يلي:
بنهاية هذا اليوم التدريبي، سيكون المتدرب -بإذن الله- قادرًا على أن:
بالنظر إلى أن الأوامر البرمجية هي عبارة عن نصوص، فماذا يميز برامج التحرير المتخصصة مثل برنامج Visual Studio Code عن برامج التحرير العادية مثل برنامج المفكرة Notepad?
أجب عن هذا السؤال في ثلاث نقاط.
يعد برنامج Visual Studio Code أحد أهم برامج تحرير الأوامر البرمجية في يومنا هذا، حيث يمكن المبرمجين من كتابة الأوامر البرمجية وتنسيقها، واكتشاف الأخطاء وإصلاحها، وتشغيل البرامج وتجربتها، وذلك بفضل مرونته وإضافاته المتعددة لشتى لغات البرمجة.
حيث يجمع البرنامج بين القوة والخفة وسهولة الاستخدام، ويوفر العديد من الأدوات التي تسهل على المبرمج إدارة عمليات التطوير بكل يسر.
وتتنوع تلك الأدوات بدءً بأدوات اكتشاف الأخطاء، مرورًا بأدوات التكامل مع خدمات Amazon Web Services و Microsoft Azure السحابية وإدارة المشاريع من خلال GitHub, وصولاً إلى تطوير برامج الذكاء الاصطناعي، كل ذلك من خلال واجهة تضعك في الصورة دائما.
تنقسم واجهة Visual Studio Code إلى عدة أقسام رئيسة، يمكن التنقل بينها باستخدام الاختصار F6:
عند البدء باستخدام Visual Studio Code, يمكن الانتقال إلى المحرر باستخدام مفتاح F6 والبدء بكتابة الأوامر البرمجية، ويوفر Visual Studio Code عددًا من الإضافات التي يمكن تثبيتها؛ لعرض اقتراحات يمكن أن تسرع كتابتك للكود البرمجي.
عند ظهور الاقتراحات، يمكن التنقل بينها باستخدام السهمين الأعلى والأسفل، واختيار أحدها باستخدام مفتاح الإدخال.
تجدر الإشارة إلى أن مفتاح Tab يضيف عددًا من المسافات والتي تستخدم لتنسيق مظهر الأوامر البرمجية، وتكون هذه المسافات ضروريةً في بعض اللغات مثل Python.
يمكن من خلال شريط الحالة استعراض أبرز الأوامر السريعة والتي يمكن تنفيذها، كما يمكن استعراض الإشعارات الخاصة ب Visual Studio Code.
يمكن من خلال الشريط العلوي إظهار أو إخفاء عدد من النوافذ الجانبية، والتي تمكنك من تصفح ميزات Visual Studio Code الأخرى، كمستعرض الملفات والإضافات، والبحث والاستبدال، وإجراء عمليات التكامل مع GitHub وغيرها.
يمكنك متصفح الملفات من تصفح كافة الملفات الموجودة في مجلد العمل، وإضافة الملفات والمجلدات، وإجراء عمليات التحرير وإعادة التسمية والحذف.
ويمكن الانتقال السريع إلى متصفح الملفات من خلال الاختصار CTRL+Shift+E.
تمكنك هذه الشاشة من البحث في ملف معين أو كافة الملفات المفتوحة في المحرر، وذلك باستخدام كلمات محددة أو استخدام قواعد Regular Expressions, وإجراء عمليات الاستبدال.
ويمكن الانتقال السريع إلى شاشة البحث من خلال الاختصار CTRL+Shift+F.
تمكنك هذه الشاشة من التحكم بالمصادر البرمجية وإرسالها إلى GitHub, كما تمكنك من إجراء المطلوبة عليها، وسنتطرق إلى كيفية إرسال المصادر إلى GitHub لاحقًا.
ويمكن الانتقال السريع إلى شاشة التحكم بالمصادر من خلال الاختصار CTRL+Shift+G.
تمكنك هذه الشاشة من تشغيل برنامجك مباشرةً، دون الحاجة إلى مغادرة Visual Studio Code, كما تمكنك من اكتشاف الأخطاء التشغيلية لإصلاحها.
ويمكن الانتقال السريع إلى شاشة التشغيل من خلال الاختصار CTRL+Shift+D.
تمكنك هذه الشاشة من إدارة إضافات Visual Studio Code, والبحث عن الإضافات الجديدة.
تجدر الإشارة إلى أن إضافات Visual Studio Code مهمة جدًا لتحسين أداء البرنامج مع بعض لغات البرمجة، وإضافة الميزات التي تساهم في رفع إنتاجيتك.
ويمكن الانتقال السريع إلى شاشة الإضافات من خلال الاختصار CTRL+Shift+X.
تمكنك لوحة الأوامر “Command Palette” من البحث عن أمر لتنفيذه في كافة جوانب برنامج Visual Studio Code, ويمكن للإضافات التي يتم تنزيلها إضافة أوامر إلى هذه اللوحة.
عند الضغط على مفتاح الاختصار F1 أو CTRL+Shift+P سيعرض لك البرنامج مربع للتحرير، قم بكتابة الأحرف الأولى من الأمر المراد تنفيذه.
سيعلمك Visual Studio Code عن ظهور عدد من الاقتراحات، والتي يمكنك التنقل بينها باستخدام السهمين الأعلى والأسفل، واختيار ما يناسبك منها لتنفيذه. عندها، قم بضغط مفتاح الإدخال لتنفيذ الأمر.
كما يمكنك ضغط مفتاح الهروب لإغلاق النافذة.
لبرنامج Visual Studio Code العديد من الإضافات، ولعلي أسرد بعضًا منها هنا. ساهمت هذه الإضافات في تطوير عملي وإنتاجيتي كمطور.
تمكنك إضافة C/C++ من Microsoft من إدارة عمليات التشغيل والبناء لبرامج C/C++، وذلك بتوفير التكامل بين Visual Studio Code وأدوات بناء وتشغيل البرامج، كما تساعد في اكتشاف أخطاء البرامج وإصلاحها.
تمكنك إضافة Debugger for Chrome من اكتشاف أخطاء أوامر Javascript البرمجية على متصفح Google Chrome.
تمكنك إضافة Markdown All in One من Yu Zhang من كتابة ملفات بلغة Markdown ومعاينتها، وإدراج جداول المحتويات، ومعاينة الملفات وتحويلها إلى لغة HTML.
وتعد هذه الإضافة مفيدةً لكتابة وثائق المساعدة ودلائل الاستخدام، وملفات ReadMe على موقع GitHub. وقد تم إعداد هذه الحقيبة التدريبية باستخدام إضافة Markdown All in One.
تمكنك إضافة Pylance من Microsoft من كتابة البرامج بلغة Python وإدارتها، واكتشاف الأخطاء اللغوية في البرامج وإصلاحها، وتوفر عليك الكثير من الوقت والجهد، وذلك بفضل الاقتراحات التي توفرها عند كتابة الأوامر البرمجية.
تمكنك إضافة Visual Studio IntelliCode من Microsoft من توفير الوقت والجهد أثناء كتابة الأوامر البرمجية، وذلك من خلال توفير الاقتراحات المعتمدة على الذكاء الاصطناعي، بما يتوافق مع الأوامر البرمجية التي تم كتابتها سابقًا.
يوصى بتحميل الإضافات التالية لدعم إمكانية الوصول في برنامج Visual Studio Code:
عند الكتابة في محرر Visual Studio Code, يمكن للأدوات التالية مساعدتك لاكتشاف الأخطاء وإصلاحها:
يتعرف Visual Studio Code على بعض الأخطاء اللغوية والمنطقية تلقائيًّا، ويعرض تلك الأخطاء في نافذة مخصصة لسهولة الوصول إليها.
ويمكن الوصول إلى نافذة المشاكل أو استبعادها باستخدام الاختصار CTRL+Shift+M أو بالضغط عليها من خلال شريط الحالة.
عند الوصول إلى نافذة المشاكل، سيعرض Visual Studio Code المشاكل على شكل عرض شجري، ويمكن وضع المؤشر على السطر الذي توجد فيه المشكلة في المحرر من خلال ضغط مفتاح الإدخال على المشكلة نفسها.
تمكنك أداة اكتشاف الأخطاء أثناء التشغيل من تشغيل البرنامج، ومراقبة كافة المتغيرات والدوال أثناء التشغيل، وعرض تقارير حول التغيرات التي تطرأ عليها أثناء دورة البرنامج التشغيلية، ويمكن الوصول إلى هذه الأداة بالضغط على F5.
عند تشغيل الأداة لأول مرة، سيطلب منك Visual Studio Code تحديد ملف التشغيل الأساسي للبرنامج؛ كي يبدأ بتشغيله ومراقبة المتغيرات.
ويمكنك قبل تشغيل هذه الأداة وضع علامة توقف “Break Point” عند نقطة معينة في الملف؛ لمعاينة حالة المتغيرات والدوال عندها، وذلك من خلال الضغط على F9 بعد وضع المؤشر على النقطة التي تريد وضع علامة التوقف عندها.
كما يمكنك من خلال هذه الأداة تغيير قيم المتغيرات ومراقبة النتائج التي تحدث عندئذ. ولإيقاف الأداة، يمكنك الضغط على F6.
لبرنامج Visual Studio Code كثير من الإعدادات التي تتحكم بكافة جوانبه، ولا يمكننا استعراضها كاملةً في هذا الدليل، ويمكنكم استعراض كافة الإعدادات ومدلولاتها من خلال صفحة Visual Studio Code User and Workspace Settings
ويمكن الوصول إلى الإعدادات من خلال الضغط على الاختصار ctrl+, وتعديلها من خلال الواجهة، أو من خلال تعديل ملف الإعدادات بصيغة json.
تتحكم إعدادات المستخدم بالإعدادات التي يتم تطبيقها بشكل عام على كافة جوانب Visual Studio Code, أما إعدادات مجلد العمل، فتتحكم بالإعدادات التي يتم تطبيقها على مجلد مشروع معين.
ويعطي هذا التقسيم مرونةً في ضبط إعدادات البرنامج التي قد تختلف باختلاف المشروع الذي يتم العمل عليه.
يحتوي برنامج Visual Studio Code على الكثير من الإعدادات، وإليكم أبرزها:
لبرنامج Visual Studio Code العديد من الاختصارات، ويمكنكم قراءة الدليل السريع للاختصارات من خلال الروابط التالية: اختصارات برنامج Visual Studio Code لنظام التشغيل Windows اختصارات برنامج Visual Studio Code لنظام التشغيل MacOS مزيد من المعلومات حول تخصيص مفاتيح الاختصار لبرنامج Visual Studio Code
من خلال ما تعلمته اليوم، وبالاستعانة بمصادر البحث المختلفة، قم بما يلي:
بنهاية هذا اليوم التدريبي، سيكون المتدرب -بإذن الله- قادرًا على أن:
يعد سطر الأوامر أحد أهم الأدوات التي يستخدمها المبرمج أثناء أدائه لعمله، حيث يمكنه من أداء العديد من المهام بشكل أسرع، كما يوفر خيارات أوسع للتحكم بالبرامج ومزاياها.
حيث لا توفر بعض البرامج واجهةً رسومية للتعامل معها، بل تقتصر على توفير واجهة سطر الأوامر للمبرمجين، والتي تسمى عادةً “Command line Interface” أو (CLI).
من خلال سطر الأوامر، يقوم المستخدم بكتابة الأمر المراد تنفيذه، وإرساله إلى موجه الأوامر، الذي يقوم بإرساله إلى النظام، ومن ثم الرد بالنتيجة على شكل نص مكتوب إلى المستخدم.
ويعد سطر الأوامر مهمًّا عند التعامل مع أنظمة التشغيل عن بعد، كما هو الحال عند إدارة أنظمة Linux المشغلة لخوادم الإنترنت، حيث لا تأخذ واجهات سطر الأوامر الكثير من الموارد عند التعامل معها، على عكس الواجهات الرسومية المستهلكة للذاكرة والمعالج.
سنتعرف خلال هذه الدورة على كيفية استخدام سطر الأوامر من خلال Windows Terminal اعتمادًا على برنامج GitBash. ولكن قبل ذلك، لنتعرف على عدد من المفاهيم أولاً.
تتغير المفاهيم التالية من نظام لآخر، ولكن هذا التغير لا يكون كبيرًا في العادة:
ولتبسيط الصورة، دعونا نأخذ المثال التالي:
عندما يقوم مستخدم بكتابة أمر معين (على سبيل المثال: “cd /d/test”) فإنه يقوم بإدخال الأمر في مربع التحرير المسمى بسطر الأوامر.
عند إرسال المستخدم للأمر باستخدام مفتاح الإدخال، يقوم برنامج الإدخال والإخراج “Terminal” بإرسال الأمر إلى نظام إدارة سطر الأوامر “Shell”, والذي يقوم بالتحقق من الأمر وتنفيذه.
عند تنفيذ الأمر، يقوم نظام إدارة سطر الأوامر “Shell” بإرسال النتيجة إلى برنامج الإدخال والإخراج “Terminal” لعرضها على المستخدم.
هل هنالك أمثلة أخرى يمكن اعتبارها Terminals? وهل هنالك أمثلة أخرى يمكن القول بأنها Shells? اذكرها.
يحتوي نظام Windows افتراضيًّا على نظامين لإدخال الأوامر وهما:
أخيرًا، أصدرت Microsoft في أواخر عام 2019 برنامج Windows Terminal, والذي يمكن المستخدم من التعامل مع كافة أنظمة إدارة سطر الأوامر على Windows من مكان واحد، ويوفر العديد من الميزات التي تسهل عمل المطورين، كما ويسمح بتخصيص مظهر سطر الأوامر، واختصارات لوحة المفاتيح، والكثير الكثير.
يعتمد نظام لينوكس في أشهر توزيعاته على نظام إدارة سطر الأوامر Bash والذي يعد من الأنظمة المتقدمة، فعلى الرغم من أنه نظام مطور منذ عام 1989، إلا أنه يُحَدَّث باستمرار، ويحتوي على الكثير من الإمكانات للتخصيص والبرمجة.
أما عن نظام ماك، فقد بدأت Apple باستخدام نظام ZSH لإدارة سطر الأوامر، بدءً من إصدار MacOS Catalina (10.15) بشكل افتراضي؛ ويعتقد أن ذلك يعود لأسباب تتعلق بالترخيص، ولكن نظام ZSH لا يختلف كثيرًا عن نظام Bash.
ويمكن لمستخدمي نظام Mac استخدام برنامج Terminal الافتراضي للتفاعل مع سطر الأوامر.
سيتم الاعتماد على نظام Bash لإدارة سطر الأوامر خلال هذه الدورة؛ للتقريب بين الأنظمة الثلاث، وزيادة احترافية المستخدمين في التعامل مع سطر الأوامر.
ويمكن تنزيل برنامج GitBash لنظام Windows واستخدامه خلال هذه الدورة.
نعلم بأن برنامج Windows Terminal يوفر واجهة موحدة لكافة أنظمة إدارة سطر الأوامر على Windows. ولذا فسنقوم باستخدامه كواجهة للتعامل مع تلك الأنظمة، إذ تضمن مرونته الكبيرة وإمكانية تخصيصه تجربةً أفضل وإنتاجيةً أسرع.
وللربط بين برنامج Windows Terminal ونظام GitBash قم بما يلي:
{
"guid": "{00000000-0000-0000-ba54-000000000002}",
"acrylicOpacity": 0.75,
"closeOnExit": true,
"colorScheme": "Campbell",
"commandline": "\"%PROGRAMFILES%\\git\\usr\\bin\\bash.exe\" -i -l",
"cursorColor": "#FFFFFF",
"cursorShape": "bar",
"fontFace": "Consolas",
"fontSize": 10,
"historySize": 9001,
"icon": "ms-appx:///ProfileIcons/{0caa0dad-35be-5f56-a8ff-afceeeaa6101}.png",
"name": "Bash",
"padding": "0, 0, 0, 0",
"snapOnInput": true,
"startingDirectory": "%USERPROFILE%",
"useAcrylic": true
},
تجدر الإشارة إلى أن ترتيب الProfiles داخل هذه القائمة يعكس ترتيب ظهورها في شاشة Windows Terminal.
ملاحظة: تم استعمال الملف bash.exe لأنه المسؤول عن نظام Bash لإدارة سطر الأوامر.
عند فتح برنامج Windows Terminal أو برنامج Terminal على نظام Mac, ستظهر لك شاشة يمكنك من خلالها كتابة الأوامر مباشرةً، وسيقوم قارئ الشاشة بإعلامك تلقائيًّا بنتيجة الأمر المكتوب.
هنالك عدد من الأوامر الأساسية التي يمكن البدء باستخدامها عند فتح سطر الأوامر، وسأستعرض بعضًا منها هنا:
يستخدم الأمر cd للانتقال من مجلد لآخر، وهو اختصار لكلمتَي Change Directory.
للانتقال إلى مجلد باسم Test داخل القرص D يمكن كتابة الأمر التالي:
cd /d/test
يرجى ملاحظة علامة الخط المائل “/” في بداية مسار المجلد، دلالةً على أننا سنقوم بكتابة المسار كاملاً. ولكن، ما العمل في حال أردنا الانتقال إلى مجلد داخل المجلد الحالي أو قريب منه؟ هل يجب كتابة المسار كاملا؟ لا بالطبع!
للانتقال إلى مجلد داخل المجلد الحالي، نكتب اسمه مباشرةً. على سبيل المثال: إن كنا داخل مجلد Test الموجود داخل القرص D والمحتوي على مجلد Project1, يمكننا ببساطة كتابة ما يلي:
cd project1
ويمكننا الانتقال إلى مجلد فرعي بإضافة علامة الخط المائل “/” وكتابة اسمه كما يلي:
cd project1/src/assets
للعودة للخلف، يمكننا كتابة ما يلي:
cd ../
ويمكننا العودة لأكثر من مجلد في الوقت الواحد، وذلك بكتابة ما يلي:
cd ../../../
مما يعني أننا سنعود للوراء ثلاث مجلدات.
يمكننا جمع كل ما سبق والانتقال إلى الخلف ثم الدخول إلى مجلد مختلف كما يلي:
cd ../../../project2/src/backend
يستخدم الأمر pwd لمعرفة مسار المجلد الذي نتواجد فيه حاليًّا
يستخدم الأمر mv لنقل الملفات والمجلدات وإعادة تسميتها، ويتلوه اسم الملف أو المجلد المراد نقله أو إعادة تسميته، يتلوه مسار المجلد المراد نقل الملف إليه.
لنفترض أننا داخل مجلد test سالف الذكر وهو يحتوي على ملف نصي باسم “moveMe.txt”, ونود نقله إلى مجلد project1، يمكننا عمل ذلك كالتالي:
mv moveMe.txt project1
أما إذا كنا نريد إعادة تسميته بعد نقله إلى “moved.txt”, فيمكننا كتابة الأمر كالتالي:
mv moveMe.txt project1/moved.txt
من المهم جدًّا كتابة الامتداد للملف المراد نقله، فإعادة التسمية تقوم بحذف الاسم القديم كليًّا بما في ذلك الامتداد.
لنقل الملف مرةً أخرى إلى مجلد project2 يمكننا كتابة الأمر التالي:
mv /project1/moved.txt project2
لاحظ أنه يتم كتابة المسارات اعتمادًا على المجلد الحالي، ويمكننا كتابتها بشكل كامل كما يلي:
mv /d/test/project1/moved.txt /d/test/project2
ولكن هذا قد يستغرق وقتًا في الكتابة.
يستخدم الأمر cp لنسخ الملفات من مجلد لآخر، حيث يتم كتابة الأمر cp يتلوه اسم الملف المراد نسخه، يتلوه مسار المجلد المراد نسخ الملف إليه.
يستخدم الأمر touch لإنشاء الملفات الجديدة، ولتنفيذه يتم كتابة الأمر touch ثم كتابة اسم الملف مع الامتداد كما يلي:
touch test.txt
touch project1/src/todo.md
يمكن من خلال الأمر mkdir إنشاء المجلدات. ويتم كتابة الأمر mkdir يتلوه اسم المجلد المراد إنشاءه.
لإنشاء عدد من المجلدات الفرعية في آن واحد، يمكن كتابة الأمر mkdir - p ثم كتابة أسماء المجلدات كما يلي:
mkdir -p project3/src/images
سيقوم سطر الأوامر عندها بإنشاء مجلد project3, ويقوم بإنشاء مجلد داخله باسم src, ثم يقوم بإنشاء مجلد داخله باسم images.
يستخدم الأمر ls لعرض الملفات والمجلدات، ويمكن استخدام بعض الخيارات لزيادة أو تقليل عدد المعلومات المعروضة أو التحكم في طريقة عرضها.
لعرض قائمة بالملفات والمجلدات في المجلد الحالي:
ls
لعرض معلومات أكثر، تتضمن الحجم والصلاحيات:
ls -l
لعرض الملفات والمجلدات المخفية:
ls -a
لعرض الملفات والمجلدات المخفية وكافة معلومات الملفات، والتي تتضمن الحجم والصلاحيات لمجلد معين مختلف عن المجلد الحالي:
ls -la project1/src
يستخدم الأمر rm لحذف الملفات والمجلدات، ويمكن استخدام الخيار r في حال الرغبة بحذف مجلدات تحتوي ملفات أو مجلدات أخرى، والخيار f لإجبار النظام على حذف الملفات حتى لو كانت قيد الاستخدام.
تجدر الإشارة إلى أنه لا يمكن التراجع عن هذه العملية.
لحذف ملف أو مجلد فارغ:
rm project2/test.txt
لحذف مجلد يحتوي على ملفات:
rm -r project2
لحذف ملف أو مجلد حتى وإن كان مستخدمًا:
rm -rf project1
أجب عن ةالأسئلة التالية من خلال البحث:
يحتوي نظام Bash لإدارة سطر الأوامر على العديد من الخصائص التي يمكن استخدامها، كالمتغيرات والدوال والأسماء البديلة، التي يمكن استخدامها لتسهيل العمليات البرمجية، أو أتمتتها، أو إجراء العمليات المنطقية والحسابية.
ويتم كتابة هذه الأوامر من خلال سطر الأوامر، أو كتابتها في ملف “.bashrc” المسؤول عن تنفيذها تلقائيًّا عند تشغيل سطر الأوامر في كل مرة.
يحتوي متغير path على المسارات التي يقوم نظام bash بالبحث فيها عن الملفات التنفيذية للبرامج. فعلى سبيل المثال: عند كتابة كلمة “python” في سطر الأوامر، يقوم النظام بالبحث في تلك المسارات عن ملف تنفيذي باسم “python” لتشغيله.
ولذا فمن المهم إدراج البرامج التي نقوم باستخدامها باستمرار في متغير path; كي لا نضطر لكتابة المسار الكامل للبرنامج في كل مرة نحاول فيها تشغيله.
ولعمل ذلك، يمكن كتابة التالي في سطر الأوامر، أو كتابته في ملف “.bashrc” الموجود في مجلد المستخدم لضمان وجود المسار في متغير path عند تشغيل سطر الأوامر في كل مرة:
export PATH="$PATH:/path/to/folder/"
مع مراعاة استبدال “/path/to/folder” بالمسار الذي يحوي ملفات البرنامج التنفيذية:
export PATH="$PATH:/C/Program Files/Amazon/AWSCLIV2/"
تمكن الأسماء البديلة من إنشاء اختصارات لتسريع كتابة الأوامر. عند كتابة اسم بديل، يقوم نظام Bash باستبداله بالاسم المُخْتَصَر في كل مرة.
ولإدراج أسماء بديلة، يمكن كتابة التالي في سطر الأوامر، أو كتابته في ملف “.bashrc” الموجود في مجلد المستخدم لضمان وجود الاسم في نظام Bash عند تشغيل سطر الأوامر في كل مرة:
alias shortcmd="long command"
مثال:
alias vc="python -m venv venv"
عند كتابة الأمر vc في سطر الأوامر، فسيتم استبداله بالأمر python -m venv venv وتنفيذه.
يوفر Visual Studio Code نافذة يمكن من خلالها كتابة الأوامر المختلفة على سطر الأوامر، بحيث لا يحتاج المبرمج إلى مغادرة نافذة Visual Studio Code.
ويمكن تشغيل هذه النافذة من خلال الضغط على الاختصار CTRL+` كما يمكن اختيار نظام سطر الأوامر الافتراضي من خلال خيار “Terminal: Select Default Shell” الموجود في لوحة الأوامر.
يمكن فتح مجلدات أو ملفات المشاريع في برنامج Visual Studio Code من خلال كتابة الأمر code متبوعًا بمسار المجلد أو الملف المراد فتحه في نافذة سطر الأوامر. على سبيل المثال:
code /d/test/project1
code project1
عند فتح المجلدات في Visual Studio Code, ستعتبر بمثابة مشروع يمكن التنقل بين ملفاته من خلال متصفح الملفات الموجود داخل البرنامج.
لمزيد من المعلومات حول سطر الأوامر، يمكنكم مراجعة المصادر التالية:
من خلال ما تعلمته، وبالاعتماد على مصادر البحث المختلفة، قم بتسجيل مقطع صوتي يوضح ما يلي عمليًّا:
بنهاية هذا اليوم التدريبي، سيكون المتدرب -بإذن الله- قادرًا على أن:
تعد منصة git أحد أهم المنصات لمساعدة المبرمجين على تنظيم عملهم، إذ توفر العديد من المزايا للتحكم بالكود البرمجي، وتوفر أدوات لإضافة الميزات أو تعديلها أو التراجع عنها بطريقة آمنة وسهلة، دون الخوف من فقدان البيانات أو التأثير على الميزات الأخرى.
كما توفر المنصة أدوات لتقسيم الكود البرمجي لسهولة إدارته، إضافةً إلى العديد من المزايا الأخرى.
على الرغم من أن منصة Git توفر أدوات لمراقبة الكود البرمجي والتحكم به، إلا أنها لا توفر خصائص لمشاركة الكود البرمجي مع أشخاص آخرين، وهذا ما توفره منصة GitHub.
حيث يمكن من خلال منصة GitHub مشاركة الأكواد البرمجية مع الآخرين، وإدارة تقارير الأخطاء والميزات المطلوبة، وإدارة عمليات الطوير والتوزيع البرمجي بين أفراد فريق العمل.
وتجمع منصة GitHub العديد من المشاريع الضخمة، كقارئ الشاشة NVDA, وبرنامج Visual Studio Code, والعديد من المشاريع من الشركات الكبرى.
هنالك العديد من المصطلحات التي يجب علينا معرفتها عند البدء في استخدام نظام Git, ولعل أشهرها:
لإنشاء مشروع على Git, قم بما يلي:
يتم القيام بالخطوات التالية عند أول مرة تقوم فيها باستعمال Git:
افتح Windows Terminal واختر نظام Bash, أو قم بفتح برنامج GitBash مباشرةً من قائمة ابدأ.
يجب عليك إعداد git باستخدام اسمك وبريدك الإلكتروني، والتي ستُسْتَخْدَم عند إجراء عمليات Commit, وذلك من خلال إدخال الأوامر التالية:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
اتبع الخطوات التالية لإنشاء مشروع على Git, وذلك باستخدام نظام GitBash:
mkdir project && cd project
git init
git commit -m 'message'
حيث أن Message هي الرسالة التي سيتم عرضها للناس عند رؤيتهم لهذه التغييرات، كما سيتم عرضها في سجلات المشروع، لذا حاول أن تكون قصيرة ومعبرة.git remote add origin https://github.com/username/repository-name.git
مع مراعاة استبدال الرابط برابط الRepository الخاص بك والذي حصلت عليه من موقع GitHub.git branch -M main
git push -u origin main
عند عمل هذا الإجراء لأول مرة، قد يُطْلَب منك تسجيل الدخول إلى موقع GitHub باستخدام اسم المستخدم وكلمة المرور.لا يختلف إنشاء الRepositories من خلال GitHub كثيرًا عما هو الحال عليه في Git, وللقيام بذلك يمكنك اتباع الخطوات التالية:
git clone https://github.com/username/repository-name.git
مع مراعاة استبدال الرابط برابط الRepository الخاص بك والذي حصلت عليه من موقع GitHub.
git branch -M main
git commit -m 'message'
حيث أن Message هي الرسالة التي سيتم عرضها للناس عند رؤيتهم لهذه التغييرات، كما سيتم عرضها في سجلات المشروع، لذا حاول أن تكون قصيرة ومعبرة.
git push -u origin main
عند عمل هذا الإجراء لأول مرة، قد يُطْلَب منك تسجيل الدخول إلى موقع GitHub باستخدام اسم المستخدم وكلمة المرور.
عند تعديل ملف أو إضافة آخر جديد، يمكن استعمال الأوامر التالية:
يبلغك الأمر git status عن حالة الملفات والمجلدات بوجه عام، وعما إذا كانت مراقبة من خلال نظام Git أم لا، كما يبلغك في حال اكتشاف تغييرات جديدة.
وتحتوي هذه البيئة الملفات التي تم تغييرها أو إضافتها، ولكن لم يتم عمل Commit لتلك التغييرات. ويمكن القول بأنها بيئة المراجعة النهائية قبل عمل أي Commit.
ويتم من خلاله تأكيد التغييرات المطبقة، وتعد كل عملية commit عبارةً عن تسجيل لحالة كافة الملفات في نقطة معينة، ولذلك يتم إضافة رسائل مع كل عملية.
ويتم إضافة الرسالة بإضافة الخيار -m متبوعًا بالرسالة بين قوسين تنصيصيَّين كما يلي:
`git commit -m ‘Added a ReadMe File’
عند عمل Commit, سيتم تطبيق كافة التغييرات على الRepository المحلي، ويمكن بعد ذلك رفعها إلى GitHub من خلال الأمر:
git push
يملك نظام Git العديد من الخيارات التي تمكنك من التراجع عن التغييرات عند الرغبة بذلك:
في حال كون الملف في بيئة الStaging Environment وذلك قبل عمل Commit, فيمكن التراجع عن التغييرات من خلال الأمر: git reset متبوعًا باسم الملف.
في حال عدم إدراج اسم أي ملف بعد الأمر، فسيتم التراجع عن كافة التغييرات التي أُجْرِيَت بعد عملية Commit الأخيرة.
للتراجع عن عملية Commit الأخيرة، استعمل الأمر git reset --soft HEAD~1
يتراجع هذا الأمر عن عملية Commit الأخيرة، ويبقي الملفات على حالها دون تغيير.
أما إذا كنت تريد التراجع عن عملية Commit وإعادة الملفات إلى حالتها السابقة التي كانت عليها في الCommit التي قبلها، فاستعمل الأمر: git reset --hard HEAD~1
للتراجع عن Commit معينة، قم باستعمال الأمر git rebase -i متبوعًا برقم sha-1 للCommit التي تريد التراجع عنها.
سيتم فتح ملف نصي يحتوي على كافة الCommits التي قمت بها منذ ذلك الحين، يمكنك حذف أيٍّ منها، وإضافة كلمة pick قبل الCommits التي تريد المحافظة عليها.
عند حفظ الملف، سيقوم نظام Git بحذف الCommits والإبقاء على ما تريد المحافظة عليه منها.
يتيح GitHub عمليتين مميزتين للمطورين، وهما الBranching والForking, وسنسلط الضوء عليهما هنا:
يتم استخدام الBranching لإنشاء نسخة أخرى من الكود البرمجي، وتكون عبارة عن نقطة مرجعية لCommit معينة.
ويتم استخدام الBranches عادةً لإضافة الميزات الجديدة، إذ لا يتم في العادة التعديل على الMain Branch مباشرةً، بل يتم إنشاء نسخة أخرى منه كBranch جديد، والتعديل عليها، ومن ثم دمج التغييرات في الMain Branch وحذف الBranch الخاص بالميزة.
كما يتم استخدام الBranching عند تطوير نسخ مختلفة من برنامج معين، وذلك لضمان فصل الكود البرمجي وترتيبه.
لكل Branch عمليات Commit خاصة به، ولذا فإن من الممكن التحكم بكافة الملفات البرمجية في Branch دون أن يؤثر على آخر.
ولعمل Branch جديد، يمكننا القيام بالتالي:
git branch -a
git checkout -b name_of_branch
حيث أن name_of_branch هو اسم الBranch الجديد.git branch -a
مرةً أخرى، سيعلمك نظام Git بالBranch الحالي الذي تستخدمه، وذلك بإضافة علامة “*” قبل اسمه.git checkout branch_name
git merge branch_name
يتم من خلال عملية الForking نسخ Repository كامل من حساب المالك إلى حسابك، ويمكنك عندئذ التحكم بالكود البرمجي بشكل كامل، والتعديل والإضافة عليه.
عند الرغبة بعمل Forke لمشروع معين، انتقل إلى صفحة المشروع على GitHub, واضغط على زر Forke.
بعد ذلك، قم بتنزيل الRepository إلى جهازك من خلال الأمر التالي:
git clone https://github.com/username/repository-name.git
مع مراعاة استبدال الرابط برابط الRepository الخاص بك والذي حصلت عليه من موقع GitHub.
عند العمل على مشاريع ضخمة، أو مشاريع يؤدي الخلل فيها إلى مشكلات كبيرة، هنالك عدد من القواعد التي يتم اتباعها:
لنفترض أن هنالك موقع إلكتروني يعمل بلغة Python, ونود كمطورين خارجيين إضافة بعض الميزات إليه، فيجب عندها اتباع الخطوات التالية:
كما تلاحظون، تسعى الشركات من خلال هذه الخطوات إلى تقليل المشكلات الناجمة عن الأخطاء البرمجية أو الأكواد الضارة إلى الحد الأدنى، كما تساهم هذه الخطوات في تنظيم العمل مع الفريق وتوزيع الأدوار بما يتناسب مع المشروع.
كما هو الحال دائمًا، فإن Visual Studio Code يسعى إلى تسهيل حياة المبرمج، فمن خلال لوحة المصادر “Sources” (مفتاح الاختصار: CTRL+Shift+G) تحتوي على واجهة مصغرة يمكن من خلالها إنشاء عمليات Commit والتراجع عنها، والانتقال من Branch إلى آخر، ورؤية السجلات، وإرسال الكود إلى GitHub.
ويسعى مطوروا Visual Studio Code لتطوير هذا التكامل مع GitHub و Git بشكل أكبر، حيث أُضيفَت خصائص جديدة مؤخرًا، كإمكانية عمل Pull Request من خلال Visual Studio Code.
كما توجد عدد من الإضافات التي توفر تكامل بين GitHub وVisual Studio Code من خلال عرض المشكلات التي يرسلها المستخدمون داخل البرنامج لسهولة التعامل معها.
من خلال مصادر البحث المختلفة، وما تعلمته، قم بما يلي:
بنهاية هذا اليوم التدريبي، سيكون المتدرب -بإذن الله- قادرًا على أن:
بدأ تطوير نظام Linux كمشروع جامعي في 1991, بغية إنشاء نظام مفتوح المصدر ومجاني للجميع. في عام 1992، تم اعتماد ترخيص GNU General Public License v2 كرخصة أساسية لنواة نظام Linux.
بعد ذلك، استمر نظام Linux في التطور والنمو، بفضل المجتمع الكبير من المطورين الذين يساهمون في إضافة الميزات إلى النظام.
وبفضل مرونته الكبيرة، نجد بأن نظام Linux مستعمل بشكل كبير في مجالات مختلفة، بدءً بالحواسيب الشخصية، مرورًا بالروبوتات وأجهزة إنترنت الأشياء، وصولاً إلى الخوادم الكبيرة لمواقع الويب والتطبيقات.
ولأن أكثر من 67% من مواقع الويب تعمل على نظام Linux أو أحد توزيعاته، أصبح من المهم معرفة هذا النظام وطريقة عمله.
ولا أسعى في هذه الحقيبة إلى التعريف بكافة جوانب نظام Linux, بل أسعى إلى توفير طريق لبداية تعلمه، معتمدًا على المهارات المكتسبة خلال الأيام الماضية.
ويتميز نظام Linux بالأمان العالي، حيث أن شفرته البرمجية مفتوحة المصدر، مما يمكن الخبراء الأمنيين من اكتشاف الثغرات وإصلاحها، الأمر الذي يجعل النظام أكثر استقرارًا وأمانًا.
سعيًا من Microsoft لشد انتباه مطوري الويب، قامت بإطلاق نظام Windows Subsystem for Linux (WSL) في عام 2016، وهو نظام Linux مصغر، يتم استعماله جنبًا إلى جنب مع نظام Windows لتنفيذ عمليات التطوير.
وبفضل الجهود التي بذلتها Microsoft, أصبح نظام WSL اليوم قادرًا على تشغيل برامج Linux بسرعة وكفاءة، والتكامل مع برامج Windows الأساسية. ليس هذا فحسب، بل أصبح نظام Windows أيضًا قادرًا على تشغيل برامج Linux المختلفة، اعتمادًا على مكونات النظام التي طورتها Microsoft.
ويعد نظام Linux مهمًّا لمطوري الويب، إذ يمتلك برامج وميزات تساعدهم على تطوير نظم قواعد البيانات واختبارها، وإنشاء أنظمة وهمية لعزل البرامج على الويب وتسهيل توزيعها، وذلك اعتمادًا على برامج مثل Docker.
كما يوفر نظام WSL إمكانية اختبار مكونات الويب قبل إطلاقها على الخوادم، مما يعني خفض تكاليف التطوير، وتقليل الأخطاء البرمجية، وسهولة التوزيع البرمجي للخدمات.
بفضل مرونة نظام Linux خرجت العديد من التوزيعات له إلى العالم، ولا تختلف هذه التوزيعات عن بعضها كثيرًا إلا في البرامج المرفقة بالنظام، ولعلي أذكر بعضًا منها هنا:
يعد نظام Ubuntu من أشهر توزيعات نظام Linux, حيث يستخدم بكثرة في مواقع الويب، وذلك بفضل البرمجيات الملحقة به والمتخصصة في خدمات الويب، كما يحتوي على نسخة بواجهة رسومية لمستخدمي الأجهزة الشخصية.
يمتاز نظام Linux Mint بواجهة سطح مكتب بسيطة تستهدف المستخدمين الذين ينتقلون إلى Linux من نظام Windows, وهو نظام سهل الاستخدام وحل مميز للمبتدئين.
Kali Linux هو نظام موجه للباحثين الأمنيين، حيث توفر الأدوات القوية المضمنة معه وخيارات الأمان الواسعة حلولاً مميزة للبحث عن الثغرات وإصلاحها، وإجراء عمليات الاختراق للمواقع والأنظمة وشبكات الاتصال اللاسلكي، والعديد من الأدوات الأخرى. وهو نظام مميز للمهتمين بالأمن السيبراني.
للبدء باستخدام نظام Ubuntu, تحتاج إلى نظام Windows 10 الإصدار 2004, ولتثبيت النظام قم بما يلي:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
بعد ذلك، قم بكتابة الأمر التالي:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
ومن ثم قم بإعادة تشغيل الكمبيوتر.
wsl --set-default-version 2
ليس من الضروري أن تكون كلمة المرور مشابهة لكلمة مرور Windows.
لنظام Linux العديد من المجلدات، ومنها:
تتم إدارة الملفات والمجلدات كما أشير إليه في قسم التعامل مع سطر الأوامر. أما عن الصلاحيات، فيختلف نظام Linux عن نظام Windows بمرونته من حيث الصلاحيات.
يتميز المستخدم Root بأن له صلاحية مطلقة على النظام، ولذا فإنه من المهم عدم استخدامه إلا عند الضرورة القصوى؛ فقد يتم من خلاله إزالة ملفات هامة تؤثر على أداء النظام أو تسبب عطبه بشكل كامل.
تمكن مجموعة sudo المستخدم من تنفيذ أوامر إدارة النظام المخولة للمستخدم root, ولكنها لا تعطي المستخدم الصلاحية الكاملة، وهي ما ينصح باستخدامه عند إدارة النظام؛ منعًا لأي أخطاء أو اختراقات.
يتميز نظام Ubuntu بوجود نظام لإدارة البرامج وتحديثها وتثبيتها وإزالتها.
لتحديث المصادر التي يستعملها نظام ubuntu لجلب التحديثات، استخدم الأمر:
sudo apt update
لتثبيت البرامج الجديدة، استعمل الأمر:
sudo apt install app-name
لإزالة البرامج المثبتة، استعمل الأمر:
sudo apt remove app-name
لتحديث البرامج المثبتة، استعمل الأمر:
sudo apt upgrade
يسمح نظام WSL بالتكامل بين البرامج بين نظامي Windows وLinux. ويمكن تشغيل برامج Windows من خلال موجه أوامر Linux بكتابة أسماءها بكل بساطة.
فعلى سبيل المثال: يمكن تشغيل متصفح ملفات Windows وتصفح ملفات Linux في المجلد الحالي من خلال الأمر:
explorer.exe .
كما يمكن تشغيل برامج نظام Linux في المجلد الحالي على Windows من خلال سطر أوامر Windows, من خلال كتابة الأمر:
wsl.exe command
حيث يكون command هو الأمر الذي تريد من نظام Linux تنفيذه.
لضبط إعدادات تسجيل الدخول إلى GitHub على WSL لتكون نفس إعدادات نظام Windows استخدم الأمر التالي:
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
يمكن استخدام برنامج Visual Studio Code للتعديل على الملفات الموجودة في نظام WSL, وذلك من خلال فتح المجلد المرغوب في محرر Visual Studio Code من خلال الأمر: code متبوعًا باسم المجلد، أو علامة النقطة “.” لفتح المجلد الحالي.
سيتعرف Visual Studio Code على نظام Linux تلقائيًّا، وسيقوم باكتشاف كافة البرامج والملفات المطلوبة للعمل، مما يوفر تكاملاً رائعًا بين البرنامجين.
يستغل المطور الناجح كافة الأدوات المتاحة لتسريع عمله وإنتاجيته.
ومن خلال الأدوات التي تم استعراضها خلال هذه الدورة، يمكننا تطوير خطة عمل ناجحة، اعتمادًا على سطر الأوامر، وبرنامج Visual Studio Code, ومنصة Git ونظام WSL.
فقد أصبح التطوير أسهل من أي وقت مضى، بفضل التكامل بين هذه الأدوات، والميزات التي توفرها للمطورين مجانًا.