تحياتي لكم أيها الزملاء. سنتحدث اليوم عن نوع العمل التحضيري الذي يتعين عليك القيام به قبل البدء في البرمجة بشكل كبير. وبشكل أكثر تحديدًا، حول تخطيط وإنشاء بنية التطبيق. ولكن من أين تبدأ؟ كيفية بناء هذه العمارة؟ كما هو الحال مع كل شيء، عليك أن تبدأ من البداية. وهي - مع IDEA. كانت فكرة مشروعنا هي إنشاء روبوت برقية مفيد بوظائف أساسية. دعونا نكرر ما يلي بالضبط: "أنا، كمستخدم، أريد أن أكون قادرًا على تلقي إشعارات عند نشر مقالات جديدة في تلك المجموعات على JavaRush التي تهمني." باتباع مبدأ YAGNI، سنقوم ببناء تطبيقنا. وهذا يعني أننا سوف نأخذ فقط ما نحتاجه. لن نقوم بإنشاء وظائف مسبقًا أو احتياطيًا لمجرد أننا نريد ذلك، وقد تصبح في متناول اليد يومًا ما. نعم، سنقوم بإنشاء تطبيق قابل للقراءة وقابل للتوسيع، لكن هذا لا يعني أننا سنقوم بإنشاء مخطط قاعدة بيانات "للنمو". ومن أجل عدم دعم هذا "النمو"، قررت أنه سيكون من الأفضل التخلي عنه تمامًا. سيساعدنا هذا على تجنب الدعم غير الضروري أثناء التطوير والاختبارات غير الضرورية. في وقت لاحق، عندما يدخل مشروعنا في مرحلة الإنتاج (مرة أخرى، من الاختصار حث - إنتاج)، سنكون قادرين على القيام بشيء أكثر. بمجرد اتخاذ قرار بشأن فكرة ما، عليك أن تكون شقيًا قليلاً وترسم. ماذا ترسم؟ سنحتاج إلى القدرة على حفظ بيانات الاشتراكات لمجموعات من المستخدمين المختلفين. أعلم أنه يمكنك استخدام معرف المستخدم في شكل معرف دردشة في Telegram. وهناك فكرة عن كيفية استمرار البحث عن مقالات جديدة فعليًا: سنبحث في جميع المجموعات التي لديها اشتراكات عن مقالات جديدة ونرسلها إلى الدردشات. وبناء على ذلك نحصل على ما يلي كتقريب أولي (هنا التطوير بدون تجميل): لا أتمنى أن تفهم خط يدي: أريد أن أبين بالضبط كيف وأين يبدأ التطوير. لقد اكتملت المرحلة الأولى: لقد قررنا بطريقة ما ما سيحدث. تم وصف النماذج/الجداول الموجودة في قاعدة البيانات أعلاه. لكن هذه مجرد مسودة: من الممكن، بل وينبغي، صقلها وتقديمها إلى شكل أكثر قابلية للقراءة. بينما كنت أقوم بالتلميع، تذكرت أنني أردت أيضًا الحصول على إحصائيات حول عمل الروبوت. أضف هذا. في هذا الرسم يكون من الواضح ماذا وكيف سيتم ترتيبه. وهذا يعني ما هي الجداول والحقول التي ستكون فيها، وما هي أسماء الكيانات التي ستكون للجداول. تقرر أن يكون هناك العديد منهم:
- المستخدم - معلومات حول مستخدم Telegram الذي سيستخدم الروبوت الخاص بنا. كما ترون، نقوم فقط بحفظ معرف الدردشة والإشارة إلى ما إذا كان المستخدم نشطًا أم لا. لماذا؟ لأن هدفنا ليس جمع المعلومات عن المستخدمين، بل إفادتهم؛
- GroupSub - ستجد هنا معلومات حول المجموعة التي اشتركت فيها وآخر مقال تم إرساله إلى المشتركين؛
- الإحصائيات - لم أقم بإنشاء مخطط لها - سنفعل ذلك لاحقًا. ليس هذا هو الهدف الرئيسي في MVP للمشروع.
إنشاء مستودع للعمل
أخيرًا، يمكنك إنشاء مستودع للعمل مع روبوت التليجرام.- نقوم بملء العناصر المألوفة لدينا بالفعل - اسم المستودع ووصفه الموجز.
- أضف ترخيصًا - Apache 2.0 (يمكنك اختيار الترخيص حسب تقديرك).
- مشروعنا متاح الآن - إليك الرابط الخاص به: JavaRush Telegrambot .
إنشاء مشروع في المستودع
للعمل مع المشروع، سيكون من الجيد استخدام أدوات GitHub، مثل project. ما هو؟ هذا هو المكان الذي يمكنك من خلاله إنشاء المهام وتتبع اكتمالها وحفظ حالة المهمة. تحديد من سينفذها وأكثر من ذلك. للقيام بذلك، في المشروع الذي تم إنشاؤه سنجد زر المشاريع ، وهناك سنقوم بإنشاء زر جديد: كما ترون، هنا أشرت إلى اسم المشروع ووصفته واخترت القالب الذي سنعمل عليه - كانبان الآلي. بالنسبة لنا الآن ليس من المهم ما يعنيه هذا. الشيء الرئيسي هو أنه سيكون لدينا لوحة بها مهام، مقسمة إلى أعمدة، حيث سيكون كل عمود هو حالة المهمة:- للقيام - جميع المهام التي تم التخطيط للقيام بها؛
- قيد التقدم - المهام التي يتم العمل عليها حاليًا؛
- تم - المهام التي تم إكمالها بالفعل ضمن هذا المشروع.
نكتب قضايا (قضايا) للمشروع
لفهم المهام التي يجب كتابتها، دعونا نقرر ما سيكون لدينا في المشروع. نحتاج إلى تطبيق يمكن تشغيله بسهولة وسرعة، حتى نتمكن من الوصول إلى قاعدة البيانات، حتى نتمكن من إدارة مخطط قاعدة البيانات وتغييره، حتى نتمكن من تقديم طلبات REST في JavaRush للحصول على بيانات حول المقالات. وبناءً على ذلك يمكنك اختيار التقنيات التالية:- SpringBoot - كإطار عمل لتطبيقنا،
- بيانات الربيع - للعمل مع قاعدة بيانات،
- Flyway - للعمل مع عمليات ترحيل قاعدة البيانات،
- MySQL - كقاعدة بيانات للمشروع،
- Telegrambot StringBoot starter - مكتبة للعمل مع روبوت برقية،
- Unirest هي مكتبة للتعامل مع طلبات REST.
قالب إنشاء المهام
سنقوم بإنشاء المهام باستخدام القالب التالي:- سيبدو اسم المهمة كما يلي: JRTB-{IssueNumber}:{IssueDescription} ، حيث:
- {IssueNumber} هو الرقم التسلسلي للمشكلة. لنأخذها مرة أخرى من المشكلة الأخيرة؛
- {IssueDescription} - وصف مختصر للمشكلة.
- في نص المهمة، سنقدم وصفًا أكثر تفصيلاً لها (في بعض الأحيان قد يتطابق مع الوصف الموجود في اسم المهمة).
- معايير القبول هي قائمة المتطلبات، وبعدها يمكن اعتبار المهمة مكتملة. إذا جاز التعبير، معايير قبول المهمة. وباستخدامها يستطيع المراجع (من المراجع الإنجليزي - المراجع - الشخص الذي ينظر في كيفية إكمال المهمة) فهم ما إذا كانت المهمة قد اكتملت بالكامل أم لا.
- [ميزة] JRTB-0: إنشاء مشروع تمهيد Skeleton Spring - كل شيء واضح هنا: عليك القيام بالجزء الأول مما فعلناه في المقالة السابقة.
- [ميزة] JRTB-2: أضف روبوت برقية إلى المشروع - أضف روبوتًا فارغًا سيستجيب ببساطة ويقول إنه على قيد الحياة وبصحة جيدة.
- [ميزة] JRTB-3: تنفيذ نمط الأوامر لبرنامج telegrambot - فلنقم بإعداد النهج الصحيح للتعامل مع الأوامر في روبوت telegram. حتى الآن لعدة فرق.
- [ميزة] JRTB-1: إضافة طبقة مستودع - هذه واحدة من أكبر المهام - فهي تجمع كل ما يلزم القيام به للعمل مع قاعدة البيانات.
- [ميزة] JRTB-5: كمستخدم، أريد إضافة المجموعة إلى الاشتراك - هذه هي بالفعل قصة المستخدم الأولى في فهم Agile. ستكون هذه فائدة حقيقية لمستخدمينا: سيكون من الممكن إضافة اشتراكات جماعية إلى الروبوت.
- [ميزة] JRTB-12: تنفيذ الجدولة لإرسال إشعار حول المقالات الجديدة - هنا سيتم تنفيذ البحث عن المقالات الجديدة إذا تم نشرها لكل مجموعة وإرسالها إلى جميع المستخدمين المشتركين في المجموعات.
- [ميزة] JRTB-6: كمستخدم، أريد أن أرى قائمة باشتراكات مجموعتي - كل شيء بسيط هنا: نضيف أمرًا يعرض قائمة بجميع المجموعات التي اشترك فيها المستخدم.
- [ميزة] JRTB-7: كمستخدم، أريد إزالة اشتراك المجموعة من اشتراكاتي - هنا تحتاج إلى إزالة اشتراك المستخدم في التحديثات في المجموعة.
- [الميزة] JRTB-8: بصفتي مستخدمًا، أريد تعيين برنامج غير نشط باستخدام الروبوت - قم بتنفيذ إيقاف الروبوت. أي كل ما يجب القيام به في نظامنا حتى يتوقف العمل. أضف الأمر /stop إلى المعالجة.
- [ميزة] JRTB-9: كمستخدم، أريد أن أبدأ العمل مع الروبوت أو أن أقوم بتنشيطه إذا استخدمته من قبل - أضف معالجة الأمر /start. بالضبط بالطريقة التي نريدها.
- [ميزة] JRTB-10: كمسؤول، أريد رؤية إحصائيات الروبوت - إنشاء مجموعة من إحصائيات الروبوت. إضافة قدرات المسؤول.
- [ميزة] JRTB-11: كمستخدم، أريد أن أرى الوثائق الخاصة ببوت التلغراف هذا - كتابة الوثائق. نعم، نعم، أيها الأصدقاء، لا يمكنك العيش بدونها، وكلما تعلمت القيام بذلك، كلما كان ذلك أفضل بالنسبة لك))
ملء المستودع
ما الذي يجب علينا فعله قبل أن نبدأ بالبرمجة؟ - أيها الكاتب، كم من هذه الفقرات يمكنك إضافتها، هل تخرجها من الهاوية؟؟ — لا، جودة العمل تظهر في التفاصيل. وهم الذين لهم معنى. لذلك دعونا نضيف تفاصيل أخرى. لكي يصبح المشروع شائعًا ومفهومًا للمطورين الآخرين، يجب ملؤه. ماذا يجب أن أضيف؟ لقد وصفت قائمة كاملة بما يمكن القيام به في المقالة تحسين العمل مع مشاريعك على GitHub: التعرف على Github Template Repository . أنا أوصي قراءته. من المهم بالنسبة لنا أن يكون لدينا إصدار واضح، وفهم واضح لما نقوم به. ولذلك، أضفت ملف RELEASE_NOTES الذي سيتم فيه تسجيل التغييرات في مشروعنا. على سبيل المثال، يمكنك إلقاء نظرة على RELEASE_NOTES من مشروعي (نعم، لماذا لا تظهر ما أضع فيه طاقتي وإبداعي). يتم وصف التغييرات لكل إصدار جديد هناك. أضفت أيضًا قوالب لإنشاء مهام جديدة، والتي تحتوي على 4 خيارات:- تقرير الأخطاء هو مهمة أنشأها المستخدمون/المختبرون الذين وجدوا خطأً في عملهم. وهذا شيء مهم للغاية: فهو يساعد في إدارة إصلاحات الأخطاء؛
- طلب الميزة هو مهمة لإضافة وظائف جديدة. جميع المهام الأولى في المشروع هي مهام طلب ميزات؛
- طلب التحسين - مهمة لتحسين تشغيل التطبيق. على سبيل المثال، لتغيير إجابات الاختبار عند العمل مع الروبوت. أنا لست كاتبًا تقنيًا ولا يمكنني التوصل إلى إجابات صحيحة تمامًا. فإذا كان لديك الرغبة والقدرة، اعرضها :)
- السؤال هو سؤال للمطورين حول تشغيل التطبيق. شيء مفيد جدا. لنفترض أنه لا يوجد فهم للعمل أو أن هناك شكوكًا حول بعض الأسئلة - يمكنك طرح سؤال بهذه الطريقة والحصول على إجابة مباشرة.
GO TO FULL VERSION