سوالف اندرويد




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو فعال
#1  
Thumbs up مقالات ثرية بالمعلومات احببت مشاركتها

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

توفير عمليات برمجية يؤدي بالتالي لتوفير المجهود اولا ، والوقت ثانيا ، وكنتيجة طبيعية لذلك تكون كفاءة برنامجك اعلى من حيث السرعة وضمان جودة العمل وقلة الاخطاء وبالتالي استهلاك موارد السيرفر بشكل اقل وباقل الامكانيات.

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

اعجبني بشكل خاص هذه الجملة :
إقتباس:
Making PHP 300% faster won't matter. Don't optimize PHP by using single quotes instead of double quotes when
the database is pegged
إقتباس:
لايهم اذا جعلت البي اتش بي تعمل بكفاءة 300% اسرع ، فلا تقم باستخدام الsingle quotes ' بدلا من double quotes " في الوقت الذي يكون فيه تصميم قواعد بياناتك غير صحيح

عموما هذه الروابط للمقالات ، انصح بقراءتها او المرور عليها في وقت فراغ :

http://highscalability.com/scaling-d...b-applications

http://hurvitz.org/blog/2008/06/linkedin-architecture

http://highscalability.com/canonical-cloud-architecture

http://highscalability.com/strategy-...and-queue-rest

http://camelcase.blogspot.com/2007/08/cap-theorem.html

http://en.wikipedia.org/wiki/Chain-o...bility_pattern

تحياتي






__________________
Ahmed Ehab
أستاذ سوفت !
facebook me - tweet me
Egyptechno is offline   قديم 05-04-2011, 12:27 AM
الرد مع إقتباس
عضو فعال
#2  

ما زلت بمرحلة التعلم اﻻساسي ﻷساليب تنظيم البرمجيات، خاصة الكبيرة منها
لكن لدي فكرة بسيطة عن كيفية ترتيب برمجية تجارية كبيرة (enterprise)
بحيث تكون قابلة للتطوير وقليلة الأخطاء، طبعًا هذا حد علمي حتى اﻻن وقد
يتغير مستقبلا ً بحكم الخبرة
طبعًا هذه اﻻمور غير ضرورية في كل المشاريع، لكن لا يمكنني تجاهلها كمبرمج ومهتم بالمجال

1)
يمكن استخدام أساليب تسمية خاصة بالبرمجية(naming conventions)
بحيث تعرف من اسم الكلاس ماذا يعني وماذا يفعل واين مكانه في ملفات المشروع.
كذلك يمكن ان يوفر عليك ذلك بعض العمليات أو التخزين في قواعد البيانات،مثلا
انت تعرف ان اﻻضافات موجودة في مجلد اسمه plugins اسم الملف سيكون TestPlugin
واسم الكلاس سيكون plugins_TestPlugin
لذلك لا داع لأن تحفظ هذه اﻻمور في قاعدة بيانات.
يمكن ان نشمل مع هذا البند استخدام ال namespaces لعمل مركبات الموقع بصورة منفصلة عن بعضها
قدر اﻻمكان.
2)استخدام ال unit test: كل متحكم او موديل يجب ان نعمل له كلاس ليفحصه عن طريق phpunit التي اصبحت مدمجة بنسخة ال php بشكل افتراضي.
الأسباب:
* نفرض انك مثلا تفحص مخرجات الكود عن طريق الطباعة داخل المتحكم ثم تحذفها فيما بعد عندما
يعمل الكود، لكن عندما تعمل تغييرات كبيرة على الكود refactoring ربما تحصل اخطاء كثيرة في اماكن
مختلفة من البرمجية، وعندها يمكن ان يخرج اﻻمر عن السيطرة، وتضطر إلى اعادة فحص اقسام كثيرة من الكود
من البداية، طبعًا هناك حل اخر وهو ابقاء جمل الفحص موجودة في الكود لكن مع استعمال ثابت باسم DEBUG_MODE تغير قيمته عندما تريد فحص السكربت، لكن هذا يقودنا للنقاط اﻻخرى.
* ال unit test يعطي تقرير عن نسبة فحص الكود يعني يعطيك الأماكن غير المفحوصة حتى اﻻن حتى تنتبه لها وتفحصها قبل فوات اﻻوان.
*في ال unit tests انت تفحص الكود من الخارج، وهذا يجبرك على ترتيب الكود بشكل انك تستطيع فحصه من الخارج، يعني سوف تقوم بتغيير الكثير في ترتيب الكود حتى يصبح قابل للفحص، وهذا يجعلك تكتب كود افضل من حيث لا تشعر .
3)استخدام ال design patterns :
وهي طرق شائعة ومعروفة مسبقًا لحل مشاكل محددة، وتساعدك على ترتيب الكود بطريقة منطقية ومفهومة لباقي المبرمجين، كما انها تمنع العبث بالكود من قبل المبرمجين وتجعله منظمًا اكثر، مثلا أسلوب ال singleton
يمنعك من تعريف الكائن اكثر من مرة في الكود، وهذا جيد جدًا لقواعد البيانات ولل front controller مثلاً
اذ انك ربما تستأجر مبرمجًا لعمل تعديل على الكود، لكن بما انه لم يكتب الكود ربما يقوم بعمل بعض الطرق غير الصحيحة نظرًا لقلة خبرته في الكود، وهذا مع ال unit tests يجعله يعرف خطأه، وبالتالي يتعلم اسرع، ايضًا ربما يكون المبرمج كسولا ويحاول وضع "أي كود يعمل" بغض النظر عن جودته، لكن ال design patterns تمنعه من ذلك.
هناك ايضًا اساليب اخرى مثل mvc وهي اكثر من مجرد فصل التصميم عن البرمجة ، ففيها ايضًا نظريات اخرى مثل fat model thin controller وغيرها...
الكثير من المبرمجين يشتكون من الصعوبات الكامنة في اطر العمل، وانها تقيد المبرمج باسلوب العمل الخاص بها،لكن هذه الصعوبات وجدت قصدًا، حتى تنظم الكود، ونحن كمبرمجين ندخل بارادتنا إلى هذا القفص المسمى اطار عمل، لمصلحة تطوير الكود بشكل سليم.لهذا يجب علينا ان ندرك ما تحاول اطر العمل ان تفعله، حتى نتجنب الوصول إلى طريق مسدود.
4)
يمكن ايضًا التحكم بنوع اﻻصدار، إذ انه من المتعارف عليه ان نقسم السكربت ل 3 اصدارات
production
test
release
وذلك لسهولة التطوير، مثلا نسخة التطوير يجب ان تكون مريحة للمبرمج من حيث اسماء الكلاسات وظهور اﻻخطاء ، إذ اننا معنيون بظهور جميع اﻻخطاء حتى ال notices .
لكن في نسخة النشر قد نغير الكثير من ال naming conventions او نخفف من ظهور اﻻخطاء وذلك لدواع امنية.
يتم التحكم بهذه اﻻصدارات عادة عن طريق apache ant
5)
يمكن ايضًا تركيب مخازن لحفظ نسخ احتياطية من الكود ، وقد قمت بتجربة ذلك قبل فترة باستخدام supervision
طبعًا هناك انظمة اخرى لكن أنا استخدمت هذا
6) يمكن ايضًا ان تستعمل اسلوب ﻹدارة المشاريع حسب فلسفتك الخاصة، وهناك العديد منها مثل waterfall,agile
وانا اجرب استخدام agile وبالتحديد scrum,kanban
ال agile بشكل عام تدعو إلى السماح للزبون بعمل تغييرات متى شاء على الكود،وهي صعبة جدًا ليس منطقيًا وانما عمليًا اذ ان الزبون متطلب بطبعه، مما يعني الكثير من العمل والضغط على الفريق.
لكن هي كنظرية تستحق اﻻهتمام والتجربة، وهي عبارة عن التالي:
يقوم الزبون بكتابة كل ما يريد من خواص بورقة تسمى backlog
ثم تذهب هذه الورقة للمبرمجين، الذين يقدرون الوقت المطلوب لكل خاصية لكي تكتمل
ويقومون بتقسيم الخواص لفترات زمنية : iterations,sprints بحيث بعد كل فترة زمنية
تقدم خاصية جاهزة للزبون، مع فتح باب الملاحظات له وفتح الباب لتصحيح اخطاء الكود.
ولا يتم اﻻنتقال للفترة الثانية إلا بعد انتهاء جميع المشاكل المتعلقة بالفترة السابقة.
اللقاءات اليومية: يقوم الفريق بعقد لقاء يومي لمدة ربع ساعة (يكون الفريق واقفًا على اقدامه حتى يختصر بالمعلومات ولا يقول سوى المعلومات المفيدة )، وكل مشارك يقول:
1-ماذا انجز
2-ما هي المشاكل التي واجهته
3-ماذا سيفعل لحل هذه المشاكل
المدير(scrum master):مسؤول عن اﻻدارة والتوجيه وحل المشاكل في الفريق.
المخطط البياناتي burn up charts:
مخطط بياني يوضح التقدم في المشروع ويعطي تقديرًا للفترة الزمنية اللازمة لانهاء المشروع.
وهو ميزة ال scrum

هذه فيديوهات تشرح النظرية:



وهذا موقع لادارة مشاريعك بهذه الطريقة:
http://www.scrumdo.com/
وهذا ما يحدث عندما تنفذ الطريقة خطأ:






ahmad sadiq is offline   قديم 05-04-2011, 09:55 AM
الرد مع إقتباس
عضو فعال
#3  

البرمجيات التجارية الضخمة -enterprise فعلا تختلف تماما عن المواقع العادية ، الشيء الذي يدعو لمزيد من التقدم والبحث والتعلم ..

- لم يعد هم المبرمجين هو فقط عرض المعلومة او كيفية جلبها من قاعدة البيانات او كيفية ربطها ، بل ان هذه تعتبر العملية الاساسية مع وجود الكثير من العمليات والقيود عليها + مراعاة سرعة واداء + مراعاة الامان والسيكيورتي + مراعاة عرضها بطريقة سلسة وسهل للزائر

- اصبح قسم ال QA - Quality Assurance و ال User Experience جزء هام من كل الشركات التجارية التي تسعى ل إحترام الزائر وتقديره ، وهو العامل الاقوى في المواقع التجارية ، اي ان الامر لم يعد برمجيا .. بل اصبح كيفية ضمان راحة الزائر في كل الموقع وبكل الطرق !



نقطة ال nameing conventions رااااااااائعة .. اعرفها وكنت استخدمها في الجافا ، وموجود في السي شارب ايضا .. ولكن لم اعتاد عليها في ال Php بعد، ولكنها من الناحية التنظيمية ممتازة .. خاصة عند وجود اكثر من مبرمج على نفس الموقع


ال Unit Test بالرغم من ان الكثير يؤكدون انه مهم للغاية وانه يعتبر جزء كبير من البرمجة ، إلا انني مازلت افضل التست اليدوي .. لاحساسي انه لتضبيط بيئة عمل للتستنج سيأخذ وقت .. ولن يكون ذو عائد كبير خاصة في ال logical testing


استخدمت designn pattern واحدة فقط غير ال MVC وكانت تجربة لا بأس بها .. Singleton ، ليس المهم انها تفي بالغرض او ان MVC احسن او افضل .. النقطة المهمة هنا ان استخدامك ل design patterns اخرى يجعلك تفهم المعنى بشكل اوضح ، ويجعلك تعتز بمميزات MVC بنفس الوقت ايضا


اعجبني ما تحتويه جعبتك يا باشا ، لكم اتمنى ان نشترك جميعا - اعضاء سوالف - في مشروع ابن حلال ، تقوم بالتخطيط له ، وتضبيطه .. ثم البدء في كتابة كوده ، ستكون تجربة مفيدة لنا جميعا بغض النظر عن النتيجة في النهاية مع ثقتي في قوة النتيجة .

انا من اشد المشجعين للفكرة ، ورغم العمل والحياة .. ساشارك كل يومين على الاقل بكلاس من الكود !






__________________
Ahmed Ehab
أستاذ سوفت !
facebook me - tweet me
Egyptechno is offline   قديم 05-04-2011, 08:07 PM
الرد مع إقتباس
عضو سوبر نشيط
#4  

^^^
والله مش عارف كأنه سوالف مش راضي ارد على الموضوع ... من اول ما تم طرح الموضوع وانا احاول ارد ولا فائدة يعطيني خطأ بالاتصال ...!

الموضوع من اشد المواضيع النادرة بالانترنت عربيا بالاخص ، وللأسف هو الموضوع الاهم بالنسبة لي في الاعمال والمشاريع ...

فتجد الشركات البرمجية تملك مبرمجين محترفين ومعروفين ولكن قلة التنظيم والتخطيط ، لا يجعل المبرمج يعرف مالمطلوب !

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

على كل متابع الموضوع وان شاء الله نشوف خبرات الاعضاء بهذا الموضوع !

>>> بالنسبة لفكرتك انا مؤيد وبشدة ، وان شاء الله يتم توزيع على كل المشتركين مخططات مثلا اليوز كيس والكلاس دياجرام ، بالتالي يقوم بعمل ما اعطي له !

تحياتي لك






__________________
زورونا في موقع الحياة للنقاشات والأسئلة والأجوبة :
- php >> وهو لحل مشاكل php وما حولها
- Ideas >> وهو لعرض الأفكار وتقييمها وايضا لمناقشة الأفكار
عبدالله أبولبن is offline   قديم 09-04-2011, 11:24 AM
الرد مع إقتباس
عضو فعال
#5  

صحيح التخطيط في uml جيد
لكن فقط المحترفون جدًا قادرون على رسم تخطيط لا يتم تعديله فيما بعد
انا كثيرًا ما كنت اعمل تخطيطات، لكن فيما بعد اجد انها غير عملية لذا اقوم بالغائها ثم اقوم بكتابة
شيء جديد.
اعتقد ان ال uml خاصة فقط ببرمجة الكلاسات وليست برمجة الدوال (procedural)
وهو شيء مفهوم اذ ان الكلاسات والكائنات تقوم بتقسيم الكود بشكل يسهل شرحه ونمذجته.

بالنسبة لوضع استراتيجية للشركة او وضع المبادئ الاساسية التي تعمل عليها الشركة فهو امر مهم لكن يجب ان يكون واقعي
في نفس الوقت.
مثلا لو اخترت واحدة من نظريات ال Agile فإنك تلزم نفسك بقبول تعديلات الزبون على طول سير المشروع
مما يعني ارهاق فريق العمل، لذا اذا اردت ان تتبنى مثل هذا اﻷمر، يجب ان تطلب مبلغ كبير نسبيًا حتى تدفع للمبرمجين
لقاء الجهد الكبير في التعديل وفي ضغط العمل الناتج عن كثرة الطلبات.
الصراحة عجبتني طريقة عمل ال scrum وهي طريقة جميلة إذ انها تعطي ادوات لادارة المشروع والفريق من حيث اللقاءات
اليومية والمخططات burn down charts .
ووجدت هذا الموقع الذي يمكن ان اضع فيه مخططاتي واديرها(صالح لعمل الفريق ايضًا)
http://www.scrumdo.com/

لكن عمليًا اعتقد انها غير صالحة لعمل الفرد او للعمل منخفض التكلفة الذي عادة ما نراه كمبرمجين احرار
ﻹنه في النهاية انت عندك نفقات شهرية ثابتة للحياة ، ولا تستطيع ان تنفذ جميع طلبات العميل خلال الفترة الزمنية
المحددة لكي تحصل على اجر يومي \ شهري مقبول.

نظام ال mvc في الجافا متشدد اكثر من ال php ، وهو بالفعل يقوم بمنع المبرمج من عمل بعض اﻻمور الشريرة ، مثل طباعة جملة في الموديل ، اذ ان الموديلات في الجافا تسمى java beans
وعندما تطبع اي جملة في الموديل تحصل خطأ في الكومبايل، اي ان الكود لا يتم عمل compile له اصلا.
كذلك الجافا متشددة في اﻻخطاء الصغيرة، فأي خطأ يعمل لك خطأ 500 في السيرفر، مما ينبهك للاخطاء في مرحلة مبكرة وبالتالي تكتب كود افضل.
وتجربة هذا اﻻمر في الجافا جعلني اعشق ال exceptions في ال php حيث اصبحت استخدمها بكثرة في تطبيقاتي.







آخر تعديل بواسطة ahmad sadiq في 09-04-2011 الساعة 05:18 PM.
ahmad sadiq is offline   قديم 09-04-2011, 05:02 PM
الرد مع إقتباس
عضو فعال جدا
#6  

بارك الله فيكم جميعاً معلومات افادتني حقاً.






__________________
downloads
عبدالله بن سعود is offline   قديم 09-04-2011, 05:17 PM
الرد مع إقتباس
عضو فعال
#7  

عبدالله باشا :

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

2-
ERD Diagram مع فكرة عامة عن المشروع وهدفه ومستخدمينه

3-
اقوم بعدها بمساهمة جزئية مع ال Analysts في العمل لكتابة ال class diagram

4-
يتم تصميم جميع الصفحات الخاصة بالنظام .. وتحديد المدخلات والبيانات المعروضة في كل صفحة وطريقة عرضها

5-
يتم الاتفاق على التقنيات المستخدمة وكيفية استخدامها وكيفية ربط الاجزاء ببعضها

6-
يبدأ العمل



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


بالنسبة للاقتراح ، اتمنى ان نتخذ خطوات فعلية للبدء على الاتفاق على فكرة لتنفيذها او الاختيار بين عدة افكار او برامج يتم تطبيقها .. مع العلم اننا عايزين برنامج سهل حتى ما نعقد الامور علينا، اتمنى لو فيه اي اقتراحات نجمعها نحطها في موضوع للتصويت .. وبمجرد الاتفاق على برنامج معين يتم الاتفاق على طريقة التعاون - هناك العديد من الطرق - وكيفية تقسيم المهام وما الى ذلك

اقتراحاتي المبدأية بالنسبة للبرنامج :

- مكتبة كتب
- مكتبة برامج


اتمنى المشاركة






__________________
Ahmed Ehab
أستاذ سوفت !
facebook me - tweet me
Egyptechno is offline   قديم 09-04-2011, 07:16 PM
الرد مع إقتباس
عضو فعال
#8  

احببت التعليق على نقطة الجافا وال MVC

بالفعل ، نظام ال MVC في الجافا معقد جدا .. الامر الذي يجعل الوصول لنظام MVC ممتاز بالجافا امر صعب ، ولكن بمجرد الوصول لنظام يعمل بشكل كفؤ .. تجد الامور اصبحت سهلة


الجافا عظيمة !






__________________
Ahmed Ehab
أستاذ سوفت !
facebook me - tweet me
Egyptechno is offline   قديم 09-04-2011, 07:17 PM
الرد مع إقتباس
الرد على الموضوع



أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
ملاحظة سريعة احببت مشاركتها Egyptechno صوت الأعضاء 11 17-05-2011 09:52 PM
مشكلة كنت مشاركتها بالالف و االن 26 قروي الإصلاح والصيانة 2 09-12-2007 02:51 PM
كلبة ترث 12 مليون دولار من ثرية أمريكية ابو بكر القسم العام 8 11-09-2007 04:40 PM
ابحث عن برنامج تدريبي خاص بالمعلومات على سبيل المثال sanaa الأخبار المتعلقة بالإنترنت والتقنية 0 13-02-2006 12:55 PM
تم افتتاح PHP4web.org ودعوة للمبرمجين لاثراء المنتدى بالمعلومات u1901 PHP 4 03-06-2004 08:45 AM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 04:30 PM.