Саламатсыздарбы, кесиптештер. Бүгүн биз codeдоону баштоодон мурун кандай даярдык көрүү керектиги жөнүндө сүйлөшөбүз. Тагыраак айтканда, колдонмо архитектурасын пландаштыруу жана түзүү жөнүндө. Бирок эмнеден баштоо керек? Бул архитектураны кантип куруу керек? Бардык нерсе сыяктуу эле, башынан баштоо керек. Тактап айтканда - IDEA менен. Биздин долбоордун идеясы негизги функциялары менен пайдалуу телеграмма ботун түзүү болгон. Келгиле, так кайталайлы: "Мен колдонуучу катары, мени кызыктырган JavaRush топторунда жаңы макалалар жарыяланганда эскертмелерди алгым келет." YAGNI принцибине ылайык, биз колдонмобузду курабыз. Бул биз керектүү нерсени гана алабыз дегенди билдирет. Функционалдыкты алдын ала жана резервде биз каалагандыктан эле түзбөйбүз жана качандыр бир күнү бул пайдалуу болушу мүмкүн. Ооба, биз окула турган жана кеңейтилүүчү тиркемени түзөбүз, бирок бул биз “өсүү үчүн” маалымат базасынын схемасын түзөбүз дегенди билдирбейт. Бул “өсүүнү” колдобоо үчүн мен андан таптакыр баш тартканым жакшы деп чечтим. Бул бизге иштеп чыгуу жана керексиз тестирлөө учурунда керексиз колдоодон качууга жардам берет. Кийинчерээк, биздин долбоор өндүрүшкө киргенде (кайра англисизм, prod - өндүрүш деген аббревиатурадан) биз дагы бир нерсе жасай алабыз. Идеяны чечкенден кийин, бир аз тентек болуп , тартуу керек. Эмне тартуу керек? Бизге ар кандай колдонуучулардын топторуна жазылуулар боюнча маалыматтарды сактоо мүмкүнчүлүгү керек болот. Мен сиз Telegram'да чат ID түрүндө колдонуучунун идентификаторун колдоно аларыңызды билем. Жана жаңы макалаларды издөө иш жүзүндө кандайча уланат деген түшүнүк бар: биз жаңы макалаларга жазылуу бар бардык топторду издеп, чаттарга жөнөтөбүз. Мунун негизинде биз биринчи жакындоо катары төмөнкүнү алабыз (бул жерде жасалгасыз иштеп чыгуу): Менин кол жазмамды түшүнөсүз деп үмүттөнбөйм: өнүгүү кантип жана кайдан башталарын так көрсөткүм келет. Биринчи этап аяктады: биз кандайдыр бир жол менен эмне болорун чечтик. Маалыматтар базасындагы моделдер/tableлар жогоруда сүрөттөлгөн. Бирок бул долбоор: аны жылмалап, окула турган формага келтирсе болот жана керек. Мен жылмалап жатып, мен да боттун иши боюнча статистиканы алгым келгенин эстедим. Муну кошту. Бул чиймеде ал эмне жана кантип жайгаштырыла тургандыгы ачык-айкын көрүнүп турат. Башкача айтканда, аларда кандай tableлар жана талаалар болот, tableлар үчүн кандай an object аттары болот. Алардын бир нечеси болот деген чечим кабыл алынды:
- Колдонуучу - биздин ботту колдоно турган телеграмма колдонуучусу жөнүндө маалымат. Көрүнүп тургандай, биз колдонуучунун активдүү же активдүү эместигине карабастан, чат ID жана желекти гана сактайбыз. Неге? Анткени биздин максат колдонуучулар тууралуу маалымат чогултуу эмес, аларга пайда келтирүү;
- GroupSub - бул жерде сиз жазылган топ жана жазылуучуларга жөнөтүлгөн акыркы макала тууралуу маалымат болот;
- Статистика - Мен анын схемасын түзгөн жокмун - муну кийинчерээк жасайбыз. Бул долбоордун MVP негизги максаты эмес.
Жумуш үчүн репозиторий түзүү
Акыр-аягы, сиз телеграмма бот менен иштөө үчүн репозиторий түзө аласыз.- Бизге мурунтан эле тааныш болгон нерселерди - репозиторийдин аталышын, анын кыскача сүрөттөмөсүн толтурабыз.
- Лицензия кошуңуз - Apache 2.0 (сиз өз каалооңуз боюнча лицензияны тандай аласыз).
- Биздин долбоор азыр жеткorктүү - бул жерде ага шилтеме: JavaRush Telegrambot .
Репозиторийде долбоор түзүңүз
Долбоор менен иштөө үчүн GitHub инструменттерин колдонуу жакшы болмок, мисалы, долбоор. Бул эмне? Бул жерде сиз тапшырмаларды түзүп, алардын аткарылышына көз салып, тапшырма статусун сактай аласыз. Аларды жана башкаларды ким аткарарын аныктаңыз. Бул үчүн, түзүлгөн долбоордо биз табабыз Долбоорлор баскычы , ал жерде биз жаңысын түзөбүз: Көрүнүп тургандай, бул жерде мен долбоордун атын көрсөтүп, аны сүрөттөп бердим жана биз иштей турган шаблонду тандадым - Автоматташтырылган Канбан. Биз үчүн азыр бул эмнени билдирери анча маанилүү эмес. Эң негизгиси, бизде колонкаларга бөлүнгөн тапшырмалар бар такта болот, анда ар бир тилке тапшырманын статусу болот:- Жасоо - аткарылышы пландаштырылган бардык тапшырмалар;
- Аткарылууда - учурда иштеп жаткан милдеттер;
- Аткарылган - бул долбоордун алкагында аткарылган тапшырмалар.
Долбоор үчүн маселелерди (маселелерди) жазуу
Кандай тапшырмаларды жазуу керектигин түшүнүү үчүн, биз долбоордо эмне болорун чечели. Бизге оңой жана тез ишке кирүүчү тиркеме керек, андыктан биз маалымат базасына кире алабыз, биз маалымат базасынын схемасын башкара жана өзгөртө алабыз, ошондой эле макалалар боюнча маалыматтарды алуу үчүн JavaRush ичинде REST сурамдарын жасай алабыз. Мунун негизинде сиз төмөнкү технологияларды тандай аласыз:- SpringBoot - биздин колдонмо үчүн негиз катары,
- Жазгы маалыматтар - маалымат базасы менен иштөө үчүн,
- Flyway - маалыматтар базасынын миграциясы менен иштөө үчүн,
- MySQL - долбоор үчүн маалымат базасы катары,
- Telegrambot StringBoot стартер - телеграмма боту менен иштөө үчүн китепкана,
- Unirest бул REST сурамдары менен иштөө үчүн китепкана.
Тапшырма түзүү шаблону
Төмөнкү шаблон аркылуу тапшырмаларды түзөбүз:- Тапшырма аты төмөнкүдөй болот: JRTB-{IssueNumber}:{IssueDescription} , мында:
- {IssueNumber} - чыгарылыштын сериялык номери. Аны акыркы маселеден дагы бир жолу алалы;
- {IssueDescription} - маселенин кыскача баяндамасы.
- Тапшырманын негизги бөлүгүндө биз анын кеңири сыпаттамасын жасайбыз (кээде ал тапшырманын аталышындагы сүрөттөмө менен дал келиши мүмкүн).
- Кабыл алуу критерийлери – бул талаптардын тизмеси, андан кийин тапшырма аткарылды деп эсептелинет. Мындайча айтканда, тапшырманы кабыл алуу критерийлери. Аларды колдонуу менен рецензент (англисчеден рецензент – рецензент – тапшырманын кандай аткарылгандыгын караган адам) тапшырманын толук аткарылганын же аткарылбаганын түшүнө алат.
- [FEATURE] JRTB-0: Skeleton Spring жүктөө долбоорун түзүү - бул жерде баары түшүнүктүү: биз мурунку макалада кылган ишибиздин биринчи бөлүгүн кылышыңыз керек.
- [FECTURE] JRTB-2: телеграмма ботун долбоорго кошуңуз - жөн гана жооп берип, анын тирүү жана жакшы экенин айта турган бош бот кошуңуз.
- [ФУНКЦИЯ] JRTB-3: Telegrambot үчүн буйрук үлгүсүн ишке ашыруу - келгиле, телеграмма ботундагы буйруктар менен иштөөгө туура мамилени орнотобуз. Буга чейин бир нече командалар үчүн.
- [FEATURE] JRTB-1: Репозиторий катмарын кошуу - бул эң чоң милдеттердин бири - ал маалымат базасы менен иштөө үчүн жасалышы керек болгон нерселердин баарын бириктирет.
- [FEATURE] JRTB-5: Колдонуучу катары, мен топту жазылууга кошкум келет - бул Agile түшүнүгүндөгү биринчи Колдонуучунун окуясы. Бул биздин колдонуучулар үчүн чыныгы пайда болот: ботко топтук жазылууларды кошууга болот.
- [FETURE] JRTB-12: Жаңы макалалар жөнүндө билдирүүнү жөнөтүү графигин ишке ашыруу - бул жерде жаңы макалаларды издөө ишке ашат, эгерде алар ар бир топтор үчүн жарыяланып, топторго жазылган бардык колдонуучуларга жөнөтүлсө.
- [FEATURE] JRTB-6: Колдонуучу катары, мен өзүмдүн группалык жазылууларымдын тизмесин көргүм келет - бул жерде бардыгы жөнөкөй: биз колдонуучу жазылган бардык топтордун тизмесин көрсөткөн буйрукту кошобуз.
- [FEATURE] JRTB-7: Колдонуучу катары мен жазылууларымдан топко жазылууну алып салгым келет - бул жерде сиз колдонуучунун топтогу жаңыртууларга жазылуусун алып салышыңыз керек.
- [ФЕФАЦИЯ] JRTB-8: Колдонуучу катары мен ботту колдонуу менен жигерсиз абалга келтиргим келет - ботту токтотууну ишке ашыруу. Башкача айтканда, иш токтошу үчүн биздин системада эмне кылуу керек. иштетүү үчүн / токтотуу буйругун кошуу.
- [ФЕФАЦИЯ] JRTB-9: Колдонуучу катары мен бот менен иштей баштагым келет ЖЕ аны мурда колдонгон болсом, активдүү орноткум келет - /start буйругун иштетүүнү кошуңуз. Дал биз каалагандай.
- [ФУНКЦИЯ] JRTB-10: Администратор катары мен боттун статистикасын көргүм келет – бот статистикасынын жыйнагын түзүүдө. Администратордун мүмкүнчүлүктөрүн кошуу.
- [FECTURE] JRTB-11: Колдонуучу катары мен бул телеграмма ботунун documentтерин көргүм келет - жазуу documentтери. Ооба, ооба, достор, силер ансыз жашай албайсыңар жана муну канчалык тез үйрөнсөңөр, силер үчүн ошончолук жакшы болот))
Репозиторийди толтуруу
Коддоштурууну баштоодон мурун дагы эмне кылышыбыз керек? - Author, ушул абзацтардын канчасын кошо аласың, туңгуюктан сууруп жатасыңбы?? — Жок, иштин сапаты майда-чүйдөсүнө чейин көрүнүп турат. Жана алар акылга сыярлык адамдар. Андыктан дагы бир деталдарды кошолу. Долбоор популярдуу жана башка иштеп чыгуучулар үчүн түшүнүктүү болушу үчүн, аны толтуруу керек. Мен эмне кошуу керек? Мен макалада эмне кылса болорун толук тизмеси сүрөттөлгөн GitHub боюнча долбоорлоруңуз менен иштөөнү оптималдаштыруу: Github Template Repository менен таанышуу . Мен аны окууну сунуштайм. Биз үчүн так version, биз эмне кылып жатканыбызды так түшүнүү маанилүү. Ошондуктан, мен RELEASE_NOTES файлды коштум, анда биздин долбоорго өзгөртүүлөр жазылат. Мисал катары, сиз менин долбоорумдон RELEASE_NOTES карап көрсөңүз болот (ооба, эмне үчүн мен энергиямды жана чыгармачылыгымды эмнеге жумшаганымды көрсөтпөйсүз). Ар бир жаңы version үчүн өзгөртүүлөр ошол жерде сүрөттөлөт. Мен ошондой эле жаңы тапшырмаларды түзүү үчүн шаблондорду коштум, аларда 4 вариант бар:- Мүчүлүштүктөр жөнүндө отчет - бул өз ишинде мүчүлүштүктөрдү тапкан колдонуучулар/сыноочулар тарабынан түзүлгөн тапшырма. Бул абдан маанилүү нерсе: мүчүлүштүктөрдү оңдоону башкарууга жардам берет;
- Функция сурамы - бул жаңы функцияларды кошуу тапшырмасы. Долбоордогу бардык биринчи тапшырмалар өзгөчөлүк суроо тапшырмалары;
- Өркүндөтүү өтүнүчү - тиркеменин иштешин жакшыртуу тапшырмасы. Мисалы, бот менен иштөөдө тесттин жоопторун өзгөртүү. Мен техникалык жазуучу эмесмин жана толук туура эмес жоопторду таба алам. Андыктан каалооңуз жана жөндөмүңүз болсо, сунуштаңыз :)
- Суроо - бул тиркеменин иштеши жөнүндө иштеп чыгуучуларга суроо. Абдан пайдалуу нерсе. Иште эч кандай түшүнүк жок же кандайдыр бир суроо боюнча шектенүүлөр бар дейли - сиз ушундай жол менен суроо берип, өзүңүз жооп ала аласыз.
GO TO FULL VERSION