لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 06/18/22 في كل الموقع
-
في بداية كل تطبيق أو موقع إلكتروني تظهر إشكالية متكررة دومًا بغض النظر عن المشروع وهي نوع التكنولوجيا المناسبة لبناء الموقع (سواء لغة البرمجة أو إطار العمل) لأن الاختيار المناسب سيلعبُ دورًا مهمًا في نجاح المشروع فإذا اتُخذ قرار خاطئ فيمكن أن يفشل كل شيء في بداية المشروع أو في مراحل متقدمة منه، ولذلك يكون اختيار التكنولوجيا مهمة شاقة للشركات الصغيرة والناشئة التي تعمل عادةً بخبرات وموارد مالية محدودة، وكلما كانت الشركة أصغر كان تأثير القرار السيئ أكثر مأساوية لموارد الشركة. يتضمن أي موقع إلكتروني جانبين أساسيين وهما جانب العميل Front-end وهو الجانب المرئي من الموقع ويتضمن شيفرة برمجية من اللغة الهيكلية HTML و CSS لتنسيق الصفحات والعرض ولغة جافاسكربت، وجانب الخادم Back-end وهو غير مرئي للمستخدمين ويتضمن لغة برمجية لبرمجة منطلق الموقع وقاعدة بيانات لاستيراد البيانات وخادم وهو حاسوب لتشغيل الموقع أو التطبيق. تشغّل مواقع الويب عبر الكثير من لغات البرمجة ومن بينها Node.js و PHP وهما من أكثر التقنيات المستخدمة من جانب الخادم، ويمكن لكليهما تشغيل تطبيقات الويب بغض النظر عن تعقيد المشروع، وفي الوقت نفسه فإن الاختلافات بينها كبيرة لأن كل واحدة منها مبنية على مفاهيم وبنيات مختلفة. لنستكشف معًا من الأقوى في هذه المعركة المحتدمة بين لغة PHP مقابل Node.js. سنفترض في هذا المقال بأن لديك معرفة أساسية بتقنيات تطوير الويب وكيفية عمل المواقع. نبذة موجزة عن لغة PHP و Node.js قبل الغوص في التفاصيل وذكر الميزات والعيوب والمقارنة بينها لا بدّ لنا من التوقف قليلًا والتأمل في نقطة مهمة عند المقارنة بين PHP و Node.js إذ أنه لا يخفى على الجميع بأن PHP هي لغة برمجة ولكن ما هي Node.js هل هي لغة؟ أم مكتبة؟ أم إطار عمل؟ أم ماذا؟ في الحقيقة جميع تخميناتنا خاطئة لأن Node.js ما هي إلا بيئة تشغيل تسمح بتشغيل الشيفرة البرمجية للغة جافاسكربت، ومع ذلك بعض المبتدئين يسمونها لغة Node.js، وعمومًا يمكننا النظر إلى هذه المقارنة على أنها مقارنة بين مزايا لغة جافاسكربت ولغة PHP ولكن بطريقة غير مباشرة. ما هي Node.js تعتمد بيئة تشغيل جافاسكربت Node.js بصورة أساسية على محرك Chrome V8، وهو محرك جافاسكربت و WebAssembly عالي الأداء ومفتوح المصدر طورته شركة غوغل (اسمها حاليًا ألفابت)، والشيفرة البرمجية لهذا المحرك مكتوبٌ بلغة C++، ويُستخدم لتشغيل لغة جافاسكربت على متصفح الإنترنت كروم Chrome. توفر بيئة Node.js تطبيقات ذات أداء واستقرار عاليين. كما أنها تتيح إمكانية إنشاء خوادم قابلة للتطوير دون استخدام الخيوط Thread، باستخدام نموذج مبسط من البرمجة القائمة على الأحداث Event-driven Programming، والتي تستخدم عمليات رد النداء callback للإشارة إلى اكتمال المهمة، كما تبسط بيئة Node.js عملية التطوير لآلاف المبرمجين إذ jمكّنهم من إنشاء موقع أو تطبيق ويب من خلال لغة جافاسكربت سواء من جانب الخادم أو العميل. تسمح بيئة Node.js للمطورين بناء تطبيقات بسرعة بفضل مشاركة اللغة بين الواجهات الأمامية والخلفية الأمر الذي يزيد من الكفاءة والإنتاجية للمطورين. كما يساعد هذا المزيج على بناء تطبيق قوي ومكتمل الميزات بأقل استثمار من وقت وجهد، بالإضافة إلى ذلك تنخفض تكاليف الصيانة وتزداد سهولة اكتشاف الأخطاء والقدرة على استخدام لغة TypeScript مع التي تتيح المزيد من القوة وقابلية الاستخدام للشيفرة البرمجية. كما أن لغة جافاسكربت هي الأساس للعديد من أطر العمل للواجهات الأمامية الشائعة مثل React أو Vue وهذه الأطر أساسية لمعظم تطبيقات الويب الحديثة. تتيح أيضًا بيئة Node.js بناء تطبيقات بالزمن الحقيقي Real-time بفضل تجربة تدفق البيانات في الوقت الفعلي باستخدام لغة جافاسكربت المقادة بالأحداث، إذ يمكنك بسهولة إنشاء حلول برمجية عالية الأداء مع ميزات متقدمة مثل الدردشات وخدمات البث الحي للفيديوهات أو الصوت والمعاملات وما إلى ذلك. في الحقيقة هذه المرونة العالية للتغييرات وقابلية التوسع جعلت بيئة Node.js قوية في سوق تطبيقات الويب ذات الطبيعة السريعة والمتقلبة لأن الوجود في الأسواق يفرض على الشركات تظل مرنًة وأن تكون قادرةً على تغيير تطبيقاتها لتلبية متطلبات العملاء المتغيرة وزيادة إمكانية الوصول إلى سقف توقعات المستخدمين. كما أن لغة جافاسكربت تعدّ من اللغات الأساسية في تطوير الويب ولذلك فإن المبرمجين سيتعلمونها حتمًا خلال رحلتهم في تطوير الويب، وسيصبح من الأسهل عليهم اختيار بيئة Node.js للواجهة الخلفية بدلًا من تعلم لغة PHP مما يسرع رحلة التعلم للمبتدئين. ولكن من عيوب بيئة Node.js أيضًا النقص في الأدوات والأطر المعقدة لبناء مشاريع الكبيرة كما أن السرعة الكبيرة في تطوير بنية اللغة جعلها في تغيّر مستمر وهذا الأمر يمكن أن يؤخذ بمنحى إيجابي أو سلبي بحسب كل شركة، بالإضافة إلى ذلك تقدم Node.js أداءً ضعيفًا عند إجراء عمليات حسابية مكثفة أو الاستخدام العالي لوحدة المعالجة المركزية. كما أن بنية Node.js المقادة بالأحداث جعل عليها بعضًا من القيود، ولكن بعد الإصدار 10.5 أضيفت وِحدة برمجية للتعامل مع الخيوط Threads في بيئة Node.js هذه الوحدة مفيدة جدًا في إجراء عمليات جافاسكربت كثيفة الاستخدام لوحدة المعالجة المركزية. لغة PHP لغة PHP وهي اختصار لعبارة Hypertext Preprocessor أنشأها راسموس ليردورف Rasmus Lerdorf في عام 1994. وهي لغة برمجة نصية مفتوحة المصدر من جانب الخادم مصممة خصيصًا لتطوير تطبيقات ومواقع الويب، كما أنها تستخدم أيضًا كلغة برمجة نصية للأغراض العامة، وتكون ملفات PHP لها امتداد .php ويمكن أن تحتوي على شيفرة جافاسكربت و HTML و CSS وحتى نصوص عادية أيضًا. وتعد لغة PHP واحدة من أفضل لغات الخادم في العالم. أظهر استطلاع أجراه موقع W3Tech جاء فيه أن 78.1% من مواقع الويب في العالم تستخدم لغة PHP للواجهات الخلفية بالمقارنة مع 1.8٪ من المواقع التي تستخدم جافاسكربت وبيئة Node.js. تحتوي لغة PHP أيضًا على دعم كبير لأطر العمل مثل Laravel و Symfony و Codeigniter و CakePHP، وجميع هذه الأطر مفتوحة المصدر ويمكن لأي شخص استخدامها أو تعديلها وتطويرها. كما أن لغة PHP بحد ذاتها قابلة جدًا للتخصيص وبمجرد أن يزدهر تطبيق الويب ويتوسع ستجد أن اللغة تلبي جميع احتياجاتك والتغييرات التي تتطلع لها. يعد الحصول على درجة عالية من التخصيص في تحسين وظائف موقع الويب الخاص بك ميزة تنافسية كبيرة وهذه الميزة توفرها لغة PHP لأنها تحتوي على جميع الوظائف اللازمة للعمل مع HTML والخوادم وقواعد البيانات، كما تتميز اللغة بمستوى عال من الأمان والمرونة وخصيصًا في النسخ الحديثة منها ومع مشاهدتنا لشركات تخسر مبالغ كبيرة من المال بسبب هجمات القراصنة، تزداد الحاجة لحلول مستقرة وقوية بل لإجراءات وقائية أيضًا وهذا ما توفره لغة PHP. تعد شيفرتها البرمجية آمنة نسبيًا وذات كما توفر أدوات لحماية البيانات المرسلة إلى قواعد البيانات. بالإضافة إلى ذلك، تشتهر لغة PHP بمرونتها وتوافقها عبر أنظمة التشغيل الأساسية مثل ويندوز ولينكس Linux وماك MacOS وما إلى ذلك. علاوة على ذلك تمنحك لغة PHP توافق مع مجموعة واسعة من الخوادم مثل Apache و iPlanet و Netscape وما إلى ذلك، بالإضافة إلى التكامل مع قواعد البيانات مثل MongoDB و MySQL وغيرها. ولكن كما أن لها مزايا لها عيوب أيضًا فمثلًا تكون عملية كتابة وحدات الاختبار البرمجي Unit Testing طويلة نسبيًا بسبب سوء معالجتها للأخطاء كما أن بعض المبرمجين ينظرون إلى أن نموذج خادم العميل الذي تتبعه لغة PHP عفا عليه الزمن لأن طريقة عمله التي تطلبُ الصفحة أولًا ومن ثم الاتصال بقاعدة البيانات وتعالج البيانات وتعرض النتائج في صفحة HTML. الأمر الذي يؤدي خسائر في السرعة والفعالية، ولكن من الجدير بالذكر أنه يمكن التغلب على عيب PHP بمساعدة Memcached هو نظام ذاكرة تخزين مؤقت موزع للأغراض العامة، ويستخدم لتسريع مواقع الويب الديناميكية التي تعتمد على قواعد البيانات عن طريق تخزين البيانات والكائنات في ذاكرة الوصول العشوائي مؤقتًا لتقليل عدد المرات التي يتطلب فيها الموقع قراءة البيانات من مصادر خارجية مثل قواعد البيانات، وبالرغم من ذلك هذا الأمر سيخلق تبعية إضافية لتطبيق الويب وهذه مشكلة أيضًا. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن مقارنة بين PHP vs NodeJS والآن بعد أن تعرفنا على كل لغة لنتعمق أكثر في فهم الاختلافات الدقيقة ولنستطيع بعدها تحديد ما هو مناسب لكل مشروع. المجتمع والتطوير تحدد قوة المجتمع وخبرته نوع التحديثات التي تأتي إلى مختلف الأطر والمكتبات والمشاريع التي ستطلق في لغة معينة، كما أن المجتمع الكبير يعني الدعم الكبير لأنه في بداية طريقك لتعلم البرمجة لا يمكنك الاعتماد على معرفتك فقط دون دراسة أي دورات وممارسات حديثة، ولتصبح محترفًا شاملًا ستحتاج حتمًا لطرح أسئلة على منتديات أجنبية مثل StackOverflow أو منتديات عربية مثل الأسئلة والأجوبة في موقع أكاديمية حسوب، كما أنه من مسلمات العمل في وقتنا الحالي أن فريقك لن يكون قادرًا على كتابة الشيفرة البرمجية لكل ميزة من الصفر، ولذلك فإنه سيستخدم حتمًا المكتبات الشعبية والمُختبرة الأمر الذي يقلل من وقت التطوير ويزيد من الإنتاجية، ويزيد من جودة المشروع الفردي أو المكتبة أو إطار العمل. تفهرس معظم مكتبات Node.js في سجل موقع npmjs.com، وبالرغم من أن بيئة Node.js جديدة نسبيًا إلا أن مجتمعها كبير ولديها العديد من المشاريع التي طورها المجتمع والتي تميل نحو الاحتياجات العصرية والحديثة لتطبيقات الويب. في الواقع تركز العديد من المشاريع على إضافة وظائف فريدة إلى بيئة Node.js بدلًا من مجرد استنساخ ونقل ميزات من لغات أخرى. بالرغم من قدم وعراقة لغة PHP إلا أنها ليست مرغوبة مثل لغة جافاسكربت وبالرغم من مجتمعها الكبير ومشاريعها المتنوعة، ولكن إحدى مشكلاتها الرئيسية أن مشاريعها الحديثة التي يطورها المجتمع تبدو قديمة بعض الشيء وغير مثيرة للاهتمام عند مقارنتها مع مشاريع Node.js، ومع أن مجتمع مبرمجي لغة PHP برمجوا بعض المميزات وأضافوها إلى ميزات اللغة الأساسية الموجودة بالفعل في لغات برمجية أخرى لكن يشعر بعض المطورين بالحاجة إلى مشاريع أكثر حداثة تتناسب مع متطلبات المستخدمين في العصر الحالي. أما من ناحية عدد المطورين فوفقًا لاستطلاع أجراه موقع Slashdata في عام 2020 جاء فيه أنه يوجد أكثر 12.4 مليون مطور للغة جافاسكربت (اللغة الأساسية لبيئة Node.js) حول العالم بالمقابل 6 ملايين مطور للغة PHP. مما يظهر تفوق واضح للغة جافاسكربت ويجعلها خيارًا جيدًا للشركات الناشئة لأن هنالك عدد كبير من المرشحين لوظيفة مطور لغة جافاسكربت. الشيفرة البرمجية إذا كانت الشيفرة البرمجية سهلة ومصممة بطريقة جيدة ستتمكن من إنجاز الكثير باستخدام شيفرة برمجية أقل. تتطلب بيئة Node.js المزيد من أسطر الشيفرات البرمجية لتنفيذ نفس وظائف PHP لأن بنية اللغة مختلفة وهذا يظهر أثناء البرمجة والسبب هو كون البيئة تطورت بأكملها باستخدام جافاسكربت. لذلك تتطلب Node.js أحيانًا سطورًا أطول نسبيًا لكن لا ننسَ أيضًا إمكانية العمل بلغة واحدة للواجهات الأمامية والخلفية. بالإضافة إلى ذلك تمكننا بيئة Node.js استيراد كل منطق الشيفرة البرمجية للواجهة الخلفية الأمر الذي يجعل من السهل بعد ذلك الوصول إلى الميزات التي خصصت على كلا الجانبين. كما تنقلُ بيئة Node.js الكثير من عبء العمل إلى جانب العميل. لذلك إذا كان لدى جمهورك المستهدف هواتف ذكية ذات قوة معالجة جيدة فإن Node.js مثالية لهذه الحالة. بالمقابل صممت لغة PHP لبناء ومعالجة صفحات الويب وجعلها ديناميكية كما تعتمد لغة PHP على شيفرة HTML لجعل كل الصفحات ثابتة في طرف المخدم بعد توليدها وتجهيزها ثم إرسالها إلى متصفح المستخدم أي لن يكون هنالك أي عمليات برمجية تُنفذ في طرف العميل (المتصفح غالبًا)، وبناءً على ذلك فإن تحميل صفحات الويب ستكون أخف على أجهزة المستخدمين ولن تحتاج لقوة معالجة أجهزتهم. كما أن اللغة تتطلب سطورًا أقل من التعليمات البرمجية لأداء وظيفة ما وبالتالي فهي أسهل، وعمومًا من السهولة فهم الشيفرة البرمجية سواء للغة PHP أو Node.js ولن يستغرق المطور المبتدئ وقتًا كبيرًا لإتقان أيًا من اللغتين. السرعة والأداء نقصد بالسرعة بأنها سرعة تنفيذ الشيفرة البرمجية بحسب كل لغة والسرعة العالية تؤدي لعملية تطوير أسرع ومشاريع أكثر فعالية من حيث التكلفة. تتنوع اللغات البرمجية في طريقة تنفيذها للشيفرة البرمجية فبعضها تكون متزامنة وأخرى غير متزامنة. تنفذُ اللغات البرمجية المتزامنة التعليمات سطرًا سطرًا ولا يُنفذ السطر التالي من التعليمات البرمجية حتى تنفذُ السطر الحالي. أما اللغات البرمجية غير المتزامنة تنفذُ جميع التعليمات البرمجية في نفس الوقت هذا الاختلاف في طريقة التنفيذ يؤثر تأثيرًا كبيرًا على سرعة كل لغة، ونقصد بالأداء كيفية تنفيذ التعليمات البرمجية بلغة PHP أو Node.js وأدائها على مؤشرات الأداء الرئيسية مثل تحميل الصفحات والسلاسة. واللغة عالية الأداء تؤدي لنتائج أفضل لأداء تطبيق الويب والتي تؤثر تأثيرًا عميقًا على تجربة المستخدم. تعد بيئة Node.js من بيئات التطوير غير المتزامنة، وهذه الميزة الرئيسية لها وكونها غير متزامنة يعني أنها تعمل على تنفيذ الشفرة بأكملها دفعة واحدة ولا تنتظر عودة نتيجة دالة أو تابع معين. تقلل هذه الطريقة التأخر في تنفيذ الشيفرة البرمجية لتطبيق الويب بصورة كبيرة وتوفر تجربة استخدام سلسة (في بعض الأحيان يجب أن تكون قدرة الحوسبة والمعالجة لجهاز المستخدم مقبولة للحصول على تجربة استخدام سلسلة). بالرغم من أن لغة PHP متزامنة ولكن هناك بعض واجهات برمجة التطبيقات API تعمل بصورة غير متزامنة. هذا ما يجعل استجابة الموقع أبطأ وانتظار المستخدم في نهاية المطاف. في الحقيقة هذه المشكلة موجودة في معظم اللغات والتقنيات القديمة. والخوف الدائم في هكذا نوع من اللغات يكمن في تعطل البرنامج في انتظار الرد والذي يسمى "جحيم رد الاتصال Callback Hell" فإذا كانت هناك حاجة إلى ربط الكثير من الدوال ببعضها بعضًا ويتطلب التطبيق نقل البيانات من دالّة إلى أخرى فيجب الحذر عندها من الوقوع في هذه المشكلة. أطر العمل تساعدُ أطر العمل Framework المبرمج على التركيز على التفاصيل الدقيقة للمشروع وتزيح عن كاهله كتابة الشيفرات البرمجية المكررة والأكثر استخدامًا موفرةً الدوال الأساسية والمكتبات وواجهات برمجة التطبيقات من خلال إطار العمل. كلما كان إطار العمل أكثر شمولًا قل مقدار الشيفرة البرمجية الزائدة التي سيحتاجُ المبرمج لكتابتها. شهدت Node.js توسعًا كبيرًا في أطر العمل الخاصة بها في فترة قصيرة نسبيًا ومن بعض أطر العمل المشهورة نذكر Meteor و Total و Express و Sails وغيرها. بالرغم من حداثة هذه الأطر إلا أنها واعدة ومتطورة باستمرار وبالتأكيد تعزز الإنتاجية وتُقلل وقت التطوير واستهلاك الموارد ولكن أطر عمل لغة PHP تفوقها عددًا بهامش ضخم نظرًا لأقدمية لغة PHP وعمرها الذي يزيد عن 27 عامًا فهي تمتلك أطر عمل غنية جدًا وعادة ما تركز شركات تطوير تطبيقات الويب الحديثة على استخدام واعتماد على هذه الأطر في عملها ومشاريعها أي أنها أصبحت من مُسلمات تطوير البرمجيات في الوقت الحالي ومن بعض أطر العمل المشهورة نذكر Laravel و CodeIgniter و CakePHP و Phalcon. بالرغم من الفرق الكمي بين أطر عمل لغة PHP و Node.js إلا أنه يصعب تحديد أي إطار يعمل بطريقة أفضل من الآخر في اللغتين. وتجدر الإشارة إلى العديد من أطر PHP صممت لاستيراد ميزات مثل التنفيذ غير المتزامن المتأصلة في بيئة Node.js. بالإضافة إلى ذلك، فإن العديد من أطر PHP لديها مشكلة واحدة مشتركة محتوى وشيفرة برمجية مختلطة ولكنها بالمقابل أطر عمل شاملة. التعامل مع قواعد البيانات الأمر المهم عند النظر لأي لغة سواء جديدة أو قديمة هي طريقة فحص مدى ملاءمتها مع قواعد البيانات الحديثة أو القديمة والعلائقية منها أو التقليدية. اشتهرت قواعد البيانات العلائقية والتي تُخزن البيانات على شكل جداول؛ الأمر الذي يسهل فهم العلاقات والتبعيات بين نقاط البيانات المختلفة. ولكن في السنوات السابقة ظهرت نوع جديد من قواعد البيانات وهي NoSQL والتي تسمح بتخزين البيانات بتنسيقات مثل المستندات وأزواج المفاتيح والرسوم البيانية وحتى قواعد البيانات غير المهيكلة وشبه المهيكلة والمنظمة، بالإضافة إلى أنها سهلة الاستخدام للمطورين. يمكن لبيئة Node.js العمل بسهولة مع قواعد بيانات المختلفة مثل NoSQL و MongoDB و CouchDB وغيرها كما أن لديها مكتبات كبيرة للوصول إلى قواعد بيانات SQL. نظرًا لقدم لغة PHP فهي مصممة للعمل مع قواعد البيانات العلائقية والتقليدية مثل MySQL و MariaDB بقوة في حين أنه من الممكن استيراد مكتبات للعمل مع قواعد بيانات NoSQL ولكن عملية التكامل مع هذه المكتبات طويلة وتستهلك جزءًا كبيرًا من وقت المعالجة. معالجة الطلبات هذا هو مقياس مدى سرعة معالجة اللغة للطلبات من جانب العميل. لا شك أن تنفيذ الطلب بدقة أمر بالغ الأهمية لتجربة المستخدم، ولكن يجب أيضًا القيام به باستخدام الحد الأدنى من الموارد والوقت. كما يساعدنا التعامل اللغة مع الأخطاء على فهم الصورة الشمولية وذلك لتحسين تجربة المستخدم. بفضل المعالجة غير المتزامنة للطلبات المتعددة، لا تنتظر بيئة Node.js انتهاء إحدى الأحداث قبل أن تبدأ العملية التالية. لا تضيع أوقات وحدة المعالجة المركزية وذاكرة الوصول العشوائي في انتظار مجهول لمعالجة مخرجات دالة معينة، والمشكلة الوحيدة هو أنه إذا لم يُعالج حدث مرتبط بأحد الأحداث التالية في الوقت المناسب، فيمكن يتداخل سير عمل التطبيق ويؤدي ذلك لحدوث خطأ في عموم التطبيق، ولكن لحسن الحظ توفر اللغة آليات معالجة الأخطاء فعالة تمكن المبرمج من حماية النظام من التعثر الناتج عن التنفيذ الخاطئ. تتعامل لغة PHP مع طلب واحد وبالتسلسل وهذا الأمر يزيد من مدة استهلاك الموارد سواء وحدة المعالجة المركزية أو ذاكرة الوصول العشوائي في الواجهات الخلفية، ويخلق تأخرًا في النظام من خلال نهج الطلب الواحد، ولكن نظرًا لأن المعالجة تكون من جانب المخدم لن يتأثر تطبيق الويب بنوعية جاهز المستخدم فيمكن أن يعمل على الأجهزة الضعيفة أو القوية (لأن بعض تطبيقات Node.js تحتاج لمعالجة قوية) كما يمكن استخدام مكتبات خارجية للحصول على الوظائف غير المتزامنة. ولكن لن تكون بقوة الميزات الأصلية في بيئة Node.js. التعامل مع الوحدات Modules تعمل الوِحدات كتطبيقات فرعية داخل تطبيق الويب الأساسي، وهي تعالج مجموعة معينة من الوظائف وغالبًا ما تكون قابلة للتبديل أو التحديث مما يمنح البرنامج مرونة وقوة في العمل. غالبًا ما يشتكي بعض المطورين من أن مشاريع Node.js ليست مستقرة مثل المشاريع المطوّرة بلغة PHP نظرًا لأن اللغة والمجتمع لا يزالان ينموان ويتطوران بسرعة كبيرة فإن أنظمة مراقبة الجودة بالكاد موجودة. مع تقديم بعض الحلول الواعدة مثل مبادرة مراقبة الحزم والوِحدات npm-Audit الأمر الذي ساعد في التحقق من كل حزمة بحثًا عن تعليمات برمجية ضارة. بالمقابل تتمتع لغة PHP بميزة في هذا المجال منذ سنوات حتى الآن. في وقتنا الحالي تحتوي لغة PHP على مكتبة ثرية من الوِحدات النمطية وهي مستقرة نوعًا ما، ومع ذلك لا تزال Node.js تخطو خطوات كبيرة في هذا المجال. النظام البيئي Ecosystem النظام البيئي هو عدد المكتبات مفتوحة المصدر وواجهات برمجة التطبيقات والوحدات النمطية وأطر العمل والمشاريع التي ينشرها المجتمع والمطورون …إلخ. فيحتوي النظام البيئي Node.js على مجموعة واسعة من المكتبات وأطر العمل، لكنها متخلفة عن أرقام PHP. بالرغم من ذلك إلا أنها تعوضها بمشاريعها المتنوعة. نظرًا لأن Node.js تستخدم نفس اللغة للبرمجة من جانب الخادم والخلفية، فإن أنواع المشاريع المتاحة تتناسب بحرية مع عدد أكبر من حالات الاستخدام. بالمقابل يوجد العديد من الأنظمة المعتمدة على لغة PHP وهذه الأنظمة لها سيطرة كبيرة على مواقع الويب حول العالم مثل ووردبريس WordPress وجوملا وماجنتو وغيرها الأمر الذي انعكس على قوة النظام البيئي. وبما أن نسبة كبيرة من إجمالي مواقع الويب على الإنترنت تعمل بهذه اللغة فحتمًا سيكون هنالك مجتمع كبير والكثير من من المواد التدريبية والتكنولوجيا الداعمة على مر السنين لجذب مطورين جدد. أيهما أفضل PHP أم Node.js؟ بمجرد أن تفهم لغة جافاسكربت ستصبح اللغات الأخرى غير فعالة بالمقارنة معها لأنك تعلمت لغة واحدة وركزت كل مجهودك عليها فستكون النتائج أسرع وسيتعمقُ فهمك لكيفية سير العمل. يمكن لمطوري الويب الشاملين full stack web developers كتابة شيفرة مشروع كامل من جانب العميل والخادم بلغة جافاسكربت ولم تعد هنالك حاجة إلى التبديل بين اللغات أو التقنيات. كلما تعلمت لغة جافاسكربت زادت استمتاعك بها، وهذا الأمر لا ينطبق على لغة PHP. من الأفضل اختيار بيئة Node.js عند إنشاء تطبيقات ديناميكية أحادية الصفحة SPA أو Single Page Application باستخدام إطارات جافاسكربت للواجهة الأمامية مثل Angular أو React أو Vue.js. أما من جهة الخادم Node.js. يمكن لبيئة Node.js دعم أجهزة إنترنت الأشياء IoT بمفردها مثل أجهزة تتبع اللياقة البدنية والطائرات بدون طيار وحتى الروبوتات بالإضافة إلى منصات تدفق البيانات الثقيلة كونها قادرة على إدارة العديد من العمليات المتزامنة. بعض التوجهات في المشاريع في السوق تعتمد على مطوري MERN وهي اختصارًا (Node.js و React و Express.js و MongoDB) وبعض المشاريع تستخدم إطار Angular بدلًا من إطار React فتصبح MEAN ويمكن استعمال Vue.js ليصبح الاختصار MEVN. بالمقابل تعدُ لغة PHP اختيارًا جيدًا لمدونة أو مشروع تجارة إلكترونية وخصيصًا عندما يتطلب المشروع العديد من عمليات الدمج. الخاتمة تعرفنا في هذا المقال على الفرق بين لغة PHP وبيئة Node.js لتشغيل شيفرات جافاسكربت في الواجهة الخلفية للمواقع وتطبيقات الويب، وتعرفنا في البداية على نبذة مختصرة لكل منها وتعمقنا لاحقًا في المقارنة وفي إقبال المجتمع التقني عليها وحماسه لتطويرها ومدى تعقيد الشيفرة البرمجية وسرعة وأداء كل لغة كما اطلعنا على أطر العمل الخاصة بكل لغة وطريقة تعامل كل لغة مع قواعد البيانات وكيفية معالجة الطلبات وطريقة التعامل مع الوِحدات وختمنا المقارنة بالاطلاع على النظام البيئي الشامل لكل منها. ولنتذكر دومًا بأن كل من لغة PHP وبيئة Node.js تستمد قيمتها من حالة الاستخدام والمشروع الذي نعمل عليه فإذا كان المشروع موقع ويب ثابت يتطلب عددًا قليلًا من الطلبات من قاعدة البيانات، وكان جمهور التطبيق المستهدف يستخدم أجهزة منخفضة وبطيئة فستكون لغة PHP هي بالضبط ما تبحث عنه. وإذا كانت حالة الاستخدام الخاصة بك تتضمن مواقع ويب ديناميكية ترسل العديد الطلبات إلى خادم ولها واجهة مستخدم ديناميكية فأنت تريد استخدام Node.js. وختامًا تبرز أهمية اختيار اللغة المناسبة لإنشاء موقع أو تطبيق مستقر وموثوق في مشاريع الناشئة، وهذا هو السبب في لجوء بعض الشركات إلى استشارة المختصين في هذه الأمور للتأكد من تلبية جميع احتياجات المشروع المستقبلية ولا ننسَ بأنه مهما اختلفت اللغة تبقى مهارات فريق التطوير الويب هي الحكم في هذه النقطة. يمكنك الإطلاع على توثيق لغة PHP وتوثيق بيئة Node.js على موسوعة حسوب لمزيد من التفصيل حولهما. المصادر مقال Node.js vs PHP: In-depth Comparison With Pros & Cons [2021] لكاتبه Serhii Osadchuk. مقال Node.js vs PHP: Which One is Better for Backend Development لكاتبته Anastasia Kushnir. مقال Node.js vs PHP: A Honest Comparative Study With All The Answers لكاتبه Tejas Kaneriya. مقال PHP vs. Node.js - GeeksforGeeks لكاتبه Parikshit Hooda. اقرأ أيضًا الدليل السريع إلى لغة البرمجة PHP مقدمة إلى Node.js1 نقطة
-
1 نقطة
-
السلام عليكم يعطيكم العافية أريد أن أنشر مقالاتي لديكم عبر المنصة لكن لا أعرف كيف آلية النشر لديكم لدى مقال منشور عبر منصة ومندى تواصل لتسويق الرقمي. هل في إمكانية نشر نفس المقال والمقالات أخرى عبر منصتكم ولكم منا جزيل الشكر والعرفان1 نقطة
-
تحيه طيبه للجميع لدي جدول بيانات يحتوي على 3 اعمده ID , NAMEENGLISH,NAMEARABIC قمت بأدراج بيانات في العمود الأول NAMEARABIC وصار لدي 7 أسماء ك مثال الان انا لدي قائمة أسماء في الملاحظات وارغب بأدراجها في العمود المقابل وهو NAMEENGLISH انا اعلم ان يجب ان استعمل دالة update ولكن لم اعلم كيف ممكن اكتب الكود بتحديد باعتقادي ان الكود سوف يحتوي على update وأيضا جمله شرطيه وهيا BETWEEN ليكون اعتمادنا على اول عمود في الجدول عمود ID حتى استطيع ادراج بيانات في العمود المقابل احتاج مساعده لمعرفة كيفية كتابة الكود لفعل ذلك هذا الكود هو لتحديث سجل واحد ولكن انا احتاج ان أقوم بتحديث اكثر من سطر واحد في نفس العمود UPDATE employees SET NAMEENGLISH = 'Marwan' WHERE id BETWEEN 1 and 7 ;1 نقطة
-
1 نقطة
-
استخدام CASE هنا خطأ، لأنها تعيد قيمة واحدة عند تحقق أول شرط. أعتقد أنك نشرت نفس السؤال سابقا، و كانت النتيجة هي عمل حلقة.1 نقطة
-
1 نقطة
-
حسناً، لنفصل الصفحة الخلفية مؤقتاً و نعيد نتيجة ثابتة $('.shown').html("Hello"); أو $('.shown').html("مرحبا"); جرب كل مرة سطر مختلف بدل القيمة الحقيقة، لنعرف سبب المشكلة1 نقطة
-
قبل المشكلة (ملف تنسيق العربي) body { background-color: #F7F6F6; direction: rtl; } بعد المشكلة (ملف الانجليزي) body { background-color: #F7F6F6; direction: ltr; } انا عرضت صفحة الـ header وبها ملفى التنسيق (عربي وانجليزي) هكذا <!--css--> <link rel="stylesheet" type="text/css" href="layout/css/ar.css"> <link rel="stylesheet" type="text/css" href="layout/css/<?php echo $lang['lang'];?>.css"> <!--echo $lang['en']OR echo $lang['ar']--> والتبديل تلقائي استجابة لما يحمله المتغير $lang['lang']1 نقطة
-
لاحظت أن المشكلة عند استلام نتيجة الطلب، لربما تنسيق الرد غير مهيكل بطريقة صحيحة ما يؤدي لوجود وسم مفتوح وغير مغلق، مما يؤدي لأن العناصر التالية تتغير هرمية وراثتها أو يتغير الأب لها، فلا يعود التنسيق يعمل بشكل جيد. حاول فتح أدوات المطورين بالضغط على F12 ثم تتبع التغيرات في الصفحة، كما يمكنك عرض محتوى الصفحة أثناء حدوث الخطأ و تفقد التغييرات فيها. اعمل view page resource أو inspect و راقب التغيرات و أخبرنا بما يحصل1 نقطة
-
يوجد لينك بأعلى الـ navbar بالضغط عليه يتم التبديل بين اللغتين هذا هو كود التبديل بين اللغتين <div> <!-- AR | EN --> <a href="?lang=ar">AR</a> <a href="?lang=en">EN</a> </div> هذه صفحة php يتم فيها معالجة $_GET['lang'] <?php if(isset($_GET['lang'])){ $lang = $_GET['lang']; $_SESSION['lang'] = $lang; }elseif(isset($_SESSION['lang'])){ $lang = $_SESSION['lang']; }else{ $lang = 'ar'; } switch ($lang) { case 'en': $lang_file = 'english.php'; $style_file = 'en.css'; break; case 'ar': $lang_file = 'arabic.php'; $style_file = 'ar.css'; break; default: $lang_file = 'arabic.php'; $style_file = 'ar.css'; } include 'include/languages/'.$lang_file; ?> هذه صفحة الـ header للتبديل بين ملفات التنسيق <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> <?php echo $title;?> </title> <!-- site logo --> <link rel="shortcut icon" href="layout/images/favicon.ico" /> <!--bootstrap--> <link rel="stylesheet" type="text/css" href="<?php echo $css;?>bootstrap.min.css"> <!--fontawesome--> <link rel="stylesheet" type="text/css" href="<?php echo $css;?>all.min.css"> <!--css--> <link rel="stylesheet" type="text/css" href="layout/css/ar.css"> <link rel="stylesheet" type="text/css" href="layout/css/<?php echo $lang['lang'];?>.css"><!--echo $lang['en']OR echo $lang['ar']--> </head> <body class="body"> هذا الحل لم ينجح1 نقطة
-
1 نقطة
-
السلام عليكم اريد الصور التي تم استدامها في صناعة الموقع الشخصي1 نقطة
-
سوف نحاول تعديل حجم البيانات المسموح و المدة الزمنينة أرجو فتح cmd ثم الدخول ب mysql كالتالي mysql -u root ثم ننفذ الأمرين: SET GLOBAL max_allowed_packet=1073741824; SET GLOBAL wait_timeout = 60000; ثم حاولي إعادة استيراد الملف1 نقطة
-
الشيفرة التي كتبتها يفترض أن تعدل الاسم في جميع الحقول التي تحقق الشرط، هل هذا ما تقصده؟ يمكن عمل الشرط مباشرة بتحديد أن يكون id أكبر من قيمة و أصغر من أخرى UPDATE employees SET NAMEENGLISH = 'Marwan' WHERE WHERE id > 0 AND id < 7;1 نقطة
-
1 نقطة
-
سبب المشكلة لديك هو أن التابع method2 ليس دالة عامة global function وإنما هو تابع method ضمن الكائن Obj، وبتالي بإستدعائها، يجب أن تستخدم this، على النحو التالي: const Obj = function(){ // ... } Obj.prototype.method1 = function(){ // في هذا الجزء نُشير إلى التابع method2 // الموجود ضمن الكائن Obj // وبما أننا داخل تابع آخر ضمن نفس الكائن // فيجب أن نستخدم this للإشارة إلى الكائن الحالي this.method2(); } // هنا نضيف التابع method2 إلى الكائن Obj Obj.prototype.method2 = function(){ console.log('execute method2'); } const o = new Obj(); o.method1(); وستجد أن التابع method2 يتم إستدعائه بشكل سليم.1 نقطة
-
يمكنك تحميل برامج التصميم مثل أدوبي فوتوشوب من موقع الشركة الرسمي adobe products photoshop والاستفادة من الفترة التجريبية قبل الشراء. ويوجد بدائل مجانية مثل: Darktable. Gimp. Pixlr x. Paint.NET. Krita. Photopea. Photo Pos Pro. Sumopaint.1 نقطة
-
إن كنت تستخدم redis لتخزين المهام jobs بدلًا من قاعدة البيانات، فيمكنك معرفة حجم queue من خلال Redis Facade بهذا الشكل: use Illuminate\Support\Facades\Redis; Redis::lrange('queueName', 0, -1); // قم بإستبدال queueName باسم الرتل أيضًا يمكنك إستخدام الحزمة laravel/horizon والتي توفر لك لوحة تحكم للإطلاع على queue system ومعرفة كل الوظائف التي تمت والتي فشلت في التنفيذ وغيرها، يمكنك تثبيت الحزمة من خلال الأوامر التالية: composer require laravel/horizon php artisan horizon:install ولتشغيل لوحة التحكم عليك تنفيذ الأمر التالي: php artisan horizon1 نقطة
-
يوفر لارافيل Laravel التابع updateOrCreate والذي يقوم بإستقبال بيانات المستخدم الذي تبحث عنه، وكذلك البيانات التي تريد تحديثها: $user = User::updateOrCreate( ['id' => 5], ['name' => "new full name", 'email' => "mail@gmail.com"] ); بهذا الشكل سوف يتم البحث عن المستخدم الذي يحمل المعرف 5 وفي حالة تم العثور عليه، سوف يتم تغير اسمه وبريده الإلكتروني، وإذا لم يكن موجودًا من الأساس، سوف يتم إنشائه من جديد. ملاحظة: يقوم التابع updateOrCreate بحفظ السجل مباشرةً في قاعدة البيانات، لذلك ليس عليك إستخدام التابع save لحفظ التغيرات. توثيق التابع updateOrCreate في موسوعة حسوب1 نقطة
-
سيأتي حينٌ يحس فيه كل مطوِّر وب جديد بأنَّ شيئًا ما ينقصه عندما يطلب منه أحد الخبراء أن يفتح سطر الأوامر، لكن لا بأس في ذلك، فلكنا مرّ بذلك عندما ذهب إلى منتدى أو اجتماع محلي للقاء مطوري وب الآخرين. هذا الدرس مناسب لكل شخص لا يعرف ما هو سطر الأوامر، وهو ملائمٌ أيضًا لمن له دراية بسطر الأوامر إذ سيتضمّن بعض التفاصيل والملاحظات والتي ستجدها مفيدة وستتعلم منها. لن يشرح هذا الدرس ماذا عليك أن تكتب في الطرفية (terminal، وهي نافذة البرنامج التي تصل إلى سطر الأوامر عبرها) للقيام بأمور معينة، وإنما الهدف هنا هو شرح المفاهيم الأساسية لجعل واجهة سطر الأوامر (command line interface) مألوفةً لك، وبعد أن تتمكّن من الأساسيات فستجد أن فهم أحد الأوامر سهلٌ جدًا وليس عسيرًا كما تظن. ظهرت واجهة سطر الأوامر قبل الواجهات الرسومية أوّل معلومة تساعدك في فهم سطر الأوامر هي استيعاب أنَّ سطر الأوامر قد أتى في الفترة الأولى من وجود الحواسيب، إذ إنَّ البرامج الحالية رسومية فهي تعرض عدِّة نوافذ تابعة للبرنامج للمستخدم، ويظهر أيضًا «سطح المكتب» خلف تلك النوافذ. هذه النوافذ تساعد المستخدمين في استخدام الحاسوب، لكنها مجرد واجهة بسيطة وجميلة للتعامل مع نظام التشغيل. وقبل ظهور الواجهات الرسومية، كان هنالك ما يسمى «طرفيات»، والطرفية هي الوسيلة التي نصل فيها إلى سطر الأوامر (يجدر بالذكر أنَّ الطرفيات هي أجهزة فيزيائية كانت موجودة في الأيام الأولى للحواسيب، وهي جهاز يضم شاشة سوداء وتُظهِر نصًا أبيض، وفيها لوحة مفاتيح مدمجة)، تستطيع أن تقول أنَّ سطر الأوامر هو طريقةٌ مختلفة لتشغيل البرامج كما هي البرامج الرسومية في أنظمة ويندوز أو ماك أو لينكس. إلا أنَّ الاختلاف الرئيسي بينها وبين البرامج الرسومية هي أنَّ البرامج التي تعمل من سطر الأوامر لا توفر واجهةً جميلةً لتتعامل معها، ومستخدمو الحاسوب الذين عاصروا الطرفيات لديهم خبرةٌ كبيرةٌ مع الحواسيب، وتسمعهم يقولون أنَّ الواجهات الرسومية سببت في تقليل إنتاجيتهم، وما يزال أولئك الأشخاص موجودين في هذا العصر. تستطيع أن تستخدم الفأرة وتنقر نقرًا مزدوجًا على أيقونة البرنامج لتشغيله، أما في سطر الأوامر فعليك أن تكتب اسم الأمر (والذي هو اسم البرنامج في أغلبية الحالات)، وربما تضيف بضعة خيارات لتتحكم في سلوكه، ثم تنفِّذ الأمر. لاحظ أنني ذكرتُ استخدام الفأرة بوضوح في الفقرة السابقة وذلك لأنَّها أكبر الفروقات بين الواجهات الرسومية والسطرية، إذ لا تستعمل الفأرة في بيئة سطر الأوامر فالطرفيات كانت موجودة قبل انتشار استخدام الفأرة للتعامل مع الحاسوب، لذا ستجد أنَّ طريقة التفاعل الرئيسية مع سطر الأوامر هي استخدام لوحة المفاتيح. فرقٌ رئيسيٌ آخر هو أنَّ الواجهات الرسومية تكون في وضعية «الانتظار» غالب الوقت عندما يكون البرنامج «قيد التشغيل»، ولأنَّ البرامج التي تعمل من سطر الأوامر كانت من العصر الأول للحاسوب، فلم تكن هنالك مساحة فارغة لإظهار جميع البرمجيات «قيد التشغيل»، فهي تنفَّذ بسرعة كبيرة ثم تتوقف، أي أنَّ من غير الشائع أن يطول تنفيذ أمرٍ ما في سطر الأوامر أكثر من عدِّة ثواني (على الرغم من أنَّ بعضها قد يعمل لفترات طويلة مثل المحررات النصية). لنلخِّص الفروقات بين البرامج التي تعمل من سطر الأوامر والبرامج ذات الواجهة الرسومية: البرامج السطرية هي تطبيقات بسيطة تعمل مرة واحدة. على النقيض من أغلبية التطبيقات الرسومية التي تنتظر منك التفاعل معها، فإنَّ أغلبية التطبيقات السطرية تعمل بسرعة ثم تتوقف. تكون عادة الأوامر قصيرة لأن المستخدمين يريدون أن يكتبوا أقل ما يمكن لتنفيذ ما يشاؤون. لا تُستخدَم الفأرة (عادةً) في سطر الأوامر. الاختلافات بين أنظمة التشغيل يمكننا أن نعد سطر الأوامر على أنه طريقة مباشرة للتواصل مع الحاسوب، وهذا يتيح له قدرات أكثر، مما يجعله فعّالًا، لكن في المقابل هذا يعني أنَّ عليك معروفة المزيد من المعلومات حول طريقة عمل حاسوبك. أغلبية مستخدمي الحاسوب أولي المعرفة المتوسطة يعلمون أنَّ نظام ويندوز يختلف عن ماك ويختلف عن لينكس، لكنها يعلمون أنَّ بإمكانهم تشغيل متصفح Firefox أو برنامج ليبرأوفيس على تلك الأنظمة، لكن هذا ليس صحيحًا بالنسبة إلى سطر الأوامر. هنالك نوعان رئيسيان لسطر الأوامر عليك معرفتهما، النوع الأول هو سطر الأوامر للأنظمة الشبيهة بيونكس (Unix-like)، والنوع الثاني هو سطر أوامر نظام ويندوز. يُصنَّف نظام لينكس وماك على أنهما نظامان شبيهان بيونكس، وبالتي ستتعامل مع سطر الأوامر عبر ما يسمى «صدفة» (shell) باسم Bash (سنتحدث عن ذلك لاحقًا). صحيحٌ أنَّ هنالك اختلافات في طريقة التعامل مع مختلف أنظمة يونكس، لكنها ليست مهمة لمطوري الويب المحترفين، فهذه الاختلافات صغيرة ويمكنك تجاهلها إذا كنتَ مبتدئًا (لكن الحق يقال: ستواجه هذه الاختلاف في وقتٍ ما عندما تجد نفسك مرتاحًا في استخدام سطر الأوامر، وستجد أنَّ تلك الاختلافات لها أثرها). أما نظام ويندوز فهو خارج المنافسة في مجال سطر الأوامر، وهذا هو أحد الأسباب الرئيسية التي تجعل من مطوري الويب يهاجرون من ويندوز إلى لينكس أو ماك، إذ يختلف سطر الأوامر الموجود في نظام ويندوز عن بقية الأنظمة والأوامر ليست متشابهة، وسطر الأوامر فيه قديم وتراثي أضف إلى أنَّ مستخدمي ويندوز يخافون استخدامه. سطر الأوامر في ويندوز لا يمكني الجزم بواقع سطر أوامر ويندوز أو المنافع الآتية من استخدامه في أنظمة ويندوز (ويندوز 10 وما قبله) للقيام بمهام تطوير الويب من سطر الأوامر لأنني أستخدم لينكس منذ فترةٍ طويلة، لكنني سمعتُ شكوى ممن يستعملونه وصحيحٌ أنَّ أغلبية البرمجيات تعمل «نظريًا» في سطر أوامر ويندوز، لكنني سمعتُ أنها ليست عملية. أنا لا أقول لك أن تشتري جهاز ماك أو تثبِّت لينكس على جهازك (لكنني أحثّك على تجربة لينكس على أيّ حال) لتصبح مطوِّر ويب، لكنني أحب أن أشير إلى توافر ما يسمى «Bash on Ubuntu on Windows» في ويندوز 10 وبالتالي ستحصل على سطر أوامر شبيه بيونكس داخل نظام ويندوز، لذا جرِّبه وانظر إن كان مناسبًا لك. ولأغلبية أعمال تطوير الويب، خصوصًا في عالم البرمجيات مفتوحة المصدر الذي تقطنه ووردبريس، ستجد أنَّ الخواديم تُشغِّل إحدى توزيعات لينكس، وهذا يعني أنَّ عليك الاتصال مع الخواديم عبر سطر الأوامر، وهذا سهلٌ جدًا في ويندوز (عبر برمجية PuTTY) لكن هذه البرمجية غير مضمّنة افتراضيًا في ويندوز، وليست كمثيلاتها في بقية الأنظمة. العثور على الطرفية ذكرنا سابقًا أنَّك تستطيع الوصول إلى سطر الأوامر عبر الطرفية، والتي يمكنك تشغيلها في نظام ماك وأغلبية توزيعات لينكس التي توفِّر واجهةً رسوميةً عبر البحث عن تطبيقٍ باسم Terminal وتشغيله، ثم ستجد نافذة تتيح لك التفاعل مع حاسوبك بطريقة تختلف كثيرًا عمّا اعتدت عليه. أما في ويندوز فيسمى محاكي الطرفية باسم «موجِّه الأوامر» (Command Prompt)، الذي يسمح لك بتنفيذ البرامج بكتابة أمرٍ معيّن. يجدر بالذكر أنَّ هنالك أنواع مختلفة من محاكيات الطرفيات، فهنالك طرفية غنوم وطرفية كدي (Konsole) للينكس، وطرفية iTerm لنظام ماك، وهذه الطرفيات تختلف عن بعضها لكنها تؤدي الغرض نفسه ألا وهو الوصول إلى سطر الأوامر. أنواع الصدفات ملاحظة سريعة: هنالك أنواع مختلفة من الصدفات (وهي البرمجيات التي تتواصل عبرها مع سطر الأوامر)، فأغلبية الأشخاص يستخدمون صدفة باش (bash) (وإذا لم تكن تعرف ما هي الصدفة التي تعمل عليها فمن المرجح أنها باش). الاختلافات بين الصدفات هو موضوع معقد وخارج عن نطاق هذا الدرس، لكن كل ما أردتُ تنبيهك إليه هو أنَّك تشغِّل صدفة باش في نظامك (وليس ZSH أو FISH أو غيرها). كيف تصل إلى سطر أوامر خادومك آخر موضوع أريد أن أتحدث عنه في هذا الدرس هو أنَّك تستطيع أن تصل إلى سطر أوامر الخادوم نفسه (إلا إذا كان موقعك مستضافًا على استضافة مشتركة). لا تُشغِّل الخواديم واجهةً رسوميةً (السبب الرئيسي هو الأداء والحماية)، هذا يختلف عن حاسوبك الشخصي الذي يتيح لك التفاعل مع سطر الأوامر ومع الواجهات الرسومية في الوقت نفسه. في الحالات التي ترغب بالوصول فيها إلى سطر الأوامر في خادومك، فيمكنك فعل ذلك عبر SSH (اختصار للعبارة Secure Shell)، وهذه البرمجية تسمح لك بالوصول إلى سطر الأوامر في حاسوبٍ بعيد بأمان؛ وموضوع ضبط SSH خارج عن نطاق هذه المقالة، والغرض من ذكري له هو معرفة وجود طريقة للوصول إلى سطر الأوامر لحاسوبٍ بعيد بأمان. وأذكِّر أنَّ برمجية PuTTY التي ذكرناها سابقًا هي أشهر طريقة ليتصل عبرها مستخدمو ويندوز إلى SSH. أما مستخدمو ماك أو لينكس أو غيرهما فكل ما عليهم فعله للاتصال إلى حاسوبٍ بعيد هو استخدام الأمر ssh في سطر الأوامر. الخلاصة قد يبدو سطر الأوامر شيئًا غريبًا خصوصًا لمستخدمي الحاسوب الذين بدؤوا في استعماله بعد ظهور الواجهات الرسومية التي جعلت منه شيئًا غريبًا، لكن قد نضطر أحيانًا إلى استخدام سطر الأوامر لإنجاز بعض الأمور. أرجو أن تكون قد فهمتَ من المقالة أنَّ سطر الأوامر هو طريقة أخرى للتعامل مع الحاسوب، وقد تكون هي الطريقة الوحيدة للتعامل مع الحاسوب في بعض الحالات مثل الخواديم التي لا تُثبَّت عليها واجهة رسومية للحفاظ على مواردها. تذكّر أنَّنا سنتعامل مع نظام التشغيل في النهاية سواءً استعملنا الواجهة الرسومية أو السطرية، وهذا هو السبب وراء امتلاك نظام ويندوز لسطر أوامر مختلف تمامًا عن ماك أو لينكس؛ إذ يُصنَّف ماك ولينكس على أنهما شبيهان بنظام يونكس، وهذا هو السبب وراء تشابه سطر الأوامر فيهما. سطر الأوامر معقد ومتشابك وواسع، لذا لا تقلق إذا لم تجد نفسك مرتاحًا معه في البداية، إذ تستطيع استخدام أمر ما يوميًا ثم تكتشف أشياءً جديدةً كل فترة (مثل أوامر أخرى أو خيارات للأوامر التي تستعملها أو مفاهيم جديدة في سطر الأوامر). هنالك بعض الأوامر البسيطة التي تساعدك في الاعتياد على سطر الأوامر وفهمه، لذا أنصحك بتعلمها حتى لو لم تكن تستعملها كثيرًا. أعلم أنَّ بإمكانك فعل الكثير مع ووردبريس دون الحاجة إلى استخدام سطر الأوامر، لكنني أعتقد أنَّ من الضروري تعلّم سطر الأوامر لزيادة خبرتك في إدارة مواقع ووردبريس. أرجو أن تكون هذه المقالة قد وضحت لك بعض المفاهيم الغريبة، وإذا كنتَ مهتمًا بمزيدٍ من المعلومات حول سطر الأوامر فأنصحك بقراءة كتاب «سطر أوامر لينكس». ترجمة –وبتصرّف– للمقال What is the Command Line? CLIs from First Principles لصاحبه David Hayes1 نقطة