نشر مشروع جانغو على منصة PythonAnywhere

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

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

اما الخدمة الاخرى التي سنستخدمها هي GitHub وهي خدمة إستضافة الأكواد البرمجية ومعظم المبرمجين يمتلكون حساب على هذه الخدمة وقد جاء دورنا الأن لإمتلاك حساب على هذا الأخير .

ثلاثة اماكن ستكون مهمة بالنسبة إليك : جهاز الكمبيوتر الخاص بك الذي سيكون مكان للتطوير والتجريب وعندما تكون مسرورا بالتغييرات ستحمل نسخة من البرنامج إلى  GitHub وسيكون موقعك على PythonAnywhere وستقوم بتحديثه من خلال موقع GitHub. أكمل القراءة →

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

لوحة تحكم بموقع جانغو

تعتبر واجهة مدير المواقع او لوحة التحكم جزء اساسي من البنية التحتية لفئة واسعة من المواقع الإلكترونية وتعتبر هذه الواجهة أي (لوحة التحكم) واجهة محدودة الوصول وهي تقتصر على مسؤول الموقع فقط أو أشخاص موثوق بهم مصرح لهم بالوصول ويمكن القيام بالكثير من الأمور على واجهة التحكم مثل إضافة،تعديل،حذف محتويات الموقع ومن أهم وأشهر الأمثلة يمكننا  كتابة ونشر مواضبيع جديدة على مدونتك.
ولكن هناك مشكلة مع واجهة المدراء وهي الشعور بالملل عند العمل على إنشاءها ، فنحن نحب تطوير الويب عندما يتعلق الامر بواجهة الموقع الخاصة بالزوار حيث يمكن إضافة أو حذف أمور وكل على حسب إبداعه ولكن عندما يتعلق اﻷمر بواجهة التحكم فالأمر واضح وهو لا يتغير من موقع الى أخر فكل ماعليك هو العمل على مصادقة المستخدمين ،عرض النماذج ، التحقق من صحة المدخلات وهلم جرا أليست عملية مملة ومكررة ؟

إذا ماهو جديد جانغو حول هذه العمليات المتكررة المملة ؟ جانغو يقوم بكل هذه العملية مع بضع سطور برمجية لتكون واجهة التحكم جاهزة للعمل .

اليوم سنتكلم عن واجهة المدير التلقائية الخاصة بجانغو وتعمل هذه الميزة من خلال قراءة البيانات الوصفية الموجودة في نموذجنا لتوفير واجهة قوية و جاهزة للإنتاج من قبل مسؤولي الموقع وسنتعلم كيفية تفعيلها وتخصيصها بما يناسبنا . أكمل القراءة →

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

تثبيت جانغو

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

البيئة الافتراضية

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

أكمل القراءة →

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

كيفية إستعمال مكتبة PILLOW

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

قواميس بايثون

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

 
إنشاءالقاموس

weekend = { "Fri": "Friday", "Sat": "Saturday" }
vals = dict(one=1, two=2)
capitals = {}
capitals["Algeria"] = "Alger"
capitals["Morocco"] = "ٌRabat"
capitals["Tunisia"] = "Tunisia"


print weekend
print vals
print capitals

في المثال السابق قمنا بإنشاء ثلاثة قواميس بثلاثة طرق مختلفة ثم قمنا بعرض محتويات تلك القواميس باستخدام الدالة print
 

weekend = { "Fri": "Friday", "Sat": "Saturday" }

في هذا المثال قمنا بإنشاء قاموس خاص بنهاية الأسبوع بطريقة التدوين الحرفي حيث يتم كتابة كل محتويات القاموس المفتاح والقيمة داخل القوسين {}ويتم كتابة المفاتيح والقيم بين العلامة ” “
ويم الفصل بينهما ب النقطتين : حيث Fri هي المفتاح و Friday هي القيمة .

vals = dict(one=1, two=2)

في المثال الثاني قمنا بإنشاء القاموس باستخدام الدالة dict()

capitals = {}
capitals["Algeria"] = "Alger"
capitals["Morocco"] = "ٌRabat"
capitals["Tunisia"] = "Tunisia"

في هذا المثال قمنا بإنشاء قاموس فارغ ثم بدانا بإضافة ثلاثة أزواج إلى القاموس حيث يتواجد المفتاح بين العلامتين [] والقيمة تتواجد على يمين علامة التعيين =.

العمليات الأساسية

في المثال التالي سنقوم بعرض بعض العمليات الأساسية المتعلقة بالقواميس على بايثون.
basket = { 'oranges': 12, 'pears': 5, 'apples': 4 }

basket['bananas'] = 5

print basket
print "There are %d various items in the basket" % len(basket)

print basket['apples']
basket['apples'] = 8
print basket['apples']

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

basket = { 'oranges': 12, 'pears': 5, 'apples': 4 }

حسنا قاموس السلة تم إنشاءه ويحتوي على ثلاثة مفاتيح بقيمها.
 

basket['bananas'] = 5

قمنا بإضافة مفتاح وقيمة أخرى إلى القاموس حيث bananas مفتاح و 5 قيمة المفتاح .
 

print "There are %d various items in the basket" % len(basket)

الدالة len ستعطينا عدد المفاتيح الموجودة على القاموس.
 

print basket['apples']

عرض قيمة المفتاح apples.

basket['apples'] = 8

قمنا بتغيير قيمة المفتاح appels لتصبح 8.

المفاتيح والقيم

لكي نقوم بعرض مفاتيح أو قيم قاموس ما نقوم بعمل مايلي:
domains = { "de": "Germany", "sk": "Slovakia", "hu": "Hungary",
    "us": "United States", "no": "Norway"  }

print domains.keys()# عرض جميع مفاتيح القاموس فقط
print domains.values()# عرض جميع قيم القاموس فقط  
print domains.items()#عرض جميع مفاتيح وقيم القاموس

انتـــــــــــهى.

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع