اذهب إلى المحتوى

هشام رزق الله

الأعضاء
  • المساهمات

    1442
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    31

كل منشورات العضو هشام رزق الله

  1. توجد طريقة مشهورة في أنظمة لينكس تدعى بـ Swap Partition، وهي عبارة عن مساحة في القرص الصلب (Hard Disk) يتم حفظ البيانات فيها في حالة إمتلاء الذاكرة الرئيسية للحاسوب (Ram). حسب علمي توجد طريقة مشابهة في أنظمة ويندوز وماك. في حالة كان الرام شبه ممتلئ فسيضعف أداء الجهاز كثيرا وسيصبح الجهاز بطيء للغاية.
  2. قم بتهيئة (فرمتة) الفلاش وسيعود للعمل كما كان، أما لو توقف الفلاش عن العمل نهائيا، مثلا لا يظهر في الحاسوب ولا في أي جهاز آخر، فعلى الأغلب أن الفلاش تعطل عن العمل وإمكانية استرجاعه ضعيفة جدا.
  3. نعم، يمكنك استخدام برنامج يدعى Android Data Recovery حيث أنه يجب أولا أن تتوقف عن تحديث النظام وتثبيت تطبيقات جديدة على هاتفك (لأنه قد لن تتمكن من استعادة الملفات) ثم يجب ربط هاتفك مع الحاسوب حتى تتمكن من إستعادة الملفات. الطريقة سهلة وسيشرح لك البرنامج الخطوات حسب إصدار نظام أندرويد الذي تستخدمه.
  4. يعتبر web2py إطار ويب متوسط فهو أقوى* من أطر ويب Bottle وCherryPy وأضعف من أطر ويب متقدمة مثل Django ويُنصح به للمواقع المتوسطة على الرغم من أنك تستطيع إنشاء مواقع كبيرة به. تم تصميم Web2py في البداية كأداة تعليمية وتم التركيز على سهولة الاستخدام والانتشار لذلك لن تجد فيها أية ملفات لإعداد المشروع كما في جانغو مثلا، على الرغم من أن اللغة استوحت من أطر جانغو و Ruby on Rails. * أقصد بالقوة هي عدد الوحدات والدوال التي يتضمنها الإطار والتي ستساعدك في البرمجة بالإضافة إلى شهرته وقوة تحمله لضغط الزوار.
  5. يمكنه استخدام الشيفرة البرمجية التالية: #include <iostream> using namespace std; int main() { int x = 0; int i; int sum = 0; for (i=0;i!=6;i++) { std::cin >> x; sum = sum + x; } std::cout << sum/6 << std::endl; return 0; } حيث أننا استخدمنا حلقة التكرار for حتى نحصل على الدرجات الستة من المستخدم ثم طبعنا له النتيجة مباشرة (مجموعة الأعداد نقسمها على 6). قمنا بتعريف sum كعدد عشري لأننا نريد أن تكون النتيجة بالفاصلة لأنه معدل.
  6. هل أنت مهتم بتعلم PHP وبناء قوالب وملحقات خاصة بك على ووردبريس؟ أو ربما أنت مُهتمّ بتعلّم القليل الذي يُمكنك من إدخال التّعديلات التي تحتاجها على مواقعك ومدوّناتك التي تعتمد على ووردبريس. أيّا كان وضعك، هناك أمور يجب عليك أن تعرفها قبل أن تغوص في مجال تطوير ووردبريس. سنحاول في هذا المقال إعطاءك فكرة واضحة عليها. كيف يعمل ووردبريس؟ لنفهم ماذا وكيف يمكننا التطوير في ووردبريس، سنلقي أولا نظرة سريعة على آلية عمل ووردبريس. يتكون ووردبريس من ثلاثة عناصر رئيسية: النواة الأساسية والقوالب والمُلحقات. تحتوي النواة على جميع الوظائف الأساسية التي تشكل نظام إدارة المحتوى لووردبريس، وهذه الشيفرات البرمجية تتضمن كل شيء من البنية التحتية (backend) للإدارة إلى دوال جدولة المشاركات والتأكد من قوة كلمة المرور والسماح بإنشاء مستخدمين وغيرها. في حين أن النواة الأساسية (core) مسؤولة عن البنية التحتية للموقع وكيفية التعامل معها، فإن القوالب مسؤولة عن الواجهة الأمامية للموقع وكيفية ظهوره. نستخدم إدارة ووردبريس (WordPress admin) لإنشاء المشاركات والصفحات وبقية محتوى الموقع، وأما بالنسبة لكيفية ظهور هذه الأشياء للزائر فهو أمر متروك للقالب theme، لذلك فإن هذا سيعطيك قوة كبيرة للتحكم في موقعك، فقد ترغب بتثبيت وتفعيل القوالب الموجودة أو حتى تطوير قوالبك المخصصة. أبسط طريقة لوصف المُلحقات plugins هي أنها توفر وظائف إضافية للووردبريس، ولفعل ذلك، قد تعدّل المُلحق الشيفرة البرمجية للواجهة الأمامية أو البنية التحتية للموقع، وأبسط مثال لذلك هي المُلحق الذي يضيف زر لتغريدة تويتر، وقد تُنشئ أيضا صفحة إعدادات جديدة في البنية التحتية لقائمة الإدارة والتي ستمكنك من إعداد بعض الخيارات الافتراضية لتغريدة المستخدم ويمكنها إضافة نفسها إلى الواجهة الأمامية للموقع، والتي سيكون موقعها في الغالب تحت التدوينة (post). مجالات التطوير بقدر تقدمك في تطوير ووردبريس، ستتمكن من تطوير أي واحدة من المكونات الرئيسية المذكورة أعلاه بالإضافة إلى تطبيقات مستقلة بمساعدة REST API الجديدة وسنذكر المزيد عن هذا الموضوع بعد قليل. مهما كان ما تريد فعله مع ووردبريس، أنصحك باتباع منهج في دراستك، هذه القائمة ستساعدك على التعرف على الأنظمة التي تحتاج إلى معرفتها قبل بدء تعلمك المزيد حول المجال الذي اخترته: القوالب المُلحقات REST API النواة القوالب إن تعلم كيفية عمل القوالب وتطويرها سيسمح لك باحتراف إنشاء المواقع بدءا من المواقع الصفحة الواحدة إلى مواقع المحتوي الحيوي الثقيل، وستسمح لك أيضا بالحصول على المزيد من العملاء (إذا كان هذا ما يهمك) أو حتى بيع القوالب تجاريا. يوجد العديد من مطوري القوالب الناجحين في أسواق مثل Themeforest و Mojo Marketplace وغيرها. ففي وقت كتابة هذا المقال، أشهر قالب على موقع Themeforest تم بيع 1377 نسخة منه في أسبوع أي أكثر من $81,000 في أسبوع واحد فقط! يمكنك الحصول على الكثير من الأموال إذا كنت تستطيع تطوير قالب مميزة. على الرغم من أن هذا المبلغ لا يحققه جميع مطوري القوالب، وربما لن تصبح مليونيرًا بين عشيّة وضحاها من إنشاء القوالب، لكن يمكنك الحصول على مبلغ مالي جيد من القوالب إذا كنت تقوم بالأمر بالشكل الصحيح. إذا أردت رؤية بعض الأمثلة عن القوالب الشهيرة، فألق نظرة على الأسواق التي ذكرناها أعلاه، أو على قسم قوالب ووردبربس حيث جميع القوالب مجانية، فالكثير من مطوري القوالب يصدرون أعمالهم الأولى في هذا القسم. يمكنك تعلم كيفية إنشاء قوالب ووردبريس في أكاديمية حسوب من خلال سلسلة الدروس مدخل إلى تطوير قوالب ووردبريس. الملحقات plugins بطريقة ما، تعتبر المُلحقات شريان حياة ووردبريس، فهي تحوله إلى كل شيء من منتدى إلى شبكة اجتماعية أو منصة للتجارة الإلكترونية وغيرها باستخدام ضغطة زر واحدة، فالمُلحقات تعطيك تحكمًا كاملًا بجميع جوانب نظام ووردبريس، وتسمح لك بتعديل ما تشاء، وسيساعدك هذا كثيرا عند إنشاء مواقع ووردبريس للعملاء. كما هي الحال مع القوالب، فالمُلحقات تملك أيضا أسواقا وفي العادة يتم إدارتها من نفس الشركات التي تدير أسواق القوالب. يعتبر سوق CodeCanyon على سبيل المثال أكبر سوق للملحقات حيث يملك أكثر من 4000 ملحق متاحة للشراء. على الرغم من أن المبيعات ستكون أقل من القوالب إلا أنه يمكنك ربح الكثير إذا أنشأت ملحقًا جيدًا. يملك موقع ووردبريس قسمًا للملحقات المجانية ويحتوي على أكثر من 40000 ملحق، وهو بذلك مصدر كبير للأدوات والإلهام والأمثلة على الشيفرات البرمجية المميزة (والشيفرات البرمجية السيئة للأسف). يمكنك تعلم كيفية إنشاء ملحقات وإضافات ووردبريس في أكاديمية حسوب من خلال سلسلة الدروس مدخل إلى برمجة إضافات ووردبريس. ما بين WordPress.org و WordPress.com لقد أُطلق نظام ووردبريس بطريقتين مختلفتين، حيث كانت الأولى عن طريق WordPress.com؛ أمّا الثّانية، فعبر استخدام WordPress.org، وهذا نظرًا لإمكانيّة احتساب ووردبريس موقعًا للإنترنت، ومنصّة أعمال في آنٍ واحد، حيث يمكنك إنشاء حساب مجّاني في WordPress.com، والحصول على نسخة مُستضافة من نظام ووردبريس لخدمة موقعك، بحيث ستتحمل شركة الاستضافة مسؤوليّة صيانة الخادم وتثبيت ووردبريس عليه، ممّا يوفر عليك بعض العبء، ويتيح لك التّركيز على إنشاء المحتوى. تجني WordPress.com أرباحها عبر تقاضيها لأموال مقابل ترقيتها للمزايا، فعلى سبيل المثال إذا رغبت في استخدام اسم النّطاق الخاصّ بك في WordPress.com، فستحتاج إلى دفع القليل من الرسوم، وهناك الكثير من الشّركات التي تدفع لمنصّة WordPress.com لأجل استضافة مواقع ووردبريس ضخمة، مثل: بي بي سي أمريكا (BBC America)، ومجلة نيويوركر (The New Yorker Magazine)، ومدونة ستار وورز (Star Wars) الرّسمية. بسبب حاجة ووردبريس لدعم مختلف أنواع وأحجام المواقع، تمتلك منصّتها العديد من القيود المتعلّقة بتخصيص المواقع على نحو شخصيّ، فهناك عدد محدود من القوالب التي تتحكم بتنسيق ومظهر المواقع، كما يوجد عدد قليل من الإضافات التي تُعزّز من أداء وظائفه؛ أمّا WordPress.org فهو الموقع الرّسمي لنظام إدارة المحتوى ووردبريس الذي تستضيفه بنفسك. نقصد باستضافة ووردبريس عمليّة تنزيل نسخة من برنامج ووردبريس، وتثبيته على خادم إنترنت، والذي هو بالمقابل عبارة عن حاسب يستخدم برمجيّات خاصّة تسمح له بتوفير الوصول إلى مواقع الإنترنت المُخزّنة به لجميع المستخدمين على الإنترنت، حيث يمكن لهذا الخادم أن يكون مجرّد حاسب عتيق مُلقى في مكان ما بمنزلك، أو قد يكون مركز بيانات متطوّر، ولك حريّة اختيار الخادم المناسب لموقعك حسب تفضيلك، إذ تتيح استضافتك لنظام ووردبريس بنفسك إنشاء موقع إنترنت تمتلك فيه كامل الحريّة في التّحكم؛ بالمقابل، ستقع عليك مسؤوليّة إعداد وتثبيت نظام ووردبريس، وصيانته بنفسك. REST API ستستخدم REST API لاحقا عندما تحترف تطوير القوالب والمُلحقات، ونظريا ستكون قادرا على استخدامها إذا كانت لديك خبرة في البرمجة بلغة أخرى مثل جافا أو روبي. تعتبر REST API جديدة نسبيا وتسمح لك بإنشاء تطبيقات حقيقية بالاعتماد على ووردبريس، وهذا يتضمن تطبيقات أندرويد وأيفون وغيرها. أفضل طريقة لشرح هذه الميزة هي عن طريق مقارنتها بمواقع مثل تويتر أو انستغرام، لا شك أنك قد رأيت تغذية تويتر معروضة على موقع أحدهم، ولإضافة هذه الميزة إلى موقعك لن تحتاج إلى معرفة كيفية عمل نواة شيفرة البرمجية الخاصة بتويتر، كل ما تحتاجه هو القليل من الشيفرات البرمجية التي تقول: "من فضلك استرجع آخر خمسة من تغريداتي." وسيتعامل تويتر مع الباقي وسيرجع لك بيانات آخر خمسة تغريدات التي طلبتها، وبعد ذلك يمكنك استخدام HTML و CSS لعرضها. وهذا بالضبط ما يفعله REST API لووردبريس، يمكنك الاتصال بأي موقع وطلب منه آخر خمسة مشاركات فيها، ويمكنك أيضا القيام بأكثر من ذلك: يمكنك إنشاء/حذف المستخدمين وتعديل الفئات وغيرها (بالطبع، تحتاج إلى الاستيثاق قبل استخدامها)، هذا يعني أنه يمكنك استخدام ووردبريس كمستودع للمعلومات وبناء واجهة أمامية وبنية خلفية باستخدام نظام مختلف تماما. النواة ساهم في تطوير ووردبريس مجتمع من الآلاف المتطوعين حول العالم، حيث أنه يعمل 471 شخص على الإصدار 4.4 من ووردبريس، والعديد من الأشخاص الآخرين يعملون على جوانب مختلفة من ووردبريس، من الترجمة وتطبيقات الويب إلى الإتاحة (accessibility) والدعم. في الحقيقة، يمكنك الاشتراك معهم الآن، فبينما تحتاج إلى بعض الخبرة للمشاركة في برمجة نواة ووردبريس إلا أنه يمكنك المساهمة في تحديد المشاكل والأخطاء والتأكد منها وتقديم الأفكار في أي وقت باستخدام WordPress Trac، وهو المكان الذي يمكنك من متابعة تطوير شيفرة نواة ووردبريس. إذا وجدت علة (خطأ - bug) يمكنك إرفاقها بالشيفرة المناسبة للتخلص منها، وبعد عدة مراجعات وتدقيقات سيتم استخدام شيفرتك البرمجية إذا كانت مناسبة، وهذه هي أفضل طريقة للمشاركة في تطوير النواة. تطوير ووردبريس: ماذا تحتاج أن تتعلمه يجب أن تعتاد على العمل على مجموعة محددة من الأدوات حتى تتمكن من تطوير ووردبريس. إن عملية التعلم لا تنتهي بالنسبة إلى أي مطور جيد، سوف أعرض عليك هنا حزمة للبداية كما سأريك بعض الأدوات المتقدمة التي قد تحتاج إليها لاحقا عندما تريد أن تتعلم المزيد. الحد الأدنى من المتطلبات لتطوير الووردبريس هي HTML و CSS و PHP، بالإضافة إلى هذه اللغات ستحتاج إلى جافا سكربت و MySQL في مرحلة ما، عندما تتقن هذه اللغات يمكنك الانتقال إلى أشياء أخرى مثل LESS/SASS و Coffeescript و XML و JSON وغيرها، لكن هذه الأشياء لا تعتبر ضرورية لتطوير ووردبريس، لكن إذا عرفتها سيجعل حياتك أسهل كمطور وستوسع آفاقك. HTML و CSS أول لغتين يجب عليك تعلمهما هما HTML و CSS، مهما كانت الشيفرة البرمجية التي تكتبها ومهما كانت اللغة التي تستخدمها فستحتاج حتما إلى HTML عند إرسال صفحات الويب إلى المستخدم وإلى بعض CSS لتصميم وتزيين الصفحة. إن HTML مسؤولة عن إعطاء هيكل المواقع. على المستوى الأساسي، هذا يعني أنك ستقرر ما النص الذي يجب أن يكون عنوانًا وما يجب أن يكون قائمة وما الذي يجب أن يكون في رأس أو أسفل الصفحة. أما في المستوى الأعمق، ستقرر قرارات مهمة حول SEO والتحسين (optimization). يُستخدم CSS لتطبيق أنماط لهيكل HTML، أي أنك ستُعرّف لون النص والروابط والمسافة بين الفقرات ومحاذاة الصورة وألوان الحدود وسمكها وغيرها من العناصر عن طريق استخدام شيفرة CSS. إن CSS تتميز بسهولة تعلمها وبصعوبة إتقانها. PHP تحظى PHP بشعبية كبيرة كأشهر لغة سكربتات من جانب الخادوم server-side-، ووفقا للاستطلاع الذي قام به W3Techs، تستخدم PHP في 81.6% من المواقع وهي اللغة التي كُتب بها ووردبريس (وتقريبا أغلب أنظمة إدارة المحتوى الأخرى أيضا) ولذلك فإن معرفة PHP هو أمر ضروري لتطوير ووردبريس. إن معرفتك بـ PHP وحدها، سيجعلك تحصل على أكثر من معرفة بتطوير ووردبريس فقط. إن أهم فرق بين لغات جانب الخادوم عن لغات جانب العميل - مثل HTML - هو أنه يتم معالجتها في الخادوم أولا، ففي HTML، يمكنك كتابة شيفرة برمجية لـ Good Morning وسيرسلها HTML كما هي وسيعرضها على الزوار. أما في لغات جانب الخادوم، فستكتب شيء مشابه لهذا [good [time_of_day، وقبل أن يتم إرسال ذلك الأمر إلى المستخدم، سيعالج الخادوم هذه الأمر حتى يعرف ما يضعه في مكان [time_of_day] حسب الوقت الذي دخلت فيه إلى الموقع، فيمكنك أن ترى "Good day" أو "Good evening". لاحظ أن البيانات التي يستقبلها متصفحك تبقى HTML لكن تمت معالجتها في الخادوم مسبقا، ولاحظ أيضا أن الشيفرة السابقة لم تكن شيفرة PHP بل هي مثال فقط لأعطيك فكرة عن آلية عمل هذه اللغة. كما هو الحال مع جميع لغات البرمجة، فالممارسة والتمرين هي التي تجعلك تبرمج بشكل أفضل، فيمكنك تعلم PHP في غضون بضعة أيام لكنك ستجد نفسك أنك لا تملك أية فكرة عن ما الذي تقوم به، لذلك تحتاج إلى تجربة الأشياء وتخريبها وليس الوقوف دون معرفة ما يجري، وكما يقولون الممارسة تولد الإتقان. جافا سكربت ازداد دور جافا سكربت أهمية على الإنترنت، خاصة مع ظهور أدوات مبنية على جافا سكربت مثل Node و Angular. جافاسكربت تستخدم عادة لإضافة وظائف حيوية للمواقع وللتحميل غير المتزامن. سأعطيك مثال على كل واحد منها. فمثلا لو أردت أن يتم إخفاء نموذج بشكل كامل وأن يظهر ببطء داخل lightbox عندما يضغط المستخدم على زر معين، فيمكنك فعل ذلك باستخدام جافا سكربت بما أنه يمكنه التعامل مع تحريك الرسوم (animation) وربما الوظائف الأخرى، مثل التأكد من أنه تم ملئ النموذج بشكل صحيح قبل إرساله. أما التحميل غير المتزامن فيتم عمله عبر آلية تسمى بـ AJAX، فيمكنك استخدام AJAX للحصول على معلومات من الخادوم وعرضها دون إعادة تحميل الصفحة، وأبسط مثال لذلك هو التمرير اللانهائي (endless scrolling) فعندما يتم تحميل 10 مشاركات وتصل إلى نهاية الصفحة فسيتم عرض 10 مشاركات أخرى وتستمر هكذا. الكثير من المطورين تعلموا جافا سكربت من خلال إطار jQuery، فهو يُستخدم على نطاق واسع في ووردبريس وفي ملايين المشاريع على الإنترنت، وعلى الرغم من أن هذا الأمر جيد لكن ضع في اعتبارك أن جافا سكربت هو أكثر من مجرد jQuery وإن تعلم جافا سكربت كما هو هي فكرة جيدة. MySQL إن Mysql هي لغة تُستخدم للوصول والعمل مع البيانات المخزنة في قاعدة البيانات، يستخدم ووردبريس هذه اللغة كثيرا للتعامل مع البيانات، لكن كمطور، لا تحتاج إلى معرفة الكثير لأن ووردبريس يملك مجموعة من الدوال المساعدة. لكن في بعض الحالات الخاصة، قد تحتاج إلى كتابة استعلام قاعدة البيانات بنفسك أو ربما قد ترغب بتحسين شيء في موقعك، لذلك سيفيدك تعلم أساسيات MySQL. إن العمل مع قواعد البيانات واضح للغاية، فالجدول في قاعدة البيانات يشبه كثيرا جداول بيانات Microsoft Excel، فكل عمود يملك عنوانًا وبيانات مخزنة في الأسطر، ونستخدم MySQL لإضافة وحذف وتعديل واسترجاع البيانات، ربما ترغب بكتابة استعلام MySQL يرجع لك جميع المشاركات التي تحتوي على كلمة "awesome" ولديها أكثر من 8 تعليقات، أو قد ترغب أيضا بإيجاد جميع المستخدمين الذين يملكون اسم "Daniel". مرة أخرى، إن كتابة شيفرة MySQL خام في ووردبريس هو أمر نادر، لكنه يحدث في بعض الأحيان، لذلك فإن فهم كيفية عمل اللغة سيساعدك على كتابة شيفرات أفضل بشكل عام أدوات متقدمة بمجرد أن تتعود على الأقل على استخدام ثلاثة اللغات الأساسية - HTML و CSS و PHP - يمكنك البدء باكتشاف العديد من الأدوات المساعدة، واحدة من الأشياء الأولى التي يميل الناس إلى تعلمها هي LESS و/أو SASS، كلاهما "مجموعات موسّعة" (Superset) لـ CSS، أي أن أي شيفرة CSS صحيح تعتبر صحيحة في شيفرة LESS و SASS، وتكمن أهمية إضافة هاتين اللغتين هو إمكانية استخدام متغيرات ودوال و غيرها في CSS، والذي هو غير ممكن بشكل افتراضي. إن أدوات البناء (Build tools) هو شيء سترغب في اكتشافه عند مرحلة معينة، أفضلها Gulp و Grunt فهذان يمكنهما مراقبة تعديلات الملفات وتنفيذ مختلف المهام عند استيفاء المتطلبات، فعلى سبيل المثال، في أي وقت تعدل فيه ملف SASS يمكنك ترجمته تلقائيا إلى CSS وحفظه إلى ملف معين، أو يمكنك تحسين الصور أو دمج الملفات أو تحميل الحزم الخارجية فجميع المهام الأخرى يمكنك أن تفعلها باستخدام هذه الأدوات. سطر الأوامر أو الطرفية (terminal) هو شيء يجب أن تلقي نظرة عليه. نعم إن استخدام سطر الأوامر قد يبدو مخيفا لكنه ليس كذلك، فبمجرد كتابة بضعة أوامر يمكنك حفظ الكثير من الوقت، فسكربت/أداة مثل WP-CLI يمكنه تثبيت ووردبريس في بضعة ثواني، بما في ذلك تثبيت القوالب والمُلحقات والمحتويات للتجربة والتي لو قمت بها بشكل يدوي ستتطلب الكثير من الوقت والجهد. إن أنظمة االتّحكّم في الإصدارات (Version control) هي من الأدوات المفيدة للغاية فلن تعرف حاجتك إليها إلا لو استخدمتها، فعلى الرغم من أنها وُضعت أصلا للعمل على نفس الشيفرة البرمجية في مجموعات إلا أنه يمكنك استخدامها كحل لإدارة المشاريع والمشاكل والنسخ الاحتياطي في نفس الوقت. ويعتبر كل من SVN و Git الأشهر على الإطلاق، لكن بالنسبة لي، أعتبر أن Git أفضل نظرا لأنه يعمل بشكل أفضل وبسبب Github الذي يوفر خدمة استضافة مستودعات Git على الإنترنت. ووردبريس: بوابتك إلى عالم البرمجة إن أفضل شيء بالنسبة إلى ووردبريس أنه يمكن أن يكون مدخلا لتعلم مهارات تطوير ويب ولغات أخرى. ولقد خضت هذه التجربة شخصيا، فلقد تعلمت أولا البرمجة الموجهة في PHP ثم تعلمت إطار عمل Laravel وأدوات البناء ثم LESS/SASS وأدوات سطر الأوامر وغيرها الكثير. ولقد خضت أيضا في غمار native app باستخدام #C وغيرها من اللغات. بمجرد معرفتك بكيفية عمل كل شيء، ستتعلم المزيد عند إنشاء مشاريع جديدة وكبيرة وكل شيء سيصبح أسهل، فبعد البرمجة كائنية التّوجّه في PHP لن تبذل الكثير من الجهد في تعلم #C لأن دماغك سيتعود على منطقه بطريقة مشابه لتعلم قيادة الشاحنات بعد تعلمك قيادة السيارات، فعلى الرغم من وجود الكثير من الاختلافات لكن بمجرد أن يكون لديك بعض الأساسيات سيسهل عليك التّحكمّ فيه. خاتمة ها قد عرفت الآن ما الذي تحتاجه للبدء في تطوير موقع ووردبريس، وقد تشعر بالإرباك، لكن لا تقلق، فالجميع سيشعر بذلك في هذه المرحلة. تذكّر أمرًا: من المهم أن لا تثبط عزيمتك، فجميع المبرمجين بدؤوا من مكان ما، فالكثير منهم كان سيئا للغاية عندما بدأ، يصارع لفهم المفاهيم الجديدة وشعر بالإحباط، لكنهم لم يستسلموا وكانوا دائما يدفعون أنفسهم للتّعلّم وهذا ما يُميّز المبرمج الجيد من السيئ. ترجمة -وبتصرف- للمقال: WordPress Development for Beginners: Getting Started لصاحبه Daniel Pataki والمقال WordPress.org and WordPress.com من موقع wordpress.org. حقوق الصورة البارزة: Designed by Freepik.
  7. لرفع ملفات موقعك إلى خادوم (سيرفر) تحتاج إلى الحصول على بيانات FTP (الإسم، كلمة المرور ...)ومن ثم استخدام أحد برامج FTP مثل Filezilla أو gftp أو غيرها لرفع ملفاتك، أو يمكنك الرفع من موقع الإستضافة مباشرة إذ أن بعض الشركات توفر برنامج ويب لرفع الملفات مثل التي تستخدم cpanel. إذا أنهيت هذه الخطوة بنجاح، فسيعمل موقعك بدون مشاكل.
  8. يوجد العديد من البدائل لمحرك بحث جوجل فيمكنك على سبيل المثال استخدام محرك بينغ الشهير من مايكروسوفت أو محرك ياهو أيضا، وإذا أردت استخدام محرك بحث لا يقوم بتحديد تحركاتك فيمكنك في هذه الحالة استخدام محرك DuckDuckGo الذي يحفظ خصوصيتك. ملاحظة: أفضل نتائج بحث ستجدها عند جوجل في أغلب الأحيان.
  9. يمكنك استخدام الكعكات كما قال لك الأخ عبدالهادي أو إذا كنت ستبيع منتج واحد في كل مرة أي أن السلة لن تحمل أكثر من منتج فيمكنك القيام بذلك بسهولة باستخدام php وHTML فقط دون استخدام قواعد البيانات حيث عند الضغط على زر شراء المنتج سيتم الإنتقال بالمشتري إلى صفحة لوضع المعلومات المطلوبة للشراء(الإسم، العنوان...) ثم يدفع الحساب مباشرة ويمكنك في هذه الحالة ربط عمليات الشراء ببريدك الالكتروني حيث ستصلك جميع تفاصيل عمليات الشراء.
  10. نعم، فأغلب شركات الإستضافة توفر إمكانية رفع الملفات عبر بروتوكول FTP كما قال الأخ سعيد. إليك هذه التطبيقات مع روابط تحميلهم: تطبيق AndFTP: وهو من أشهر تطبيقات رفع الملفات. تطبيق Ftp Server: تطبيق مفيد وسريع. تطبيق FTPClientPro: تطبيق مدفوع، يتميز بسرعته وسهولة استخدمه. ملاحظة: ستحتاج إلى تطبيقات لفك الضغط الملفات و محرر نصوص للتعامل مع السكربت.
  11. من المعروف أن حزمة LEMP (والتي هي اختصار لـ Linux, Nginx, MySQL, PHP) توفر سرعة وموثوقية عالية لتشغيل مواقع PHP، إلّا أنها تملك مزايا أخرى غير مشهورة كالأمن والعزل. في هذا المثال، سنعرض لك مزايا أمن وعزل المواقع على LEMP مع مستخدمين مُختلفين، وهذا عن طريق إنشاء أحواض pools خاصّة بـ php-fpm لكل جزء من خادوم nginx (سواء كان موقعًا أو مستضيفًا افتراضيًا virtual host). المتطلبات الأساسية تمت تجربة هذا الدرس على أوبنتو 14.04 وعلى الرغم من ذلك فإن طريقة التثبيت والإعداد ستكون مشابهة لها على بقية الأنظمة والإصدارات، لكن قد تختلف الأوامر وأماكن ملفات الإعداد بين الأنظمة. كما أننا نفترض أنك قد ثبتت nginx و php-fpm، وبخلاف ذلك أنصحك بإتباع الخطوة الأولى والثالثة من هذا المقال: كيف تثبت حزم MySQL ،nginx ،Linux :LEMP وPHP على أوبنتو 14.04. يجب تنفيذ جميع الأوامر في هذا الدرس التعليمي بمستخدم غير الجذر (non-root)، وإن إحتجنا لصلاحياته فسنستخدم sudo، وإذا لم تُعدّ بعد هذا المستخدم فأنصحك بإتباع هذا الدرس: الإعداد الابتدائي لخادوم أوبنتو 14.04. ستحتاج أيضا إلى اسم نطاق مؤهل بالكامل (fully qualified domain name (fqdn الذي يربط على خادوم أو خادوم للتجربة بالإضافة إلى localhost الافتراضي، وإذا لم يكن لديك واحد، يمكنك استخدام site1.example.org، وذلك عن طريق تعديل ملف etc/hosts/ باستخدام محررك المفضل كهذا sudo vim /etc/hosts وأضف هذا السطر (استبدل site1.example.org بـ fqdn الخاص بك إذا كنت تستخدمه): ... 127.0.0.1 site1.example.org ... أسباب لزيادة تأمين LEMP عند إعداد LEMP مشترك سيكون هنالك حوض pool php-fpm واحد فقط والذي سيشغل جميع سكربتات PHP لجميع المواقع باستخدام نفس المستخدم، وهذا يطرح مشكلتين كبيرتين: إذا تعرض تطبيق ويب على أحد أجزاء خادوم nginx -على سبيل المثال عنوان فرعي أو موقع ما- إلى خطر أو هجوم فستتعرض جميع مواقع الموجودة على هذا الخادوم أيضا، فالمهاجم سيتمكن من قراءة ملفات الإعداد (configuration files) بما في ذلك تفاصيل قواعد بيانات لمواقع أخرى أو حتى تغيير ملفاتها. إذا أردت إعطاء مستخدم صلاحيات للدخول إلى الخادوم الخاص بك، فسوف تعطيه صلاحيات الوصول إلى جميع المواقع، فعلى سبيل المثال، إذا كان مطورك يحتاج إلى العمل على بيئة الإدراج (staging environment)، فحتى مع صلاحيات صارمة جدا على الملفات، فستبقى له إمكانية وصوله إلى جميع المواقع بما في ذلك موقعك الرئيسي على نفس الخادوم. المشاكل أعلاه تم حلها في php-fpm بإنشاء أحواض مختلفة والتي تشتغل تحت مستخدم مختلف لكل موقع. الخطوة الأولى - إعداد php-fpm إذا غطيت المتطلبات الأساسية فسيكون لديك في الوقت الحالي موقع ويب يعمل على خادوم. سننشئ الآن موقعًا ثانيًا (site1.example.org) مع حوض php-fpm ومستخدم لينكس مخصصين له. لنبدأ بإنشاء المستخدم الضروري، ولأفضل عملية فصل يجب أن يحصل المستخدم الجديد على مجموعته الخاصة لذلك سننشئ أولا مجموعة المستخدم site1: sudo groupadd site1 وبعد ذلك سننشئ مستخدم site1 ينتمي إلى هذه المجموعة: sudo useradd -g site1 site1 حتى الآن لا يملك هذا المستخدم الجديد كلمة مرور ولا يمكنك تسجيل دخوله في خادوم، إذا أردت توفير صلاحيات وصول إلى هذه الملفات من الموقع لشخص معين، فيجب عليك في هذه الحالة إنشاء كلمة مرور لهذا المستخدم عن طريق الأمر: sudo passwd site1 ومع تركيبة اسم المستخدم/كلمة المرور سيتمكن المستخدم من تسجيل دخوله عن بعد باستخدام ssh أو sftp. بعد ذلك، أنشئ حوض php-fpm جديد لـ site1، فالحوض مهم للغاية وهو عبارة عن عملية (process) لينكس عادية والتي تعمل تحت مستخدم/مجموعة محددة وتستمع لـ Linux socket وقد تستمع أيضا لتركيبة IP:Port لكن سيتطلب هذا إلى المزيد من موارد الخادوم وهذه الطريقة ليست جيدة. بشكل افتراضي في نظام أبنتو 14.04، كل حوض php-fpm يجب أن يتم إعداده في ملف داخل مجلد etc/php5/fpm/pool.d/. كل ملف مع امتداد conf. في هذا المجلد سيتم تحميله تلقائيا في الإعداد العام لـ php-fpm. لذلك سننشئ ملف etc/php5/fpm/pool.d/site1.conf/ لموقعنا، يمكنك فعل ذلك مع محررك المفضل كالتالي: sudo vim /etc/php5/fpm/pool.d/site1.conf يجب أن يحتوي هذا الملف على: [site1] user = site1 group = site1 listen = /var/run/php5-fpm-site1.sock listen.owner = www-data listen.group = www-data php_admin_value[disable_functions] = exec,passthru,shell_exec,system php_admin_flag[allow_url_fopen] = off pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 chdir = / في الإعدادات أعلاه، لاحظ هذه الخيارات: إن [site1] هو اسم الحوض، فلكل حوض اسم خاص به. يشير كل من user و group إلى المستخدم المجموعة التي سيعمل عليها الحوض الجديد. ستشير listen إلى مكان خاص لكل حوض. إن كل من listen.owner و listen.group يعرّفان ملكية المستمع (listener) -على سبيل المثال socket الخاصة بحوض php-fpm الجديد- ويجب على Nginx أن يكون قادرا على قراءة هذا socket، وهذا هو سبب أن socket يُنشأ مع اسم المستخدم والمجموعة تحت nginx الذي يشغل www-data. يسمح لك php_admin_value بوضع قيم إعداد php مخصصة والتي سنستخدمها لتعطيل دوال التي تُشغّل أوامر لينكس مثل exec, passthru, shell_exec, system. إن php_admin_flag مشابه لـ php_admin_value لكنه مجرد مبدل لقيم المنطقية مثل on و off. سنعطل دالة PHP التي تدعى allow_url_fopen والتي تسمح لسكربت PHP بفتح ملفات عن بعد والتي يمكن أن تُستخدم بواسطة المهاجم. ملاحظة: إن قيم php_admin_value و php_admin_flag يمكن تطبيقها بشكل عام، وعلى الرغم من ذلك قد يحتاجهما الموقع وهذا هو سبب عدم إعدادهما بشكل افتراضي. إن من مميزات أحواض php-fpm أنها تسمح لك بتخصيص إعدادات أمن لكل موقع، وعلاوة على ذلك، فيمكنك استخدام هذه الخيارات لأي إعدادات php أخرى، خارج المجال الأمني، لتخصيص بيئة الموقع. لن نتحدث في درسنا حول الأمن عن خيارات pm، لكن يجب أن تعرف أنها تسمح لك بإعداد أداء الحوض. وبالنسبة إلى خيار chdir فيجب أن يكون / والذي يعبر عن جذر نظام الملفات، وهذا السطر لا يجب تغييره ما لم تكن تستخدم chroot. لم يتم تضمين خيار chroot في الإعدادات أعلاه لأنه سيسمح لك بتشغيل الحوض في بيئة مسجونة، مثل قفل المجلد، وهذا الأمر سيكون رائعًا لأغراض أمنية لأنه ستتمكن من قفل الحوض دخل مجلد الجذر للموقع، ولكن على الرغم من ذلك فإن هذا الخيار الأمني قد يتسبب بالعديد من المشاكل لأي تطبيق PHP يعتمد على تطبيقات النظام (system binaries) وتطبيقات مثل Imagemagick والتي لن تكون متوفرة. بمجرد انتهائك من الإعدادات أعلاه أعد تشغيل php-fpm لتفعيل الخيارات الجديدة وذلك عن طريق الأمر: sudo service php5-fpm restart تأكد من أن الحوض يعمل بشكل صحيح وذلك بواسطة البحث عن عملياته كالتالي: ps aux |grep site1 إذا اتبعت التعليمات بدقة فستحصل على مخرجات مشابهة لهذه: site1 14042 0.0 0.8 133620 4208 ? S 14:45 0:00 php-fpm: pool site1 site1 14043 0.0 1.1 133760 5892 ? S 14:45 0:00 php-fpm: pool site1 بالإضافة إلى ذلك، سنعطل التخزين المؤقت الذي يوفره opcache، فهذا الأخير قد يُحسّن الأداء لكنه قد يتسبب في مشاكل أمنية. لتعطيله، عدل ملف etc/php5/fpm/conf.d/05-opcache.ini/ باستخدام صلاحيات أعلى (super user) وأضف السطر التالي: opcache.enable=0 بعد ذلك أعد تشغيل php-fpm حتى تعمل الخيارات الجديدة: sudo service php5-fpm restart الخطوة الثانية - إعداد nginx بعد أن انتهينا من إعداد حوض php-fpm لموقعنا، سنقوم الآن بإعداد جزء الخادوم في nginx. ولذلك أنشئ ملفًا جديدًا وذلك باستخدام محررك المفضل كالتالي: sudo vim /etc/nginx/sites-available/site1 يجب أن يحتوي هذا الملف على: server { listen 80; root /usr/share/nginx/sites/site1; index index.php index.html index.htm; server_name site1.example.org; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm-site1.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } الشيفرة أعلاه تظهر إعدادات مشتركة لجزء الخادوم في nginx، لاحظ هذه الأجزاء: جذر الويب (Web root) هو usr/share/nginx/sites/site1/. اسم الخادوم يستخدم site1.example.org التي ذكرناها في جزء المتطلبات الأساسية من هذا الدرس. يحدد fastcgi_pass المتعامل (handler) لملفات php، يجب استخدام unix socket مختلفة لكل موقع مثل var/run/php5-fpm-site1.sock/. بعد ذلك أنشئ مجلد جذر الويب: sudo mkdir /usr/share/nginx/sites sudo mkdir /usr/share/nginx/sites/site1 لتفعيل الموقع أعلاه تحتاج إلى إنشاء رابط رمزي (symlink) له في مجلد /etc/nginx/sites-enabled/. يمكنك فعل ذلك باستعمال الأمر التالي: sudo ln -s /etc/nginx/sites-available/site1 /etc/nginx/sites-enabled/site1 في النهاية، أعد تشغيل nginx لتعمل التغييرات الجديدة كالتالي: sudo service nginx restart الخطوة الثالثة - التجارب للتجارب، سنستخدم دالة phpinfo والتي توفر لنا معلومات تفصيلية حول بيئة php. أنشئ ملفًا جديدًا باسم info.php والذي يحتوي على سطر واحد فقط: <?php phpinfo(); ?> ستحتاج هذا الملف في الموقع الافتراضي لـ nginx وفي جذر الويب /usr/share/nginx/html/، ولهذا الغرض يمكنك استخدام محرر النّصوص كالتالي: sudo vim /usr/share/nginx/html/info.php ثم انسخ الملف إلى جذر الويب للموقع الآخر (site1.example.org) كالتالي: sudo cp /usr/share/nginx/html/info.php /usr/share/nginx/sites/site1/ أنت الآن مستعد لتشغيل أبسط اختبار للتأكد من مستخدم الخادوم، يمكنك إجراء الاختبار عن طريق متصفح أو من خلال طرفية خادوم و lynx (متصفح يعمل عبر الطرفية)، وإذا لم تثبت lynx سابقا في خادوم فيمكنك تثبيته بكل سهولة عن طريق الأمر: sudo apt-get install lynx تأكد أولا من وجود ملف info.php في الموقع الافتراضي، ينبغي أن تتمكن من الوصول إليه عبر localhost كالتالي: lynx --dump http://localhost/info.php |grep 'SERVER\["USER"\]' في الأمر السابق نرشح المخرجات باستخدام grep لمتغير ["SERVER["USER فقط والذي يشير إلى مستخدم الخادوم، بالنسبة إلى الموقع الافتراضي يفترض أن تكون المخرجات تعرض مستخدم www-data الافتراضي كالتالي: _SERVER["USER"] www-data ونفس الشيء سنفعله للتأكد من مستخدم خادوم site1.example.org: lynx --dump http://site1.example.org/info.php |grep 'SERVER\["USER"\]' يجب أن ترى هذه المرة site1 في المخرجات: _SERVER["USER"] site1 إذا قمت بعمل أية تخصيصات في إعدادات php في أحواض php-fpm الأساسية، فيمكنك أيضا التأكد من قيمهما بنفس الطريقة السابقة وذلك عن طريق ترشيح المخرجات التي تهمك. حتى الآن، عرفنا أن موقعينا يعملان تحت مستخدمين مختلفين، لكن لنرى الآن كيف يمكننا تأمين الاتصال، لتفسير المشكلة الأمنية التي نريد حلها في هذا المقال، سننشئ ملفًا يحتوي على معلومات حساسة، في العادة يحتوي هذا الملف معلومات الاتصال بقاعدة البيانات ويحتوي على تفاصيل اسم المستخدم وكلمة المرور لقاعدة بيانات المستخدم، فإذا وُجد أن أحدهم يستطيع الوصول إلى هذه المعلومات فسيتمكن من فعل أي شيء لموقعنا. أنشئ باستخدام محررك المفضل ملفًا جديدًا في موقعك الرئيسي يدعىusr/share/nginx/html/config.php/ ويحتوي على التالي: <?php $pass = 'secret'; ?> في الملف أعلاه عرّفنا متغيرًا يدعى pass والذي يحتوي على قيمة secret، وطبعا نريد تقييد الوصول إلى هذا الملف لذلك سنغير الصلاحيات إلى 400، والتي تعطي صلاحيات القراءة فقط لمالك الملف. لتغيير الصلاحيات إلى 400 نفذ الأمر التالي: sudo chmod 400 /usr/share/nginx/html/config.php بالإضافة إلى ذلك موقعنا الرئيسي يعمل تحت مستخدم www-data والذي يجب أن يكون قادرًا على قراءة هذا الملف، وبالتالي، غيّر ملكية الملف إلى ذاك المستخدم كالتالي: sudo chown www-data:www-data /usr/share/nginx/html/config.php في مثالنا سنستخدم ملفًا آخر يدعى usr/share/nginx/html/readfile.php/ لقراءة المعلومات السرية ومن ثم طباعتها، ويجب أن يحتوي هذا الملف على الشيفرة البرمجية التالية: <?php include('/usr/share/nginx/html/config.php'); print($pass); ?> بعد ذلك غيّر ملكية هذا الملف لمستخدم www-data كالتالي: sudo chown www-data:www-data /usr/share/nginx/html/readfile.php للتأكد من جميع الصلاحيات والملكيات في جذر ويب، نفّذ الأمر التالي: ls -l /usr/share/nginx/html/ يجب أن تكون المخرجات شبيهة بهذه: -r-------- 1 www-data www-data 27 Jun 19 05:35 config.php -rw-r--r-- 1 www-data www-data 68 Jun 21 16:31 readfile.php الآن جرب الوصول إلى الملف السّابق على موقعك الافتراضي باستخدام الأمر: lynx --dump http://localhost/readfile.php ستلاحظ أن secret مطبوعة على الشاشة والتي تعني أن الملف مع المعلومات الحساسة يمكن الوصول إليه من داخل نفس الموقع، وهذا السلوك متوقع. الآن جرب نسخ ملف usr/share/nginx/html/readfile.php/ إلى موقعك الثاني site1.example.org كالتالي: sudo cp /usr/share/nginx/html/readfile.php /usr/share/nginx/sites/site1/ للحفاظ على علاقات الموقع/المستخدم، تأكد من أن الملفات داخل كل موقع مملوكة من طرف المستخدم المعني وذلك عن طريق تغيير ملكية الملف المنسوخ إلى site1 باستخدام الأمر التالي: sudo chown site1:site1 /usr/share/nginx/sites/site1/readfile.php للتحقق من وضعك الصلاحيات والملكيات الصحيحة للملفات، اعرض قائمة محتويات جذر ويب site1 باستخدام الأمر: ls -l /usr/share/nginx/sites/site1/ يجب أن ترى كالتالي: -rw-r--r-- 1 site1 site1 80 Jun 21 16:44 readfile.php بعد ذلك حاول الوصول إلى نفس الملف من site1.example.com باستخدام الأمر: lynx --dump http://site1.example.org/readfile.php سترى أنه تم إرجاع مساحة فارغة، وبالإضافة إلى ذلك، إذا بحثت عن الأخطاء في سجل الأخطاء لـ nginx باستخدام الأمر grep التالي: sudo grep error /var/log/nginx/error.log فسترى شيئا مشابها لهذا: 2015/06/30 15:15:13 [error] 894#0: *242 FastCGI sent in stderr: "PHP message: PHP Warning: include(/usr/share/nginx/html/config.php): failed to open stream: Permission denied in /usr/share/nginx/sites/site1/readfile.php on line 2 ملاحظة: سترى أيضا خطأ مشابهًا في مخرجات lynx إذا فعّلت خيار display_errors في إعدادات php-fpm في ملف etc/php5/fpm/php.ini/ (بوضع On في ذلك الخيار). يظهر التحذير أن السكربت من موقع site1.example.org لا يمكنه قراءة الملف الحساس (config.php) من الموقع الرئيسي وبالتالي، المواقع التي تعمل تحت عدة مستخدمين لا يمكنها تعريض أمن بقية المواقع. إذا ذهبت إلى نهاية جزء الإعدادات من هذا المقال، سترى أننا عطلنا التخزين المؤقت التي يوفرها opcache بشكل افتراضي، وإذا رغبت بمعرفة السبب حاول تفعيله مجددا وذلك عن طريق وضع opcache.enable=1 في ملفetc/php5/fpm/conf.d/05-opcache.ini/ عن طريق مستخدم sudo ومن ثم إعادة تشغيل php5-fpm باستخدام الأمر sudo service php5-fpm restart. ستجد أنه إذا قمت بإعادة خطوات الاختبار بنفس الترتيب فإنك ستتمكن من قراءة الملف الحساس على الرغم من صلاحياته وملكياته، وهذه المشكلة في opcache قد تم الإبلاغ عنها منذ فترة طويلة لكن لم يتم إصلاحها حتى وقت كتابة هذا المقال. الخاتمة من الناحية الأمنية، يجب استخدام أحواض php-fpm مع مستخدم مختلف لكل موقع على نفس خادوم ويب nginx، فهذا الأمر حتى لو كان يضْعف الأداء قليلا، فإن ميزة عملية الفصل يمكنها منع خروق أمنية خطيرة. الفكرة التي شرحناها في هذا المقال ليست فريدة، وهي موجودة في تقنيات فصل PHP أخرى مثل SuPHP. وعلى الرغم من ذلك، أداء بقية البدائل أسوء من php-fpm. ترجمة -وبتصرف- للمقال: How To Host Multiple Websites Securely With Nginx And Php-fpm On Ubuntu 14.04 لصاحبه Anatoliy Dimitrov.
  12. توجد العديد من الطرق الأخرى أقصر من هذه الطريقة الطويلة، فيمكنك على سبيل المثال طباعتها مباشرة عن طريق استخدام cout كالتالي: #include <iostream> cout << myString << "\n"; أو يمكنك استعمال دالة printf لطباعة ما تريده كما في المثال التالي: printf("%s\n",myString.c_str())
  13. توجد عدة أسباب شائعة لعدم اشتغال الصوت، والتي من أهمها: * عدم تثبيت كرة الصوت المناسب لجهازك (الموقع الرسمي لتعريفات توشيبا). * يمكن أن تكون السماعات أو كرت الشاشة لا يعمل. * يوجد خطأ في إعدادات الصوت على نظامك. * الفيديو الذي جربته لا يحتوي على صوت. تأكد من هذه النقاط، وإذا واجهتك أية مشكلة أخبرنا في التعليقات.
  14. يوفر لك بروتوكول نقل الملفات (File Transfer Protocol) أو باختصار FTP طريقة سريعة وسهلة لنفل الملفات من وإلى موقع ووردبريس الخاص بك. في الأيام الأولى لتطوير الويب، كان FTP هو الوسيلة الوحيدة للتفاعل مع الواجهة الخلفية لموقعك ولرفع المحتويات، لكن سهلت ووردبريس في الوقت الحالي عملية تهيئة وإعداد الموقع عن طريق السماح لك برفع المحتويات مباشرة من متصفحك وبذلك قلة أهمية استخدام FTP. لكن في مثل هذه الحالة، هل يجب التّخلي عنه كاملّا؟ لا ليس بعد. لايزال هنالك أسباب عديدة ستجعلك تحتاج إلى استخدام FTP (أو File Transfer Protocol Secure, FTPS بروتوكول الآمن لنقل الملفات) سواء كنت بحاجة إلى رفع ملفات ضخمة إلى موقعك أو حتى حذفها أو تغيير صلاحيات الملفات والمجلدات، فستساعدك مهارة استخدام FTP بشكل صحيح كثيرا. في هذا المقال، سأريك كيف تستخدم FTP مع ووردبريس وكيف تحل بعض المشاكل الشائعة التي قد تعترضك. إعداد واستخدام FTP لنقل الملفات من وإلى خادومك ستحتاج أولا إلى تحميل وتثبيت عميل FTP على جهازك، يتوفر العديد من عملاء FTP، ولا يوجد خيار صحيح بين هذه الاختيارات، فاختيارك يعتمد على نظام تشغيلك وأي واحد ترتاح باستخدامه. هذه قائمة بجميع عملاء FTP التي يمكنك تحميلها واستخدامها اليوم: FileZilla مجاني ومفتوح المصدر ويعمل على جميع المنصات، ويعتبر هذا العميل الحل الأشهر. SmartFTP يعمل فقط على نظام ويندوز، ويبلغ سعره 60 دولار أو 120 دولار بالاعتماد على النسخة التي تريدها كما توجد نسخة تجريبية مجانية منه. WinSCP برنامج مجاني ومفتوح المصدر لكن يعمل على أنظمة ويندوز فقط. Macfusion عميل FTP مجاني لمستخدمي أنظمة Mac OS X، ويتطلب برنامج MacFUSE من جوجل ليعمل. LFTP عميل FTP يعمل على أنظمة لينكس وهو مجاني. FireFTP مجاني لكنه يعمل فقط مع فيرفوكس، لذلك فهو يعمل على أي نظام. Cyberduck متوفر لأنظمة ويندوز وماك وهو مجاني ومفتوح المصدر. Core FTP عميل FTP مجاني لكنه يعمل على أنظمة ويندوز فقط، توجد نسخة مدفوعة منه للمزيد من المميزات. Free FTP يبدو أنك افترضت أن هذا العميل مجاني انطلاقا من اسمه، وهذا الافتراض صحيح لكنه يعمل على أنظمة ويندوز فقط. Transmit متوفر لأنظمة Mac OS X وعلى الرغم من وجود نسخة مجانية تجريبية، لكن النسخة الكاملة يبلغ سعرها 34$. هنالك عملاء آخرون، لكن حذفت الكثير منهم من القائمة بسبب توقف دعمها و تحديثها، على الرغم من أن العديد منها لايزال صالح للاستخدام ويمكنك استخدامهم على مسؤوليتك. عندما تختار وتثبت عميلك، سيكون الوقت مناسب لإدخال معلومات الخادوم. لا يهم نوع FTP، هذه المعلومات التي ستحتاجها: عنوان IP: عنوان IP المخصص لك أو إذا لم تملك واحد، فسيكون عنوان IP موقعك. اسم المستخدم وكلمة المرور لحساب FTP: إذا لم يكن لديك فستحتاج إلى إعداد واحد. يوجد فرق بسيط بين شركات الاستضافة فإذا لم تساعدك هذه الخطوات على الوصول إلى المعلومات المطلوبة فأفضل حل هو أن تسأل مستضيفك والذي يمكنه إعطاؤك أفضل إجابة. في cPanel يمكنك إيجاد عنوان IP الخاص بك بعد تسجيل دخولك، ستجده في الجانب الأيسر. يجب أن تعثر على عنوان IP الخاص بك هنا والذي سيساعدك على تسجيل دخولك إلى خادومك من عميل FTP الذي اخترته، لكن قبل أن تسجل دخولك، ستحتاج إلى التأكد من امتلاكك تفاصيل حساب FTP. في هذه الصفحة، اضغط على: Files > FTP Accounts وتحقق ما إذا كان لديك بالفعل اسم مستخدم موجود في قائمة FTP Accounts. إذا كان لديك واحد، ستكون قد حصلت على كل ما تحتاجه لبدء نقل الملفات، وخلافا لذلك ستحتاج إلى إنشاء حساب جديد مع النموذج الموجود في أعلى الصفحة. أدخل اسم المستخدم وكلمة المرور الصحيحة وتأكد من اختيارك المجلد الصحيح، فإذا كان هدفك نقل الملفات لتثبيت ووردبريس على سبيل المثال، فستحتاج إلى اختيار مجلد الجذر (root) لموقعك. أما لو كنت تريد إضافة ملفات إلى مجلد معين، فيمكنك اختيار ذلك من هنا، كما أنه يمكنك تحديد ذلك المجلد عند وصولك إلى خادومك عبر عميل FTP لذا فإن حقل Directory ليس ضروريا. كما يمكنك اختيار زر Unlimited تحت Quota لتضمن أنه يمكنك نقل جميع الملفات التي تحتاجها دون مقاطعتك، لكن ضع في اعتبارك أن عدد الملفات التي ستنقلها سيتم احتسابها وستستهلك من سعة نطاق الشبكة (bandwidth) المتوفر والذي هو جزء من خطة استضافتك، فإذا بلغت حد سعة نطاق الشبكة، سيقوم مستضيفك بإغلاق موقعك حتى تقوم بالترقية أو حتى يأتي موعد الدفع مرة أخرى. يمكنك التأكد من هذا الحد في cPanel على الجانب الأيسر من الصفحة الرئيسية في المكان الذي وجدت فيه عنوان IP، ستجده تحت Monthly Bandwidth Transfer ويمكنك رؤية الكمية التي استخدمتها من ذلك الحد. إذا كان لديك حد صارم لا تريد تجاوزه، فيمكنك إدخال الحد الأعلى الذي تريده بالميغابايت تحت Quota عند إنشائك لحساب FTP. لا تنس أن تضغط على رز Create FTP Account في أسفل النموذج لضمان إنشاء حسابك، عندما تنتهي من هذا، ستكون مستعد لاستخدام عميل FTP الخاص بك. عندما تفتح FileZilla على سبيل المثال، يمكنك اختيار خيار تسريع الاتصال لخادومك من دون إدخال أية إعدادات مخصصة. أدخل المعلومات التالية والتي جمعتَها: Host: عنوان IP الخاص بموقعك أو عنوان IP المخصص. Username: الاسم الذي أدخلته لحساب FTP الجديد، تأكد من إدخالك اسم المستخدم الكامل الموجود في cPanel. فعلى سبيل المثال، أدخل username@your-site.com إذا كان هذا هو الموجود أو ستحصل على رسالة خطأ. Password: كلمة المرور التي أدخلتها عند إنشاءك لحساب FTP. Port: في العادة يمكنك استخدام الافتراضي والذي هو 21، وإذا حصلت على رسالة خطأ، اسأل مستضيفك عن المنفذ الذي يجب عليك استخدامه. عندما تُدْخِل هذه القيم، انقر على زر Quick Connect للاتصال، وإذا نجحت في ذلك سترى رسالة في المساحة الموجودة أسفل نموذج تسجيل الدخول. إذا كان لديك شهادة SSL مثبتة على خادومك، فقد ترى نافذة جديدة تظهر لك فجأة وتسألك قبول هذه الشهادة. أنظر إلى المعلومات التي ظهرت لك، إذا تم عرض شهادة SSL، فهذا معناها أن المعلومات صحيحة وأنك وثّقت شهادتك، لذلك استمر عن طريق النقر على OK. يمكنك اختيار إضافة إعدادات متخصصة لاتصالك، خاصة إذا رأيت رسائل خطأ تظهر عندما تحاول الاتصال، ولفعل ذلك، اذهب إلى: File > Site Manager وانقر على زر New Site في أسفل رسالة الخطأ التي ظهرت لك. من هذه النافذة، يمكنك اختيار الاتصال بطرق متعددة في حالة كنت لا تملك شهادة SSL مثبتة على خادومك، كل هذه الخيارات ستجدها تحت Encryption في صندوق النافذة، كما توجد خيارات أخرى عديدة هنا والتي يمكن أن تفيدك حسب حالتك. قد يكون من المهم أيضا أن تعرف أنه إذا واجهت مشاكل في الاتصال قد يكون السبب هو شهادة SSL، فلقد قام FileZilla بتغيير إعداداته الافتراضية إلى FTPS بدلا من FTP، وهذا يعني أن FileZilla أصبح يفترض أنك تملك شهادة SSL مثبتة على خادومك وأنك تحاول الاتصال به، فإذا لم تملك شهادة SSL مثبتة أو أنك لم تكونها بشكل صحيح، فستظهر رسالة خطأ. لإصلاح هذه المشكلة أو التأكد منها، حاول الاتصال باستخدام خيار: (Site Manager > Encryption > Only use plain FTP (insecure فإذا تمكنت من الاتصال بنجاح، فهذا يعني أنه لديك مشكلة في قبول شهادة SSL أو أنك لا تملك واحدة مثبتة. بعد أن تنهي إدخالك لجميع الإعدادات التي ترغب بها، اضغط على زر Connect في أسفل النافذة التي ظهرت لك لبدء الاتصال. كيف تنقل الملفات الآن لقد نجحت بالاتصال، وأنت مستعد الآن لنقل ملفاتك. ستجد الكثير من المناطق في FileZilla، على اليسار ستجد قسم Local site (موقعك المحلي) وعلى اليمين ستجد قسم Remote Site. الصندوق الأول تحت منطقة الرسائل سيظهر لك جميع المجلدات الموجودة على حاسوبك، عندما تضغط عليهم، سيظهر لك جميع الملفات والمجلدات الموجودة حاليا في صندوق في الأسفل. ونفس الشيء بالنسبة للصندوق على اليمين، تحت منطقة الرسائل، فهي تُظهر لك المجلدات الرئيسية الموجودة على خادومك، عندما تضغط عليهم، ستظهر لك الملفات والمجلدات الموجودة فيه في الصندوق في الأسفل، وإذا لم يحدث هذا، فربما لديك مشكلة في الإتصال. في أسفل النافذة ستجد طابور النقل مع حالة التحويلات المعلقة. كل ما تحتاجه لتبدأ نقل الملفات والمجلدات هو اختيار ملفاتك ومجلداتك المطلوبة من الجانب الأيسر من عميلك، ثم الضغط عليهم وسحبها وإسقاطها في قسم remote site على اليمين. يمكنك نقر وسحب وإسقاط الملفات والمجلدات من كل من الصندوقين العلوي أو السفلي على يسار أو يمين الجهة الأخرى، هذا معناه أنه يمكنك رفع الملفات إلى خادومك عن طريق إسقاط ملفاتك إلى جانب remote site على اليمين أو تنزيل الملفات إلى حاسوبك من خادومك بإسقاط الملفات إلى اليسار. في أسفل النافذة ستجد أيضا عددا من علامات التبويب: Queued files و Failed transfers و Successful transfers. علامة التبويب الأولى هي الافتراضية وتظهر لك جميع العمليات الحالية، أما علامة التبويب الأخيرة فتظهر لك جميع الملفات والمجلدات التي تم نقلها بنجاح وأما Failed transfers -كما خمّنت- فستظهر لك جميع الملفات والمجلدات التي لم يتم نقلها. إذا وجدت عددا بعد عنوان Failed transfers فهذا يعني أنه يوجد ذلك العدد من الملفات التي لم يتم نقلها، يمكنك إرجاعها مرة أخرى إلى العمليات الحالية عن طريق تحديد علامة التبويب ومن ثم النقر بالزر الأيمن على اسم الملف لنظام ويندوز أو عن طريق النقر والضغط على مفتاح الأمر (command key) بالنسبة لأنظمة Mac OS X ومن ثم اختيار خيار Reset and requeue all. إذا تم نقل ملفاتك بنجاح، فلقد انتهينا، فالملفات والمجلدات التي حددتها موجودة الآن على خادومك. رفع ملفات الوسائط المتعددة باستخدام FTP يبدو أن نقل ملفاتك ومجلداتك سهل للغاية، لكن سيكون الأمر أصعب قليلا إذا حاولت نقل الملفات إلى مجلد wp-content/uploads/، ستلاحظ أن أي ملف ستقوم بنقله عن طريق FTP لن يظهر في مجلد ملفات الوسائط المتعددة (Media files). للأسف، عندما تنقل الملفات بهذه الطريقة، لن تُسجل مكتبة الوسائط المتعددة ملفاتك، فووردبريس لن يتعرّف على الملفات التي لم يتم تحميلها من لوحة التحكم عن طريق مكتبة الوسائط المتعددة أو عن طريق زر Add Media عند إنشائك مشاركة جديدة أو صفحة. لحسن الحظ، توجد طريقة سهلة وسريعة لحل هذا، وذلك عن طريق استخدام ملحق Add from Server، فهذا الملحق يتم تحديثه بشكل منتظم. بمجرد أن ترفع ملفاتك ، انقر على ذلك المجلد من القائمة للوصول إلى قائمة الملفات المرفوعة غير المسجلة. يسمح لك هذا الملحق أيضا بتسجيل الملفات التي رفعتها على أي مجلد موجود في ملف تثبيت ووردبريس. يمكنك أيضا النقر على أحد روابط Quick Jump الموجودة في أعلى الصفحة للوصول إلى الملفات الشائعة بشكل أسرع. بمجرد أن تجد ملفاتك، قم بالضغط على مربعات هذه الملفات لتسجيلها أو اضغط على المربع بجانب File لتحديد جميع الملفات، ثم انقر على زر Import في أسفل القائمة. قد يستغرق معالجة الصور أو الملفات بعض الوقت خاصة إذا حدّدت الكثير من الصور لذلك لا تستعجل وخذ استراحة قصيرة ولا تعد حتى تجد رسالة نجاح العملية. يمكنك الآن التحقق من مكتبة الوسائط المتعددة، ستجد أن الصور موجودة وجاهزة للاستخدام. إبقاء اتصالك آمنا سأكون مقصرا معك إذا لم أذكر لك كيف تبقي خادومك وموقعك آمنين عند استخدام FTP لأن هنالك بعض المخاطر والتي لحسن الحظ يمكنك تجنبها. إذا لم تكن تملك شهادة SSL مثبتة على خادومك أي أنك تستخدم FTP بدلا من FTPS، فهذا معناه أنك معرض لاعتراض اتصالك من قبل القراصنة، فجميع الملفات والبيانات المخزنة على موقعك وخادومك بما في ذلك أسماء المستخدمين وكلمات المرور وعناوين البريد الإلكتروني وغيرها من المعلومات الشخصية معرضة أن يتم سرقتها. إذا كنت تستخدم استضافة مشتركة، فسيكون موقعك محمي بما أن المستضيف سيكون مسؤولًا على أمن موقعك، لكن إذا كنت تستخدم VPS أو خادوم مخصص (dedicated server)، فستكون أنت المسؤول على أمان موقعك وخادومك، فإذا كنت تملك خادومك الخاص ولم تقم بتثبيت شهادة SSL، فسيكون موقعك وخادومك معرضين للخطر في كل مرة تستخدم فيها FTP. على الرغم من أن امتلاك شهادة SSL ليس الإجراء الأمني الوحيد الذي يجب أن تتخذه، إلا أنه بالتأكيد خطوة مهمة. من المهم أيضا حذف حساب FTP الذي أنشأته عندما تنهي رفع أو تنزيل ملفاتك لأن هذه المعلومات ستكون مهددة، فقد يتمكن قراصنة الانترنت من الحصول على هذه المعلومات في أوقات فراغهم. بعض شركات الاستضافة تحذف حسابات FTP بعد مدة معينة من الزمن، لكن إذا لم تكن هذه الخدمة متوفرة لديك فلا تنس أن تحذفها بشكل يدوي عندما تنتهي من العمل. ولفعل ذلك اذهب إلى: Files > FTP Accounts ثم انقر على رابط Delete المجاور لمعلومات تسجيل الدخول. بعد ذلك، إما أن تنقر على زر Delete Account لحذف حساب FTP الخاص بك مع إبقاء الملفات في هذا المجلد أو انقر على زر Delete Account and Files لحذف الحساب مع الملفات. خذ بعين الاعتبار أنه إذا قمت بحذف حساب FTP المرتبط بمجلدك الرئيسي مثل المجلد الجذر لموقعك، فسيتم حذف جميع الملفات في ذلك المجلد إذا اخترت خيار حذف حسابك وملفاتك، وهذا معناه أنه في هذه الحالة ستُحذف جميع ملفات موقعك، لذلك إذا كانت لديك أية شكوك فانقر على زر Delete Account. عندما تريد نقل بعض الملفات مرة أخرى، أنشئ حساب جديد، ثم احذفه مرة أخرى عندما تنتهي. الخاتمة الآن، أنت جاهز لاستخدام FTP و FTPS لنقل الملفات إلى موقع ووردبريس الخاص بك وسيكون الأمر سهل للغاية، كما يمكنك أيضا تسجيل ملفات المرفوعة والتي ستكون في العادة غير مرفقة في مكتبة الوسائط المتعددة. هل تنقل الملفات عبر FTP أو FTPS كثيرا؟ ما طريقتك أو عميلك المفضل؟ هل تستخدم أي ملحقات أو عملاء FTP أخرى لمساعدتك على نقل الملفات؟ شاركنا تجربتك في التعليقات في الأسفل. ترجمة -وبتصرف- للمقال: How to Use FTP Properly with WordPress لصاحبه Jenni McKinnon.
  15. في حين أنه من الممكن إدارة خواديمك باستخدام تسجيلات الدخول القائمة على كلمات المرور إلا أنه غالبا يكون إنشاء واستخدام زوج مفاتيح SSH فكرة أفضل، لأن هذه المفاتيح أكثر أمانا من كلمات المرور ويمكنها مساعدتك على تسجيل الدخول دون الحاجة إلى تذكر كلمات المرور الطويلة. على Digital Ocean، يمكنك رفع مفتاحك ليكون جزءا من خواديمك عند إنشائها وهذا سيسمح لك بتسجيل دخولك إلى الخواديم بدون كلمات مرور بينما تظل آمنة للغاية. في العادة، يستعمل مستخدمو ويندوز برنامج PuTTY لإنشاء جلسات Session SSH والتي ستسمح لك بالاتصال بخادومك، كما يوفر لك هذا البرنامج إمكانية إنشاء مفاتيح SSH وتذكر مفتاح كل خادوم. في هذا الدّرس، ستتعلم كيف تستخدم PuTTY لإنشاء زوج مفاتيح SSH، وكيف ترفع مفتاحك العام (public key) إلى واجهة الويب الخاصة بـDigital Ocean، وكيف تنشئ droplets جديدة (VPS) مع تضمين مفتاحك العام، وفي النهاية سنريك كيف تتصل بخواديمك بدون استخدام كلمة مرور باستخدام مفتاحك الخاص. كيف يعمل زوج مفاتيح SSH نستخدم زوجًا من مفاتيح SSH كطريقة للاستيثاق (authentication method) وذلك عن طريق إنشاء مفتاحين مرتبطين. المفتاح الأول يدعى بالمفتاح الخاص (private key) وهذا المفتاح سري ويجب على من أنشأه أن يحتفظ به في مكان آمن، لأنه يُستخدم للتعرف عليك بطريقة تشبه شمع الأختام التي كانت تُستخدم لإغلاق الرسائل في الماضي، فهو يُستعمل لإثبات أن الاتصال قادم منك. يجب ألا تسمح بأي شخص أن يحصل على مفتاحك الخاص، لأنه سيتمكن من تسجيل الدخول إلى أي حساب مرتبط بهذا المفتاح، وإذا أردت مشاركة الوصول معه، فتوجد طرق أفضل لفعل ذلك. أما المفتاح الآخر فيدعى بالمفتاح العام (public key)، هذا المفتاح يرتبط بشكل حقيقي مع المفتاح الخاص، الفرق أنه يمكنك مشاركة هذا المفتاح بحرية مع أي شخص على الإنترنت. الشيء الوحيد الذي يمكن لشخص آخر أن يفعله بهذا المفتاح هو أن يسمح لك بتسجيل الدخول إلى جهازه، وهذا ما سنقوم بإعداده في هذا الدّرس، بإنشاء خواديم جديدة متضمنة مفاتيحنا العامة. تنزيل وتثبيت PuTTY و PuTTYgen بداية، سنحتاج إلى تنزيل وتثبيت كل من PuTTY وهي أداة للاتصال بخواديم بعيدة عن طريق SSH (صدفة آمنة - secure shell) و PuTTygen وهي أداة تُستخدم لإنشاء مفاتيح SSH. يمكنك إيجاد روابط تحميل كلا الأداتين على موقع المشروع. أسهل طريقة للحصول على جميع الأدوات الضرورية هي عن طريق زيارة الرابط أعلاه ومن ثم الضغط على رابط بعنوان “A Windows installer for everything except PuTTYtel" كما في الصورة التالية: نزّل التّطبيق ونصّبه، بإمكانك الإبقاء على الخيارات الافتراضية (في عملية التّنصيب) أو التّعديل عليها كيفما شئت. إنشاء زوج مفاتيح SSH سنبدأ بإنشاء زوج مفاتيح SSH. سنبدأ بتشغيل PuTTYgen وذلك عن طريق استخدام قائمة ابدأ أو بالضغط على مفتاح ويندوز وكتابة "PuTTYgen" والذي سيشغل برنامج مولد المفاتيح وسيبدو كما في الصورة التالية: لإنشاء مفتاح جديد، يمكنك اختيار المعاملات الموجودة في الأسفل حسبت متطلباتك: تقريبا في أغلب الحالات، ستكون القيم الافتراضية خيارًا جيّدًا، لذلك يمكنك إبقاؤها كما هي. عندما تنتهي، اضغط على زر "Generate" الموجود على الجانب الأيمن: يتم إنشاء مفاتيح SSH باستخدام بيانات عشوائية لأسباب أمنية، لذلك ستحتاج إلى توليد بعض البيانات العشوائية من خلال تحريك الفأرة في النافذة، هذه العشوائية والتي تدعى أيضا بـ "entropy" تُستخدم لإنشاء مفاتيح بطريقة آمنة حتى لا يتمكن الآخرين من تقليدها. عندما يستقبل نظام التشغيل عددًَا كافيًا من البيانات العشوائية سيوّلد زوج مفاتيح، وستظهر مخرجات مفتاح العام في صندوق نصي على الشاشة. يمكنك استخدام هذه المعلومات عن طريق نسخها ولصقها من صندوق النصوص، لكننا سنحفظها لاستخدامها لاحقا عن طريق الواجهة المتوفرة. اضغط على كل من زر حفظ المفتاح العام "Save public key" والخاص "Save private key" واختر مكانًا آمنًا لحفظها: يمكنك تسمية مفاتيحك بأي اسم تريده، وبشكل افتراضي سيتم إعطاء مفتاح الخاص امتداد ppk. أما بالنسبة للمفتاح العام فأنصحك باختيار امتداد مثل txt. حتى تتمكن من فتحه لاحقا باستخدام محرر نصوص عادي، فستحتاج فيما بعد إلى قراءة البيانات الموجودة في هذا الملف. قمنا الآن بتوليد زوج مفاتيح وحفظناه على الجهاز وهو الآن جاهزة للاستخدام. رفع مفتاحك العام إلى حساب Digital Ocean كما ذكرنا سابقا، يمكنك نشر مفتاحك العام بحرية لأنه يمكن أن يُستخدم لتأكيد المستخدم الذي يملك المفتاح الخاص المرتبط به، بالإضافة إلى أنه لا يمكن استخدامه لإعادة إنشاء مفتاح خاص لذلك سيكون من الآمن رفعه. داخل حساب Digital Ocean الخاص بك، اضغط على رابط "SSH Keys" الموجود على قائمة التصفح على اليسار: سيتم نقلك إلى صفحة إدارة مفاتيح SSH. في الجانب الأيمن العلوي اضغط على زر "Add SSH Key": ستظهر لك شاشة جديدة وسيطلب منك تحديد اسم لهذا المفتاح الذي ستنشئه، اختر اسمًا سهلًا لتتمكن من التعرف عليه لاحقا. بعد ذلك، يجب عليك لصق محتويات المفتاح العام الخاص بك في المساحة الموجودة في الأسفل، إذا أغلقت جلسة أداة PuTTYgen فيجب عليك في هذه الحالة فتح الملف المحتوي على المفتاح العام الخاص بك باستخدام محرر نصي (مثل Notepad)، ومن ثم اختيار كامل النص الموجودة في الملف ومن ثم لصقه في الحقل الموجود على الموقع، وسيبدو كما في المثال التالي: عندما تنتهي، اضغط على زر "Create SSH Key"، وسيكون المفتاح متوفرًا في لوحة تحكم Digital Ocean. نحتاج الآن فقط إلى إنشاء خادوم جديد باستخدام هذا المفتاح. إنشاء خادوم VPS يتضمن مفتاح SSH العام والآن، بعد أن حصلنا على مفتاحنا العام في واجهتنا، يمكننا تضمينه في خواديمنا الجديدة، وهذا سيسمح لنا بالاستيثاق وتسجيل الدخول إلى خادومنا الجديد باستخدام المفتاح الخاص بدون الحصول على كلمة مرور إضافية. لإنشاء خادوم جديد، اضغط على زر "Create" في الجانب الأيسر العلوي من لوحة التحكم: اختر اسمًا لـ Droplet الخاصة بك، ومن ثم املأ بقية المعلومات مثل الحجم وموقع البيانات كالمعتاد. في الأسفل، يوجد قسم بعنوان "Add optional SSH Keys" وستجد داخله أزرار لكل مفاتيح SSH التي رفعتها إلى الواجهة. يمكنك اختيار مفتاح واحد أو أكثر لتضمينها مع خادومك: إذا كنت معتادا على إنشاء الخواديم عن طريق Digital Ocean، فأنت متعود على استقبال رسالة عند الإنشاء بها معلومات التوثيق وكلمة المرور، وعند اختيار تضمين مفتاح SSH إلى خادومك لجديد، لن تُرسل لك هذه الرسالة. بدلا من ذلك، يجب استخدام مفتاحك الخاص لتسجيل الدخول، والتي لا تحتاج إلى كلمة مرور. إعداد جلسة SSH مع مفاتيح SSH في PuTTY نملك الآن droplet تتضمن مفتاحًا عامًا، ويمكننا استخدام PuTTY للاتصال بها، وسنفعل ذلك بإعداد وحفظ الجلسة، وبهذه الطريقة يمكننا إعادة الاتصال لاحقا بسرعة مع حفظ جميع إعداداتنا. افتح برنامج PuTTY الرئيسي وذلك عن طريق الضغط المزدوج، أو بالضغط على مفتاح ويندوز وكتابة PuTTY. ستُفتح لك شاشة الجلسة الرئيسية. الخطوة الأول هي إدخال عنوان IP للـ droplet الخاصة بك إلى صفحة الجلسة. يمكننك الحصول على هذا العنوان من خلال لوحة تحكم Digital Ocean: بشكل افتراضي، يستخدم SSH منفذ 22، ويجب اختيار SSH كنوع اتصال، وهذه كل القيم التي نحتاجها. بعد ذلك، نحتاج إلى الذّهاب إلى "Data" في قسم "Connection" في الجانب الأيسر من قائمة التصفح: هنا، سندخل اسم المستخدم للخادوم، وسيكون "root" للإعداد الأولي والذي هو المُستخدم الجذر لخادومك، وهذا هو الحساب الذي تم إعداده مع مفتاحك العام، أدخل "root" في الحقل Auto-login username: بعد ذلك، نحتاج إلى الضغط على تصنيف SSH في قائمة التصفح: داخل هذا التصنيف، اضغط على التصنيف الفرعي "Auth". ستجد حقل في الشاشة يطلب منك إدخال المفتاح الخاص من أجل الاستيثاق "Private key file for authentication"، اضغط على زر "Browse": ابحث عن ملف المفتاح الخاص الذي حفظته، هذا المفتاح الذي ينتهي بـ ppk.، جدْه ثم اضغط على "Open" في نافذة الملف: الآن، في نافذة التصفح، نحتاج إلى الرجوع نحو شاشة "Session" التي بدئنا بها. هذه المرة، نحتاج إلى اسم الجلسة التي سنحفظها، ويمكنك تسميتها بأي اسم تريده، لذلك اختر اسمًا سهلًا لكي تستطيع تذكره لاحقا. عندما تنتهي، اضغط على زر "Save". الآن، لقد حفظت جميع بيانات الإعداد التي تحتاجها للاتصال بخادومك. الاتصال بخادومك باستخدام جلسة PuTTY مسجلة الآن، بعد أن حفظت جلستك، يمكنك استدعاء هذه القيم في أي وقت بالعودة إلى شاشة "Session"، واختيار الشاشة التي ترغب باستخدامها في جزء "Saved Session"، ومن ثم الضغط على "Load" لاستعادة جميع الإعدادات، وهذا سيملأ جميع الحقول بالخيارات التي اخترتها سابقا. عندما ترغب بالاتصال بخادومك، اضغط على زر "Open" في شاشة "Sessions" بعد أن تُحمّل جلستك: في المرة الأولى التي تتصل بها بمضيفك عن بعد (remote host)، سيطلب منك التأكد من هوية الخادوم البعيد (remote server)، وهذا الإجراء عادي متوقع في المرة الأولى التي تتصل بها بخادوم جديد، لذلك اختر "Yes" للاستمرار. بعد ذلك، ستجد أنه قد قام بتسجيل دخولك إلى خادومك بدون أن يسأل على كلمة المرور: وبهذا، نجحت في إعداد مفاتيح SSH مع Digital Ocean. الخاتمة يمكنك الآن إنشاء خواديم على Digital Ocean باستخدام مفتاح SSH العام بكل سهولة، ويمكنك استخدام مفاتيح SSH التي أنشئاها على العديد من الخواديم كما تشاء. ترجمة -وبتصرف- للمقال: How To Use SSH Keys with PuTTY on DigitalOcean Droplets for Windows users لصاحبه Justin Ellingwood.
  16. ستحتاج في هذه الحالة إلى خبرة برمجية وإلى وسيلة دفع (كاشيو أو بايبال...)، لا أنصحك ببناء الموقع بنفسك لأنه يتطلب محترف في البرمجة والأمن، لأن أي اختراق للموقع قد يسببك لك خسائر مالية وفقدان عملاءك. يمكنك توظيف مبرمج من موقع مستقل. على جانب: توجد سكربتات مشابهة لموقع خمسات وفيفرر، يمكنك شراؤها واستخدامها.
  17. يوجد عدة طرق لحل هذه المشكلة: الطريقة الأولى: قم بلإقلاع بالوضع الآمن وتأكد من الأخطاء والمشاكل (طريقة الإقلاع بالوضع الآمن). بعد ذلك قم بعمل clean boot (شرح عمل clean boot). الطريقة الثانية: قم بفصل محرك الأقراص الصلبة الخارجية(the external hard drive) ثم أعد تثبيت برنامج Western Digital Smartware. الطريقة الثالثة: حمّل وثبّت النسخة الأخيرة من برنامج Western Digital Smartware من هذا الرابط. المصدر
  18. الأسواق العربية ضعيفة نوعا ما بالمقارنة مع الأسواق الأجنبية، لكن حسب ما أراه أن لغات الويب هي الأكثر طلبا في الأسواق في الفترة الحالية (لغات PHP وHTML وغيرها بالإضافة إلى أطر الويب مثل Ruby on Rails)، وبعدها تأتي لغة جافا وبرمجة تطبيقات الهواتف الذكية. ستجد كذلك أن لغات C# وC++ وبيسك غيرها تستعمل في الكثير من الشركات.
  19. فكرت بنصحه بهذه الفكرة لكن الا تعتقد أن الانتقال من بايثون إلى لغة أصعب مثل السي وسي بلس بلس سيكون أكثر صعوبة؟ مثلا في بايثون أنت لا تحتاج إلى الإعلان عن أنواع المتغيرات قبل استخدمها.
  20. الإجابة عن هذا السؤال يعتمد على حاجتك للبرمجة والبيئة المستهدفة، فإذا أردت برمجة برامج لأنظمة ويندوز ففي هذه الحالة يُنصح بتعلم لغة فيجوال بيسك أم لو أردت برمجة برامج تعمل على أنظمة متعددة (ويندوز، لينكس، ماك) فأنصحك بتعلم لغة سي بلس بلس. لو تعلمت لغة سي بلس بلس ستتمكن من تعلم لغات سي وسي شارب وجافا بسهولة كبيرة بسبب التشابه الكبير بين هذه اللغات. حسب رأيي الشخصي: أنصح بتعلم لغة سي بلس بلس.
  21. حسب علمي أنه حتى الإضافات قد لا تحل لك هذه المشكلة لاختلاف الشيفرة البرمجية من قالب لآخر.
  22. أعتقد أن أبسط حل لهذه المشكلة هي عن طريق استخدام طريقة تحديث البيانات في mysql، حيث ستضع بيانات الملف الأول ثم حدّث الصف وضع بيانات الملف الثاني عند رفع الملف الثاني. كما أنه من الأفضل فصل الفورم إلى فورمين، كل واحد يرفع الملفات في مجلد معين، ثم ضع البيانات في صف واحد كما شرحتُ بالأعلى. لمزيد من المعلومات حول تحديث البيانات في php وmysql، قم بزيارة هذا الدرس.
  23. سأجيب حسب ما فهمته من سؤالك، قمت بكتابة موقع باستخدام php وhtml (أو تطبيق أندرويد)وتريد أن تربطه بلوحة تحكم قمت بإنشائها في وقت سابقا أو حصلت عليها من الإنترنت أو... لربط لوحة تحكم بموقع معين تحتاج إلى القيام ببعض التغييرات في البرمجة والإعدادات، وسيكون التحكم بموقع html أسهل من موقع php على الرغم من أن مواقع php متطورة أكثر من HTML وتتميز بحيويتها (Dynamic). أما بالنسبة لتطبيقات أندرويد فحسب فهمي لسؤالك أنك ستنشئ تطبيق أندرويد مرتبط بقاعدة بيانات على الإنترنت (موقع اخباري مثلا) وفي هذه الحالة يمكنك وضع لوحة تحكم واحدة للموقع والتطبيق سواء كان يعمل على نظام أندرويد أو أجهزة أيفون. إذا كان فهمي خاطئا فأرجو منك اعطائي المزيد من المعلومات لمساعدتك.
  24. بايثون ضعيفة نوعا ما مع أندرويد. للمزيد من المعلومات يمكنك الإطلاع على هذه الإجابة.
  25. توجد نوعين شهيرين من أنواع الإستضافة على شبكة الإنترنت، الأولى هي استضافة المواقع الإعتيادية (المكتوبة بلغة PHP و HTML وغيرها مثل ووردبريس ...) وتتميز هذه الإستضافة بأنه الأرخص والنوع الثاني هي استضافة VPS ويُنصح بها لمن لديه خبرة في التعامل مع أنظمة لينكس ويحتاج إلى خادم قوي لتنصيب موقع عليه (خاصة المواقع التي تم إنشاؤها عن طريق أطر ويب مثل Django و Ruby On Rails). إذا أردت استضافة VPS رخصية فأنصحك بشركة Digital Ocean فأسعارها ما بين 5$-80$ شهريا. طبعا لإنشاء موقع تحتاج أيضا إلى اسم نطاق -دومين- ويمكنك الحصول عليه من أي شركة تستضيف أسماء النطاقات وفي الغالب يكون سعره ما بين 5$-20$ سنويا.
×
×
  • أضف...