Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

بناء بدء التشغيل الخاص بك: تقترب من تحسينات الميزة الرئيسية

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Securing an API
Using Faker to Generate Filler Data for Automated Testing

Arabic (العربية/عربي) translation by Hamdan Veerlax (you can also view the original English article)

Final product image
What You'll Be Creating

هذا البرنامج التعليمي جزء من سلسلة Build Your Startup With PHP على Envato Tuts. في هذه السلسلة ، أرشدك من خلال إطلاق شركة ناشئة من مفهوم إلى واقع باستخدام تطبيق مخطط الاجتماعات الخاص بي كمثال واقعي. في كل خطوة على طول الطريق ، سأصدر رمز مخطط الاجتماعات كأمثلة مفتوحة المصدر يمكنك التعلم منها. سوف أتطرق أيضا إلى القضايا التجارية ذات الصلة ببدء التشغيل عند ظهورها.

كيفية التعامل مع تحديثات الميزات الرئيسية

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

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

إذا لم تكن قد فعلت ذلك بعد ، فحاول أن تقوم بجدولة اجتماع ، والآن يمكنك أيضًا جدولة نشاط ما. وسوف تساعدك على فهم وأنت تمر من خلال البرنامج التعليمي.

قبل أن نبدأ ، يرجى تذكر مشاركة تعليقاتكم وردودكم أدناه. أراقبهم ، ويمكنك أيضًا الوصول إلي على Twitter @lookahead_io. أنا مهتم بشكل خاص إذا كنت ترغب في اقتراح ميزات أو موضوعات جديدة للبرامج التعليمية المستقبلية.

للتذكير ، يتم كتابة كل رمز مخطط الاجتماع في إطار Yii2 لـ PHP. إذا كنت ترغب في معرفة المزيد عن Yii2 ، فتحقق من سلسلة البرمجة المتوازية مع Yii2.

ميزة تخطيط النشاط

Building Startups - Approaching Major Features - Planning an Activity page

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

على سبيل المثال ، إليك فيديو جدولة للمجموعات:

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

بعبارة أخرى ، أردت إنشاء لوحة مثل تلك الموضحة في الأوقات الموضحة أدناه ولكن للأنشطة:

Building Startups - Approaching Major Features - The Older Plan a Time Panel

إن بنية MVC ونظام تسمية الشفرة متشابهان إلى حد كبير بين أوقات وأماكن الاجتماع ، لذلك يبدو أن أنشطة البناء بسيطة جدًا على السطح. ومع ذلك ، فإن قرار القيام بذلك كان له تداعيات واسعة.

تحديد نطاق التغييرات

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

الآثار التي تواجه العملاء

من ناحية التصميم ، فكرت في كيفية تأثير الأنشطة على الخدمة التي تواجه العملاء:

  • سيؤدي ذلك إلى تغيير تنظيم اجتماع للسماح بنوع جديد ، وهو حدث يعتمد على النشاط. سيكون هناك لوحة إضافية على صفحة التخطيط.
  • يجب تصميم لوحة الأنشطة للسماح للأشخاص بالاختيار من الإعدادات الافتراضية أو تخصيصها وإضافة إعدادات خاصة بهم ، على سبيل المثال ، التزلج الخلفي بدلاً من التزلج فقط ، "Go see Star Wars Rogue One" بدلاً من مجرد "Go see a movie".
  • سوف تحتاج دعوات البريد الإلكتروني إلى تضمين مساحة لسرد خيارات النشاط.
  • ستحتاج أحداث التقويم إلى دمج النشاط الذي تم اختياره مع موضوع الاجتماع.
  • قد يرغب المنظمون في إرسال بعض أفكار النشاط إلى صديق أو مجموعة بدون اختيار مكان ، لذلك أحتاج إلى السماح بذلك. في الوقت الحالي ، لا يسمح لك النظام بإرسال دعوة إلى أن يتم اقتراح مكان واحد على الأقل.
  • إذا طلب شخص ما تغييرًا في اجتماع ، فسيكون من الضروري توسيع دعم طلبات التغيير لدعم الأنشطة.

هذه كانت معظم الأساسيات. الآن ، دعنا نفكر في الشفرة.

آثار قانون

شفرة المصدر المتفرعة

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

هناك قاعدة واحدة فقط: أي شيء في master يكون دائمًا قابلاً للانتشار.

نظرًا لأن هناك شخصًا واحدًا لي وأنا جيد جدًا في إدارة مصدر الشفرة الخاص بي ، فأنا أقل قليلاً من التدخل في هذه القاعدة.

لكن التعليمات البرمجية المتفرعة مفيدة أيضًا لمراجعة التغييرات البرمجية عندما تكون جاهزًا للاختبار. سوف أشارك مظاهرة من هذا في نهاية البرنامج التعليمي اليوم.

تكرار الشفرة العامة

سيكون هناك نوعان من الاجتماعات الآن: تلك القائمة حول التواريخ والأوقات فقط وتلك الموجودة حول الأنشطة والتواريخ والأوقات. لذا يحتاج نموذج الاجتماع إلى التكيف.

بالنسبة للأزمنة والأماكن ، توجد على وجه التحديد النماذج MeetingTime و MeetingPlace بالإضافة إلى نماذج لتفضيلات هذه مع المشاركين ، تسمى MeetingTimeChoices و MeetingPlaceChoices. يمكنك قراءة المزيد عن بناء هذا في بناء بدء التشغيل الخاص بك مع PHP: جدولة توافر وخيارات.

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

إعدادات الحساب والاجتماع

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

قوالب البريد الإلكتروني

كما أثرت إضافة الأنشطة على نماذج البريد الإلكتروني للدعوات والاجتماعات المكتملة.

سجل الأحداث والسجلات

نظرًا لأنه يتم تسجيل كل تغيير في أي اجتماع ، يجب أيضًا تسجيل كل خيار نشاط وتغيير.

مناطق متنوعة أخرى

يجب تغيير ملف تقويم .ics ليشمل النشاط. في النهاية ، ستحتاج واجهة برمجة التطبيقات إلى التحديث - وحتى الإحصاءات المتعلقة لوحة المعلومات الإدارية.

إذا كان المؤقت ليس فارغًا ، فسيعرض قيمة عابرة.

يسلط الضوء على الترميز

في حين أن هناك الكثير من الشفرات الجديدة التي يجب تغطيتها في برنامج تعليمي واحد ، دعنا ننتقل إلى الجوانب المميزة من بعض المفاهيم أعلاه.

هجرة قاعدة البيانات

أولاً ، قمت بإنشاء عمليات ترحيل قاعدة البيانات. تحدثت في وقت سابق من تكرار التعليمات البرمجية مع جوانب ميزة مشتركة. إليك مثال على ترحيل MeetingActivity مقابل ترحيل الجدول MeetingTime الأقدم:

إليك ترحيل MeetingTime ، ويمكنك مشاهدة أوجه التشابه:

في النهاية ، كنت بحاجة إلى خمسة للجداول الجديدة التالية:

  1. m161202_020757_create_meeting_activity_table
  2. m161202_021355_create_meeting_activity_choice_table ، لتخزين تفضيلات الإتاحة لكل مشارك في الاجتماع لكل نشاط
  3. m161202_024352_extend_meeting_setting_table_for_activities لإعدادات اجتماع معين لإضافة أو اختيار الأنشطة
  4. m161202_024403_extend_user_setting_table_for_activities للإعدادات الافتراضية للحساب
  5. m161203_010030_extend_meeting_table_for_activities ولإضافة is_activity للدلالة على خاصية الاجتماع مع أو بدون نشاط

بناء إطار MVC للأنشطة

Building Startups - Approaching Major Features - The Gii Scaffolding Menu

استخدمت قدرة Giji لسقالات Gii لإنشاء نموذج ، ووحدة تحكم ، ومشاهدات أولية. لقد غطت الهجرات و Gii في وقت سابق في هذه السلسلة.

JavaScript و jQuery Changes

كانت هناك أيضًا إضافات جوهرية لجافا سكريبت و jQuery المستخدمة ، خاصة الآن أن التفاعل مع عناصر التخطيط لاجتماع يتم مع أجاكس ، دون تحديث الصفحة.

هنا ، على سبيل المثال ، هي حلقة التعليمات البرمجية لمعرفة ما إذا تم اختيار وقت اجتماع:

باستخدام نظام تسمية شائع ، كانت كتابة التعليمات البرمجية للأنشطة قابلة للتكرار من هذا:

هناك حاجة إلى توسيع الوظائف الأخرى ، مثل تلك التي تعرض الردود للمستخدم ، للأنشطة:

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

إضافات الإطار

بالتأكيد ، كانت هناك نماذج وأجهزة تحكم وآراء كان يجب إضافتها. في ما يلي مقتطف من نموذج MeetingActivity.php الذي يسرد عددًا من الأنشطة الافتراضية التي يمكن للمستخدم الكتابة عنها سريعًا:

Building Startups - Approaching Major Features - Activity Typeahead List

وإليك مقتطفًا من frontend/views/activity/_form.php/ باستخدام عنصر واجهة المستخدم TypeaheadBasic باستخدام القيمة الافتراضيةالإعدادية defaultActivityList():

ولكن هناك العديد من التغييرات على الشفرة خارج احتياجات إطار العمل المشترك. وإليك هنا نموذج ()canSend لنموذج Meeting.php ، وهي الوظيفة التي تحدد ما إذا كان يُسمح للمستخدم بإرسال دعوة لاجتماع ما. ويحدد ما إذا كان الاجتماع يستوفي الحد الأدنى من متطلبات الإرسال ، مثل وجود وقت ونشاط أو وقت ومكان.

في ما يلي ، يمكنك معرفة كيفية إضافة قسم جديد للأنشطة:

قوالب البريد الإلكتروني

يتطلب تحديث تخطيطات البريد الإلكتروني جزءًا صغيرًا من التفكير في التصميم وأفضل طريقة لعرض الأنشطة في تلبية الدعوات والتأكيدات. إليك عينة من دعوة البريد الإلكتروني المحدثة:

Building Startups - Approaching Major Features - Email Invitation Theme

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

التفكير في التغييرات

في النهاية ، تتطلب ميزة النشاط فرعًا جديدًا ضخمًا من الشفرة. إليك طلب السحب:

كان الأمر كبيرًا جدًا لدرجة أنني قررت إنشاء فيديو ممتع خلال جميع التغييرات في GitHub مع تشغيل الموسيقى المناسبة في الخلفية ...استمتع:

بشكل عام ، كان بناء ميزة الأنشطة أمرًا صعبًا ومفيدًا بالنسبة لي للتفكير في بنية الموقع وكيفية تحقيق تقدم سريع ومستقر على مصدر قاعدة البيانات لبدء التشغيل من شخص واحد. استخدام النسخ المتماثل ، ولكن تعكس أولاً على النطاق الكلي.

انتهت ميزة النشاط لمس مناطق أكثر مما كنت أتوقع.

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

لقد اتخذت بالتأكيد نهجا مختلفا قليلا لتوجيهك في هذه الحلقة ، وآمل أن يكون ذلك مفيدا.

هل لديك أفكارك الخاصة؟ أفكار؟ ردود الفعل؟ يمكنك دائما الوصول لي على تويترlookahead_io@ مباشرة. شاهد البرامج التعليمية القادمة هنا في سلسلة إنشاء شركتك الناشئة مع PHP. هناك الكثير من الأشياء المفاجئة في المستقبل.

مرة أخرى ، إذا لم تجرّب مخطط الاجتماعات أو المخطط البسيط بعد ، فابدأ بجدولة اجتماعك الأول:

روابط ذات علاقة

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.