نحن لانطبق MVC هكذا !

الأربعاء-10-2010

كنت اقرا عن بعض انواع Design Pattern بالتحديد Milti-Tier Architecture واللذي يعتمد علي ثلاث طبقات متتالية وكل شئ يمر من خلال الطبقة الثانية (Logic) والتي تكافئ Controller في MVC لكن يبدو اني ممافهمت في كل هذه الامور حتي الان اننا لانطبق MVC بشكل جيد

فـ MVC ليس طبقات بل مثلث كل اضلاعة متصلة ببعض , مثلا لو احتاج View (وهوما يمثله Presentation في Mulitier Architecture ) يمكن أن يطلب اي شئ من Model (يمثله Data في Multitier Architecture ) ولكن من ملاحظتي لما يفعله الجميع هو ان اي شئ يحتاجه View نقوم بتمريره له عن طريق Controller ولا نقوم بطلبه مباشرة كما من المفترض ان يحدث في منطق MVC

Advertisements

php 5.3 جاءت ومعها اكثر ميزه منتظره namespaces , تاتااااااا

لكي تفهمو اهميتها , علي الرغم من انها لم يمر عليها سوي بضعه شهور – تقريبا شهرين – ولكن مع هذا اصبحت موجودة ومدعومة في ZendFramework , Symfony, Doctrine , وغيرهم

ربما اكتب تدوينه منفصلة عن الأمر لاحقا

رائع 😀

call time by refrence

السبت-10-2008

كثير من تطبيقات php تظهر رسالة الخطأ هذة

Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of foo(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in /var/www/localhost/htdocs/Proj/lab/bechmark.php on line 9

ماهى القضية ؟

الموضوع ببساطه هو فى هذا الكود

<?php
function foo(&$var){
$var=’NewValue’;
}

$MyVariable=’This is my value’;
foo(&$MyVariable);
var_dump($MyVariable);
?>

وبالتحديد فى هذا السطر

foo(&$MyVariable);

وبالتحديد اكثر فى علامة & او بالعربي الفصيح فى refrences

ماهو هذا ال refrence

عندما تمرر اى متغير بال refrence فإن اى تغيير فى تلك القيمة (المتغير) سوف يطرا ايضا على المتغير

اى ان قيمة $MyVariable سوف تتغير بعد تمريرها الى الداله foo فى المثال السابق

ما المشكله اذا ؟

المشكله ان تمرير المتغير بالـ refrence يعتمد على تعريق الداله نفسها وليس اثناء استخدامها

انظر الى تعريف الداله , هذا هو المهم  function foo(&$var){

علامة & هى التى حددت ان المتعير الذى سوف يتم تمريره اصبح بال refrence

اى انك غير محتاج الى تلك العلامه عند تمرير اى متغير الى الداله – وهذة العمليه يطلق عليها call time , اى انك تستخدمه اثناء البرمجه وليس عند تعريف الداله

بمعنى اخر المحرك يقول لك “والله عرفت انك عايزه refrence ارحمنى بقى “

قد يسال احد بما ان الموضوع يعتمد على تعريف الداله اذا ما السبب فى وجود & فى الكثير من التطبيقات اساسا

هو موجود فى حالة انك لم تقم بعمل هذا اثناء تعريف الداله بسبب كسلك قمت بعمل Call-time pass-by-reference

وهذا سوف يتم الغؤه مع محركات البى اتش بى فى الاصدارات القادمه

النتيجه : لا تستخدم Call-time pass-by-reference

اهم الاشياء فى الـ php , تهم الجديد والقديم
لدى بضعة اشياء لأقولها عن مجموعة من security risks او اخطاء الامان وهى الاكثير شيوعا على الاقل فى تطبيقاتنا العربية وسوف اطرحها واحدا بواحد
– Error Reporting
لابد ان تكون هناك ثلاث مراحل او على الاقل مرحلتين
التطوير ( developement ) : فيها تقوم بتطوير البرنامج على جهازك الشخصى وتسمح للأخطاء بالظهور لكى تقوم بحلها وتقوم بستجيلها ايضا (شئ طبيعى وعادى جدا)
الانتاج ( production ) : ببساطة هى المنتج بعد ان تمت برمجته واختباره , صحيح ان التطبيق قد تظهر به اخطاء بعد ذلك ولكن ليس كل شخص يجب ان يرى تلك الاخطاء , فمثلا لو كان هناك شخص ذكى واستطاع رؤية بل وعمل اخطاء فى برنامجك فقد يستطبع فى خلال دقائق معرفة كيفية سير البرنامج وسوف يسهل ذلك مهمته كثيرا ,
إذن فلا نظهر الاخطاء ,
ولكن قد تظهر اخطاء مستقبلية ؟ , الحل بسيط تقوم بتنشيط ميزة الـ log عن طريق خيارات ملف php.ini او ملف .htaccess او ini_set او تقوم بعمل دالة error_handling خاصة بالبرنامج ولكنها لن تهتم بكل الاخطاء
اذا لم تكن تعرف عن اى شئ اتكلم 🙂 راجع الروابط التالية
http://www.php.net/manual/en/configuration.changes.php – لتغيير اعدادات اللغة
http://www.php.net/manual/en/function.error-reporting.php – لا تعليق 😀
http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors
http://www.php.net/manual/en/function.set-error-handler.php

اذا تعلمت من تلك الروابط جيدا , حتى ولو بنسبة 50 ٪ فهذا رائع جدا جدا
حاول ان تقوم بعمل اى تطبيق بسيط يتكون من صفحة واحده كحقل تجارب وابدأ العمل فورا

دروبال

الخميس-11-2007

إسم كبيييييييييييييير جدا جدا جدا
يصعب وصفة فى مقال واحد ولمن لا يعرف دروبال هو CMS او Content Mangement System او بمعنى اخر نظام ادارة محتوى او بالعربي الفصيح برنامج تقوم بعمل موقعك من خلاله
من الوهلة الاولى قد لا يبدو البرنامج قوى ولكن عند النظر ه والتمعن فيه سوف تجد ان له اساسات قوية بنى عليها من ناحية التصميم الخاص بمخطط البرنامج والتنظيم
عندما تصفحته فقد وجد كثيرا من الاشياء التى كنت اريد اضافتها فى برنامجى الذى كنت اود طرجه ولكنى لن اطرحه بل سأكون دوربال وماى سمارت ناهيك عن اللينكس طبعا 🙂
وانا اكتب هذا المقال كنت ابحث عن صفحات تتكلم عن هذا الامر للمهتمين ولى اولا وعندها تذكرت ماقاله احد مندوبى شركة مايكروسوفت اللذين زاروا الكلية منذ فتره فقالوا ان مايكروسوف لها معاهد دراسات يمكن ان نطلق عليه متوسط المدى يعمل به الاكاديمين الذين تخرجوا من الجامعات ( المستوى ما بعد التخرج ) وقال ان احدهما موجود فى مصر ويقول انه متخصص فى مجال Content Management وكل ما اعرفه عنها فى ذلك الوقت انها اشياء مثل دروبال و برامج مثل ادارة المنتديات وما الى ذلك ولكن كلمة Content Management كانت تعنى ادارة محتوى فى كل شيئ كالصور , الافلام , الوثائق و كل شيئ وعندما دخلت على ويكيبيديا وجدت ان الموضوع هو نفسه
ووجدت رابط لمقال يسمى web content management ومنه عرفت ايضا ان و يعرفه ويكيبيديا على انه نظام او تطبيق يستخدم على الويب ليجعل المستخدمين او من يستخدمه يقوم بعمل موقع كامل لادارة اى محتوى يريده بسهولة ويسر دون ان يكون على دراية كبيره المعلمومات البرمجية او الفنية او ان يقحم نفسه فى تفاصيل الاكواد او التصميم فكل شئ جاهز لك وعليك فقط ان تستخدمه لتؤدى الغرض الذى تريده
طبعا قد يقول البعض ما الفائده من تصنيف من هذة الاشياء ويقولون نظام ادارة محتوى وغيره ؟
تلك هى نقطة الفرق بيننا وبينهم , فهم يعملون فى اطار منظم بدرجة كبيييييره جدا و ضمن تخطيط دقيق
قد يكون فى البداية تخطيط صغير ولكنه منظم بشكل كبيير وله اهداف واضحه محدده فيصبح كبيير مثل دروبال هذا واللذى يقول مطوره و صاحب المشروع او بمعنى اكثر دقه مدير المشروع : Dries Buytaert انه لم يكن يعتقد ان دروبال سكوف يصبح كبيير بهذا الشكل
بل انه وصل الى درجه انه قد يصبح EPR
شئ رائع ان نجد شيئ مثل دروبال ولاروع ان نستفيد من الاخرين وخبراتهم فليس شرطا ان ياتى مخرع ما لكى يخترع العجلة من جديد وبعدها الدراجة البخارية وبعد ذلك السياره وبعد ذلك الطائرة وبعد ذلك يخترع شيئ جديد ليثبت انه لا يقلد الاخرين وان ذلك من عصير تفكير عقله 🙂
اتمنى حقا ان اجد فى يوم من الايام تطبيق صغير او كبير لا يهم حجمه مثل دروبال يعتمد على التخطيط والتنظيم
فطريق الالف ميل يبدأ بخطوه واحده او حتى نصف خطوه
أبدأ من حيث انتهى الاخرون

دعونا نرجع مرة اخرى الى ما سمارت عندما فكرت قليلا فى ماى سمارت ففكرت فى الاتى لعل احد اعضاء فريق العمل يقرأها
1-استخدام ملف robot.txt
2- استخدام التاثرات الداخلية لتغيير اعدادات الللغة داخل الملف مع ملاحظة ان دالة ini_set قد يتم اغلاقها فى بعض السيرفرات
3-استخدام ملف .htaccess واللذى لا يستخدم الا داخل سيرفر apache 😉
4-الاقتداء بالسكريبتات الكبيره مثل دروبال فى موضوع التعليقات commets التى تكون داخل الاكواد البرمجية لتسهيل تطويرها من قبل اخرين وعرضهم افكار اخرى – هذا الجزء غاية فى الاهمية
ووضع الخطوط الارشادية ةالتى تكون سهلة الفهم لاى مطور اعرف ان هذا الامر ممل جدا ومتعب اكثر ولكنه غاية فى الاهمية
5-محاولة عمل نظام plugins فسوف يوفر الكثير جدا عن اضافة اى ميزات سواء من قبل فريق البرمجة او من قبل متطوعين ( احياننا عمل بعض المتطوعين يمثل اضافة هامة للعديد من التطبيقات )
6-التنظيم التنظيم التنظيم ومحاولة وضع مخطط للبرنامج ككل برمجة وتصميم هيكل للبرنامج واهداف و progress فسوف يكون هذا افضل
7-استخدام التاثيرات ( الالوان ) فى لوحة التحكم ومحاولة تغيير الشكل الحالى
8-ليس شرطا ان يقوم البرنامج بتقديم كل شئ يطلبه المستخدمون بل ( من رايي ) يجب وضع كل شئ فى خطة عمل الاصدار الفلانى سوف نضيف به كذا وكذا وكذا واللذى يليه يكون كذا وكذا وكذا
9-نظام الترقيم الخاص بالبرنامج لماذا لا نلغى كلمة بيتا ونستخدم نظام الترقيم الخاص بالكرنل مثلا فسوف يكون اكثر جمالا وتنظيما ايضا 🙂
10-استخدام نظام vbulletin فى العرض ليس شرط لنجاح اى برنامج . فلنحاول ان نطلق لخيالنا العنان و نستخدم نظام عرض جديد سواء فى الشكل او فى لوحة التحكم
شئ اخر لا داعى لان يكون اسم البرنامج MysmartBB إذا لم يكن له  interface إلا بالعربية
لن اعلق على الاكواد انتظارا للنسخه الجديده متى ستصدر ؟؟؟؟؟؟؟؟
لست اقول هنا انى اطبق حميع ما قلت مع نفسى ولكنها محاولة للتفكير

وقبل ان انسى اهنئ المبدع العربي على مدونته الجديده والى الامام

الروابط
———–
موقع دروبال الرسمى
Wikipedia CMS
Wikipedia Web CMS

مدونة المبدع العربي

السلام عليكم ورحمة الله
طبعا اغلب مبرمجى البى اتش بى سمعوا بالعفريت الجديد الذى يمكنه تحضير كل ما تريد فى غمضة عين : PHP5
لا احد ينكر الاماكنيات الكبيرة التى تمت اضافتها ولكن هل فعلا الجميع مستعد للعمل عليها
فمثلا عندما تقوم يتصميم سكريبت لو انه يعمل على النسخه 4 بشكل جيد فسوف يعمل على 5 تقريبا جيد ايضا
ولكن العكس ليس صحيحا
اضف الى ذلك ان المحرك مليئ بالاخطاء البرمجية والتى اعطت للمحرك شهره اكثر من شهرته العادية وذلك وفق كلام بعض من فريق العمل
وشيئان اخيران :
لا اعرف ان كانت البى اتش بى سوف تستمر كما هى ام لا ولكن ما اراه انها بدات تتجه الى الشرائية والتجاره يمكنك ان تشم رائحة ذلك من خلال زند ومن خلال مباحثاتهم مع مايكروسوفت
ثانيا احد اعضاء فى فريق يسمى فريق security فى ضمن الفريق الكبيير للغة وهو من انشاء هذا القسم فى الفريق تركه وقال ان المسئولين عن المشروع وبرمجته اصبحوا يتجاهلو الكثيير من التحذيرات والاشياء التى لا يجب اغفالها وقام بإنشاء مشروع منفصل يقوم بعمل patches للمحرك
كل هذا حقا يثير قلقى هل ستسمر اللغة كما هى ام انها سوف تصبح جزء من التاريخ قريبا جدا

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

إنهم يحترمون العربية , وجدير بالذكر ان مبرمجى البى اتش بى عندما تحدث المبرمجون العرب اليهم فى موضوع دعم المحرك للغة العربية بشكل كامل قالوا ربما فى PHP6 – لا تعليق