التدوينات الموسومة بـ ‘الكيك’

تحديد الشرائح المستهدفة

August 10, 2008 - الأحد 08 شعبان 1429

بسم الله الرحمن الرحيم،

سأقوم بإكمال السلسلة ولكن أعدكم أنها ستكون بتواتر أعلى … أي إن شاء الله ستكون التدوينات شبه يومية.

(اقرأ المزيد …)

تحديد الأهداف من وراء فكرة مشروع قائمة المهام

August 8, 2008 - الجمعة 06 شعبان 1429

بسم الله الرحمن الرحيم

السلام عليكم،
(اقرأ المزيد …)

تعلم الكيك وتطوير المواقع بالبيت

August 3, 2008 - الأحد 01 شعبان 1429

سنبدأ بعد عدة أيام بسلسلة “تعلم الكيك وتطوير المواقع بالبيت” لكل من يود تعلم تطوير المواقع على إطار العمل المشهور CakePHP.

ملاحظة: يجب أن يكون مستواك بالـ PHP, CSS و Javascript جيداً كي تتمكن من المتابعة.

(اقرأ المزيد …)

تنظيم الوقت البرمجي

July 30, 2008 - الأربعاء 28 رجب 1429

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

عودة قريبة ولكن مفيدة … لي ولكم بإذن الله

الموضوع باختصار هو كيف ينظم المطور أو المبرمج وقته؟

بعد وقت  طويل من عدم التنظيم في الوقت وهدر بعض الساعات في تصفح فارغ قررت أن أضع حداً لهذا كالتالي:

  1. عدم استخدام المسنجر لأنه عبارة عن استنزاف للوقت، أبقي تواصلك مع العملاء عن طريق البريد الإلكتروني فقط.
  2. تقيد دائماً بـالتالي: اهتم بالأمور المهمة أولاً، ولا تصرف وقتك على الأمور الغير مهمة.
  3. إذا أردت إنهاء مهمة مستعجلة، فنبه من حولك بألا يزعجوك.
  4. حدد وقتاً لمطالعة المدونات والمنتديات، فهي عبارة عن بالوعة للوقت، من مدونة لآخرى ومن موضوع لآخر وهكذا يضيع الوقت، حدد وقتاً معيناً لتصفح المدونات ولاتتجاوزه.
  5. إنشاء قائمة بالمهمات to do list.

سأطبق هذه القيود على نفسي وأتمنى أن يتحسن من خلاله نظامي اليومي وتقل ساعات الهدر.

أما الأن فالفكرة الجميلة التي طرأت على ذهني هي استغلال هذا الموضوع بتعلم بعض أساسيات الكيك CakePHP عن طريق تطوير الخطوة الخامسة (قائمة المهمات to do list) بالكيك. ستكون عبارة عن سلسلة من التدوينات نمشي بها خطوة خطوة، حتى نكمل التطبيق “قائمة المهمات”. فرصة لتحسين مستواي عن طريق ملاحظاتكم وتجاربكم.

ما رأيكم؟؟ وهل ببال أحدكم اسم جميل للتطبيق؟؟

ميزات النسخة 1.2 من الكيك CakePHP

July 30, 2008 - الأربعاء 28 رجب 1429

النسخة 1.2 حملت معها العديد من الخصائص المفيدة والجديدة فبماذا تميزت عن النسخة السابقة 1.1

أولاً: سأقوم باستعراض الميزات الأهم في النسخة 1.2:

  1. حزمة Integrated test … التجريب الآلي شيء أساسي في التطوير سواء كان موقعاً أم برنامجاً. سأحاول في المستقبل التحدث عن التجريب وأنواعه (ذكروني إن نسيت ;-) ).
  2. إضافات جديدة (Components) وهي Auth, Cookie, و Email. هي عبارة عن أصناف لتسهيل التعامل مه هذه الأمور.
  3. دعم قواعد البيانات التالية (DB2, Oracle و Sybase).
  4. لاحقة جديدة لملفات العرض وهي (ctp) بدلاً من (thtml) في النسخة 1.1، تغيرت اللاحقة لأسباب منطقية وهي أن ملف العرض يمكن أن يكون ملف PDF أو Excel لذلك تسمية (thtml) لن تكون صحيحة.
  5. دعم الكاش لأنظمة معروفة ( APC, memcache, xcache).
  6. حذف بعض التوابع القديمة وإضافة توابع كثيرة جديدة.
  7. التوسع بميزة التحقق من المعطيات لتعطيك مرونة أكبر وخيارات أوسع.
  8. دعم السمات (themes).
  9. أربع مساعدات جديدة (Js, Paginator, Rss, و Xml).

بالإضافة إلى الكثير من الميزات الآخرى التي لايتسع المجال لذكرها وللمزيد عليك بقراءة الدليل الجديد للنسخة 1.2.

(اقرأ المزيد …)

ميزات الكيك CakePHP

July 30, 2008 - الأربعاء 28 رجب 1429

سأقوم باستعراض أهم الميزات الموجود في الكيك، والتي تساعدك أيما مساعدة في عملك التطويري.

  1. مرخصة برخصة MIT مما يعطيك حرية أكثر من GPL، مما يسمح لك باستعمال الكيك لمشاريع تجارية بعكس الرخصة العمومية GPL.
  2. متوافقة مع النسخة 4 و 5 من PHP (مستقبلاً سيتم التنازل عن هذه الميزة ليصبح الكيك يعمل فقط على النسخة 5 بسبب وجود العديد من التعقيدات في النسخة 4).
  3. تضمين طبقة للتعامل مع أغلب أنواع قواعد البيانات المعروفة (MySQL, Postgre, SQL Server, Oracle, DB2)، وتوفير توابع كاملة للتعامل مع الخصائص الأربعة الأساسية لقواعد البيانات (CRUD) بدون أن تكتب طلب واحد (query).
  4. الرافعة (scaffolding): مهمتها باختصار توفير المهام الرئيسية (CRUD) بكتابة كلمة واحدة فقط، هي تشبه (Grid) في تطبيقات الويندوز.
  5. بنية MVC، سأتكلم عنها باستفاضة في تدوينة قادمة وحالياً أجهز هذه التدوينة.
  6. العناوين النظيفة (clean URL).
  7. التحقق من البيانات، يوجد بنية كاملة فيها للتحقق من البيانات (البريد الإلكتروني صحيح، الاسم يحوي أحرف فقط، الماستر والفيزا كارد والكثير).
  8. نظام قوالب سريع وسهل.
  9. المساعدات (Helpers) وهي أصناف جاهزة للتعامل معها وأشهرها أصناف (AJAX, JavaScript و HTML).
  10. (Access Control List) أي نظام التحكم بالمستخدمين ويختصر بـ (ACL)، مهتمه توفير بنية كاملة لحل مشاكل تعددية المستخدمين وصلاحياتهم بكل سهولة وأمان.
  11. الكاش (Cashing)، الخيار الأنسب للمواقع التي تعاني من الضغط، ويوجد نوعين في الكيك إما كاش باستخدام قاعدة البيانات أو كاش باستخدام الملفات.
  12. تعددي اللغات، بناء موقع متعدد اللغات بخطوات بسيطة وبدون تعقيدات.
  13. لا تحتاج لإعدادات خاصة بها في المخدم عدا (mod_rewrite).

مقدمة في CakePHP

July 10, 2008 - الخميس 08 رجب 1429

شعار CakePHP

1- ماهو الـ CakePHP؟

هو عبارة إطار عمل للغة PHP ومستوحى من الإطار الشهير Ruby on Rails، باختصار إنه إطار عمل لتسريع التطوير بلغة PHP وطريقهم بذلك هي “لا تعد اختراع العجلة” أي لا تكرر الشفرة المصدرية أكثر من مرة.

2- كيف أعرف إن كان الـ CakePHP مناسباً لي؟

  • يقدم لك ذكاء، سهولة وسرعة الـ Ruby on Rails.
  • هل مللت من تكرار الشفرات المصدرية لكل موقع تطوره، إذن وجدت ضالتك فهو يستخدم ميزة “لا تعد اختراع العجلة”.
  • يعمل بشكل كامل في الاستضافات المشتركة لأنه لايتطلب إعدادت أو برامج إضافية.
  • إذا كنت تريد توفير وقت تطوير الموقع لحد الثلث أو الربع حتى.
  • إذا أردت استعمال نظام القوالب فهو يوفر لك ذلك ببنيته الثلاثية المميزة (MVC).
  • إذا أردت موقع متعدد اللغات.
  • إذا كنت تفضل العناوين الجميلة والصديقة (العناوين النظيفة) لمحركات البحث (بدلاً من post.php?id=2112) يكون مثلاُ (post/2112).
  • إذا كانت لديك قاعدة بيانات واحدة فهو يوفر لك استعمال السابقة للجداول فيمكنك بناء عدة مواقع بقاعدة بيانات واحدة.


4- لكن ماهي البنية الثلاثية (MVC

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

  1. Model : كل التعامل مع قاعدة البيانات يتم في هذا الجزء، كل عمليات الإدخال، التحديث، الاختيار والتحديث في قاعدة البيانات تتم في هذا الجزء.
  2. View: هذا الجزء مسؤول عن الإظهارات من صفحات ويب، ملفات نصية وحتى ملفات PDF. هذا الجزء لايقوم بأية عملية منطقية ولكن يتم تمرير النتائج له لكي يعرضها فقط.
  3. Control: هذا الجزء مسؤول عن العمليات المنطقية كلها، كإرسال البريد الإلكتروني، رفع الملفات وهو أيضاً جسر بين الجزئين السابقين.

وهذا مخطط لهذه الأجزاء:

مخطط البنية الثلاثية MVC

دعونا نشرح هذا المخطط قليلاً:

1- يقوم المستخدم بطلب صفحة ما من موقعك (مثلا: http://example.com/page/4).

2- يقوم Dispatcher بتحليل العنوان URL. لأنه كما ذكرنا يكون العنوان بشكله النظيف فيقوم Dispatcher بتفكيكه ومعرفة أجزائه (page أي المستخدم يريد صفحة، و 4 هو رقم الصفحة).

3- يقوم جزء Controller بالعمليات اللازمة ويرسل طلب لجزء Model لاستخراج بعض البيانات من قاعدة البيانات (مثلاً يرسل لها رقم عمود لاستخراجه).

4- يقوم Model بإرجاع البيانات التي طلبها Controller ويسلمها له.

5- يقوم الـ Controller بالعمليات اللازمة لهذه البيانات المستخلصة (تقوم بإرجاع معلومات هذا العمود الذي طلبناه قبل قليل) ومن ثم يسلم هذه البيانات التي تم معالجتها لجزء View.

6- يقوم جزء الـ View ببعض التنسيقات وتجميلات المظهر لهذه البيانات.

7- ثم يقوم بعرض الناتج للمستخدم.

الأن أصبحت هذه البنية واضحة، أليس كذلك؟

3- هل CakePHP أفضل من Ruby on Rails؟

إطار العمل CakePHP يستخدم البنية الثلاثية المميزة (MVC) وهي ذاتها المستعملة في Ruby on Rails، وبشكل عام لايمكن المقارنة بينهما لأن RoR تستخدم لغة Ruby بينما CakePHP تستخدم لغة PHP، لذلك إذا كانت معرفتك بالـ PHP جيدة فعليك بالـ CakePHP.

4- ماهي الميزات التي يقدمها CakePHP لي؟

  • حزمة كاملة للاختبارات Test Suite تفيدك في الاختبار الآلي لموقعك واستخراج الأخطاء إن وجدت، بدل الطريقة القديمة بتجريب الموقع بشكل يدوي.
  • ثلاثة أصناف (Classes) مميزة: صنف للبريد الإلكتروني ووظائفه المتعددة، صنف للبسكوتات (Cookies) والتعامل معها بسهولة رائعة، وصنف التحقيق (Authentication)  لعمليات الدخول والخروج مع حماية جيدة من أنواع الاختراقات المشهورة.
  • دعم أنواع مختلفة من قواعد البيانات MySQL, DB2, Oracle, Sybase, SQL Server.
  • دعم تعددية اللغات أي استخدام عدة لغات في موقعك لكي يكون عالمياً.
  • وعشرات الميزات الآخرى التي سأذكرها في تدوينات لاحقة.

5- ماهي متطلبات تشغيل CakePHP؟

إطار العمل هذا لايتطلب منك برامج إضافية، المطلوب هو فقط Apache و PHP 4.3.2 أو نسخة أحدث، و MySQL4 أو أحدث. ولاستعمال “العناوين النظيفة” يجب أن يكون mod_rewrite موجوداً ومفعلاً في مخدمك. CakePHP تعمل على مخدم IIS.

6- ماهي الـ scaffolding (الثقالة) وماهي وظيفتها؟

الثقالة تعني تشغيل سكربت فوق بنية قاعدة البيانات الموجودة لديك لتشغيل عدة مهام بشكل تلقائي (استعراض – إدخال – حذف).

7- هل يدعم الـ AJAX؟

نعم، بالتأكيد CakePHP يدعم AJAX باستخدام عدد من التوابع (الدوال).

8- حسناً لكن ماذا عن استخدام CSS و Javascript مع إطار العمل هذا؟

بالطبع تستطيع استخدام أي شيء خارجي ويوجد مجلدات خاصة لوضعها واستخدامها، للحفاظ على البنية الثلاثية (MVC).

9- حسناً قررت استخدامه من أين أحمله؟

من هنا حمل آخر نسخة: http://cakeforge.org/frs/?group_id=23

10- هل يوجد مواقع للمساعدة في استخدامه؟

يوجد العديد من المدونات الومواقع لمطوري هذا الإطار وسأطرحهم في مواضيع لاحقة … حالياً شاهد الدليل الرسمي فهو يغطي الكثير من المواضيع:

http://book.cakephp.org/

أو تابع  دروس هذه المدونة …