JavaRush /Java Blog /Random-TL /Paano naging open-source na library ang isang pagsubok sa...

Paano naging open-source na library ang isang pagsubok sa pakikipanayam

Nai-publish sa grupo
Kumusta sa lahat, komunidad ng JavaRush! Kaunti tungkol sa aking sarili: Nagtatrabaho ako bilang Java Software Engineer mula noong tagsibol ng 2016. Gustung-gusto kong pumunta dito at lutasin ang mga problema na hindi ko nalutas sa panahon ng aking pag-aaral. Ngayon sasabihin ko sa iyo ang tungkol sa library - Paghahambing ng Larawan . Isa itong open source na library na available sa publiko sa GitHub . Paano naging open-source na library ang isang pagsubok sa panayam - 1Ang layunin ng artikulong ito ay upang ipahiwatig na ang paglikha ng isang open source na produkto ay hindi lamang isang pag-aaksaya ng oras, hindi! Ito ay isang mayamang karanasan na nakuha mula sa iba't ibang panig, kapag mayroon kang kontrol sa buong proseso ng pag-unlad, kapag kailangan mong suriin ang bawat detalye. Ang Open Source ay ang mundo sa paligid mo. Hindi ako nagbibiro, sa panahon ng pagkakaroon ng library na ito, nakipag-ugnayan ako sa mga tao mula sa iba't ibang bansa, tulad ng USA, India, China, Egypt, Russia, Germany, Ukraine, Sweden, New Zealand, Norway. Iyon ay, ito ay tunay na karanasan sa magkasanib na pag-unlad, paghahanap ng mga kompromiso, pagsuri ng code, at iba pa. Iyon ay ang pagpapakilala, ngayon magsimula tayo sa pagkakasunud-sunod:

Pagsusulit. Simula ng Agosto 2017

Nagsimula ang lahat sa katotohanan na nagkaroon ako ng pakikipanayam sa isa sa mga kumpanya, kung saan ang unang hakbang ay magsulat ng isang pagsubok na gawain. Ang gawain ay magsulat ng isang code na maghahambing ng dalawang larawan ng parehong laki, hanapin ang mga pagkakaiba sa pagitan ng mga ito, pangkatin ang mga ito at gumuhit ng isang parihaba sa kanilang paligid. Mayroong unang larawan:
Paano naging open-source na library ang isang pagsubok sa panayam - 2
Mayroong pangalawang larawan:
Paano naging open-source na library ang isang pagsubok sa panayam - 3
Ito ay kinakailangan upang mahanap ang mga pagkakaiba at bilugan ang mga ito tulad ng ipinapakita sa ibaba:
Paano naging open-source na library ang isang pagsubok sa panayam - 4
Gaya ng nakikita mo, may pagkakaiba sa field ng Username , na binibilogan ng pulang tatsulok. Mas detalyadong paglalarawan ng gawain . Napagpasyahan ko na gusto kong gawin ito hindi lamang nang tama mula sa isang functional na punto ng view, ngunit maganda rin, upang hindi ito nakakahiya. Upang gawin ito, nagpasya akong i-publish ko ito bilang isang proyekto sa GitHub . Matagal ko nang gustong pag-aralan ang GitHub at magkaroon ng karanasan sa pagtatrabaho dito. Pagkatapos ng isang mabilis na pagtingin, nalaman kong mainam na magdagdag ng mga serbisyo ng third-party para sa pagsusuri ng kalidad ng code, pagbuo ng saklaw ng code na may mga pagsubok, atbp. Idinagdag ang mga sumusunod na tool:
  • Codacy - kalidad ng code. Ito ay talagang nagkakahalaga ng pagbibigay pansin sa.

  • Ang Travis CI ay isang tool na CI (continuous integration) na bumubuo ng isang proyekto, nagpapatakbo ng mga pagsubok at nagsasabi kung matagumpay na naitayo ang proyekto. Halimbawa, kung hindi pumasa ang isa sa mga pagsubok bilang resulta ng mga bagong pagbabago, sasabihin nito na hindi matagumpay ang pagbuo ng proyekto at bibigyan ito ng kulay ng pula.

  • Ang Coveralls ay isang tool na nagpapakita kung anong porsyento ng iyong code ang sakop ng mga pagsubok.

  • Ang BetterCode Hub ay isa pang tool para sa pagsusuri ng kalidad ng code. Isang napaka-kapaki-pakinabang na bagay na hindi lamang magsasabi sa iyo kung ano ang masama, ngunit naglalarawan din kung bakit at nagbibigay ng isang link sa isang libro kung saan maaari kang makakuha ng kaalaman tungkol dito.

Ang bawat isa sa mga serbisyong ito ay may sariling badge na may mga resulta ng data, tulad ng isang proyekto sa saklaw ng code. At ang badge na ito ay maaaring idagdag sa pangunahing paglalarawan ng proyekto - README file. Handa na ang gawain - ipinadala ko ito para sa pagsusuri. Pagkatapos ng pagsusuri, ako kaagad, mula sa bagong memorya, ay lumikha ng Github Issue para sa bawat komento , na makakatulong sa akin na mapabuti ang proyektong ito. Walang improvement task mula sa employer, kaya nakalimutan ko muna ang project...

Landas sa Aklatan. Hulyo 2018

Logo

Sa isang punto, natuklasan ko na ang mga tao ay madalas na bumibisita sa aking proyekto, at ito ay nangyayari araw-araw. Namangha ako dito, at lalo akong namangha sa katotohanang makalipas ang halos isang taon ay gumawa sila ng ISYU, kung saan nakasulat na may isang graphic designer na nag-aalok sa akin na gumawa ng logo para sa aking proyekto. Sinabi nila na gusto niyang gawin ito para sa mga produkto ng Opensource at gagawin ito nang libre. Nagsimula kaming magtulungan. Ilang mga pagpipilian ang iminungkahi, ngunit sa huli ay naayos namin ito:
Paano naging open-source na library ang isang pagsubok sa panayam - 5
Bata pa ako noon at hindi pamilyar sa opensource community, at ang mismong katotohanan ng naturang alok ay naging wild sa akin at tinanong ko, bakit niya ginagawa ito? Kung saan siya sumagot: "Lolz oh, just cause i love contributing to open source projects. Kind of a life goals thing..." ( the issue itself is here ). Noon ko unang naramdaman kung gaano kasarap kapag nahanap ka ng iba't ibang tao sa pamamagitan ng mga open source na proyekto at nag-aalok ng mga kawili-wiling bagay!

Unang Gilid na Depekto

Napansin ko na gumawa ng isyu para sa akin ang isang developer mula sa China , kung saan inilarawan niya na nakakita siya ng depekto sa gawain ng library, na kung gagamit ka ng malalaking larawan, makakakuha ka ng StackOverflowError . Nagpasya ang lalaki na samantalahin at natagpuan ang isang pagkakamali. At hindi ko lang nahanap. at nagsulat din tungkol sa kanya. Ito ay isang bagong hakbang sa pagbuo ng silid-aklatan. Bukod dito, wala talaga akong solusyon. Sa isang tiyak na punto, nagmungkahi ng solusyon ang isa sa mga tagasubok mula sa Russia. Ngunit ito ay hilaw at hindi ginawa ng maayos at hindi ko ito tinanggap. At kapag oras na para i-publish ang library sa Maven Central, kailangang lutasin ang isang bagay na may ganitong depekto; hindi ko nais na i-publish ito kasama nito. Bukod dito, may isa pang depekto na hindi ko na naayos at nagdulot din ito ng maraming abala.

Paggamit ng Command Line. Taglagas 2018

Ang susunod na yugto sa pag-unlad ay pakikipag-usap sa isang Swede (Renato Athaydes), na gustong gamitin ang library sa pamamagitan ng command line at para dito kinakailangan na gumawa ng ilang mga pagbabago at pagdaragdag. Muli akong namangha at nagulat dito. Matapos sumulat sa akin ang graphic designer, ang aking sorpresa ay medyo mas mababa, ngunit napakataas pa rin. Ang pag-iisip na talagang kailangan ng isang tao ang aking code ay nagpuno sa akin ng hindi kapani-paniwalang damdamin. Ginawa niya ang mga kinakailangang pagbabago at inihanda ang code. Nagsagawa ako ng pagsusuri sa code, ibig sabihin, tiningnan ko ang mga pagbabago, may mga komento na binago at ang mga pagbabago ay nasa library na. Itinalaga ko ang mga pagbabagong ito bilang bersyon v2.0. Ang susunod na hakbang ay idagdag ang library sa Maven Central - isang sentral na imbakan, kung saan maaari mong i-download ito para sa anumang proyekto at gamitin ito bilang dependency. Sa oras na iyon, wala akong ideya kung paano gawin ito, kahit na sa malayo, kaya sinabi kong abala ako at hiniling sa kanya na gawin ang lahat ng mga hakbang na kinakailangan upang mai-set up ang proyekto. Ngunit ito ay naging hindi sapat at ang pinaka-kagiliw-giliw na bagay ay ang mag-set up ng isang koneksyon sa Maven Central. Ito ay isang ligaw na sakit, na hindi ko magawa sa unang pagkakataon, at noong Abril 15 lamang ako nakapag-publish ng proyekto sa Maven Central. Hindi ito madali, ngunit gaya ng gustong sabihin ng iba, "lahat ng gustong mag-publish ng kanilang Java code ay dumaan dito." Bago ko i-publish ang library, sa wakas ay nakita ko kung ano at paano gagawin ang mga depekto na matagal nang nangyayari at naglabas ng bagong bersyon v2.0.2 , kung saan pinasalamatan ko ang lahat ng tumulong sa akin, inilarawan kung ano at paano ko ginawa .

Publishing sa Maven Central. Spring 2019

Upang mai-publish nang tama ang isang library, kailangan mong magkaroon ng isang mahusay na pag-unawa sa bersyon at kung paano magtakda ng mga bersyon nang tama. Mananatili ako sa scheme na ito:
  • XX.YY.BBBB , kung saan ang XX ay isang pangunahing pag-update ng bersyon na nagsasangkot ng mga pagbabagong hindi tugma sa nauna (halimbawa, pagbabago ng nagbabalik na resulta sa mga pamamaraan);
  • Ang YY ay isang minor update - isang panloob na pagbabago o pagpapalawak na hindi nagbabago sa kung ano ang BBBB - ito ay mga depekto na naayos na.
  • Halimbawa, ang bersyon 2.0.2 ay nangangahulugan na ang pangunahing bersyon ay 2, walang mga menor de edad na update, at mayroong dalawang update para sa mga depekto.
Susunod, mahalagang malaman kung paano itakda nang tama ang groupId at artifactId . Kinailangan silang mapili nang isang beses at ginamit pa. At binubuo nila ang pakete kung saan naka-imbak ang code. Was: ua.comparison.image Ngayon: com.github.romankh3.image.comparison At ito ay malinaw na mas mahusay, dahil alam ng lahat na ito ay isang proyekto mula sa GitHub at maaaring matagpuan mula sa isang taong may palayaw na romankh3. Noong ginawa ko ang lahat ng ito, naglabas ako ng bagong bersyon v2.1.0 .

Komunikasyon sa mga Swedes. Mayo 2019

Pagkatapos kong i-publish ang library, isa pang Swede (Mika Kytöläinen) ang nag-email sa akin at hiniling sa kanyang kaibigan na gumawa ng mga pagbabago sa aking library. Sinabi niya na talagang kailangan niya ito at siya ay magiging napakasaya kung gagawin namin ito at gagawin ito nang mabilis. Siyempre, hindi ako tutol sa mga pagbabagong kailangan. Iminungkahi niya ang pagdaragdag ng configuration ng kapal ng linya na gumuhit ng isang parihaba. Tulad ng, para sa mga may mahinang paningin, ito ay magiging isang kapaki-pakinabang na pagbabago. Inihanda ang code . Ang pagkakaroon ng magdagdag ng ilang higit pang mga pagbabago, inilabas ko ang bersyon v2.2.0

Komunikasyon sa isang Aleman. Mayo 2019

Pagkatapos nito, gumawa ang isang German ng isyu kung saan sinabi niyang gusto niyang gamitin ito para sa pagsubok, ngunit wala itong functionality. Gumawa siya ng maraming mga panukala na lubhang kawili-wili, iminungkahi niya na sa halip na ibalik lamang ang nagresultang larawan na may resulta bilang resulta ng paghahambing, ibalik ang isang set ng data: kung ano ang inihambing, ang resulta (kung kinakailangan) at ang estado kung saan mayroong ay magiging MATCH, MISMATCH, SIZE_MISMATCH . Kahit na ginawa ang mga pagbabago. Ngunit hindi nila isinaalang-alang ang nakaraang code at ginawang nagmamadali. Tinanggihan ko sila at nag-alok na isakatuparan ang mga ito ayon sa nakikita kong angkop. Sa kabila nito, mas tumugon siya at nagpasya akong ako na mismo ang gagawa at maglalabas ng bagong bersyon. Kasabay nito, iminungkahi ni Mika Kytöläinen ang isa pang kawili-wiling pag-andar - pagdaragdag ng mga lugar na hindi isasama sa paghahambing. Ito ay isang tunay na kaso. At lahat ng ito ay inilabas sa v3.0.0

Gamitin sa isang tunay na proyekto

Sa katapusan ng Mayo, isang automation tester mula sa Kyiv ang sumulat sa akin, na naging interesado sa library at gustong gamitin ito sa isang tunay na proyekto na nagdudulot ng pera. Ito ay isang pambihirang tagumpay! Ang paggamit nito sa isang lugar sa isang pet-project ay isang bagay, ngunit ang paggamit nito sa isang tunay na proyekto ay isang ganap na naiibang bagay. Tinalakay namin kung ano at paano ito gumagana. Ang application ay napaka-interesante: sa kanilang aplikasyon mayroon silang mga tseke na naka-print at ito ay kinakailangan upang suriin na ang mga tseke ay nilikha ayon sa isang tiyak na template at hindi ito nagbabago. Ngunit nagkaroon ng problema na ang mga seksyon tulad ng petsa at oras ay palaging nagbabago at kailangang balewalain. Nagdagdag na kami ng pag-andar upang huwag pansinin ang ilang mga lugar, ngunit ito ay naging hilaw pa rin para sa tunay na paggamit at matagumpay pa rin kaming nagtrabaho nang magkasama sa loob ng ilang linggo tungkol dito. Ang resulta ay ang paglabas ng bersyon v3.1.1

Paghahanap ng Niche

Pagkatapos noon, napagtanto ko na ang tunay na angkop na lugar para sa aking aklatan ay ginagamit ito sa mga pagsubok. Upang gawin ito, nagpasya akong maghanap ng ilang uri ng forum para sa mga tagasubok at sumulat sa kanila tungkol dito upang makakuha ng ilang feedback at pataasin ang katanyagan. Nakakita ako ng isang forum sa wikang Ruso at naglathala ng isang artikulo doon: Organisasyon ng mga pagsubok na larawan - paghahambing ng dalawang magkatulad na larawan . Dito nakatanggap ako ng totoong feedback sa code at functionality, na inilapat ko at naglabas ng bagong bersyon v3.2.0 , at pagkatapos ay v.3.3.0 .

Ngayon

Ang library ay kasalukuyang may 60 bituin sa Github at may 33 tinidor. Sa tingin ko ito ay napaka-cool, kung isasaalang-alang na hindi ko ito na-promote sa anumang paraan maliban sa isang artikulo sa forum para sa mga automators. Salamat sa lahat ng nagbasa hanggang dulo. Ito ay talagang naging isang mas mahabang artikulo kaysa sa inaasahan ko. Isang artikulo kung paano mag-publish ng library sa Maven Central. Kung mayroon kang idadagdag, magsulat! Kung mayroon kang anumang iminumungkahi upang mapabuti ang aklatan, sumulat! Babasahin ko ang lahat at maglalaan ng tamang oras dito. Sinuman na nagustuhan ang artikulo at nakitang kapaki-pakinabang ito - i-rate ito at isulat sa mga komento. Gayundin, mag-subscribe sa aking github account na romankh3 Tingnan din ang aking iba pang mga artikulo:
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION