JavaRush /Java блогу /Random-KY /Кантип интервью тести ачык булак китепканасына айланган
Roman Beekeeper
Деңгээл

Кантип интервью тести ачык булак китепканасына айланган

Группада жарыяланган
Баарына салам, JavaRush коомчулугу! Өзүм жөнүндө бир аз: Мен 2016-жылдын жазынан бери Java программалык камсыздоо инженери болуп иштеп келем. Мен бул жакка келип, окуу учурунда чечпеген маселелерди чечкенди жакшы көрөм. Бүгүн мен сизге китепкана жөнүндө айтып берем - Сүрөттөрдү салыштыруу . Бул GitHubда жалпыга жеткorктүү болгон ачык булак китепканасы . Маектешүү тестинин тапшырмасы кантип ачык булак китепканасына айланган - 1Бул макаланын максаты ачык булак продуктуну түзүү жөн гана убакытты текке кетирүү эмес экенин билдирүү болуп саналат, жок! Бул ар кайсы тараптан алынган бай тажрыйба, сиз бүтүндөй өнүгүү процессин көзөмөлдөп, ар бир майда-чүйдөсүнө чейин изилдешиңиз керек болгондо. Open Source - бул сизди курчап турган дүйнө. Тамашалап жатканым жок, бул китепкана иштеп турганда мен АКШ, Индия, Кытай, Египет, Россия, Германия, Украина, Швеция, Жаңы Зеландия, Норвегия сыяктуу ар кайсы өлкөлөрдөн келген адамдар менен баарлаштым. Башкача айтканда, бул биргелешип иштеп чыгуу, компромисстерди табуу, codeду текшерүү жана башкалар боюнча реалдуу тажрыйба. Бул киришүү болчу, эми ирети менен баштайлы:

Сыноо. 2017-жылдын август айынын башы

Мунун баары мен компаниялардын бирине интервью алганымдан башталды, анда биринчи кадам тесттик тапшырма жазуу болду. Тапшырма бирдей өлчөмдөгү эки сүрөттү салыштырып, алардын ортосундагы айырмачылыктарды таап, аларды топтоп, айланасына тик бурчтук тартуучу code жазуу болчу. Биринчи сүрөт бар:
Маектешүү тестинин тапшырмасы кантип ачык булак китепканасына айланган - 2
Экинчи сүрөт бар:
Маектешүү тестинин тапшырмасы кантип ачык булак китепканасына айланган - 3
Төмөндө көрсөтүлгөндөй айырмачылыктарды таап, аларды тегеректөө керек болчу:
Маектешүү тестинин тапшырмасы кантип ачык булак китепканасына айланган - 4
Көрүнүп тургандай, Колдонуучунун аты талаасында айырма бар , ал кызыл үч бурчтук менен курчалган. Милдеттин кеңири сүрөттөлүшү . Мен муну функционалдык көз караштан эле туура эмес, уятка калтырбоо үчүн кооз кылгым келет деп чечтим. Бул үчүн, мен муну GitHub боюнча долбоор катары жарыялоону чечтим . Мен көптөн бери GitHub изилдеп, аны менен иштөө тажрыйбасын алгым келет. Тез карап чыккандан кийин, мен codeдун сапатын талдоо, тесттер менен codeдун камтылышын түзүү үчүн үчүнчү тараптын кызматтарын кошуу жакшы болорун таптым. Төмөнкү куралдар кошулду:
  • Codacy - codeдун сапаты. Бул чындап көңүл бурууга арзырлык.

  • Travis CI - бул CI (үзгүлтүксүз интеграция) куралы, ал долбоорду курат, тесттерди өткөрөт жана долбоордун ийгorктүү курулганын айтып берет. Мисалы, жаңы өзгөрүүлөрдүн натыйжасында сыноолордун бири өтпөй калса, анда ал долбоордун түзүлүшү ийгorксиз болгонун айтып, аны кызыл түскө боёйт.

  • Комбинезон - бул сиздин codeуңуздун канча пайызы тесттер менен камтылганын көрсөтүүчү курал.

  • BetterCode Hub - codeдун сапатын талдоо үчүн дагы бир курал. Бул абдан пайдалуу нерсе, ал сизге эмне жаман экенин айтып гана койбостон, эмне үчүн сүрөттөлөт жана ал жөнүндө бorм ала турган китепке шилтеме берет.

Бул кызматтардын ар бири codeду камтуу долбоору сыяктуу маалымат натыйжалары менен өзүнүн төш белгисине ээ. Ал эми бул төш белгини долбоордун негизги сүрөттөмөсүнө кошууга болот - README файлы. Тапшырма даяр болду - мен аны карап чыгууга жибердим. Карап чыгуудан кийин, мен дароо жаңы эсимден, ар бир комментарий үчүн Github Issue түздүм , ал мага бул долбоорду жакшыртууга жардам берет. Иш берүүчү тараптан эч кандай жакшыртуу тапшырмасы болгон жок, ошондуктан мен бир азга долбоор жөнүндө унутуп калдым ...

Китепкана жолу. 2018-жылдын июль айы

Логотип

Бир убакта адамдар менин долбоорго көп барарын байкадым жана бул күн сайын болуп турат. Мени буга таң калдым, андан бетер таң калдым, бир жылдай убакыт өткөндөн кийин ЧЫГАРЫЛЫШЫ пайда болуп, анда кандайдыр бир графикалык дизайнер менин долбоорум үчүн логотип жасоону сунуштап жаткандыгы жазылган. Алар муну Opensource өнүмдөрү үчүн жасаганды жакшы көрөт жана муну таптакыр бекер кылат дешет. Биз кызматташа баштадык. Бир нече варианттар сунушталды, бирок акыры биз муну чечтик:
Маектешүү тестинин тапшырмасы кантип ачык булак китепканасына айланган - 5
Мен ал кезде жаш болчумун жана ачык булак коомчулугу менен тааныш эмес болчумун жана мындай сунуштун өзү мен үчүн жапайы болуп, мен сурадым, ал эмне үчүн мындай кылып жатат? Ал мындай деп жооп берди: "Lolz oh, жөн гана мен ачык булак долбоорлоруна салым кошууну жакшы көрөм. Жашоо максаттарынын түрү..." ( маселе бул жерде ). Мен биринчи жолу ар кандай адамдар ачык булак долбоорлору аркылуу сизди таап, ушундай кызыктуу нерселерди сунуш кылганы кандай сонун экенин сездим!

Биринчи тараптын кемчorги

Кытайдан келген бир иштеп чыгуучу мен үчүн маселени жаратканын байкадым , анда ал китепкананын ишинде кемчorк тапканын, эгер чоң сүрөттөрдү колдонсоңуз, StackOverflowError аласыз . Эркек пайдаланууну чечти жана ката тапты. А мен аны жөн эле тапкан жокмун. жана ал жөнүндө да жазган. Бул китепкананы өнүктүрүүдөгү жаңы кадам. Анын үстүнө, мен чындап эле чечим болгон эмес. Белгилүү бир учурда Россиядан келген тестиерлердин бири чечимди сунуштады. Бирок ал чийки болчу, туура эмес жасалгандыктан мен кабыл алган жокмун. Ал эми Maven Central китепканасын чыгарууга убакыт келгенде, бул кемчorк менен бир нерсени чечүү керек болчу; мен аны менен бирге чыгаргым келген жок. Мындан тышкары, мен эч качан оңдобогон дагы бир кемчorк бар жана ал дагы бир топ ыңгайсыздыктарды алып келди.

Буйрук сабын колдонуу. Күз 2018

Өнүктүрүүнүн кийинки этабы китепкананы буйрук сабы аркылуу колдонууну каалаган швед (Ренато Атайдес) менен баарлашуу болду жана бул үчүн кандайдыр бир өзгөртүүлөрдү жана толуктоолорду киргизүү зарыл болгон. Буга мен дагы таң калдым жана таң калдым. Графикалык дизайнер мага жазгандан кийин, менин таң калуум бир аз азыраак болду, бирок дагы эле абдан жогору болду. Кимдир бирөө чындап эле менин codeум керек деген ой мени укмуштуудай сезимдерге толтурду. Керектүү өзгөртүүлөрдү киргизип, codeексти даярдады. Мен codeду карап чыктым, башкача айтканда, мен өзгөртүүлөрдү карадым, өзгөртүлгөн комментарийлер бар жана өзгөртүүлөр китепканада болгон. Мен бул өзгөртүүлөрдү v2.0 versionсы деп атадым.Кийинки кадам китепкананы Maven Centralга кошуу болду - борбордук репозиторий, ал жерден сиз аны каалаган долбоор үчүн жүктөп алып, аны көз карандылык катары колдоно аласыз. Ал убакта мен муну кантип жасоону, атүгүл алыстан да түшүнгөн жокмун, ошондуктан мен бош эмес экенимди айтып, долбоорду түзүү үчүн зарыл болгон бардык кадамдарды жасоону сурандым. Бирок бул жетишсиз болуп чыкты жана эң кызыктуусу Maven Central менен байланыш түзүү болду. Бул жапайы оору, мен биринчи жолу кыла алган жокмун жана 15-апрелде мен долбоорду Maven Centralга жарыялай алдым. Бул оңой болгон жок, бирок башкалар айткандай, "өзүнүн Java codeун жарыялоону каалагандардын баары бул аркылуу өтөт". Китепкананы чыгарардан мурун, мен акыры көптөн бери болуп келе жаткан кемчorктерди эмне жана кантип кылууну таптым жана v2.0.2 жаңы versionсын чыгардым , анда мага жардам бергендердин баарына ыраазычылык билдирип, эмне жана кантип кылганымды сүрөттөп бердим. .

Maven Centralга жарыялоо. Жаз 2019

Китепкананы туура басып чыгаруу үчүн сиз versionларды жана versionларды кантип туура орнотууну жакшы түшүнүшүңүз керек. Мен бул схемага карманамын:
  • XX.YY.BBBB , мында XX - мурункуга туура келбеген өзгөртүүлөрдү талап кылган негизги version жаңыртуу (мисалы, методдордо кайтарылган натыйжаны өзгөртүү);
  • YY кичине жаңыртуу - BBBB деген нерсени өзгөртпөй турган ички өзгөртүү же кеңейтүү - бул оңдолгон кемчorктер.
  • Мисалы, 2.0.2 versionсы негизги version 2 экенин, майда жаңыртуулар болгон эмес жана кемчorктер үчүн эки жаңыртуу бар экенин билдирет.
Андан кийин, groupId жана artifactId ды кантип туура орнотууну аныктоо керек болчу . Алар бир жолу тандалып, андан ары колдонулушу керек болчу. Жана алар code сакталган пакетти түзөт. Болду: ua.comparison.image Азыр: com.github.romankh3.image.comparison Бул жакшыраак, анткени бул GitHub долбоору экенин жана romankh3 лакап аты бар адамдан тапса болорун баары билет. Мунун баарын жасаганда, мен v2.1.0 жаңы versionсын чыгардым .

Шведдер менен байланыш. Май 2019

Мен китепкананы басып чыгаргандан кийин дагы бир швед (Мика Кытёлайнен) мага электрондук кат жазып, досунан китепканама өзгөртүү киргизүүнү суранды. Бул чындап эле керек экенин айтып, тезинен жасап, жасап берсек абдан сүйүнөт дейт. Албетте, мен зарыл болгон өзгөрүүлөргө каршы болгон жокмун. Ал тик бурчтук тарткан сызык калыңдыгынын конфигурациясын кошууну сунуштады. Көрүүсү начар адамдар үчүн бул пайдалуу өзгөрүү болот. Код даярдалды . Дагы бир нече өзгөртүүлөрдү кошуп, мен v2.2.0 versionсын чыгардым

Немис менен баарлашуу. Май 2019

Ушундан кийин, бир немис аны тестирлөө үчүн колдонгусу келгенин, бирок функционалдуулугу жок экенин айткан маселени жаратты. Ал абдан кызыктуу болгон көптөгөн сунуштарды киргизди, ал салыштыруунун натыйжасында натыйжасы менен гана алынган сүрөттү кайтаруунун ордуна, маалыматтардын топтомун кайтарууну сунуштады: салыштырылган нерсе, натыйжа (зарыл болсо) жана анын абалы MATCH, MISMATCH, SIZE_MISMATCH болот. Ал тургай өзгөртүүлөрдү киргизген. Бирок алар мурунку codeексти такыр эске албай, шашылыш түрдө жасашкан. Мен аларды четке кагып, өзүм каалагандай аткарууну сунуштадым. Ошого карабастан, ал көбүрөөк жооп берди жана мен муну өзүм жасап, жаңы versionсын чыгарам деп чечтим. Ошол эле учурда Мика Кытёлайнен дагы бир кызыктуу функцияны сунуштады - салыштырууга кирбей турган аймактарды кошуу. Бул реалдуу окуя. Мунун баары v3.0.0 чыгарылды

Чыныгы долбоордо колдонуңуз

Май айынын аягында мага Киевден автоматташтырылган тестирлөөчү кат жазды, ал китепканага кызыгып, аны акча алып келе турган реалдуу долбоордо колдонууну каалайт. Бул ачылыш болду! Аны пет-долбоордун бир жеринде колдонуу бир нерсе, ал эми аны чыныгы долбоордо колдонуу таптакыр башка маселе. Биз бул эмне жана кандай иштээрин талкууладык. Тиркеме абдан кызыктуу: алардын арызында алар басылган чектер бар жана чектер белгилүү бир калыпка ылайык түзүлгөнүн жана ал өзгөрбөй турганын текшерүү керек болчу. Бирок дата жана убакыт сыяктуу бөлүмдөр дайыма өзгөрүп, көңүл бурулбай турган маселе бар болчу. Биз буга чейин кээ бир аймактарды этибарга албай коюу үчүн функцияларды кошконбуз, бирок ал дагы деле чыныгы колдонуу үчүн абдан чийки болуп чыкты жана биз дагы эле бул боюнча бир нече жума бою бирге жемиштүү иштедик. Натыйжада v3.1.1 versionсы чыкты

Ниш табуу

Ошондон кийин мен китепканамдын чыныгы орду аны тесттерде колдонуп жатканын түшүндүм. Бул үчүн мен тестирлөөчүлөр үчүн кандайдыр бир форум таап, кандайдыр бир пикир алуу жана атак-даңкты жогорулатуу максатында аларга бул жөнүндө жазууну чечтим. Мен орус тилдүү форумду таап, ал жерде макала жарыяладым: Сыноо сүрөттөрүн уюштуруу - эки окшошту салыштыруу . Анда мен code жана функция боюнча реалдуу пикир алдым, аны мен колдонуп, жаңы versionсын чыгардым v3.2.0 , анан v.3.3.0 .

Азыр

Учурда китепканада Githubда 60 жылдыз жана 33 айры бар. Автоматчылар үчүн форумдагы макаланы кошпогондо, мен аны эч кандай жарнамалабаганымды эске алганда, бул абдан сонун деп ойлойм. Аягына чейин окугандарга рахмат. Чынында бул мен күткөндөн алда канча узун макала болуп чыкты. Maven Centralга китепкананы кантип чыгаруу керектиги жөнүндө макала. Кошула турган нерсеңиз болсо жазыңыз! Китепкананы жакшыртуу боюнча сунуштарыңыз болсо, жазыңыз! Мен баарын окуп, ага убакыт бөлөм. Макаланы жактырган жана аны пайдалуу деп тапкан ар бир адам - ​​аны баалаңыз жана комментарийге жазыңыз. Ошондой эле, менин github аккаунтума жазылыңыз romankh3 Башка макалаларымды да караңыз:
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION