النتائج 1 إلى 8 من 8

الموضوع: مقالات ثرية بالمعلومات احببت مشاركتها

  1. #1
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576

    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

    تحياتي





    __________________
    SWF Thumbnail - tweet me


  2. #2
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    ما زلت بمرحلة التعلم اﻻساسي ﻷساليب تنظيم البرمجيات، خاصة الكبيرة منها
    لكن لدي فكرة بسيطة عن كيفية ترتيب برمجية تجارية كبيرة (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.youtube.com/watch?v=Q5k7a9YEoUI
    http://www.youtube.com/watch?v=vmGMpME_phg

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






  3. #3
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


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

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

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



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


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


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


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

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





    __________________
    SWF Thumbnail - tweet me

  4. #4


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

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

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

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

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

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

    تحياتي لك





    __________________
    زورونا في موقع الحياة للنقاشات والأسئلة والأجوبة :
    - php >> وهو لحل مشاكل php وما حولها
    - Ideas >> وهو لعرض الأفكار وتقييمها وايضا لمناقشة الأفكار

  5. #5
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    صحيح التخطيط في 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 الساعة 06:18 PM

  6. #6
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2007
    المشاركات
    2,105


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





    __________________
    للتواصل p2006q#gmail.com

  7. #7
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


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

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

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

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

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

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

    6-
    يبدأ العمل



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


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

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

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


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





    __________________
    SWF Thumbnail - tweet me

  8. #8
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


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

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


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





    __________________
    SWF Thumbnail - tweet me





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض