القائمة الرئيسية

الصفحات

- أكوا ويب


يمكنك الحصول على إستضافة لا محدودة من ناحية المساحة و الزيارات بسعر 2.9$ مع هذه الإستضافة الرائعة !

Posted: 02 Jun 2018 02:33 PM PDT

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

يمكنك الحصول على إستضافة لا محدودة من ناحية المساحة او الزيارات بسعر 2.9$ مع هذه الإستضافة الرائعة !


- إستضافة FoxHosts: 

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

بما تمتاز إستضافة FoxHosts على غيرها من الإستضافات ؟ 


إستضافة FoxHosts توفر العديد من المزايا، الى جانب بعض العيوب أيضا كما الحال بالنسبة لجميع الإستضافات و سنحاول توضيح الكل في الكل في هذه الفقرة : 
- من ناحية الأداء، فهي جيدة و إحترافية، ان قمت بإستضافة موقعك في هذه الإستضافة، فمباشرة ستجد ان موقعك قد ولد، و صار شغالا، تمنحك الإستضافة خاصية ترافيك لا محدود، و مساحة قرص صلب لا محدودة، لذلك لا داعي للقلق بشأن عدد الزوار الذي يجب عليك الحصول عليه حتى لا ينهار موقعك، في الإستضافة تغطي ذلك تماما، هذه الخاصية لا نجدها في إستضافات أخرى بسعر رخيص، ففي الغالب للحصول على إمكانيات قوية للسيرفر او الإستضافة التي ستحصل عليها، توجب عليك الحصول على الخطة ذات السعر الجيد، في حين إختيار اي خطط متوسطة او الادنى، فستجد مشاكل كثيرة مع الإستضافة و مع إستقامة موقعك بشكل صحيح فيها . 
 - الـ Unlimited Bandwidth : في الغالب و في إستضافة معينة بسعر معقول، لديك عدد محدد من الـ Bandwidth او رصيد لعدد الزوار او المستخدمين الكليين في الصفحة، إن وصل إلى الحد الأقصى ففي الغالب اما ينهار السيرفر او لا يسمح بالوصول للموقع لأي شخص اخر، و للحصول على الـ Unlimited تطلب منك الحصول على الخطة الكاملة او خطة البيزنس في معظم الإستضافات، في حين يمكنك الحصول عليها في إستضافة FoxHosts في الحساب الأرخص و العادي . 
- الـ Unmetered Space Disk : او مساحة تخزين لا محدودة، و بهارد SSD أيضا في السيرفر الذي ستحص عليه، و كما الحال بالنسبة للـ Unlimited فلا يمكنك الحصول على المثل الا في الخطة  الكاملة و الخطة المتوسطة او الرخيصة  توفر لك فقط مساحة محددة ( 5 جيغا مثلا ) كأقصى حد للإستخدام و سيتوجب عليك تطوير المساحة لاحقا . 

- دعم الـ Web Hosting لخدمات و منصات مختلفة : شخصيا قمت بتنصيب الووردبريس في الإستضافة لأنها كانت الهدف الأصلي من الإستضافة، و هي تدعم بشكل جيد الووردبريس، في الحقيقة سأنصحك أن تستخدم الإضافة ان كنت تريد تضمين منصة الووبردبريس عليها لأن الإستضافة بنفسها تروج لكونها إستضافة مخصصة لمنصة Wordpress، تدعم أيضا مجموعة من أنواع الـ Web Hosting، فإن كان موقعك ستاتيكي، او عبارة عن سكربت Php فالمنصة مناسبة لك، لكنها غير مناسبة إطلاقا لخدمات او مواقع أكثر تعقيدا مثل Laravel, Rails و غيرها فالإستضافة لا تدعمها، و سيتوجب عليك الحصول على إستضافات اخرى، غير هذا فهي فعالة و إحترافية في لرفع المواقع بالطريقة المعروفة او على منصة الـ Wordpress . 

- مميزات الحسابات و العروض في إستضافة FoxHosts : 

قد يتبادر الى ذهنك، إن كانت كل هذه الخدمات متوفرة، فلما توفر الشركة او الإستضافة حسابات اخرى او خطط إستضافة اخرى بأسعار أكثر ؟ السبب يمكن في عدد المواقع، ففي الخطة العادية للموقع المتوفرة بسعر 2.95$ تستطيع فقط الحصول على موقع واحد، اي ان السيرفر او الإستضافة التي ستحصل عليها ستستطيع تنصيب موقع واحد فقط فيها، بينما في الخطط الأخرى توفر لك إمكانية إضافة أزيد من موقع، و إستخدام الإستضافة على شكل VPS تستطيع من خلاله تنصيب و إدارة أزيد من موقع من خلال إستضافة واحدة.
عودة بنا لأهم مميزات و خدمات هذه الإستضافة، يوجد كذلك إمكانية إدراج إيميلات مختلفة و غير محدودة في الإستضافة، يمكنك أيضا الحصول على عدد لا محدود من النطاقات الفرعية للنطاق الذي ستقوم بشرائه في الإستضافة، تأتي الإستضافة أيضا مع منصة Softaculous، و هي منصة تسمح لك بتنصيب مجموعة من المواقع او الخدمات الجاهزة مثل Wordpress, Drupal, Joomla و غيرها، اما سرعة السيرفر حسب ما جاء في أقاويل الموقع، فهي سريعة بشكل دائم بنسبة 99%، كل هذا توفره لك بالطبع إستضافة FoxHosts في الحساب العادي فقط . 

 تذكر جيدا اخي القارئ، ان إقتنائك لإستضافة من FoxHosts بسعر 2.95$ بدفع شهري، اي ستحجز الإستضافة بهذا السعر لشهر فقط، يمكنك إختيار المدة التي تريد بنفس السعر دون زيادة، لكن لحظة، يوجد إستضافات تقدمها فقط ب 0.99$ فهل تمازحني ؟ في الحقيقة لا، فكما أخبرتك أن تحصل على إستضافة بسعر 2.95$ شهريا مع ترافيك لا محدود، نطاقات فرعية غير محدودة، مساحة غير محدودة هو أمر لا تجده إطلاقا في الإستضافات الأخرى بحيث توفر لك نفس الميزة بأزيد من 15$ شهريا يا صديقي . 
تذكر أيضا ان إقتنائك لإستضافة يعني حصولك على إستضافة و ليس نطاق او دومين معها، بحيث سيتوجب عليك إقتناء نطاق لاحقا، او ربط نطاق مسبق لك مع الإستضافة من أجل الوصول إلى الموقع عن طريق نطاق مخصص، غير هذا لازال بإمكانك الإطلاع على محتوى موقعك عبر الـ IP إن اردت . 
اما للحصول على الإستضافة، فتبدأ اولا بطلب الخطة التي تريد ( إختر العادية بسعر 2.95$ فهي مناسبة  و جيدة ) بعدها تقوم بإتمام خطوات و عملية الدفع ( يتم الدفع عبر خدمة PayPal )، تنتظر لبرهة و بعدها تتوصل في بريدك الإيميل الذي تسجلت به بمعلومات حول إستضافتك و كيفية الولوج إلى الـ cPanel و التحكم فيها و كل شيئ . 
إذن ما رأيك بهذه الإستضافة ؟ هل هي جيدة ؟ هل تود الإطلاع عليها أكثر ؟ تفضل : 


قم بزيارة استضافة FoxHosts من هنا


أساسيات و مفاهيم يجب عليك إدراكها حول البرمجة كائنية التوجه OOP ( الجزء السادس- الـ Encapsulation)

Posted: 02 Jun 2018 03:14 PM PDT

 يا مراحب بأصدقائنا الاعزاء في مقال جديد من دورة السلسلة المقالية لتعلم و إتقان و فهم مبادئ الـ OOP لإستخدامها تقريبا في كل اللغات البرمجية كائنية التوجه، وصلنا للدرس السادس، قدمنا من خلال 5 دروس سابقة بعضا من أهم المفاهيم التي ربما قدمت لك فكرة عن البرمجة كائنية التوجه و خواصها المبدئية، ففي أول درس راجعنا معك مفهوم الكلاس، الركيزة الأساسية التي تبدأ منها البرمجة كائنية التوجه، و شرحنا أساسيات و مكونات الكلاس عامة، ثم إنتقلنا بعدها مباشرة لشرح الـ Object و الذي فسرناه على أنه الـ Instance او الناتج الذي يحمل كل خواص الكلاس بعد إنشائه بتبعية إسم الكلاس بالطبع، و لإدارة انواع المعلومات التي يستطيع الـ Object الوصول إليها و التعديل او الحفظ فيها قمنا بالتعرف على الـ Access Modifiers و أنواعها و كيف تعمل، ثم راجعنا معك في الدرس الأخير مفهوم الـ Constructors الذي يسمح لنا بالقيام بمهمة او كود معين حين صناعة Object بالطريقة العادية، او القيام بعملية معالجة Processing للبيانات المدخلة في حالة تم إدخالها عن طريق Constructor Parametrized . 
اليوم سنتحدث عن مفهوم اخر في مجال الـ OOP و هو الـ Encapsulation، في الحقيقة و نعتذر عن هذا، لكن توجب علينا إصدار هذا المقال مباشرة بعد الـ Access Modifiers و ليس بعد الـ Constructors و ذلك لوجود بعض العلاقات بينهما التي قد نحتاجها في شرح هذا المقال، لكن لا مشكلة في ذلك مادام الأمر واضحا، قبل الشروع، قد تود الإطلاع على المقالات السابقة : 


  1. أساسيات و مفاهيم يجب عليك إدراكها حول البرمجة كائنية التوجه OOP ( الجزء الأول - تمهيد )
  2. أساسيات و مفاهيم يجب عليك إدراكها حول البرمجة كائنية التوجه OOP ( الجزء الثاني - Classes)
  3. أساسيات و مفاهيم يجب عليك إدراكها حول البرمجة كائنية التوجه OOP ( الجزء الثالث - الـ Objects)
  4. أساسيات و مفاهيم يجب عليك إدراكها حول البرمجة كائنية التوجه OOP ( الجزء الرابع - الـ Access Modifiers)
  5. أساسيات و مفاهيم يجب عليك إدراكها حول البرمجة كائنية التوجه OOP ( الجزء الخامس - الـ Constructors) 


أساسيات و مفاهيم يجب عليك إدراكها حول البرمجة كائنية التوجه OOP ( الجزء السادس- الـ Encapsulation)


- ما هو الـ Encapsulation ؟ 



انا كمبرمج، او شخص سيتستخدم برمجية معينة او كلاس معين، فسأستخدم في الغالب متغيرات او عناصر تلك الكلاس (Properties& Actions) كما شرحنا في درس الكلاس، لكن في الكثير من الأحيان سيتوجب علي ان اقوم بعملية معالجة قبل ذلك، علي الحد اولا من الوصول الكامل لتلك الـ Property، و علي الحصول على نتيجة نهائية في حالة اردت معالجته على مجموعة من المستويات، دعني أقدم لك مثالا بسيطا لتفهم الأمر بدقة أكبر، لنفترض انني في صدد إنشاء و برمجة نظام لتسجيل الأشخاص في موقع معين، سأطلب من الطلاب معلومات معينة و اقوم بإدخالها في النظام و هي مثلا : id, name, birth_year، لكن في خاصية سنة الولادة، سيتوجب علي القيام ببعض الحسابات من أجل إستخراج الـ Age، لأن ما يهمني هو الـ Age الذي يمكن إضافته على شكل Poperity الخاصة بالشخص، لكن لا استطيع سؤاله عن عمره، ربما قد لا يوفره لي بدقة أكبر ( مثل النساء 😐) لذلك كل ما سأطلبه هو بطاقة التعريف التي من خلالها سأدخل سنة الولادة، و سأستنتج عمر الشخص، لكن كيف يمكنني فعل ذلك ؟ مبدئيا ربما عليك صناعة Method جديدة لتقوم بعملية الحساب و إستخراج العمر على شكل Variable ثم تلفيق قيمة هذا المتغير الى عمر المستخدم من خلال الـ Object، لكن هذا الأمر غير عملي، ببساطة، يمكنني إستخدام عامل الـ Encapsulation الـ Set .
يتدخل هنا عامل و مبدأ الـ  Encapsulation، و يمكنا ترجمتها لعبارة " التغليف "، و هي إمكانية إضافة مدخلات و الحصول على مخرجات نهائية بعد عملية المعالجة، في حالتنا مثلا، يمكنني إختيار setAge ثم اقوم ببعض المعالجة، مثل اخذ السنة الحالية و نقصها من سنة الإزدياد الخاصة بالشخص، و أقوم بعدها بتلفيق النتيجة الى الـ Age الموجودة في الكلاس، و في حالة أردت الحصول او اظهار تلك النتيجة، يمكنك إستخدام getAge() من أجل إرجاع تلك القيمة، ما قمنا به في هذا المثال اليسيط هو عملية معالجة بسيطة تقوم بتحويل تاريخ الميلاد الى عمر المستخدم و تسجيله باحترافية اكبر . 


- كيف تجهيز الـ Encapsulation ؟ 



يتم تجهيز الـ Encapsulation في الكلاس الخاصة بك، و يتم تطبيقها على كل Properties مدرج في الكلاس، على سبيل المثال، سنأخذ مثال انشاء حساب في البنك، مع الأخذ بعين الإعتبار ان البنك الخاص بنا يقوم بتقديم هدية 50 دولار لمن ينشأ حسابا جديدا في البنك، فلدي كلاس خاصة بالمستخدم او الزبون او Customer، كلاس تتضمن مجموعة من الـ Properties على رأسها : accountNumber, fullname, email, phoneNumber, currentAmount، و سنقوم بتحضير الكلاس بالشكل التالي : 




سنبدأ بتطوير هذه الكلاس شيئا فشيئا حتى نصل لفقرة الـ Encapsulation، كما ترى قمنا بتحديد خواص الكلاص او Properties
و قمنا بجعلها كلها Private عن طريق الـ Access Modifiers و ذلك حتى لا نسمح للـ Object بإستخدامها بشكل مباشر و توجب عليه إستخدامها بطريقة أخرى ( وهي الـ Encapsulation )، دعونا الآن نحدد الـ Constructors و أساسياتها الخاصة، أهم شيئ سنحتاجه في الـ Constructors هو تحديد المبلغ الحالي في نقطة الـ 50 اي الـ 50 دولار التي يقدمها البنك الخاص بنا، في حالة تم إستخدام Default Constructor ليصبح الكلاس الخاص بنا على الشكل التالي : 



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

الـ Encapsulation هي عبارة عن Methods يتم إدراجها وسط الكلاس، تتضمن Access من نوع Public من أجل السماح له بالوصول من طرف الـ Object في حين تكون الـ Properties الخاصة به Private، يجب كتابة الـ Method بشكل واضح و تعبر عن مفهوم الـ Properties ايضا، بحث أفضل إستخدام لها هو تحديد set في بداية الإسم من أجل تعريفها على انها المخصصة بإضافة قيمة لذلك الـ Properity ، و get من أجل تعريفها على انها الخاصة بجلب تلك القيمة الخاصة بالـ Properities، دعونا نطلع أكثر على الكود التالي الذي قمن بإدراج بعض خواص الـ Encapsulation من خلاله : 





تبا يا رجل ما هذا الكود الطويل ؟ رويدك يا صديقي فنحن لم نشرح ما جاء فيه من أساسه و فور فهمه ستجده سهلا، ما قمنا به هو أخذ كل Properity الخاصة بالكلاس التي قمنا بتصنيفها Private و خصصنا لها وصولا محددا عن طريق الـ Encapsulation بإستخدام خاصيتي الـ Set و الـ Get ، و بحيث Set تعني إضافة القيمة للخاصية، بينما Get تعني جلب القيمة للخاصية، لنأخذ مثال accountNumber، قمنا بإضافة Method بإسم setAccountNumber هذه الـ Method تأخذ Parameter واحد و هو القيمة الجديدة التي سيأخذها الـ Account Number، ثم وسطها اقوم بعملية الـ Processing، فأقوم بالمناداة على الـ Properity التي قمت بتحديدها Private سابقا ( و كما اشرنا فيمكنني الوصول إليها مادمت في نفس الكلاس ) ثم أقوم بإضافة القيمة الجديدة الخاصة بالـ AccountNumber . 
لاحظ معي ان اسم الـ Parameter الجديد مشابه لإسم Properity في الكلاس، فكيف نقوم بالتفريق بينهما ؟ نقوم بذلك عن طريق عبارة this، فهي تعني : " إجلب لي المتغير او الخاصية الموجودة في هذه الكلاس كاملة "، بينما حذفها يعني : " إجلب فقط المتغيرات و الخواص المدرجة في هذه الMethod فقط "، لأوضح لك الأمر بشكل أكبر، إنطلق الى الـ Encapsulation الخاصة بالـ phone Number بحيث ستجد انني لم أضع نفس الإسم في الـ Parameter و قمت فقط بإضافة phone، ثم قمت بتحديد قيمته بشكل عادي . 
اما الـ Get، فهي تقوم بإرجاع قيمة الـ Properity الخاصة به، يمكنك أيضا معالجتها كما تريد ثم في الأخير إرجاعها بشكل طبيعي عن طريق return، بحيث تسمح لنا Return بإرجاع قيمة معينة يتم تحديدها، و في هذه الحالة القيمة هي this.accountNumber اي رقم الحساب . 
لنركز قليلا على الجزء الخاص بالـ currentAmount في كل من الget و الـ set ، ما قمنا به في عملية الـ Set هو عدم حذف الـ Current Amout او الرصيد الحالي للحساب الذي هو 50 دولار، في الحالة العادية بدون Encapsulation ان قمت بإدراج قيمة للحساب، فسيتم حذف القيمة السابقة و تغييرها بالقيمة الحالية، لكن بواسطة عملية Processing للبيانات المدخلة، قمنا بإضافة القيمة السابقة على القيم الجديد او المبلغ الجديد اذي ادخله المستخدم اثناء انشاء الحساب البنكي .
في الحقيقة و عمليا هي غير صحيحة، فنحن نقوم بصناعة حساب هنا و إدخال قيمة معينة للحساب في أول تسجيل له، و إستخدام مسألة إضافة الرصيد على رصيد سابق يجب ان يتم في Method مخصصة مثل addAmount  اي حين يعود المستخدم و يريد إضافة رصيد على رصيده السابق يمكننا إستخدام هذا الأمر، لكن ما همنا الآن فنحن نريد شرح بعض المفاهيم فقط و ليس تصميم النظام بشكل كامل .



الـ Getters و الـ Setters : 

عملية الـ Encapsulation عملية شاسعة جدا، و ما قدمناه في الكود السابق هو فقط جزء صغير جدا من الـ Encapsulation او التغليف، و يسمى  بالمجمل العام بالـ Getters و الـ Setters اي تحديد كل من الـ Gets و الـ Sets الخاصة  بالـ Properities، لكن في تعمقك أكثر و إستخدامك لأزيد من كلاس و الوراثة و الـ Interface و غيرها ستجد التعامل مع الـ Encapsulation أكثر معالجة و أكثر عملية .

هل اعجبك الموضوع :

تعليقات