Сәлеметсіздер ме, әріптестер. Бүгін біз жабайы codeтауды бастамас бұрын қандай дайындық жұмыстарының түрі туралы сөйлесетін боламыз. Нақтырақ айтқанда, қолданба архитектурасын жоспарлау және құру туралы. Бірақ неден бастау керек? Бұл архитектураны қалай құруға болады? Барлығы сияқты, сіз басынан бастауыңыз керек. Атап айтқанда - IDEA көмегімен. Біздің жобаның идеясы негізгі функционалдығы бар пайдалы телеграмма ботын жасау болды. Дәл осыны қайталайық: «Мен пайдаланушы ретінде JavaRush топтарында мені қызықтыратын жаңа мақалалар жарияланған кезде хабарландырулар алғым келеді». YAGNI принципіне сүйене отырып, біз өз қосымшамызды құрастырамыз. Бұл өзімізге қажет нәрсені ғана аламыз дегенді білдіреді. Біз функционалдылықты алдын ала және резервте өзіміз қалағандықтан жасамаймыз және ол бір күні пайдалы болуы мүмкін. Иә, біз оқылатын және кеңейтілетін қосымшаны жасаймыз, бірақ бұл «өсу үшін» дерекқор схемасын жасаймыз дегенді білдірмейді. Бұл «өсуді» қолдамау үшін мен одан мүлдем бас тартқан дұрыс деп шештім. Бұл әзірлеу кезінде қажетсіз қолдауды және қажетсіз сынақтарды болдырмауға көмектеседі. Кейінірек, жобамыз өндіріске енген кезде (қайтадан англицизм, prod - өндіріс аббревиатурасынан) біз тағы бір нәрсе жасай аламыз. Идеяға шешім қабылдағаннан кейін, сіз аздап тентектікке түсіп , сурет салуыңыз керек. Не салу керек? Бізге әртүрлі пайдаланушылар топтарына жазылымдар туралы деректерді сақтау мүмкіндігі қажет болады. Telegram-да чат идентификаторы түрінде пайдаланушы идентификаторын пайдалануға болатынын білемін. Жаңа мақалаларды іздеу іс жүзінде қалай жүретіні туралы идея бар: біз жаңа мақалаларға жазылулары бар барлық топтарда іздеп, оларды чаттарға жібереміз. Осыған сүйене отырып, біз бірінші жуықтау ретінде келесіні аламыз (мұнда әшекейсіз даму): Менің қолжазбамды түсінетіндеріңізге үміттенбеймін: мен дамудың қалай және қай жерде басталатынын көрсеткім келеді. Бірінші кезең аяқталды: біз қандай болатынын шештік. Дерекқордағы үлгілер/кестелер жоғарыда сипатталған. Бірақ бұл жоба: оны жылтыратып, оқуға ыңғайлы пішінге келтіруге болады және керек. Мен жылтыратып жатқанда, мен бот жұмысының статистикасын алғым келетінін есіме түсірдім. Мұны қосты. Бұл сызбада оның не және қалай орналасатыны анық. Яғни, оларда қандай кестелер мен өрістер болады, кестелер үшін қандай нысан атаулары болады. Олардың бірнешеуі болады деп шешілді:
- Қолданушы – біздің ботты пайдаланатын телеграм қолданушысы туралы ақпарат. Көріп отырғаныңыздай, біз тек чат идентификаторы мен жалаушаны пайдаланушының белсенді немесе белсенді еместігін сақтаймыз. Неліктен? Өйткені біздің мақсатымыз – пайдаланушылар туралы ақпарат жинау емес, оларға пайда келтіру;
- GroupSub - мұнда сіз жазылған топ және жазылушыларға жіберілген соңғы мақала туралы ақпарат болады;
- Статистика - Мен оның схемасын жасаған жоқпын - мұны кейінірек жасаймыз. Бұл жобаның MVP-дегі басты мақсаты емес.
Жұмыс үшін репозиторий жасаңыз
Соңында сіз телеграмма ботымен жұмыс істеуге арналған репозиторий жасай аласыз.- Бізге бұрыннан таныс элементтерді толтырамыз - репозиторийдің атауы, оның қысқаша сипаттамасы.
- Лицензияны қосыңыз - Apache 2.0 (лицензияны өз қалауыңыз бойынша таңдай аласыз).
- Біздің жоба қазір қол жетімді - мұнда оған сілтеме: JavaRush Telegrambot .
Репозиторийде жоба жасаңыз
Жобамен жұмыс істеу үшін GitHub құралдарын пайдалану жақсы болар еді, мысалы, жоба. Бұл не? Бұл тапсырмаларды жасауға, олардың орындалуын бақылауға және тапсырма күйін сақтауға болатын орын. Оларды кім орындайтынын және т.б. анықтаңыз. Ол үшін жасалған жобада біз «Жобалар» түймесін табамыз , сонда біз жаңасын жасаймыз: Көріп отырғаныңыздай, мен мұнда жобаның атын көрсеттім, оны сипаттадым және біз жұмыс істейтін үлгіні таңдадым - Автоматтандырылған Канбан. Біз үшін қазір бұл нені білдіретіні маңызды емес. Ең бастысы, бізде бағандарға бөлінген тапсырмалары бар тақта болады, онда әрбір баған тапсырманың күйі болады:- Орындау – орындау жоспарланған барлық тапсырмалар;
- Орындалуда - қазіргі уақытта жұмыс жүргізіліп жатқан тапсырмалар;
- Орындалды - осы жоба аясында орындалған тапсырмалар.
Біз жобаға мәселелерді (мәселелерді) жазамыз
Қандай тапсырмалар жазу керектігін түсіну үшін жобада не болатынын шешейік. Бізге оңай және жылдам іске қосылатын, дерекқорға қол жеткізе алатын, дерекқор схемасын басқара және өзгерте алатын, мақалалар бойынша деректерді алу үшін JavaRush жүйесінде REST сұрауларын жасай алатындай қолданба қажет. Осыған сүйене отырып, сіз келесі технологияларды таңдай аласыз:- SpringBoot - біздің қосымшамыздың негізі ретінде,
- Spring Data - мәліметтер қорымен жұмыс істеу үшін,
- Flyway - деректер базасын тасымалдаумен жұмыс істеу үшін,
- MySQL – жобаның деректер базасы ретінде,
- Telegrambot StringBoot стартері - телеграмма ботымен жұмыс істеуге арналған кітапхана,
- Unirest - REST сұрауларымен жұмыс істеуге арналған кітапхана.
Тапсырманы құру үлгісі
Біз келесі үлгіні пайдаланып тапсырмаларды жасаймыз:- Тапсырма атауы келесідей болады: JRTB-{IssueNumber}:{IssueDescription} , мұнда:
- {IssueNumber} - шығарылымның сериялық нөмірі. Соңғы есептен тағы бір алайық;
- {IssueDescription} - мәселенің қысқаша сипаттамасы.
- Тапсырманың мәтінінде біз оның егжей-тегжейлі сипаттамасын жасаймыз (кейде ол тапсырма атауындағы сипаттамамен сәйкес келуі мүмкін).
- Қабылдау критерийлері – бұл талаптар тізімі, содан кейін тапсырма орындалды деп санауға болады. Былайша айтқанда, тапсырманы қабылдау критерийлері. Оларды пайдалана отырып рецензент (ағылшын тілінен рецензент – рецензент – тапсырманың қалай орындалғанын қарайтын адам) тапсырманың толық орындалғанын немесе орындалмағанын түсіне алады.
- [МҮМКІНДІК] JRTB-0: Skeleton Spring жүктеу жобасын жасау - мұнда бәрі түсінікті: алдыңғы мақалада жасаған ісіміздің бірінші бөлігін орындау керек.
- [МҮМКІНДІК] JRTB-2: жобаға телеграмма ботын қосыңыз - жай ғана жауап беретін және оның тірі және жақсы екенін айтатын бос бот қосыңыз.
- [МҮМКІНДІК] JRTB-3: Telegrambot үшін пәрмен үлгісін енгізу – телеграмма ботындағы пәрмендермен жұмыс істеудің дұрыс тәсілін орнатайық. Әзірге бірнеше команда үшін.
- [МҮМКІНДІК] JRTB-1: Репозиторий қабатын қосу - бұл ең үлкен тапсырмалардың бірі - ол дерекқормен жұмыс істеу үшін жасалуы керек нәрселердің барлығын біріктіреді.
- [МҮМКІНДІК] JRTB-5: Пайдаланушы ретінде мен топты жазылымға қосқым келеді - бұл Agile түсінігіндегі бірінші Пайдаланушы тарихы. Бұл біздің пайдаланушыларымыз үшін нақты артықшылық болады: ботқа топтық жазылымдарды қосуға болады.
- [МҮМКІНДІК] JRTB-12: Жаңа мақалалар туралы хабарландыруды жіберуді жоспарлауды жүзеге асыру - мұнда әрбір топ үшін жарияланған және топтарға жазылған барлық пайдаланушыларға жіберілген жаңа мақалаларды іздеу жүзеге асырылады.
- [МҮМКІНДІК] JRTB-6: Пайдаланушы ретінде мен өзімнің топтық жазылымдарымның тізімін көргім келеді - мұнда барлығы қарапайым: біз пайдаланушы жазылған барлық топтардың тізімін көрсететін пәрменді қосамыз.
- [МҮМКІНДІК] JRTB-7: Пайдаланушы ретінде мен жазылымдарымнан топтық жазылымды алып тастағым келеді - мұнда пайдаланушының топтағы жаңартуларға жазылуын жою керек.
- [МҮМКІНДІК] JRTB-8: Пайдаланушы ретінде мен бот арқылы белсенді емес күйге келтіргім келеді - ботты тоқтатуды жүзеге асыру. Яғни, жұмыс тоқтауы үшін біздің жүйеде не істеу керек. Өңдеуге /stop пәрменін қосыңыз.
- [МҮМКІНДІК] JRTB-9: Пайдаланушы ретінде мен ботпен жұмыс істей бастағым келеді НЕМЕСЕ, егер оны бұрын пайдаланған болсам, белсенді жиын - /start пәрменін өңдеуді қосыңыз. Дәл біз қалағандай.
- [МҮМКІНДІК] JRTB-10: Әкімші ретінде мен бот статистикасын көргім келеді – бот статистикасының жинағын жасау. Әкімші мүмкіндіктерін қосу.
- [МҮМКІНДІК] JRTB-11: Пайдаланушы ретінде мен осы телеграмма ботының құжаттамасын көргім келеді - құжаттама жазу. Иә, иә, достар, сіз онсыз өмір сүре алмайсыз және мұны неғұрлым тезірек үйренсеңіз, сізге соғұрлым жақсы болады))
Репозиторийді толтыру
Кодтауды бастамас бұрын тағы не істеу керек? - Author, осы абзацтардың нешеуін қоса аласыз, тұңғиықтан шығарып жатырсыз ба?? — Жоқ, жұмыстың сапасы егжей-тегжейлі көрінеді. Және олар мағынасы бар адамдар. Ендеше тағы бір деталь қосайық. Жоба танымал және басқа әзірлеушілерге түсінікті болуы үшін оны толтыру қажет. Мен не қосуым керек? Мен GitHub жүйесіндегі жобаларыңызбен жұмысты оңтайландыру: Github үлгі репозиторийімен танысу мақаласында не істеуге болатынын толық тізбесін сипаттадым . Мен оны оқуға кеңес беремін. Біз үшін нақты нұсқаның болуы, не істеп жатқанымызды нақты түсіну маңызды. Сондықтан мен жобамыздағы өзгерістер жазылатын RELEASE_NOTES файлын қостым. Мысал ретінде менің жобамдағы RELEASE_NOTES-ті қарауға болады (иә, неге мен өз күшімді және шығармашылығымды неге жұмсағанымды көрсетпеске). Әрбір жаңа нұсқаға арналған өзгерістер сонда сипатталған. Мен сондай-ақ 4 опциясы бар жаңа тапсырмаларды жасау үшін үлгілерді қостым:- Қате туралы есеп - жұмысында қатені тапқан пайдаланушылар/сынаушылар жасаған тапсырма. Бұл өте маңызды нәрсе: ол қателерді түзетуді басқаруға көмектеседі;
- Мүмкіндік сұрауы - жаңа функцияларды қосу тапсырмасы. Жобадағы барлық бірінші тапсырмалар мүмкіндіктерді сұрау тапсырмалары болып табылады;
- Жақсарту сұрауы – қолданбаның жұмысын жақсарту тапсырмасы. Мысалы, ботпен жұмыс істегенде тест жауаптарын өзгерту. Мен техникалық жазушы емеспін және толық дұрыс емес жауаптар бере аламын. Егер сізде қалауыңыз бен мүмкіндігіңіз болса, оны ұсыныңыз :)
- Сұрақ - бұл қосымшаның жұмысы туралы әзірлеушілерге арналған сұрақ. Өте пайдалы нәрсе. Жұмыс туралы түсінік жоқ немесе қандай да бір сұраққа күмән бар делік - сіз осы жолмен сұрақ қойып, бірінші қолмен жауап ала аласыз.
GO TO FULL VERSION