Pagbati, mga kasamahan. Ngayon ay pag-uusapan natin ang uri ng gawaing paghahanda na kailangan mong gawin bago ka magsimulang mag-coding nang ligaw. Mas partikular, tungkol sa pagpaplano at paglikha ng arkitektura ng application. Ngunit saan magsisimula? Paano bumuo ng arkitektura na ito? Tulad ng lahat, kailangan mong magsimula sa simula. Namely - may IDEA. Ang ideya ng aming proyekto ay lumikha ng isang kapaki-pakinabang na telegram bot na may pangunahing pag-andar. Ulitin natin nang eksakto kung ano: "Ako, bilang isang gumagamit, ay nais na makatanggap ng mga abiso kapag ang mga bagong artikulo ay na-publish sa mga pangkat na iyon sa JavaRush na interesado ako." Kasunod ng prinsipyo ng YAGNI, bubuo kami ng aming aplikasyon. Ibig sabihin, kukunin lang natin ang kailangan natin. Hindi kami gagawa ng pag-andar nang maaga at nakalaan dahil lang sa gusto namin at balang araw ay maaaring talagang magamit ito. Oo, gagawa kami ng isang nababasa at napapalawak na application, ngunit hindi ito nangangahulugan na gagawa kami ng isang database schema "para sa paglago". Upang hindi masuportahan ang "paglago" na ito, napagpasyahan kong mas mahusay na iwanan ito nang buo. Makakatulong ito sa amin na maiwasan ang hindi kinakailangang suporta sa panahon ng pag-unlad at hindi kinakailangang pagsubok. Mamaya, kapag ang aming proyekto ay napunta sa produksyon (muli ay isang Anglicism, mula sa abbreviation prod - produksyon), maaari naming gawin ang isang bagay na higit pa. Kapag nakapagpasya ka na sa isang ideya, kailangan mong maging makulit at gumuhit. Ano ang iguguhit? Kakailanganin namin ang kakayahang mag-save ng data sa mga subscription sa mga pangkat ng iba't ibang user. Alam kong maaari kang gumamit ng user ID sa anyo ng isang chat ID sa Telegram. At mayroong isang ideya kung paano aktwal na magpapatuloy ang paghahanap para sa mga bagong artikulo: hahanapin namin ang lahat ng mga grupo na may mga subscription para sa mga bagong artikulo at ipadala ang mga ito sa mga chat. Batay dito, nakukuha natin ang sumusunod bilang unang pagtataya (narito ang pag-unlad nang walang pagpapaganda): Hindi ako umaasa na mauunawaan mo ang aking sulat-kamay: Gusto kong ipakita nang eksakto kung paano at saan nagsisimula ang pag-unlad. Nakumpleto na ang unang yugto: nakapagpasya na kami sa kung ano ang mangyayari. Ang mga modelo/talahanayan sa database ay inilarawan sa itaas. Ngunit ito ay isang draft: maaari at dapat itong pulihin at dalhin sa isang mas nababasang anyo. Habang nagpapakintab ako, naalala ko na gusto ko ring makakuha ng mga istatistika sa gawa ng bot. Idinagdag ito. Sa pagguhit na ito ay higit pa sa malinaw kung ano at paano ito isasaayos. Iyon ay, kung ano ang mga talahanayan at mga patlang sa kanila, kung ano ang mga pangalan ng entity para sa mga talahanayan. Napagpasyahan na magkakaroon ng ilan sa kanila:
- User - impormasyon tungkol sa telegram user na gagamit ng aming bot. Gaya ng nakikita mo, sine-save lang namin ang chat ID at ang flag kung ang user ay aktibo o hindi. Bakit? Dahil ang aming layunin ay hindi upang mangolekta ng impormasyon tungkol sa mga gumagamit, ngunit upang makinabang sila;
- GroupSub - narito ang impormasyon tungkol sa grupo kung saan mayroon kang subscription at ang pinakabagong artikulo na ipinadala sa mga subscriber;
- Mga Istatistika - Hindi pa ako nakagawa ng schema para dito - gagawin namin iyon mamaya. Hindi ito ang pangunahing layunin sa MVP ng proyekto.
Gumawa ng repository para sa trabaho
Sa wakas, maaari kang lumikha ng isang imbakan para sa pagtatrabaho sa isang telegram bot.- Pinupuno namin ang mga item na pamilyar na sa amin - ang pangalan ng repositoryo, ang maikling paglalarawan nito.
- Magdagdag ng lisensya - Apache 2.0 (maaari mong piliin ang lisensya sa iyong paghuhusga).
- Available na ang aming proyekto - narito ang link dito: JavaRush Telegrambot .
Lumikha ng isang proyekto sa repositoryo
Upang gumana sa proyekto, makabubuting gumamit ng mga tool sa GitHub, tulad ng proyekto. Ano ito? Ito ay isang lugar kung saan maaari kang lumikha ng mga gawain, subaybayan ang kanilang pagkumpleto, at i-save ang katayuan ng gawain. Tukuyin kung sino ang magsasagawa ng mga ito at higit pa. Upang gawin ito, sa nilikha na proyekto ay makikita namin ang pindutan ng Mga Proyekto , at doon ay gagawa kami ng bago: Tulad ng nakikita mo, dito ko ipinahiwatig ang pangalan ng proyekto, inilarawan ito at pinili ang template kung saan kami gagana - Automated Kanban. Para sa amin ngayon ay hindi gaanong mahalaga kung ano ang ibig sabihin nito. Ang pangunahing bagay ay magkakaroon tayo ng isang board na may mga gawain, na nahahati sa mga haligi, kung saan ang bawat haligi ay magiging katayuan ng gawain:- Gawin - lahat ng mga gawain na nakaplanong gawin;
- Kasalukuyang ginagawa - mga gawain na kasalukuyang ginagawa;
- Tapos na - mga gawain na natapos na sa loob ng proyektong ito.
Mga isyu sa pagsulat (isyu) para sa proyekto
Upang maunawaan kung anong mga gawain ang isusulat, magpasya tayo kung ano ang mayroon tayo sa proyekto. Kailangan namin ng isang application na madaling ilunsad at mabilis, para ma-access namin ang database, para mapamahalaan at mabago namin ang database schema, para makagawa kami ng REST request sa JavaRush para makakuha ng data sa mga artikulo. Batay dito, maaari mong piliin ang mga sumusunod na teknolohiya:- SpringBoot - bilang isang balangkas para sa aming aplikasyon,
- Spring Data - para sa pagtatrabaho sa isang database,
- Flyway - para sa pagtatrabaho sa mga paglilipat ng database,
- MySQL - bilang isang database para sa proyekto,
- Telegrambot StringBoot starter - isang library para sa pagtatrabaho sa isang telegram bot,
- Ang Unirest ay isang library para sa pagtatrabaho sa mga kahilingan sa REST.
Template ng paggawa ng gawain
Gagawa kami ng mga gawain gamit ang sumusunod na template:- Ang pangalan ng gawain ay magiging ganito: JRTB-{IssueNumber}:{IssueDescription} , kung saan:
- Ang {IssueNumber} ay ang serial number ng isyu. Dalhin natin ito ng isa pa mula sa huling problema;
- {IssueDescription} - isang maikling paglalarawan ng isyu.
- Sa katawan ng gawain ay gagawa kami ng mas detalyadong paglalarawan nito (kung minsan ay maaaring magkasabay ito sa paglalarawan sa pangalan ng gawain).
- Ang Pamantayan sa Pagtanggap ay isang listahan ng mga kinakailangan, pagkatapos nito ay maituturing na natapos ang gawain. Kung gayon, ang pamantayan sa pagtanggap ng gawain. Gamit ang mga ito, mauunawaan ng isang tagasuri (mula sa tagasuri sa Ingles - tagasuri - isang taong tumitingin kung paano natapos ang isang gawain) kung ang gawain ay ganap na natapos o hindi.
- [FEATURE] JRTB-0: lumikha ng Skeleton Spring boot project - malinaw ang lahat dito: kailangan mong gawin ang unang bahagi ng ginawa namin sa nakaraang artikulo.
- [FEATURE] JRTB-2: magdagdag ng telegram bot sa proyekto - magdagdag ng walang laman na bot na sasagot lang at magsasabing ito ay buhay at maayos.
- [FEATURE] JRTB-3: Ipatupad ang Command pattern para sa telegrambot - i-set up natin ang tamang diskarte sa pagtatrabaho sa mga command sa isang telegram bot. Sa ngayon para sa ilang mga koponan.
- [FEATURE] JRTB-1: Magdagdag ng repository layer - isa ito sa pinakamalalaking gawain - pinagsasama nito ang lahat ng kailangang gawin para gumana sa database.
- [FEATURE] JRTB-5: Bilang isang user, gusto kong idagdag ang grupo sa subscription - ito na ang unang User Story sa Agile understanding. Magiging tunay na benepisyo ito para sa aming mga user: posibleng magdagdag ng mga subscription ng grupo sa bot.
- [FEATURE] JRTB-12: Ipatupad ang pag-iskedyul para sa pagpapadala ng abiso tungkol sa mga bagong artikulo - narito ang pagpapatupad ng paghahanap ng mga bagong artikulo kung na-publish ang mga ito para sa bawat isa sa mga pangkat at ipinadala sa lahat ng mga user na naka-subscribe sa mga grupo.
- [FEATURE] JRTB-6: Bilang isang user, gusto kong makita ang listahan ng aking mga subscription sa grupo - simple ang lahat dito: nagdaragdag kami ng command na nagpapakita ng listahan ng lahat ng grupo kung saan naka-subscribe ang user.
- [FEATURE] JRTB-7: Bilang isang User, gusto kong alisin ang subscription ng grupo sa aking mga subscription - dito kailangan mong alisin ang subscription ng user sa mga update sa grupo.
- [FEATURE] JRTB-8: Bilang isang User, gusto kong magtakda ng hindi aktibo gamit ang bot - ipatupad ang paghinto sa bot. Ibig sabihin, lahat ng kailangang gawin sa ating system para matigil ang trabaho. Idagdag ang /stop command sa pagproseso.
- [FEATURE] JRTB-9: Bilang isang User, gusto kong magsimulang magtrabaho kasama ang bot O itakdang aktibo kung ginamit ko ito dati - magdagdag ng pagpoproseso ng command na /start. Eksakto sa paraang gusto natin.
- [FEATURE] JRTB-10: Bilang isang administrator, gusto kong makita ang mga istatistika ng bot - paggawa ng isang koleksyon ng mga istatistika ng bot. Pagdaragdag ng mga kakayahan ng administrator.
- [FEATURE] JRTB-11: Bilang isang user, gusto kong makakita ng dokumentasyon para sa telegram bot na ito - pagsulat ng dokumentasyon. Oo, oo, mga kaibigan, hindi ka mabubuhay kung wala ito, at kapag mas maaga mong natutunan na gawin ito, mas mabuti ito para sa iyo))
Pagpuno sa repositoryo
Ano pa ang kailangang gawin BAGO tayo magsimulang mag-coding? - Author, ilan sa mga talatang ito ang maidadagdag mo, hinuhugot mo ba sila sa bangin?? — Hindi, ang kalidad ng trabaho ay ipinapakita sa mga detalye. At sila ang may katuturan. Kaya't magdagdag tayo ng isa pang detalye. Upang ang proyekto ay maging popular at naiintindihan ng iba pang mga developer, kailangan itong punan. Ano ang dapat kong idagdag? Inilarawan ko ang isang kumpletong listahan ng kung ano ang maaaring gawin sa artikulong Pag-optimize ng trabaho sa iyong mga proyekto sa GitHub: pagkilala sa Github Template Repository . Lubos kong inirerekumenda na basahin ito. Mahalagang magkaroon tayo ng malinaw na bersyon, isang malinaw na pag-unawa sa ating ginagawa. Samakatuwid, nagdagdag ako ng RELEASE_NOTES file kung saan ire-record ang mga pagbabago sa aming proyekto. Bilang halimbawa, maaari mong tingnan ang RELEASE_NOTES mula sa aking proyekto (oo, bakit hindi ipakita kung ano ang pinaglalaanan ko ng aking lakas at pagkamalikhain). Ang mga pagbabago para sa bawat bagong bersyon ay inilarawan doon. Nagdagdag din ako ng mga template para sa paglikha ng mga bagong gawain, na mayroong 4 na pagpipilian:- Ang Ulat ng Bug ay isang gawain na ginawa ng mga user/tester na nakahanap ng bug sa kanilang trabaho. Ito ay isang napakahalagang bagay: nakakatulong ito na pamahalaan ang mga pag-aayos ng bug;
- Ang kahilingan sa tampok ay isang gawain upang magdagdag ng bagong pagpapagana. Ang lahat ng mga unang gawain sa proyekto ay mga gawain sa paghiling ng tampok;
- Kahilingan sa pagpapabuti - isang gawain upang mapabuti ang pagpapatakbo ng application. Halimbawa, upang baguhin ang mga sagot sa pagsubok kapag nagtatrabaho sa isang bot. Hindi ako isang teknikal na manunulat at makakaisip ako ng hindi ganap na tamang mga sagot. Kaya kung ikaw ay may pagnanais at kakayahan, ialay mo :)
- Ang tanong ay isang tanong para sa mga developer tungkol sa pagpapatakbo ng application. Isang napaka-kapaki-pakinabang na bagay. Sabihin nating walang pag-unawa sa trabaho o may mga pagdududa tungkol sa ilang tanong - maaari kang magtanong sa ganitong paraan at makakuha ng sagot nang direkta.
GO TO FULL VERSION