الأربعاء، 5 غشت 2009

تعريف : منصة العمل كود إغنيتر

تعريف :
كود إغنيتر أو ِCodeIgniter بالإنجليزية هو منصة عمل خاصة بلغة البرمجة php كان أول ظهور لهذه المنصة في فبراير 2006 بأول نسخة, هذه المنصة مدعومة من طرف شركة EllisLab والهدف الأساسي من خلق هذه المنصة هو " تمكين [المطورين] لتطوير المشاريع أسرع بكثير من الكتابة...إبتداء من الصفر ، من خلال توفير مجموعة غنية من المكتبات التي تسهل العمل ، وكذلك واجهة بسيطة ومنطقية للوصول إلى هيكل هذه المكتبات (مصدر هذه الجملة تعريب من ويكيبيديا)". وقد تحدث عنها في صيف سنة 2008 راسيم لودورف مأسس لغة PHP وقد قال أنه أحب هذه المنصة "لأنها أسرع وأخف وزنا واسرع من المنصات الأخرى". وقد إنشقت عن هذه المنصة وبالضبط في الإصدار 1.5 منصة اخرى تدعى كوهانا في سنة 2007 بعد تدمر المشتخدمين من بطأ الشركة عن دعم هذه المنصة لتنتج عن هذا مجتمع الكوهانا للتطوير منصة منفصلة.

مشاريع منجزة بهذه المنصة :
www.voices.com
www.importgenius.com
www.browseformusic.com
www.filepanda.com
لائحة بمواقع منجزة بهذه المنصة

كتاب المستخدم :
http://codeigniter.com/user_guide/ من أهم الأشياء الواجب قرائتها لإستعمال هذه المنصة

دروس تحفزية :
تقديم للمنصة (فيديو)
إنجاز مدونة في أقل من 20 دقيقة
البحث بإستعمال الأجاكس في عرض النتائج
إنجاز صفحة تحميل ملفات
العديد من الدروس

سأبدأ لاحقا بدورة لتعليم أساسيات العمل بهذه المنصة وكيفية التطوير بإستعمالها .
فيديو بسيط لكيفة البدأ بالعمل بإستعمال هذه المنصة والإعدادات الضرورية :


السبت، 1 غشت 2009

تطبيق API على موقع Bit.ly

السلام عليكم
منذ يومين أو ثلاثة ايام وعدت المتتبعين بتدوينة خاصة عن API الخاص بموقع تويتر, لكن ظروف عدم قدرتي على إستعمال دالة curl على السيرفر الذي اشتغل عليه اخر موعد صدور تلك التدوينة. لكن مادمنا نتحدث عن API سأقدم اليوم درس خاص عن إستعمال موقع تصغير الروابط وهو : bit.ly الذي إشتهر كثيرا خصوصا بعد الدعم عن طريق الإستعمال الذي شمله من طرف تويتر.

تعريف مبسط عن API :
هي تصغير للجملة التالية : Application Programming Interface هذه الخدمة تتيح للمبرمجين أو مطوري الويب أو التطبيقات إستخراج معلومات من مواقع أو تطبيقات بعد معالجتها من طرف الموقع الأصلي او التطبيق الأصلي المقدم للخدمة. مثلا يمكنك الكتابة في تويتر من موقعك الشخصي أو الكتابة في تويتر بإستعمال برنامج سطح مكتب بدون الدخول للموقع.

المهم نبدأ الدرس عن نبذة بسيطة عن هدفي من وراء هذا الدرس :
مثال حي لدرس : http://www.aimadj.co.cc/bitly-arab

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



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

-بعد الدخول لحسابك الشخصي ستجد في اليمين بلوك عنوانه API key هذا هو مفتاح الدخول للإستفادة من خدمات الموقع من خارجه.

تصغير الروابط :

ينبدأ باول شيء وهو صفحة الفورم التي سندخل فيها الرابط ويمكننا وضع الكود التالي :

سأشرح الكود رغم أنه بسيط :
1- سأستعين بمكتبة Jquery لتمرير الأوامر بإستعمال Ajax
2-فورم بسيط لإدخال الرابط المراد تصغيره.
3-كلاس loader الذي سيتغل بعد الضغط على "نفد التصغير".
4-كلاس response الذي سيظهر لنا النتيجة.

الأن إرسال إستفسار وايضا إستقبال النتائج بال PHP :



هنا يجب التأكيد على أن الدوال المستخدمة من الضروري توفر PHP 5 في السيرفر لكي تشتغل
1-نتأكد من وجود الرابط ,ايضا إخلائه من شوائب html و php عن طريق الدالة strip_tags.
2-نمرر الرابط بفيلتر لتأكد من أنه رابط عبر الدالة filter_var . هذه الدالة تشتغل على PHP 5 .
3-نعيد تشكيل الرابط لنغير القيم التي ستعمل لنا مشاكل فيما بعد لقيمتها بعد التكويد بإستعمال الدالة : urlencode .
4-الأن نضيف معلومات الدخول لموقع bit.ly : إسم المستخدم ورمز API key .
5-في هذا التطبيق سنسترج المعلومات من موقع bit.ly بفورم Json وهناك طريقة أخرى أيضا لإسترجاع المعلومات وهي xml .
6-الأن سنستدعي الرابط الذي عن طريقه سنعطي أمر التصغير وسيعيد لنا هو الرابط بعد التصغير وهذا الرابط يشمل المعلومات التالية :
-shorten اي أننا نريد التصغير.
-version من الضروري ذكرها للمرور.
-login و key معلومات الدخول من الضروري ذكرها.
-longUrl الرابط لكن يجب أن يكون نظيفا.
-format الفورم التي نستقبل بها المعلومات الناتجة عن العملية.
وايضا قمنا بإستعمال دالة file_get_contents لمعلفة محتوى الملف الناتج.

7-سنقوم الأن بتحليل الملف عن طريق الدالة json_decode المستحدثة في PHP 5 والتي تقوم بتقسيم نتائج json لمصفوفة يمكننا الإستفادة منها لمعرفة النتائج المسترجعة بفورم json.

8-سنقوم الأن بتحليل المصفوفة الناتجة وسنستخرج منها قيمة shortUrl التي تحتوي على الرابط المصغر.

والأن إضافة ajax التي ستمكننا من مشاهدة النتيجة في نفس صفحة الكود ومن دون تغير الصفحة :


1-نعطي قيمة لمتغير الذي سيتوافق مع صورة التحميل وهو ajax_loader .
2-نخفي كل من الكلاس response و loader لأن ظهورهما سيكون فيما بعد طلب التصغير.
3-بعد الضغط على الأيقونة التي تحمل إسم أيدي : submit_short ستقوم العمليات التلية وهي :
-إظهار صورة التحميل مكان الكلاس loader الأول والمشار له هنا بالرقم 0 لأن الصفحة تحتوي على كلاس loader اكثر من مرة.
-إستدعاء صفحة shorten.php التي تحمل الكود الذي سيقوم بعملية تصغير الرابط.
-وسنأتي في اخر العملية لإظهار النتائج في كلاس response الأول ايضا.

من يريد شرحا أكثر للكود فأنا موجود لشرحه أكثر
المهم يجب تحميل الصورة التالية ووضعها في نفس مجلد لكي تظهر في مكان تحميل النتيجة :


الخميس، 23 يوليوز 2009

البرمجة بإستعمال منصات العمل

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

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

سأتطرق في هذا الموضوع بالخصوص لمنصات العمل الخاصة بالبرمجة على PHP .

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


بالنسبة لنا في برمجة بال PHP لدينا العديد من منصة العمل ومن أشهرها : Zend Framework, symfony , CakePHP , CodeIgniter , Prado , Jelix .... .

عموما لهم نفس المبدأ ونفس المحتوى : نظام MVC, الإدخال لقاعدة البيانات, تعدد اللغات, نظام التخزين اللحظي أو الكاش, تأمين الكود البرمجي (مثال ثغرة XSS...).

إذن الأن سأعدد الأمور التي ستضعها وأنت تختار أحسن واحد من بين 6 المقترحين مسبقا أو من غيرهم

  1. سهولة الإستعمال : بالنسبة لأي إطار عمل, من الضروري جدا مدة من الزمن لكي تتلائم مع العمل بإستعمال أي إطار وهذا متغير يرجع لمدى ذكاء المطور. ونفترض في هذه الحالة دخول مطور لفريق عمل يشتغل على إطار عمل معين فمن الضروري أن تكون مدة تلائمه على العمل بهذا الإطار قصيرة لكي يبدأ العمل مع الفريق.
  2. المرونة : يجب علينا ايضا مقارنة الصعوبات والقوانين التي يفرضها كل إطار عمل على حدة, المهم ستجد في كل منها قوانين إضافية وتعقيدات, إذن يجب على المبرمج التلائم مع الإطار الذي يفرض عليه القليل من القوانين الإضافية ( لانتحدث هنا عن الضوابط العامة للغة البرمجة وإنما التي يضيفها إستعمال الإطار).
  3. حجم المشروع المبرمج : من الضروري أيضا مراعات حجم الإطار فأحسنهم هو من يعطيك إمكانية إنشاء موقع ثابت دون الحاجة لمساحة كبيرة.
  4. الدليل : من الضروري أن يتوفر الإطار على دليل إستخدام تتوفر فيه الشروط التالية : سهل القراءة, يتم تحديثه دوريا, يكون واضحا وشاملا, ويشمل دروس لشرح طريقة عمل الإطار جيدا.
  5. الأداء العام للإطار : يجب أن يوفر الإطار أكبر كم ممكن من الإمكانيات المتوفرة عند إستعماله فكلما زادة الإمكانيات تقلص وقت العمل على مشروع معين. مثلا : يمكن أن نضع كود برمجي بال PHP ونريد تحويله للعمل على إطار عمل معين ونقارن الوقت المستهلك وايضا حجم الكود المستخلص لنرى من منهم يمكن ان يساعدنا في تقليل وقت العمل لأكثر حد ممكن.
  6. منتدى أو مجموعة للمساعدة : يجب أيضا أن ندخل للمنتدى أو مجموعة المساعدة المقترحة من طرف موقع الإطار ونطرح أسئلة ونرى كيفية تفاعل مع الأسئلة المطروحة . لأنه فيما بعد ستحتاج لشيء أو تقع في مشكل فيجب أن تتأكد من أن أصحاب الإطار سيساعدونك بسرعة أيضا ولن تطر للبحث عن مبتغاك في مواقع اخرى أو أن تضيع وقت في البحث عن حل .
  7. التطور : من المهم جدا أيضا ان تحاول إستجداء مستقبل الإطار وان ترى هل له أفاق أي أنه سيتطور مع كل تطور جديد للويب أم أنه سيدعك دائما في حقبة قديمة . لأنك لن تغير في كل وقت إطار العمل الذي تعمل عليه.
للمساعدة سأضع هنا مقارنة بسيطة من كتابتي للإختيار بين 3 أطر عمل وهم : CakePhp, Zend Framwork, CodeIgniter

هنا سنطرح العناوين الجذابة التي يعرضها كل إطار من الأطر السابقة الذكر لجدب المستعملين :

CakePhp : طريقة لإنجاز مدونة بإستعماله

Zend Framework : أول مشروع في ثلاثين دقيقة

ِCodeIgniter : مدونة في عشرين دقيقة
من هذه الروابط سيتضح لنا حرص أصحاب هذه المنصات من أن يظهرو لنا أن تطبيقاتهم هي سهلة الإستعمال

دليل المستخدم لكل منهم :
CakePhp : الملاحظ أنه متوفر بعدد من اللغات, ويشمل على شرح لكل الدوال وطريقة الإستخدام , له إمكانية عرض الكل في صفحة واحدة وهذه مهمة عند البدأ بالعمل به :).

Zend Framework : متوفر أيضا بالعدد من اللغات يجمع الفهرس في صفحة واحد لتسهيل قرائة جميع المحتويات, من اشمل كتب المستخدم المتوفرة على الأنترنيت بصراحة :)

CodeIgniter : كتاب للمستخدم سهل للإستعمال وأيضا يشمل كل الدوال المستعملة مع تقسيم فهرس جيد يظهر في الأعلى يمكنك من أن تدرس هذا الإطار فقط من قرائة دليل المستخدم الخاص به.

دعم الأجاكس وجافاسكريبة :
CakePhp : توجد به مكتبة داخلية تدعم الأجاكس والجافاسكريبة
Zend Framework : توجد به مكتبة ملحقة به تابعة لإطار عمل أخر خاص بالجافاسكريبة وهو : DOJO
CodeIgniter : لا توجد في المكتبة الأصلية لكن توجد إضافات لدعم الجافاسكريبة والأجاكس

المنتديات والويكي :
CakePhp : مشاركة المقالات : وإن كان لديك مشكل يجب أن تكتب مقالاتا أو تعليق عن المشكل لا أحبذ هته الطريقة في التواصل.
Zend Framework : مصادر للمتابعة تتوفر على ويكي ايضا : لم أجرب تفاعلهم بصراحة لأنني لم تعجني طريقتهم في التواصل بطريقة لائحة الإئميلات أو تتبع الأخطاء, أفضل منتدى وأن اسئل وأنتظر جوابا وأن أرى اسئلة الأخرين.
ِCodeIgniter : المنتدى - الويكي : يمكنني القول أن المنتدى من فضل المنديات في تقديم المساعدة.

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

" بالنسبة لي أنا شخصيا استعمل CodeIgniter : سهل الإستعمال, مفتوح لدرجة استطيع التعديل عليه كما أريد, دليل مستخدم سهل وشامل ويفي بالغرض, منتدى متفاعل دائما ستجد جوابا لسألك في أقل من ساعة من طرحك لسؤال, ويكي تحتوي على إضافات عديدة. "
عماد اجعيط

-الموضوع دوما تحت التصحيح والمراجعة. إن وفقت فمن الله وإن أخطأت فمني ومن الشيطان-


الأربعاء، 8 يوليوز 2009

الإنسانية

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

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

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

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

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

أنا إنسان ؟
أقول ان هذا العصر اصبح الإنسان جسدا بلا روح اصبح للإنسان عقل يفكر به كيف سيخدع الأخرين لم يبقا لنا عقل نفكر به كيف ننجح وكيف نتطور, اضحينا نقرا في التلفاز 10 قتلا و 20 جريحا في المزمبيق ونقرأ العدد فقط ولا نفكر في ذالك الإنسان الذي اصبح مجرد اعداد بالنسبة لنا كما يقول المغاربة ايضا "نقص واحد زيد واحد" اين هي مشاعري اين هو إحساسي انني إنسان .

خلاصة
إذن خلاصتي هي اننا اصبحنا بلا إنسانية ويجب علينا في اقرب وقت أن نسمي أنفسنا حيوانات مفترسة (وبدون عقل).

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