منتدى دعم PBBoard الرسمي
(نسخة قابلة للطباعة من الموضوع)
https://pbboard.info/forums/t9165
أنقر هنا لمشاهدة الموضوع بهيئته الأصلية

ماي سمارت بيبي تعود للحياة
wisal 16-03-2012 07:02 مساءً
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته،،
عاد العملاق العربي ما سمارت بيبي الى الحياة بإصدار جديد 2.0.0 واللي صدر بتاريخ الثامن من منارس الحالي
اقتباس من الموقع الرسمي
اقتبـاس ،، إنتهيت للتو من رفع النسخه التطويرية الجديدة إلى موقع Sourceforge :%29.

كان التركيز الأساسي في هذا الإصدار على نظام الإضافات (Plugin)، الحمدلله يبدو إن لدينا الآن نظام إضافات متكامل يمكننا إستخدامه لكتابة أي نوع من الإضافات :%29.

سأبدأ فيما بعد إن شاء الله بكتابة توثيق حول نظام الإضافات الجديد، يمكن لمهتمين حالياً أن يدرسوا الإضافة MySmartMicroblog المُرفقة مع النسخة الرسمية لمعرفة طريقة عمل نظام الإضافات، تجدون الإضافة في المجلد plugins/MySmartMicroblog.

للمتابعين القُدامى، الإصدار التطويري الثالث (ALPHA 3) كان آخر إصدار تم طرحه في الموقع الرسمي قبل توقفه، بعدها تم إطلاق ALPHA 4 و ALPHA 5 على موقع المشروع في Sourceforge، هناك بعض التغييرات الجذريه في هذين الإصدارين لذا سأكتب عنهما تدوينة منفصلة أوضّح بها هذه التغييرات الجذريه (أتحدث عن الجانب البرمجي هنا). :%29

يمكنكم تحميل النسخة الجديدة على موقع مشروع MySmartBB.

8/3/2012 - أهم التغييرات على شيفرة MySmartBB منذ ALPHA 4 إلى 6

اقتبـاس ،،
كما أخبرتكم في تدوينة إطلاق الإصدار التطويري السادس من MySmartBB، إن هنالك بعض التغييرات الجذرية في الشيفرة المصدرية منذ الإصدار التطويري الرابع، و سأُكرّس هذه التدوينة لذكر أهم هذه التغييرات :%29.

الملف records.class.php
أولاً لنتحدث عن الملف records.class.php، و هو أحد أهم الملفات في البرنامج حيث تقع على عاتقه مسؤولية التعامل مع قواعد البيانات و بناء الإستعلامات، و يوفّر واجهة دوال للمبرمج للتعامل مع قواعد البيانات بدون الحاجة إلى كتابة شيفرة SQL الكامله للإستعلامات، في النسخ التطويرية القديمة من الجيل الثاني (و هي ALPHA 1 إلى ALPHA 3) مكان هذا الملف في المجلد engine/libs/records.class.php، أما في الإصدارات التطويرية الحديثة و التي شهدت التغيرات التي نتحدث عنها في هذه التدوينة فستجدونه في includes/systems.

تم تبسيط هذا الملف و الواجهه التي يُقدمها بقدر الإمكان، و بعد التطويرات تقلّصت أسطر الملف من 600 سطر برمجي (تقريباً) إلى 300 سطر برمجي (تقريباً)، هنا أتحدث عن النسخة القديمة من هذا الملف :%29، لأن الملف الحالي (في الإصدار ALPHA 6) تم إضافة المزيد من الدوال الجديده إليه و بالتالي وصل إلى 520 سطر برمجي تقريباً.

على كُل حال، التغيير الأساسي في هذا الملف كان تغيير طريقة التعامل معه، فهو عباره عن مكتبه يستخدمها MySmartBB في جميع أجزاءه للتعامل مع قواعد البيانات، و بالتالي تم تغيير طريقة مناداة دوال هذا الملف بغرض التبسيط، و فعلاً بعد تطبيق التعديلات على جميع الملفات البرمجية لـ MySmartBB (و التي كانت تستخدم النسخة القديمة من ملف records.class.php) قلّ حجم البرنامج بشكل كبير و الأهم من ذلك قلّت التعقيدات في كتابة الشيفره.

وفقاً لإحصائيات موقع Ohloh فقد كان MySmartBB يصل إلى 26439 سطر برمجي، و بعد التغيير إلى ملف records.class.php الجديد تقلّص الحجم إلى 19884 سطر برمجي، هذا يعني التخلص من 6555 سطر برمجي :%29.

لنلقي نظره سريعة على طريقة إستخدام ملف records.class.php القديم و الجديد.
الشيفره التاليه كانت مسؤوله عن إحضار آخر موضوع كتبه العضو في الملف profile.module.php :
CODE

[LEFT][table][tr][td]$LastSubjectArr					=	array();
	   
		  $LastSubjectArr['where']			  =	array();
		  $LastSubjectArr['where'][0]		   =	array();
		  $LastSubjectArr['where'][0]['name']	=	'writer';
		  $LastSubjectArr['where'][0]['oper']	=	'=';
		  $LastSubjectArr['where'][0]['value']	=	$MySmartBB->_CONF['template']['MemberInfo']['username'];
	   
		  $LastSubjectArr['where'][1]		   =	array();
		  $LastSubjectArr['where'][1]['con']	    =	'AND';
		  $LastSubjectArr['where'][1]['name']	=	'delete_topic';
		  $LastSubjectArr['where'][1]['oper']	=	'<>';
		  $LastSubjectArr['where'][1]['value']	=	'1';
	   
		  $LastSubjectArr['where'][2]		   =	array();
		  $LastSubjectArr['where'][2]['con']	    =	'AND';
		  $LastSubjectArr['where'][2]['name']	=	'sec_subject';
		  $LastSubjectArr['where'][2]['oper']	=	'<>';
		  $LastSubjectArr['where'][2]['value']	=	'1';
	   
		  $LastSubjectArr['order']			  =	array();
		  $LastSubjectArr['order']['field']	    =	'id';
		  $LastSubjectArr['order']['type']	    =	'DESC';
	   
		  $LastSubjectArr['limit']			  =	'0,1';
	   
		  $MySmartBB->_CONF['template']['LastSubject'] = $MySmartBB->subject->GetSubjectInfo($LastSubjectArr);
		  
		  $MySmartBB->functions->CleanVariable($MySmartBB->_CONF['template']['LastSubject'],'html');
[/td][/tr][/table][/LEFT]

و بعد الإنتقال إلى ملف records.class.php أصبحت كالتالي :
CODE

[LEFT][table][tr][td][/td][/tr][tr][td]1
2
3
4
5
6[/td][td]		  $MySmartBB->rec->table = $MySmartBB->table[ 'subject' ];
		  $MySmartBB->rec->filter = "writer='" . $MySmartBB->_CONF['template']['MemberInfo']['username'] . "' AND delete_topic<>'1' AND sec_subject<>'1'";
		  $MySmartBB->rec->order = "id DESC";
		  $MySmartBB->rec->limit = '0,1';
		  
		  $MySmartBB->_CONF['template']['LastSubject'] = $MySmartBB->rec->getInfo();[/td][/tr][/table][/LEFT]

يُمكنكم ملاحظة الفرق :%29، بالطبع الطريقة الثانيه أبسط بكثير و توفّر الكثير، سواء توفير بذاكرة الخادم، أو توفير بحجم البرنامج :%29.

كان هذا أحد الأمثله، و هكذا بالنسبه لبقية ملفات البرنامج، أما الشيء الآخر الهام في النسخه الجديدة من ملف records.class.php هو معالجته التلقائيه للبيانات لتجنب ثغرات XSS و SQL Injection، ففي السابق كُنا نضطر لمناداة الدالة CleanVariable بعد إحضار البيانات من قواعد البيانات لمعالجة البيانات.

مع الطريقة الجديدة لسنا مضطرين لمناداة دالة المعالجة CleanVariable، و بالتالي لا داعي للقلق بشأن معالجة البيانات بعد إحضارها من قواعد البيانات، مما سيزيد من الأمان و هذا يمنع الثغرات في حال الغفله عن مناداة دالة معالجة البيانات، بالإضافة إلى ذلك سيحسّن هذا من الأداء لأ
التخلص من المُحرّك
الفكره كانت من وراء مُحرّك MySmartBB بسيطه، تقريباً لكل جدول في قواعد البيانات كان هناك ملف برمجي مُكرّس له، و هذا الملف عبارة عن مكتبة تُقدّم الدوال الأساسية للتعامل مع قواعد البيانات و هذه الملفات كانت تعتمد على الملف records.class.php لفعل ذلك.

بعد تفكير طويل في الموضوع وجدت إن الطريقة غير مُجدية، لماذا لا نستخدم دوال records.class.php مباشرة، خصوصاً و إن جميع المكتبات التي يُقدمها المُحرّك متشابهه إلى حد كبير حتى في الشيفره.

و بالتالي قررت إزالة المُحرّك بشكل كامل و الإحتفاظ بالدوال المفيدة فقط و نقلتها إلى المجلد includes/functions، و بالتالي قلل هذا من تعقيد كتابة الشيفره.

تبسيط شيفرة المُثبت
في السابق كان برنامج تثبيت MySmartBB يعتمد على فئة (Class) ضخمه يُطلق عليها إسم DatabaseStruct، و كان عدد أسطر ملف هذه الفئة يبلغ من الحجم 1937 سطر، و كان الغرض منها بسيط و هو إنشاء الجداول في قواعد البيانات!، يا إلهى هل نحن بحاجة فعلاً إلى كل هذا العدد من الأسطر لإنشاء ما يقل عن 35 جدول! roll.

على كُل حال تغير الأسلوب المُستخدم بهدف التبسيط و أصبح الملف المسؤول عن إنشاء الجداول يبلغ من الأسطر ما يقارب الـ 200 سطر فقط، أما معلومات الجداول فتُخزّن بملفات نصيّه بسيطه و تحتوي على أوامر SQL الخاصة ببناء الجداول، أبسط بكثير و أسهل في الإضافه فيما بعد :%29

نظام الإضافات
نظام الإضافات (Plugins) بدأ مع الإصدار التطويري الرابع (ALPHA 4)، و كُرّست النسخة ALPHA 6 لتطويره و جعله أكثّر قوّة و تكاملاً، سأتحدث عن هذا النظام فيما بعد بالتفصيل إن شاء الله.

تعديلات أخرى
هناك بعض الميزات التي أُضيفت و التي رأيت إنه لا بد من إزالتها لأنها لا تُضيف قيمة للبرنامج.

بالإضافة إلى ذلك تم تجزئة عدد من الملفات البرمجية التي كانت كبيره جداً إلى ملفات صغيره تحمل وظيفة واحده.

كما تم دعم التدويل في MySmartBB (نُسميها بملفات اللغه :%29)، و تعمدت إستخدام أبسط طريقة و هي طريقة المصفوفات.

و تم نقل MySmartBB إلى إستخدام النسخة الخامسة من PHP، و لا يخفى عليكم إنّ الدعم الحقيقي للبرمجة كائنية التوجه كان مع PHP5 :%29.

هذا بالإضافة إلى التحسينات على الدوال القديمة.


منتدى دعم PBBoard الرسمي

Copyright © 2009-2024 PBBoard® Solutions. All Rights Reserved