Ассалому алайкум, ҳамкасблар. Имрӯз мо дар бораи намуди корҳои омодагӣ, ки шумо бояд пеш аз оғози рамзгузории ваҳшӣ анҷом диҳед, сӯҳбат хоҳем кард. Аниқтараш, дар бораи банақшагирӣ ва эҷоди меъмории барнома. Аммо аз куҷо оғоз кардан лозим аст? Ин меъмориро чӣ гуна бояд сохт? Мисли ҳама чиз, шумо бояд аз аввал оғоз кунед. Махз - бо IDEA. Идеяи лоиҳаи мо эҷод кардани як боти телеграммаи муфид бо функсияҳои асосӣ буд. Биёед айнан ҳамон чизеро такрор кунем: "Ман ҳамчун корбар мехоҳам, ки ҳангоми нашри мақолаҳои нав дар ин гурӯҳҳо дар JavaRush, ки ба ман таваҷҷӯҳ доранд, огоҳӣ гирам." Бо риояи принсипи YAGNI, мо аризаи худро таҳия мекунем. Ин маънои онро дорад, ки мо танҳо он чизеро, ки ба мо лозим аст, мегирем. Мо функсияҳоро пешакӣ ва захиравӣ эҷод намекунем, зеро мо мехоҳем ва рӯзе он воқеан муфид хоҳад буд. Бале, мо як барномаи хондашаванда ва васеъшаванда эҷод мекунем, аммо ин маънои онро надорад, ки мо схемаи махзани маълумотро "барои афзоиш" эҷод мекунем. Барои он ки ин «афзоиш»-ро дастгирӣ накунам, ман қарор додам, ки беҳтараш аз он тамоман даст кашам. Ин ба мо кӯмак мекунад, ки ҳангоми таҳия ва санҷиши нолозим аз дастгирии нолозим канорагирӣ кунем. Баъдтар, вақте ки лоиҳаи мо ба истеҳсолот ворид мешавад (боз як англисизм, аз ихтисораи prod - истеҳсол), мо метавонем кори бештареро анҷом диҳем. Пас аз он ки шумо дар бораи як идея қарор қабул кардед, ба шумо лозим аст, ки каме нозанин шавед ва кашед. Чӣ бояд кашид? Мо ба қобorяти захира кардани маълумот дар бораи обуна ба гурӯҳҳои корбарони гуногун ниёз дорем. Ман медонам, ки шумо метавонед ID корбарро дар шакли ID чат дар Telegram истифода баред. Ва андешае вуҷуд дорад, ки чӣ гуна ҷустуҷӯи мақолаҳои нав воқеан идома хоҳад ёфт: мо дар ҳама гурӯҳҳое, ки ба мақолаҳои нав обуна шудаанд, ҷустуҷӯ мекунем ва онҳоро ба чатҳо мефиристем. Дар асоси ин, мо ҳамчун як тахмини аввал инҳоро ба даст меорем (дар ин ҷо таҳия бидуни ороиш аст): Ман умедворам, ки шумо хатти маро мефаҳмед: Ман мехоҳам дақиқ нишон диҳам, ки рушд чӣ гуна ва аз куҷо оғоз мешавад. Марҳилаи аввал анҷом ёфт: мо бо кадом роҳ тасмим гирифтем, ки чӣ мешавад. Моделҳо/ҷадвалҳо дар пойгоҳи додаҳо дар боло тавсиф шудаанд. Аммо ин лоиња аст: он метавонад ва бояд сайқал дода, ба шакли хондашавандатар оварда шавад. Ҳангоме ки ман сайқал медодам, ба ёд овардам, ки ман ҳам мехостам омор дар бораи кори бот гирам. Инро илова кард. Дар ин расм равшантар аст, ки он чӣ гуна ва чӣ гуна тартиб дода мешавад. Яъне кадом ҷадвалҳо ва майдонҳо дар онҳо хоҳанд буд, кадом номҳои an objectҳо барои ҷадвалҳо хоҳанд буд. Қарор дода шуд, ки якчандтои онҳо вуҷуд доранд:
- Корбар - маълумот дар бораи корбари телеграмма, ки боти моро истифода мебарад. Тавре ки шумо мебинед, мо танҳо ID чат ва парчамро захира мекунем, ки корбар фаъол аст ё не. Чаро? Зеро ҳадафи мо ҷамъ овардани маълумот дар бораи корбарон нест, балки манфиати онҳост;
- GroupSub - дар ин ҷо маълумот дар бораи гурӯҳе, ки шумо ба он обуна ҳастед ва мақолаи охирине, ки ба муштариён фиристода шудааст, хоҳад буд;
- Омор - Ман барои он схема тартиб надодаам - мо инро баъдтар иҷро мекунем. Ин ҳадафи асосӣ дар MVP лоиҳа нест.
Барои кор анбор эҷод кунед
Ниҳоят, шумо метавонед барои кор бо боти телеграмма репозиторий эҷод кунед.- Мо чизҳоеро, ки аллакай ба мо шиносанд, пур мекунем - номи анбор, тавсифи мухтасари он.
- Иҷозатнома илова кунед - Apache 2.0 (шумо метавонед литсензияро бо салоҳдиди худ интихоб кунед).
- Лоиҳаи мо ҳоло дастрас аст - ин аст пайванд ба он: JavaRush Telegrambot .
Дар анбор лоиҳа эҷод кунед
Барои кор бо лоиҳа, истифода бурдани абзорҳои GitHub, ба монанди лоиҳа, хуб мебуд. Ин чист? Ин ҷойест, ки шумо метавонед вазифаҳо эҷод кунед, анҷоми онҳоро пайгирӣ кунед ва ҳолати вазифаро захира кунед. Муайян кунед, ки кӣ онҳоро иҷро мекунад ва ғайра. Барои ин, дар лоиҳаи сохташуда мо тугмаи Лоиҳаҳоро пайдо мекунем ва дар он ҷо мо навашро эҷод мекунем: Тавре ки шумо мебинед, дар ин ҷо ман номи лоиҳаро нишон додам, онро тавсиф кардам ва қолаберо интихоб кардам, ки мо дар он кор хоҳем кард - Канбан автоматӣ. Барои мо ҳоло он қадар муҳим нест, ки ин чӣ маъно дорад. Муҳим он аст, ки мо тахтаи дорои вазифаҳо ба сутунҳо тақсим карда мешавад, ки дар он ҳар як сутун мақоми вазифа хоҳад буд:- Иҷро кардан - ҳамаи вазифаҳое, ки бояд иҷро шаванд;
- Дар идома - вазифаҳое, ки дар айни замон кор карда мешаванд;
- Иҷрошуда - вазифаҳое, ки дар доираи ин лоиҳа аллакай иҷро шудаанд.
Мо барои лоиҳа масъалаҳо (масъалаҳо) менависем
Барои фаҳмидани он, ки кадом вазифаҳо бояд навишта шаванд, биёед қарор кунем, ки дар лоиҳа чӣ кор хоҳем кард. Ба мо барномае лозим аст, ки ба осонӣ ва зуд оғоз шавад, то мо тавонем ба пойгоҳи додаҳо дастрасӣ пайдо кунем, то схемаи пойгоҳи додаҳоро идора ва тағир диҳем, то мо тавонем дархостҳои REST-ро дар JavaRush барои ба даст овардани маълумот дар бораи мақолаҳо пешниҳод кунем. Дар асоси ин, шумо метавонед технологияҳои зеринро интихоб кунед:- SpringBoot - ҳамчун чаҳорчӯбаи барномаи мо,
- Spring Data - барои кор бо пойгоҳи додаҳо,
- Flyway - барои кор бо муҳоҷирати пойгоҳи додаҳо,
- MySQL - ҳамчун пойгоҳи додаҳо барои лоиҳа,
- Telegrambot StringBoot starter - китобхона барои кор бо боти телеграмма,
- Unirest китобхона барои кор бо дархостҳои REST мебошад.
Шаблон эҷоди вазифа
Мо бо истифода аз қолаби зерин вазифаҳо эҷод мекунем:- Номи вазифа чунин хоҳад буд: JRTB-{IssueNumber}:{IssueDescription} , дар куҷо:
- {IssueNumber} рақами силсилавии нашр аст. Боз як бори дигар аз масъалаи охирин мегирем;
- {IssueDescription} - тавсифи мухтасари масъала.
- Дар матни вазифа мо тавсифи муфассали онро хоҳем дод (баъзан он метавонад бо тавсифи номи вазифа мувофиқат кунад).
- Меъёрҳои қабул номгӯи талаботест, ки пас аз он вазифаро иҷрошуда ҳисоб кардан мумкин аст. Агар гуем, меъёрхои кабули супориш. Бо истифода аз онҳо, баррасикунанда (аз инглисӣ reviewer - reviewer - шахсе, ки ба чӣ гуна иҷро шудани супориш назар мекунад) метавонад фаҳмад, ки оё супориш пурра иҷро шудааст ё не.
- [ФУСИЯТ] JRTB-0: эҷод кардани лоиҳаи пурборкунандаи Skeleton Spring - дар ин ҷо ҳама чиз равшан аст: шумо бояд қисми якуми он чизеро, ки мо дар мақолаи қаблӣ карда будем, иҷро кунед.
- [ФУСИЯТ] JRTB-2: боти телеграммаро ба лоиҳа илова кунед - боти холӣ илова кунед, ки танҳо ҷавоб медиҳад ва мегӯяд, ки он зинда ва хуб аст.
- [ФУСИЯТ] JRTB-3: Намунаи фармонро барои телеграмбот амалӣ кунед - биёед муносибати дурустро барои кор бо фармонҳо дар боти телеграмма муқаррар кунем. То хол барои якчанд даста.
- [ФУСИЯТ] JRTB-1: Илова кардани қабати репозиторий - ин яке аз бузургтарин вазифаҳост - он ҳама чизеро, ки барои кор бо пойгоҳи додаҳо анҷом додан лозим аст, муттаҳид мекунад.
- [ФУТУРИЯ] JRTB-5: Ҳамчун корбар, ман мехоҳам гурӯҳро ба обуна илова кунам - ин аллакай аввалин Ҳикояи корбар дар фаҳмиши Agile аст. Ин барои корбарони мо як фоидаи воқеӣ хоҳад буд: имкон пайдо мешавад, ки ба бот обунаҳои гурӯҳӣ илова кунед.
- [ФУСИЯТ] JRTB-12: Татбиқи ҷадвали ирсоли огоҳинома дар бораи мақолаҳои нав - дар ин ҷо иҷрои ҷустуҷӯи мақолаҳои нав хоҳад буд, агар онҳо барои ҳар як гурӯҳ интишор шаванд ва ба ҳамаи корбароне, ки ба гурӯҳҳо обуна шудаанд, фиристода шаванд.
- [ФУТУРИЯ] JRTB-6: Ҳамчун корбар, ман мехоҳам рӯйхати обунаҳои гурӯҳии худро бубинам - дар ин ҷо ҳама чиз оддӣ аст: мо фармонеро илова мекунем, ки рӯйхати ҳамаи гурӯҳҳоеро, ки корбар ба онҳо обуна шудааст, нишон медиҳад.
- [ФУСИЯТ] JRTB-7: Ҳамчун корбар, ман мехоҳам обунаи гурӯҳро аз обунаҳои худ хориҷ кунам - дар ин ҷо шумо бояд обунаи корбарро ба навсозиҳо дар гурӯҳ хориҷ кунед.
- [ФУСИЯТ] JRTB-8: Ҳамчун корбар ман мехоҳам бо истифода аз бот ғайрифаъол гузорам - қатъ кардани ботро амалӣ созам. Яъне хамаи он чиро, ки дар системаи мо бояд анчом дода шавад, то кор бас шавад. Фармони / stop ба коркард илова кунед.
- [ФУСИЯТ] JRTB-9: Ҳамчун корбар, ман мехоҳам бо бот кор карданро оғоз кунам Ё танзими фаъол, агар ман онро қаблан истифода мекардам - коркарди фармони /startро илова кунед. Маҳз ҳамон тавре ки мо мехоҳем.
- [ФУСИЯТ] JRTB-10: Ҳамчун мудир ман мехоҳам омори ботро бубинам - эҷоди маҷмӯаи омори бот. Илова кардани қобorятҳои администратор.
- [ФУСИЯТ] JRTB-11: Ҳамчун корбар, ман мехоҳам ҳуҷҷатҳоро барои ин боти телеграмма бинам - ҳуҷҷатҳои навиштан. Бале, ҳа, дӯстон, шумо бе он зиндагӣ карда наметавонед ва ҳар қадар зудтар ин корро ёд гиред, барои шумо беҳтар аст))
Пур кардани анбор
Пеш аз оғози рамзгузорӣ боз чӣ кор кардан лозим аст? - Муаллиф, чандтои ин абзацхоро илова карда метавонед, аз варта берун мекашед?? — Не, сифати кор дар деталь нишон дода мешавад. Ва онҳо касоне ҳастанд, ки маъно доранд. Пас, биёед як ҷузъиёти дигарро илова кунем. Барои он ки лоиҳа барои дигар таҳиягарон маъмул ва фаҳмо шавад, он бояд пур карда шавад. Чӣ бояд илова кунам? Ман рӯйхати пурраи он чизеро, ки метавон дар мақола анҷом дод, тавсиф кардам Оптимизатсияи кор бо лоиҳаҳои худ дар GitHub: шиносоӣ бо анбори Шаблонҳои Github . Ман хондани онро хеле тавсия медиҳам. Барои мо муҳим аст, ки versionи возеҳ дошта бошем, фаҳмем, ки мо чӣ кор карда истодаем. Аз ин рӯ, ман файли RELEASE_NOTES илова кардам, ки дар он тағйирот ба лоиҳаи мо сабт карда мешавад. Ҳамчун мисол, шумо метавонед RELEASE_NOTES-ро аз лоиҳаи ман бубинед (бале, чаро нишон надиҳед, ки ман энергия ва эҷодиёти худро ба чӣ сарф кардам). Тағиротҳо барои ҳар як versionи нав дар он ҷо тавсиф карда мешаванд. Ман инчунин қолабҳоро барои сохтани вазифаҳои нав илова кардам, ки 4 вариант доранд:- Ҳисобот оид ба хатогиҳо ин вазифаест, ки аз ҷониби корбарон/озмоишгароне сохта шудааст, ки дар кори худ иштибоҳ пайдо мекунанд. Ин як чизи хеле муҳим аст: он ба идора кардани ислоҳи хатогӣ кӯмак мекунад;
- Дархости хусусият вазифаест барои илова кардани функсияҳои нав. Ҳамаи вазифаҳои аввалини лоиҳа вазифаҳои дархости хусусият мебошанд;
- Дархости такмилдиҳӣ - вазифа барои беҳтар кардани кори барнома. Масалан, барои тағир додани ҷавобҳои тестӣ ҳангоми кор бо бот. Ман нависандаи техникӣ нестам ва ман метавонам ҷавобҳои комилан дурустро пайдо кунам. Пас, агар шумо хоҳиш ва қобorят дошта бошед, онро пешниҳод кунед :)
- Савол саволест барои таҳиягарон дар бораи кори барнома. Як чизи хеле муфид. Фарз мекунем, ки фаҳмиши кор вуҷуд надорад ё ба ягон савол шубҳа вуҷуд дорад - шумо метавонед бо ин роҳ савол диҳед ва аз дасти аввал ҷавоб гиред.
GO TO FULL VERSION