Thursday, October 18, 2018

Virtual Enviroment (venv) البيئة الوهمية

Virtual Enviroment (venv)

مدخل الى البيئات الوهمية

Virtual Enviroment

السلام عليكم ورحمة الله وبركاته

قد تقرأ هذا المقال في وقتا قليلا جدا ولكن لا يغرنك ذلك فمقال اليوم يتحدث عن اداة صغيرة ولكن مهمة جدا لأي مطور ويب يستخدم لغة البرمجة بايثون فهذة الاداة سوف تستخدمها في كل مشروع تقريبا ان لم تكن سوف تستخدمها في كل مشاريعك بالضرورة فمعظم مطوري الويب بلغة البايثون لا يستطيعون الاستغناء ابدا عن هذه الاداة فهي الاداة الاولى التي يستخدمها في كافة مشاريعه

: تكلمنا كثيرا فلنبدأ مقالنا

.مقال هذا اليوم عن ما يسمى بالبيئة الوهمية

Virtual Enviroment (venv)

وهي ليست بيئة بالطبع يعيش فيها المطور ولكن هي اداة مثلها كمثل اي اداة اخرى يستخدمها المطور في بيئة التطوير التي يستخدمها وسوف يكون لنا مع بيئة التطوير بما تتضمنها هذه البيئة مقال بأذن الله تعالى

فهي تتيح للمطور الاحتفاظ بمتطلبات مشروع الويب الذي يستخدمها في هذا المشروع منفصلة عن اي شيء خارجي في ملف او مجموعة ملفات معزولة غير قابلة للتغييرات الخارجية مما تتضمنها هذه البيئة .. لا تستعجل وتابع معنا وسوف تفهم بأذن الله ما نريد ان نوضح

لماذا البيئة الوهمية ؟

تخيل معي مشروعين ويب الاول تستخدم فيه Django 1.9 والاخر تستخدم فيه Django 2.0 سوف يعمل الاثنين ولكن ما سوف تتضمنه الشفرة البرمجية في المشروع الاول ليس بالمثل ما سوف تتضمنه الشفرة البرمجية Script Code بالمشروع التاني فانه يوجد اختلاف في دوال اطار العمل الاول عن اطار العمل الثاني في طريقة كتابة تلك الوحدات المستدعاة .. لنأخذ مثالا أخر

في نسخة البايثون 2 تعلمنا اول دالة في حياتنا البرمجية مع هذه اللغة بطباعة كلمة Hello, World ولكن هل تتذكر كيفية القيام بذلك ؟ بالطبع وهل هناك اسهل

في الصورة تم استخدام نفس الدالة في نفس الوقت مع الاصدارين من لغة بايثون ولكن تم اطلاق خطأ نحوي في الاصدار 3 من نفس اللغة فتخيل معي اذا ما كنت تستخدم الاصدار الثاني في مشروعا ما وقد انهيت مشروعك للتو ومن ثم تم اصدار الاصدار الثالث مباشرة فلابد ان تقوم بتعديل جميع الدوال التي تم تغييرها في الاصدار الجديد والا سوف تقابل الكثير من الاخطاء البرمجية

متى وأين نستخدم البيئة الوهمية؟

لن نتكلم كثيرا في هذا الشأن ولكن بالعودة الى الامثلة السابقة يجب ان نقول انه لابد وحتما من استخدام البيئة الوهمية في جميع مشروعاتك ففي المثال السابق عندما تحدثنا عن المشروعين المستخدم فيهم اطار الجانجو بأختلاف الاصدارين فعند تفعيل هذين المشروعين فسوف نقابل اخطاء عند محاولة تشغيلهما .. فلن تتعرف لغة البرمجة بايثون عن اصدارهما حتى نعلمها ذلك

فبذلك قد اجبنا عن متى نستخدمها والان اين نستخدمها ؟ نستخدمها في نفس مجلد المشروع ولكن مجلد البيئة لا يفضل ان ننشأ او نعدل او نمسح منه ملفات

كيف نستخدم البيئة الوهمية؟

تحدثنا في المقال السابق عن ماهية الوحدات وما تقدمه لنا لغة البرمجة بايثون من ادوات تساعدنا على التطوير فمن هذه الوحدات توجد وحدة تسمى ب Virtualenv وهي اختصار لكلمة البيئة الوهمية

تمكننا هذه الوحدة المبرمجة مسبقا بعمل بيئات وهمية وتفعيلها وتحميل ما نحتاجه في تطوير كل مشروع على حدى والاحتفاظ بكافة هذه الملفات كما قلنا مسبقا منفصلة وغير قابلة للتطوير الا اذا اردنا (المطور) ذلك

اولا تحميل الوحدة من خلال Python Package Manger المسمى pip من خلال كتابة التالي في الطرفية

$ pip install virtualenv

والان لنتأكد انها تعمل من خلال الامر التالي

$ virtualenv --version

الان وقد انزلنا الوحدة الخاصة لنذهب ونجرب كيفية عمل هذه الوحدة مع مشاريعنا المستقبلية

اوك . لنذهب الى جهازي الشخصي ولنقوم بعمل مشروع صغير

من خلال الطرفية نقوم بعمل مجلد

$ mkdir project

والان نذهب الى الملف ونقوم بعمل بيئة وهمية

$ cd project
$ python3 -m virtualenv venv

فلنذهب الى ملف المشروع ونرى ما التغيرات وسوف نجد انه تم عمل ملف بيئة وهمية نحتاج الى التنصيب بداخلها الوحدات التي يتطلبها مشروعنا

قبل اي شيء لابد وتفعيل هذه البيئة الوهمية لتنصيب الوحدات بداخلها فكما قلنا انها بيئة منعزلة عن بيئة الكومبيوتر او السيرفر بوجه عام فبالتالي ما ينصب بداخلها لا ينصب بالكاد داخل الكومبيوتر او السيرفر والعكس صحيح ولعمل ذلك نقوم بكتابة الامر التالي في الطرفية

$ source venv/bin/activate

وللتأكد من تفعيل البيئة سوف نرى اسم البيئة في يسار الطرفية

والان تم عمل البيئة بنجاح وايضا تم تفعيلها ونحن جاهزون للعمل

لنفترض اني سوف اقوم بتطوير مشروع ويب يحتاج تنصيب اطار عمل الفلاسك لابد وتنصيب الاطار بداخل البيئة بعد تفعيلها كما في الصورة التالية من خلال الامر

$ pip install flask

والان اتمنى لك رحلة تطوير برمجية رائعة ان شاء الله

ملحوظة عند تشغيل اي برنامج لابد وتفعيل البيئة ومن ثم تشغيل البرنامج من داخلها

بافتراض وجود ملف يطبع كلمة اهلا يتم تشغيله بالطريقة التالية

  1. الذهاب الى ملف المشروع

    $ cd project
  2. تفعيل البيئة الوهمية

    $ source venv/bin/activate
  3. تشغيل البرنامج من خلال البيئة الوهمية

    $ python3 app.py

وفي الاخير اتمنى ان اكون قد وفقت في تقديم هذا الشرح والباقي يأتي بأذن الله

مجموعتنا على الفيس بوك

حسابي الشخصي

السلام عليكم ورحمة الله وبركاته

Friday, October 5, 2018

Django vs Flask in Arabic

Flask Vs Django in Arabic بالعربي

Flask Vs Django in Arabic

فلاسك وجانغو بالعربي

Flask_Vs_Django_Picture

السلام عليكم ورحمة الله وبركاته

يسأل الكثير عن ما هو اطار العمل فلاسك ودائما ما كنت ابحث عن ما يشرح ماهو الفلاسك باللغة الانجليزية لكي اجاوب عليهم ولكن الغالب ما ارتبط هذا الاسم مع اسم اطار اخر وهو جانغو لذلك سأحاول ان اشرح في هذا المقال ماهو فلاسك وان اجيب عن اغلب الاسألة المتعلقة به .. نبدأ على بركة الله اذا ما كنت اخترت لغة البرمجة بايثون الشهيرة كلغتك البرمجية الاساسية وكنت تهوى تطوير الويب بها فأمامك الخيارات كثيرة عند تطوير الويب باختيار فريم ورك او اطار عمل للتطوير من خلاله وكما قلنا الخيارات كثيرة .. فمن هذه الخيارات وليس جميعها

فلكلا منها طريقة عملها ومطوريها والشركات الداعمة لها كما الحال في اطارات العمل لتطوير الواجهات الامامية . انا شخصيا عندما بحثت عن اطار عمل لتطوير الويب فضلت انا استخدم فلاسك ولي اسبابي المتعددة لن اكون متحيزا في هذا المقال ولكن سوف أقوم بشرح ما هو الفرق بين فلاسك وجانغو لارتباط الاسمين كثيرا ببعضهما عن البحث عن واحد منهم على محركات البحث . ولذلك طرأ ببالي ان اقدم لي ولكم هذا المقال لشرح ما هو الفرق بين اطارين العمل ولكن قبل ان اقوم بذلك لابد وان نعلم ان الاطارين مشهورين على نطاق كبيرا جدا وقد يكونوا هم الاشهر والمنافسين في عالم تطوير الويب من خلال لغة البايثون

:اولا الفلاسك

وهو اطار عمل مبني على لغة البايثون يركز على اقل امكانيات لعمل تطبيقات الويب يتيح للمطور اختيار ما يود ان يلحقه بالتطبيق من وحدات وقد تم تطويره على هذه الطريقة تسهيلا على المطورين اللذين يفضلون ان يقوموا بكافة الاعمال بأنفسهم واذا ما ما قمنا بمقارنة ذلك مع لغة البرمجة بي اتش بي على سبيل المثال سنقول ان ذلك كأنك تقوم بعمل تطبيق بطريقة الناتيف

:ثانيا الجانغو

وينطق بهذه الطريقة وقد احبب ان انوه عن ذلك نظرا لأن الكثير ينطقه دجانغو فأول حرف من اسمه في اللغة الانجليزية لا ينطق وهو اطار عمل كبير جدا تم تطويره على مبدأ يأتي ببطارياته بمعنى انه يأتي بكافة وحداته التي قد يحتاجها اي مطور لعمل تطبيق الويب الخاص به ولا يحتاج لأي وحدات اخرى خارجية (قد يرى ذلك بعض المطورين ايجابا ويراه الاخر على انه سلبا) فيغنيك الجانغو عن الاحتياج لأي وحدات خارجية لتلحقها بتطبيق الويب الخاص بك ولكن تحتاج لاستدعاء كافة هذه الوحدات في كل مرة تقوم بعمل تطبيق ويب


وقبل ان تقرر عزيزي القارئ ايهم افضل لك لنستعرض مميزات وعيوب كلا من الاطارين

  • سرعة التطوير -
  • منحنى التعلم -
  • المرونة والتحكم -
  • المجتمع -
  • الانتشار -

: سرعة التطوير

تم عمل الجانغو لتطوير التطبيقات (تطبيقات الويب) المعقدة بسرعة محملا بكل ما يحتاجه للعمل خارج الصندوق فالمطورين لديهم كل ما يحتاجونه لتطوير تطبيقات معقدة وقابلة للتوسع وايضا لاعادة التطوير في اي وقت وفي نفس الوقت الفلاسك بكل بساطة يتيح للمطورين عمل تطبيقات صغيرة وايضا قابلة للتوسع في اقل وقت ممكن

: منحنى التعلم

بالنسبة لاولئك اللذين لا يشعرون براحة شديدة مع لغة البرمجة بايثون فمن المقبول بشكل عام ان يكون للجانغو منحنى تعلم اكثر من الفلاسك فالجانغو يتبع طريقة معينة في التطوير يمكن لاي من المبتدأين تعلمه ما اذا اردت تغيير فريق المطورين في منتصف تطوير مشروع تطبيق على عكس الفلاسك فلابد للمطورين الجدد ان يكونوا ذو خبرة ليكونوا قادرين على فهم بنية ومبادئ المشروع اكثر من المبتدأين

: المرونة والتحكم

واحد من اعظم مزايا الفلاسك هو البساطة والحدودية. لا شروط على الاطلاق بمعنى ان المطور يمكنه ان يلحق بالتطبيق الخاص به اي شيء كما يريد باستخدام وحدات ومكتبات خارجية في اي وقت وذلك ما يجعله شديد البساطة في المرونة . الجانغو على العكس تماما فكما قلنا من قبل ان الجانغو يأتي بجميع وحداته الخاصة به والمزايا المبنية بداخله بالفعل فلا يتيح لك الحرية والمرونة التي يتيحها لك الفلاسك

: المجتمع

واحد من احسن المزايا المتعلقة بجانغو هو انه يملك مجتمع فعال كبير جدا فلو احتجت مساعدة او تكوين فريق من المطورين للعمل على التطبيق الخاص بك فمن السهل جدا ايجادهم بجانب ان هناك العديد من المصادر التي تجدها ما اذا احتاجت مساعدة في اي وقت تريد فيه توسيع التطبيق الخاص بك على عكس الفلاسك فأيضا الفلاسك له مجتمعه الكبير ولكن ليس بكبر حجم مجتمع الجانغو فلذلك سيكون ايجاد المطورين والمساعدة اصعب بقليل

: الانتشار

جانغو اطار عمل واسع الانتشار . اول اصدار له كان في عام 2005 وذلك يعني انه يحتوى على اضافاته التي قد يحتاجها وتطبيقات البعد الثالث مغطية كل ما يحتاجه مطوريه بمقارنة فلاسك معه فأن فلاسك يعتبر الاصغر فقد تم اصداره في 2010 فلذلك لا يحتوى على الاختيارات ذاتها

ايهما افضل لك ؟

- عندما تقرر ايهما افضل لك لتطبيقك الخاص حيث لكل منهم مميزاته وعيوبه من الافضل ان تعرف الاحتياجات الخاصة بتطبيقك .

: حجم المشروع

عندما تفكر في استخدام احد من الاطارين الافضل ان تعرف حجم المشروع الذي تعمل عليه فأن فلاسك مناسب كثيرا للمشروعات الصغيرة الغير معقدة بينما جانغو مصمم للمشروعات الاكبر والاكثر تعقيدا والمزدحمة فعند التفكير في المخطط الذي ينمو به حجم مشروعك فأن فلاسك سوف تتطلب منك عمل كل الخواص بنفسك بينما سيكون من السهل عمل ذلك في الجانغو

: الهيكلة

اذا ما كانت هيكلة مشروعك تتطلب العديد من المكتبات الخارجية واطارات العمل التي قد تحتاجها لتخصيصها لك على حسب متطلباتك فالفلاسك بالتأكيد هو اختيارك اما ما اذا كنت لا تحتاج ما سبق فأن الجانغو سيوفر عليك الكثير من الوقت والجهد

: واخيرا

عند المقارنة بين الفلاسك والجانغو ليس الهدف ان نشير الى ان واحد من الاطارين اهم من الاخر ولكن الهدف ان نجعل من السهل لك عزيزي القارئ ان تقرر ايهما افضل لك بنفسك طبقا لاحتياجاتك الشخصية واحتياجات مشروعك الخاص

كلا من الاطارين يمكن بهما ان تقوم بعمل نفس التطبيقات بالظبط فاذا ما كان منحنى التعلم افضل للجانغو فأن السهولة والمرونة افضل للفلاسك. واذا ما كان مجتمع الجانغو اكبر من مجتمع الفلاسك فأن 5 سنين فرق بين ولادة الاطارين وحجم المنافسة بينهم تدعوك للسؤال كيف ذلك . وايضا اود ان انوه عند اختيار واحد من اطار العمل ان اقول ان ليس هناك حل مناسب لجميع الحلول فأن الاحتياجات الخاصة بالمشروع هي من تقرر ايهم يجب ان تستخدم لهذا المشروع. والأن اتركك ان تقرر بنفسك وان تطلعنا على رأيك وايهم سوف ان تختار ان تعمل به ولماذا ذلك ؟ نتمنى نشوفك في جروبنا على الفيس بوك