JavaRush /Блоги Java /Random-TG /Банақшагирии лоиҳа: ду маротиба чен кунед - як маротиба б...
Roman Beekeeper
Сатҳи

Банақшагирии лоиҳа: ду маротиба чен кунед - як маротиба буред - "Лоиҳаи Java аз A то Я"

Дар гурӯҳ нашр шудааст
Ассалому алайкум, ҳамкасблар. Имрӯз мо дар бораи намуди корҳои омодагӣ, ки шумо бояд пеш аз оғози рамзгузории ваҳшӣ анҷом диҳед, сӯҳбат хоҳем кард. Аниқтараш, дар бораи банақшагирӣ ва эҷоди меъмории барнома. Лоиҳаи Java аз А то Я. Банақшагирии лоиҳа: ҳафт маротиба чен кунед - як маротиба буред - 1Аммо аз куҷо оғоз кардан лозим аст? Ин меъмориро чӣ гуна бояд сохт? Мисли ҳама чиз, шумо бояд аз аввал оғоз кунед. Махз - бо IDEA. Идеяи лоиҳаи мо эҷод кардани як боти телеграммаи муфид бо функсияҳои асосӣ буд. Биёед айнан ҳамон чизеро такрор кунем: "Ман ҳамчун корбар мехоҳам, ки ҳангоми нашри мақолаҳои нав дар ин гурӯҳҳо дар JavaRush, ки ба ман таваҷҷӯҳ доранд, огоҳӣ гирам." Бо риояи принсипи YAGNI, мо аризаи худро таҳия мекунем. Ин маънои онро дорад, ки мо танҳо он чизеро, ки ба мо лозим аст, мегирем. Мо функсияҳоро пешакӣ ва захиравӣ эҷод намекунем, зеро мо мехоҳем ва рӯзе он воқеан муфид хоҳад буд. Бале, мо як барномаи хондашаванда ва васеъшаванда эҷод мекунем, аммо ин маънои онро надорад, ки мо схемаи махзани маълумотро "барои афзоиш" эҷод мекунем. Барои он ки ин «афзоиш»-ро дастгирӣ накунам, ман қарор додам, ки беҳтараш аз он тамоман даст кашам. Ин ба мо кӯмак мекунад, ки ҳангоми таҳия ва санҷиши нолозим аз дастгирии нолозим канорагирӣ кунем. Баъдтар, вақте ки лоиҳаи мо ба истеҳсолот ворид мешавад (боз як англисизм, аз ихтисораи prod - истеҳсол), мо метавонем кори бештареро анҷом диҳем. Пас аз он ки шумо дар бораи як идея қарор қабул кардед, ба шумо лозим аст, ки каме нозанин шавед ва кашед. Чӣ бояд кашид? Мо ба қобorяти захира кардани маълумот дар бораи обуна ба гурӯҳҳои корбарони гуногун ниёз дорем. Ман медонам, ки шумо метавонед ID корбарро дар шакли ID чат дар Telegram истифода баред. Ва андешае вуҷуд дорад, ки чӣ гуна ҷустуҷӯи мақолаҳои нав воқеан идома хоҳад ёфт: мо дар ҳама гурӯҳҳое, ки ба мақолаҳои нав обуна шудаанд, ҷустуҷӯ мекунем ва онҳоро ба чатҳо мефиристем. Дар асоси ин, мо ҳамчун як тахмини аввал инҳоро ба даст меорем (дар ин ҷо таҳия бидуни ороиш аст): Лоиҳаи Java аз А то Я. Банақшагирии лоиҳа: ҳафт маротиба чен кунед - як маротиба буред - 2Ман умедворам, ки шумо хатти маро мефаҳмед: Ман мехоҳам дақиқ нишон диҳам, ки рушд чӣ гуна ва аз куҷо оғоз мешавад. Марҳилаи аввал анҷом ёфт: мо бо кадом роҳ тасмим гирифтем, ки чӣ мешавад. Моделҳо/ҷадвалҳо дар пойгоҳи додаҳо дар боло тавсиф шудаанд. Аммо ин лоиња аст: он метавонад ва бояд сайқал дода, ба шакли хондашавандатар оварда шавад. Ҳангоме ки ман сайқал медодам, ба ёд овардам, ки ман ҳам мехостам омор дар бораи кори бот гирам. Инро илова кард. Дар ин расм равшантар аст, ки он чӣ гуна ва чӣ гуна тартиб дода мешавад. Яъне кадом ҷадвалҳо ва майдонҳо дар онҳо хоҳанд буд, кадом номҳои an objectҳо барои ҷадвалҳо хоҳанд буд. Қарор дода шуд, ки якчандтои онҳо вуҷуд доранд:
  • Корбар - маълумот дар бораи корбари телеграмма, ки боти моро истифода мебарад. Тавре ки шумо мебинед, мо танҳо ID чат ва парчамро захира мекунем, ки корбар фаъол аст ё не. Чаро? Зеро ҳадафи мо ҷамъ овардани маълумот дар бораи корбарон нест, балки манфиати онҳост;
  • GroupSub - дар ин ҷо маълумот дар бораи гурӯҳе, ки шумо ба он обуна ҳастед ва мақолаи охирине, ки ба муштариён фиристода шудааст, хоҳад буд;
  • Омор - Ман барои он схема тартиб надодаам - мо инро баъдтар иҷро мекунем. Ин ҳадафи асосӣ дар MVP лоиҳа нест.
Лоиҳаи Java аз А то Я. Банақшагирии лоиҳа: ҳафт маротиба чен кунед - як маротиба буред - 3Пас аз ин ман мехостам, ки роҳи ҷустуҷӯи мақолаҳои навро муфассалтар нишон диҳам. Барои ин ман диаграммаи BPMN-ро истифода кардам, ки онро ба расм табдил додам ва ин чизро гирифтам: Лоиҳаи Java аз А то Я. Банақшагирии лоиҳа: ҳафт маротиба чен кунед - як маротиба буред - 4Ҳама чиз дар ин ҷо хондан ва фаҳмотар аст. Мо дар чустучу аз руи ин схема кор мекунем. Менеҷерҳо ин схемаро хеле дӯст медоранд, зеро он на танҳо барои барномасозон фаҳмо аст :D Умуман, оғоз шудааст.

Барои кор анбор эҷод кунед

Ниҳоят, шумо метавонед барои кор бо боти телеграмма репозиторий эҷод кунед.Лоиҳаи Java аз А то Я. Банақшагирии лоиҳа: ҳафт маротиба чен кунед - як маротиба буред - 5
  1. Мо чизҳоеро, ки аллакай ба мо шиносанд, пур мекунем - номи анбор, тавсифи мухтасари он.
  2. Иҷозатнома илова кунед - Apache 2.0 (шумо метавонед литсензияро бо салоҳдиди худ интихоб кунед).
  3. Лоиҳаи мо ҳоло дастрас аст - ин аст пайванд ба он: JavaRush Telegrambot .

Дар анбор лоиҳа эҷод кунед

Барои кор бо лоиҳа, истифода бурдани абзорҳои GitHub, ба монанди лоиҳа, хуб мебуд. Ин чист? Ин ҷойест, ки шумо метавонед вазифаҳо эҷод кунед, анҷоми онҳоро пайгирӣ кунед ва ҳолати вазифаро захира кунед. Муайян кунед, ки кӣ онҳоро иҷро мекунад ва ғайра. Барои ин, дар лоиҳаи сохташуда мо тугмаи Лоиҳаҳоро пайдо мекунем ва дар он ҷо мо навашро эҷод мекунем: Лоиҳаи Java аз А то Я. Банақшагирии лоиҳа: ҳафт маротиба чен кунед - як маротиба буред - 6Тавре ки шумо мебинед, дар ин ҷо ман номи лоиҳаро нишон додам, онро тавсиф кардам ва қолаберо интихоб кардам, ки мо дар он кор хоҳем кард - Канбан автоматӣ. Барои мо ҳоло он қадар муҳим нест, ки ин чӣ маъно дорад. Муҳим он аст, ки мо тахтаи дорои вазифаҳо ба сутунҳо тақсим карда мешавад, ки дар он ҳар як сутун мақоми вазифа хоҳад буд:
  1. Иҷро кардан - ҳамаи вазифаҳое, ки бояд иҷро шаванд;
  2. Дар идома - вазифаҳое, ки дар айни замон кор карда мешаванд;
  3. Иҷрошуда - вазифаҳое, ки дар доираи ин лоиҳа аллакай иҷро шудаанд.
Бо ин роҳ мо аз вазъи вазифаҳои худ огоҳ хоҳем шуд. Кадоме аз онҳо идома дорад, кадомашон иҷро мешаванд. Гузашта аз ин, ин на танҳо дар ҳолатҳое, ки як даста вуҷуд дорад, балки ҳангоми кор кардан худатон муҳим ва қулай аст. Барои он ки чизе дар тахта пайдо шавад, шумо бояд масъалаҳо эҷод кунед.

Мо барои лоиҳа масъалаҳо (масъалаҳо) менависем

Барои фаҳмидани он, ки кадом вазифаҳо бояд навишта шаванд, биёед қарор кунем, ки дар лоиҳа чӣ кор хоҳем кард. Ба мо барномае лозим аст, ки ба осонӣ ва зуд оғоз шавад, то мо тавонем ба пойгоҳи додаҳо дастрасӣ пайдо кунем, то схемаи пойгоҳи додаҳоро идора ва тағир диҳем, то мо тавонем дархостҳои REST-ро дар JavaRush барои ба даст овардани маълумот дар бораи мақолаҳо пешниҳод кунем. Дар асоси ин, шумо метавонед технологияҳои зеринро интихоб кунед:
  • SpringBoot - ҳамчун чаҳорчӯбаи барномаи мо,
  • Spring Data - барои кор бо пойгоҳи додаҳо,
  • Flyway - барои кор бо муҳоҷирати пойгоҳи додаҳо,
  • MySQL - ҳамчун пойгоҳи додаҳо барои лоиҳа,
  • Telegrambot StringBoot starter - китобхона барои кор бо боти телеграмма,
  • Unirest китобхона барои кор бо дархостҳои REST мебошад.
Аз ҳамаи гуфтаҳои боло, биёед ба эҷоди вазифаҳо шурӯъ кунем.

Шаблон эҷоди вазифа

Мо бо истифода аз қолаби зерин вазифаҳо эҷод мекунем:
  1. Номи вазифа чунин хоҳад буд: JRTB-{IssueNumber}:{IssueDescription} , дар куҷо:
    • {IssueNumber} рақами силсилавии нашр аст. Боз як бори дигар аз масъалаи охирин мегирем;
    • {IssueDescription} - тавсифи мухтасари масъала.
  2. Дар матни вазифа мо тавсифи муфассали онро хоҳем дод (баъзан он метавонад бо тавсифи номи вазифа мувофиқат кунад).
  3. Меъёрҳои қабул номгӯи талаботест, ки пас аз он вазифаро иҷрошуда ҳисоб кардан мумкин аст. Агар гуем, меъёрхои кабули супориш. Бо истифода аз онҳо, баррасикунанда (аз инглисӣ reviewer - reviewer - шахсе, ки ба чӣ гуна иҷро шудани супориш назар мекунад) метавонад фаҳмад, ки оё супориш пурра иҷро шудааст ё не.
Бо истифода аз ин қолаб мо вазифаи аввалини худро эҷод мекунем: Лоиҳаи Java аз А то Я. Банақшагирии лоиҳа: ҳафт маротиба чен кунед - як маротиба буред - 7Инчунин бояд қайд кард, ки ҳангоми сохтани он ман дарҳол муайян кардам, ки ин вазифа барои кадом лоиҳа мувофиқ аст, онро кӣ иҷро хоҳад кард (таъинкунанда) ва ба кадом тамға (тамга) тааллуқ доштани ин вазифа. Минбаъд ман танҳо номҳои вазифаҳоро бо тавсифи хурд ва истинод ба онҳо нишон медиҳам. Ҳамаи онҳо дар ин ҷо ҳастанд . Мо супоришҳоро тақрибан бо ҳамон тартибе иҷро мекунем, ки дар ин ҷо нишон дода шудааст:
  1. [ФУСИЯТ] JRTB-0: эҷод кардани лоиҳаи пурборкунандаи Skeleton Spring - дар ин ҷо ҳама чиз равшан аст: шумо бояд қисми якуми он чизеро, ки мо дар мақолаи қаблӣ карда будем, иҷро кунед.
  2. [ФУСИЯТ] JRTB-2: боти телеграммаро ба лоиҳа илова кунед - боти холӣ илова кунед, ки танҳо ҷавоб медиҳад ва мегӯяд, ки он зинда ва хуб аст.
  3. [ФУСИЯТ] JRTB-3: Намунаи фармонро барои телеграмбот амалӣ кунед - биёед муносибати дурустро барои кор бо фармонҳо дар боти телеграмма муқаррар кунем. То хол барои якчанд даста.
  4. [ФУСИЯТ] JRTB-1: Илова кардани қабати репозиторий - ин яке аз бузургтарин вазифаҳост - он ҳама чизеро, ки барои кор бо пойгоҳи додаҳо анҷом додан лозим аст, муттаҳид мекунад.
  5. [ФУТУРИЯ] JRTB-5: Ҳамчун корбар, ман мехоҳам гурӯҳро ба обуна илова кунам - ин аллакай аввалин Ҳикояи корбар дар фаҳмиши Agile аст. Ин барои корбарони мо як фоидаи воқеӣ хоҳад буд: имкон пайдо мешавад, ки ба бот обунаҳои гурӯҳӣ илова кунед.
  6. [ФУСИЯТ] JRTB-12: Татбиқи ҷадвали ирсоли огоҳинома дар бораи мақолаҳои нав - дар ин ҷо иҷрои ҷустуҷӯи мақолаҳои нав хоҳад буд, агар онҳо барои ҳар як гурӯҳ интишор шаванд ва ба ҳамаи корбароне, ки ба гурӯҳҳо обуна шудаанд, фиристода шаванд.
  7. [ФУТУРИЯ] JRTB-6: Ҳамчун корбар, ман мехоҳам рӯйхати обунаҳои гурӯҳии худро бубинам - дар ин ҷо ҳама чиз оддӣ аст: мо фармонеро илова мекунем, ки рӯйхати ҳамаи гурӯҳҳоеро, ки корбар ба онҳо обуна шудааст, нишон медиҳад.
  8. [ФУСИЯТ] JRTB-7: Ҳамчун корбар, ман мехоҳам обунаи гурӯҳро аз обунаҳои худ хориҷ кунам - дар ин ҷо шумо бояд обунаи корбарро ба навсозиҳо дар гурӯҳ хориҷ кунед.
  9. [ФУСИЯТ] JRTB-8: Ҳамчун корбар ман мехоҳам бо истифода аз бот ғайрифаъол гузорам - қатъ кардани ботро амалӣ созам. Яъне хамаи он чиро, ки дар системаи мо бояд анчом дода шавад, то кор бас шавад. Фармони / stop ба коркард илова кунед.
  10. [ФУСИЯТ] JRTB-9: Ҳамчун корбар, ман мехоҳам бо бот кор карданро оғоз кунам Ё танзими фаъол, агар ман онро қаблан истифода мекардам - ​​коркарди фармони /startро илова кунед. Маҳз ҳамон тавре ки мо мехоҳем.
  11. [ФУСИЯТ] JRTB-10: Ҳамчун мудир ман мехоҳам омори ботро бубинам - эҷоди маҷмӯаи омори бот. Илова кардани қобorятҳои администратор.
  12. [ФУСИЯТ] JRTB-11: Ҳамчун корбар, ман мехоҳам ҳуҷҷатҳоро барои ин боти телеграмма бинам - ҳуҷҷатҳои навиштан. Бале, ҳа, дӯстон, шумо бе он зиндагӣ карда наметавонед ва ҳар қадар зудтар ин корро ёд гиред, барои шумо беҳтар аст))
Ин аллакай оғози лоиҳа ба назар мерасад. Ҳамин тавр, мо ба ҳайси меъмори лоиҳа ва таҳлилгари тиҷорат кор кардем.

Пур кардани анбор

Пеш аз оғози рамзгузорӣ боз чӣ кор кардан лозим аст? - Муаллиф, чандтои ин абзацхоро илова карда метавонед, аз варта берун мекашед?? — Не, сифати кор дар деталь нишон дода мешавад. Ва онҳо касоне ҳастанд, ки маъно доранд. Пас, биёед як ҷузъиёти дигарро илова кунем. Барои он ки лоиҳа барои дигар таҳиягарон маъмул ва фаҳмо шавад, он бояд пур карда шавад. Чӣ бояд илова кунам? Ман рӯйхати пурраи он чизеро, ки метавон дар мақола анҷом дод, тавсиф кардам Оптимизатсияи кор бо лоиҳаҳои худ дар GitHub: шиносоӣ бо анбори Шаблонҳои Github . Ман хондани онро хеле тавсия медиҳам. Барои мо муҳим аст, ки versionи возеҳ дошта бошем, фаҳмем, ки мо чӣ кор карда истодаем. Аз ин рӯ, ман файли RELEASE_NOTES илова кардам, ки дар он тағйирот ба лоиҳаи мо сабт карда мешавад. Ҳамчун мисол, шумо метавонед RELEASE_NOTES-ро аз лоиҳаи ман бубинед (бале, чаро нишон надиҳед, ки ман энергия ва эҷодиёти худро ба чӣ сарф кардам). Тағиротҳо барои ҳар як versionи нав дар он ҷо тавсиф карда мешаванд. Ман инчунин қолабҳоро барои сохтани вазифаҳои нав илова кардам, ки 4 вариант доранд:
  • Ҳисобот оид ба хатогиҳо ин вазифаест, ки аз ҷониби корбарон/озмоишгароне сохта шудааст, ки дар кори худ иштибоҳ пайдо мекунанд. Ин як чизи хеле муҳим аст: он ба идора кардани ислоҳи хатогӣ кӯмак мекунад;
  • Дархости хусусият вазифаест барои илова кардани функсияҳои нав. Ҳамаи вазифаҳои аввалини лоиҳа вазифаҳои дархости хусусият мебошанд;
  • Дархости такмилдиҳӣ - вазифа барои беҳтар кардани кори барнома. Масалан, барои тағир додани ҷавобҳои тестӣ ҳангоми кор бо бот. Ман нависандаи техникӣ нестам ва ман метавонам ҷавобҳои комилан дурустро пайдо кунам. Пас, агар шумо хоҳиш ва қобorят дошта бошед, онро пешниҳод кунед :)
  • Савол саволест барои таҳиягарон дар бораи кори барнома. Як чизи хеле муфид. Фарз мекунем, ки фаҳмиши кор вуҷуд надорад ё ба ягон савол шубҳа вуҷуд дорад - шумо метавонед бо ин роҳ савол диҳед ва аз дасти аввал ҷавоб гиред.
Агар шумо ба GitHub назар кунед, он айнан чунин хоҳад буд: Лоиҳаи Java аз А то Я. Банақшагирии лоиҳа: ҳафт маротиба чен кунед - як маротиба буред - 8Мо инчунин дар айни замон ҳуҷҷати кор бо API JavaRush барои кор бо гурӯҳҳо дорем.

Баъд чӣ?

Хуб, мо ҳамаи ин қадамҳоро анҷом медиҳем ва чӣ, лоиҳа баста мешавад? Не, тамоман не. Ин лоиҳа идома хоҳад дод. Он аз ҷониби ман ва ҳамаи донишҷӯёни JavaRush, ки мехоҳанд иштирок кунанд, таҳия карда мешаванд. Нақшаҳои шумо барои оянда чӣ гунаанд? Бисьёрии онхо. Нақшаи аввалин эҷоди муштарии Java барои API JavaRush мебошад. Таҳиягарон ваъда доданд, ки дастрасии Swagger-и худро боз кунанд. Мо инчунин дида мебароем, ки ҷавоҳирот чист. Чизи олӣ ва хеле муфид. Минбаъд мо сайти JavaRush-ро бо боти телеграмма муттаҳид мекунем. Биёед корбарро ба бот пайваст кунем, то обунаҳоро ҳамоҳанг созем. Биёед омори хатми курсро эҷод кунем. Ва ҳама чизеро, ки шумо ҳамчун ҷомеаи JavaRush мехоҳед.

хулосахо

Имрӯз мо дар бораи корҳои пасипарда пеш аз эҷоди лоиҳа сӯҳбат кардем. Аниктараш, дар бораи чй тавр тартиб додани плани кор, ки бе он кувваи зиёдеро сарф кардан мумкин аст. Такрор мекунам, ибтидои лоиҳа аллакай дар ин ҷо дастраси умум шудааст . Мисли маъмул, ман тавсия медиҳам, ки ба ҳисоби ман дар Github обуна шавед. Бо ин роҳ шумо метавонед пеш аз нашри мақола тағиротҳоро ба лоиҳа қабул кунед. Ман аллакай гумон мекунам, ки ҳама ҷонибҳои манфиатдор дар Github сабти ном шудаанд. Оре, лоиха он кадар тез пеш намеравад, ки мо мехостем. Аммо, ба монанди лоиҳаҳои воқеӣ дар кор. Дар мақолаи навбатӣ ман илова кардани вазифаҳои аввалинро тасвир мекунам. Ташаккур ба ҳама барои хондан ва ба зудӣ дидан кунед!

Рӯйхати ҳамаи маводҳои силсила дар аввали ин мақола аст.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION