JavaRush /Блоги Java /Random-TG /Чӣ тавр санҷиши мусоҳиба ба китобхонаи кушодаасос табдил ...
Roman Beekeeper
Сатҳи

Чӣ тавр санҷиши мусоҳиба ба китобхонаи кушодаасос табдил ёфт

Дар гурӯҳ нашр шудааст
Салом ба ҳама, ҷомеаи JavaRush! Каме дар бораи худам: Ман аз баҳори соли 2016 ҳамчун муҳандиси нармафзори Java кор мекунам. Ман ба ин ҷо омадан ва ҳалли мушкилотеро, ки дар давоми таҳсил ҳал накардам, дӯст медорам. Имрӯз ман ба шумо дар бораи китобхона нақл мекунам - Муқоисаи тасвирҳо . Ин китобхонаи кушодаасос аст, ки дар GitHub дастрас аст . Чӣ тавр супориши тестии мусоҳиба ба китобхонаи кушодаасос табдил ёфт - 1Мақсади ин мақола расонидани он аст, ки эҷоди як маҳсулоти кушодаасос танҳо беҳудаи вақт нест, не! Ин як таҷрибаи бойест, ки аз паҳлӯҳои гуногун гирифта мешавад, вақте ки шумо тамоми раванди рушдро назорат мекунед, вақте ки шумо бояд ҳар як ҷузъиётро омӯзед. Сарчашмаи кушода ҷаҳони гирду атрофи шумост. Шӯхӣ намекунам, дар замони мавҷудияти ин китобхона ман бо одамони кишварҳои гуногун, аз қабor ИМА, Ҳиндустон, Чин, Миср, Русия, Олмон, Украина, Шветсия, Зеландияи Нав, Норвегия робита доштам. Яъне ин таҷрибаи воқеии рушди муштарак, дарёфти созишҳо, тафтиши code ва ғайра мебошад. Ин муқаддима буд, акнун биёед бо тартиб оғоз кунем:

Санҷиш. Оғози августи 2017

Ҳамааш аз он сар шуд, ки ман бо яке аз ширкатҳо мусоҳиба доштам, ки қадами аввал навиштани супориши тестӣ буд. Вазифа аз навиштани code иборат буд, ки ду расми якхеларо муқоиса карда, фарқияти байни онҳоро ёфта, гурӯҳбандӣ карда, дар атрофи онҳо росткунҷае кашад. Аввалин расм вуҷуд дорад:
Чӣ тавр супориши тестии мусоҳиба ба китобхонаи кушодаасос табдил ёфт - 2
Сурати дуюм вуҷуд дорад:
Чӣ тавр супориши тестии мусоҳиба ба китобхонаи кушодаасос табдил ёфт - 3
Зарур буд, ки фарқиятҳоро пайдо кунед ва онҳоро тавре ки дар зер нишон дода шудааст, доир кунед:
Чӣ тавр супориши тестии мусоҳиба ба китобхонаи кушодаасос табдил ёфт - 4
Тавре ки шумо мебинед, дар майдони Номи корбар фарқият вуҷуд дорад , ки бо секунҷаи сурх доир карда шудааст. Тавсифи муфассали вазифа . Ман қарор додам, ки ман мехоҳам онро на танҳо аз нуқтаи назари функсионалӣ дуруст, балки зебо ҳам иҷро кунам, то хиҷолатовар нашавад. Барои ин ман қарор додам, ки онро ҳамчун лоиҳа дар GitHub нашр кунам . Ман дер боз мехостам, ки GitHub-ро омӯзам ва таҷрибаи кор бо он гирам. Пас аз дидани зуд, ман фаҳмидам, ки хуб мебуд, ки хидматҳои тарафи сеюмро барои таҳлor сифати code, тавлиди фарогирии code бо санҷишҳо ва ғайра илова кунем. Воситаҳои зерин илова карда шуданд:
  • Codacy - сифати code. Дар ҳақиқат ба он таваҷҷӯҳ кардан лозим аст.

  • Travis CI як абзори CI (интегратсияи муттасил) мебошад, ки лоиҳаро месозад, озмоишҳо мегузаронад ва мегӯяд, ки оё лоиҳа бомуваффақият сохта шудааст. Масалан, агар яке аз озмоишҳо дар натиҷаи тағйироти нав нагузашта бошад, он гоҳ мегӯяд, ки сохтани лоиҳа муваффақ набуд ва онро сурх ранг мекунад.

  • Комбинезон асбобест, ки нишон медиҳад, ки чанд фоизи codeи шумо бо санҷишҳо фаро гирифта шудааст.

  • BetterCode Hub воситаи дигари таҳлor сифати code мебошад. Чизи хеле муфид, ки на танҳо ба шумо мегӯям, ки чӣ бад аст, балки инчунин тавсиф мекунад, ки чаро ва истинод ба китобе, ки дар он шумо метавонед дар бораи он маълумот гиред.

Ҳар яке аз ин хадамот дорои нишони худро бо натиҷаҳои маълумот, ба монанди лоиҳаи фарогирии code дорад. Ва ин нишона метавонад дар тавсифи асосии лоиҳа - файли README илова карда шавад. Вазифа тайёр буд — ман онро барои дида баромадан фиристодам. Пас аз барраси, ман фавран аз хотираи тоза барои ҳар як шарҳ як масъалаи Github эҷод кардам , ки он гоҳ ба ман дар такмил додани ин лоиҳа кӯмак мекунад. Аз ҷониби корфармо ягон супориши такмилдиҳӣ набуд, бинобар ин ман лоиҳаро барои муддате фаромӯш кардам...

Роҳи китобхона. июли 2018

Лого

Дар як лаҳза ман фаҳмидам, ки одамон аксар вақт ба лоиҳаи ман ташриф меоранд ва ин ҳама рӯз рӯй медиҳад. Ман аз ин дар тааҷҷуб мондам ва боз ҳам бештар дар ҳайрат мондам, ки тақрибан як сол пас аз он як МАСЪАЛА таъсис ёфт, ки дар он навишта шуда буд, ки як дизайнери графикӣ ба ман пешниҳод мекунад, ки логотипи лоиҳаамро созам. Онҳо мегӯянд, ки ӯ ин корро барои маҳсулоти Opensource дӯст медорад ва ин корро комилан ройгон мекунад. Мо ба ҳамкорӣ шурӯъ кардем. Якчанд вариантҳо пешниҳод карда шуданд, аммо дар ниҳоят мо ба ин тасмим гирифтем:
Чӣ тавр супориши тестии мусоҳиба ба китобхонаи кушодаасос табдил ёфт - 5
Он вақт ман ҳанӯз ҷавон будам ва бо ҷомеаи кушодаасос ошно набудам ва худи далели чунин пешниҳод барои ман ваҳшӣ буд ва пурсидам, ки чаро ӯ ин корро мекунад? Ба он ӯ ҷавоб дод: "Лолз оҳ, танҳо ман дӯст медорам, ки саҳм гузоштан дар лоиҳаҳои кушодаасос. Як навъ ҳадафҳои ҳаёт ..." ( худи масъала дар ин ҷо аст ). Он вақт ман бори аввал ҳис кардам, ки чӣ қадар бузург аст, вақте ки одамони гуногун шуморо тавассути лоиҳаҳои кушодаасос пайдо мекунанд ва чунин чизҳои ҷолибро пешниҳод мекунанд!

Камбудии тарафи аввал

Ман пайхас кардам, ки як таҳиягари муайян аз Чин барои ман масъалае эҷод кард ва дар он тавсиф кард, ки дар кори китобхона камбудие пайдо кардааст, ки агар шумо тасвирҳои калонро истифода баред, шумо StackOverflowError мегиред . Мард тасмим гирифт, ки аз ин истифода барад ва хатое пайдо кард. Ва ман на танҳо онро пайдо кардам. ва дар бораи ӯ низ навиштааст. Ин дар тараккиёти китобхона кадами нав аст. Гузашта аз ин, ман аслан роҳи ҳалли худро надоштам. Дар як лаҳза, яке аз озмоишгарон аз Русия ҳалли худро пешниҳод кард. Аммо он хом буд ва дуруст тайёр карда нашудааст ва ман онро қабул накардам. Ва ҳангоме ки вақти нашри китобхона дар Maven Central расид, бо ин камбуди чизеро ҳал кардан лозим буд; ман намехостам онро дар баробари он нашр кунам. Илова бар ин, боз як камбудӣ вуҷуд дошт, ки ман онро ҳеҷ гоҳ ислоҳ накардаам ва он низ нороҳатии зиёд овард.

Истифодаи сатри фармон. Тирамоҳи 2018

Марҳилаи навбатии рушд иртибот бо як шведӣ (Ренато Атайдес) буд, ки мехост китобхонаро тавассути сатри фармон истифода барад ва барои ин зарурати ворид кардани баъзе тағйироту иловаҳо буд. Ман аз ин боз дар ҳайрат мондам. Пас аз он ки дизайнери графикӣ ба ман навишт, тааҷҷуби ман каме камтар буд, аммо ба ҳар ҳол хеле баланд буд. Фикри он ки касе дар ҳақиқат ба codeи ман ниёз дорад, маро бо эҳсосоти бениҳоят пур кард. Вай тагйироти зарурй дароварда, code тайёр кард. Ман баррасии codeро анҷом додам, яъне ман тағиротҳоро дидам, шарҳҳо буданд, ки тағир дода шудаанд ва тағирот аллакай дар китобхона буданд. Ман ин тағиротҳоро ҳамчун versionи v2.0 таъин кардам.Қадами навбатӣ ин илова кардани китобхона ба Maven Central - анбори марказӣ буд, ки аз он ҷо шумо метавонед онро барои дилхоҳ лоиҳа зеркашӣ кунед ва онро ҳамчун вобастагӣ истифода баред. Он вақт ман намедонистам, ки чӣ гуна ин корро, ҳатто аз фосилаи дур ҳам иҷро кунам, бинобар ин ман гуфтам, ки банд ҳастам ва аз ӯ хоҳиш кардам, ки тамоми қадамҳои заруриро барои таъсиси лоиҳа иҷро кунад. Аммо маълум шуд, ки ин тамоман кофӣ набуд ва аз ҳама ҷолиб он буд, ки пайвастшавӣ бо Maven Central буд. Ин як дарди ваҳшӣ аст, ки ман бори аввал карда натавонистам ва танҳо 15 апрел ман тавонистам лоиҳаро дар Maven Central нашр кунам. Ин осон набуд, аммо тавре ки дигарон мегӯянд, "ҳар касе, ки рамзи Java-и худро нашр кардан мехоҳад, аз ин мегузарад." Пеш аз нашри китобхона, ман ниҳоят фаҳмидам, ки бо камбудиҳое, ки муддати тӯлонӣ идома доштанд, чӣ гуна ва чӣ гуна бояд кор кунам ва versionи нави v2.0.2 -ро баровардам , ки дар он ман ба ҳамаи онҳое, ки ба ман кӯмак карданд, ташаккур гуфтам, чӣ гуна ва чӣ кор кардам. .

Нашр дар Maven Central. Баҳори 2019

Барои дуруст нашр кардани китобхона, шумо бояд фаҳмиши хуби version ва чӣ гуна дуруст танзим кардани versionҳоро дошта бошед. Ман ин схемаро риоя мекунам:
  • XX.YY.BBBB , ки дар он XX навсозии versionи асосӣ мебошад, ки тағйиротеро дар бар мегирад, ки бо versionи қаблӣ номувофиқ аст (масалан, тағир додани натиҷаи бозгашт дар усулҳо);
  • YY як навсозии ночиз аст - тағирот ё тавсеаи дохилӣ, ки BBBB- ро тағир намедиҳад - ин камбудиҳое ҳастанд, ки ислоҳ шудаанд.
  • Масалан, versionи 2.0.2 маънои онро дорад, ки versionи асосӣ 2 аст, ягон навсозии ночиз вуҷуд надошт ва ду навсозӣ барои камбудиҳо вуҷуд дорад.
Баъдан, фаҳмидани он ки чӣ тавр дуруст танзим кардани groupId ва artifactId муҳим буд . Онҳо бояд як маротиба интихоб карда шаванд ва минбаъд истифода шаванд. Ва онҳо бастаеро ташкил медиҳанд, ки дар он code нигоҳ дошта мешавад. Буд: ua.comparison.image Ҳоло: com.github.romankh3.image.comparison Ва ин бешубҳа беҳтар аст, зеро ҳама медонанд, ки ин лоиҳа аз GitHub аст ва онро аз шахсе бо лақаби romankh3 пайдо кардан мумкин аст. Вақте ки ман ҳамаи инро кардам, ман versionи нави v2.1.0 -ро баровардам .

Муошират бо шведҳо. Майи 2019

Пас аз нашри китобхона, як шведи дигар (Мика Китёлайнен) ба ман почтаи электронӣ фиристода, аз дӯсташ хоҳиш кард, ки ба китобхонаи ман тағйирот ворид кунад. Мегӯяд, ки ба ин воқеан лозим аст ва агар мо ин корро кунему зуд анҷом диҳем, хеле шод мешавад. Албатта, ман зидди дигаргунихои зарурй набудам. Вай пешниҳод кард, ки конфигуратсияи ғафсии хатеро, ки росткунҷаеро кашад, илова кунад. Мисли, барои онҳое, ки биниши суст доранд, ин як тағйироти муфид хоҳад буд. Рамзро омода кард . Бо илова кардани чанд тағйироти дигар, ман versionи v2.2.0-ро баровардам

Муошират бо як олмонӣ. Майи 2019

Пас аз ин, як олмонӣ масъалаеро эҷод кард , ки дар он мегӯяд, ки мехоҳад онро барои озмоиш истифода барад, аммо он дорои функсия нест. Ӯ пешниҳодҳои зиёде пешниҳод кард, ки хеле ҷолиб буданд, ӯ пешниҳод кард, ки ба ҷои баргардонидани танҳо тасвири натиҷавӣ бо натиҷа дар натиҷаи муқоиса, маҷмӯи маълумотро баргардонед: он чизе, ки муқоиса карда шудааст, натиҷа (агар лозим бошад) ва ҳолате, ки дар он мавҷуд аст MATCH, MISMATCH, SIZE_MISMATCH хоҳад буд. Ҳатто тағирот ворид кард. Аммо онхо коидаи пештараро тамоман ба назар нагирифта, саросемавор сохта шудаанд. Ман онҳоро рад кардам ва пешниҳод кардам, ки онҳоро тавре иҷро кунам, ки ман мувофиқам. Бо вуҷуди ин, ӯ бештар ҷавоб дод ва ман қарор додам, ки худам ин корро мекунам ва versionи навро мебарорам. Ҳамзамон, Мика Китолайнен боз як функсияи ҷолибро пешниҳод кард - илова кардани соҳаҳое, ки ба муқоиса дохил карда намешаванд. Ин як ҳодисаи воқеӣ аст. Ва ҳамаи ин дар v3.0.0 бароварда шуд

Дар лоиҳаи воқеӣ истифода баред

Дар охири моҳи май як озмоишгари автоматика аз Киев ба ман навишт, ки ба китобхона таваҷҷӯҳ зоҳир кард ва мехоҳад онро дар лоиҳаи воқеӣ, ки пул меорад, истифода барад. Ин як пешрафт буд! Истифодаи он дар ҷое дар лоиҳаи пет як чиз аст, аммо истифодаи он дар лоиҳаи воқеӣ масъалаи тамоман дигар аст. Мо муҳокима кардем, ки он чӣ ва чӣ тавр кор мекунад. Ариза хеле ҷолиб аст: дар аризаи онҳо чекҳое мавҷуданд, ки чоп карда мешаванд ва тафтиш кардан лозим буд, ки чекҳо мувофиқи як қолаби муайян сохта шудаанд ва он тағир намеёбад. Аммо мушкилоте вуҷуд дошт, ки бахшҳое мисли сана ва вақт ҳамеша иваз мешуданд ва бояд сарфи назар карда шаванд. Мо аллакай функсияҳоро барои нодида гирифтани баъзе соҳаҳо илова карда будем, аммо маълум шуд, ки он барои истифодаи воқеӣ хеле хом аст ва мо то ҳол дар тӯли якчанд ҳафта дар ин бобат самаранок кор кардем. Дар натиҷа versionи v3.1.1 бароварда шуд

Ҷустуҷӯи ҷой

Пас аз он, ман фаҳмидам, ки чарогоҳи аслии китобхонаи ман онро дар санҷишҳо истифода мебарад. Барои ин ман тасмим гирифтам, ки як навъ форумеро барои озмоишгарон пайдо кунам ва дар ин бора ба онҳо бинависам, то каме фикру мулоҳизаҳо пайдо кунам ва шӯҳрат пайдо кунам. Ман як форуми забони русиро ёфтам ва дар он ҷо мақолае нашр кардам: Ташкor тасвирҳои санҷишӣ - муқоисаи ду якхела . Дар он ман фикру мулоҳизаҳои воқеиро дар бораи рамз ва функсияҳо гирифтам, ки ман онро татбиқ намуда, versionи нави v3.2.0 ва сипас v.3.3.0 -ро нашр кардам .

Ҳозир

Дар айни замон китобхона дорои 60 ситора дар Github ва дорои 33 вилка мебошад. Ман фикр мекунам, ки ин хеле аҷиб аст, бо назардошти он, ки ман онро ба ҳеҷ ваҷҳ таблиғ накардаам, ба истиснои мақола дар форум барои автоматҳо. Ташаккур ба ҳамаи онҳое, ки то охир хонданд. Он воқеан як мақолаи хеле дарозтар аз он буд, ки ман интизор будам. Мақола дар бораи чӣ гуна нашр кардани китобхона дар Maven Central. Агар чизе барои илова кардан дошта бошед, нависед! Агар шумо чизе барои беҳтар кардани китобхона дошта бошед, нависед! Ман ҳама чизро мехонам ва вақти мувофиқро ба он сарф мекунам. Ҳар касе, ки мақола писанд омад ва онро муфид донист - онро баҳо диҳед ва дар шарҳҳо нависед. Инчунин, ба ҳисоби github-и ман обуна шавед romankh3 Ба мақолаҳои дигари ман низ нигаред:
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION