JavaRush /Java Blogu /Random-AZ /Müsahibə testi necə açıq mənbəli kitabxanaya çevrildi
Roman Beekeeper
Səviyyə

Müsahibə testi necə açıq mənbəli kitabxanaya çevrildi

Qrupda dərc edilmişdir
Hamıya salam, JavaRush icması! Özüm haqqında bir az: 2016-cı ilin yazından Java Proqram Mühəndisi kimi çalışıram. Buraya gəlməyi və təhsil aldığım müddətdə həll etmədiyim problemləri həll etməyi sevirəm. Bu gün sizə kitabxana haqqında məlumat verəcəyəm - Şəkil müqayisəsi . Bu, GitHub -da ictimaiyyətə açıq olan açıq mənbəli kitabxanadır . Müsahibə testi tapşırığı necə açıq mənbəli kitabxanaya çevrildi - 1Bu məqalənin məqsədi açıq mənbə məhsulunun yaradılmasının sadəcə vaxt itkisi olmadığını çatdırmaqdır, yox! Bu, bütün inkişaf prosesinə nəzarət etdiyiniz zaman, hər bir təfərrüatı dərindən araşdırmalı olduğunuz zaman, müxtəlif tərəfdən əldə edilən zəngin təcrübədir. Açıq Mənbə ətrafınızdakı dünyadır. Zarafat etmirəm, bu kitabxananın mövcud olduğu müddətdə ABŞ, Hindistan, Çin, Misir, Rusiya, Almaniya, Ukrayna, İsveç, Yeni Zelandiya, Norveç kimi müxtəlif ölkələrdən olan insanlarla ünsiyyətdə olmuşam. Yəni, bu, birgə inkişaf, kompromislərin tapılması, kodun yoxlanılması və s. sahəsində real təcrübədir. Bu giriş idi, indi sıra ilə başlayaq:

Test. 2017-ci il avqustun əvvəli

Hər şey onunla başladı ki, şirkətlərdən birində müsahibə verdim, burada ilk addım test tapşırığı yazmaq oldu. Tapşırıq eyni ölçülü iki şəkli müqayisə edəcək, onlar arasındakı fərqləri tapacaq, qruplaşdıracaq və ətrafına düzbucaqlı çəkəcək kod yazmaq idi. Birinci şəkil var:
Müsahibə testi tapşırığı necə açıq mənbəli kitabxanaya çevrildi - 2
İkinci şəkil var:
Müsahibə testi tapşırığı necə açıq mənbəli kitabxanaya çevrildi - 3
Fərqləri tapmaq və aşağıda göstərildiyi kimi dairəyə çəkmək lazım idi:
Müsahibə testi tapşırığının necə açıq mənbəli kitabxanaya çevrilməsi - 4
Gördüyünüz kimi, qırmızı üçbucaqla əhatə olunmuş İstifadəçi adı sahəsində fərq var. Tapşırığın daha ətraflı təsviri . Qərara gəldim ki, bunu yalnız funksional baxımdan düzgün deyil, həm də gözəl etmək istəyirəm ki, utandırıcı olmasın. Bunun üçün mən bunu GitHub -da bir layihə olaraq dərc etmək qərarına gəldim . Mən çoxdan GitHub öyrənmək və onunla işləmək təcrübəsi qazanmaq istəyirdim. Sürətli baxdıqdan sonra kodun keyfiyyətini təhlil etmək, testlərlə kodu əhatə etmək və s. üçün üçüncü tərəf xidmətlərini əlavə etmək yaxşı olardı. Aşağıdakı alətlər əlavə edildi:
  • Codacy - kod keyfiyyəti. Həqiqətən diqqət yetirməyə dəyər.

  • Travis CI bir layihə quran, testlər keçirən və layihənin uğurla qurulub-qurulmadığını bildirən CI (davamlı inteqrasiya) alətidir. Məsələn, yeni dəyişikliklər nəticəsində sınaqlardan biri keçməyibsə, o zaman layihənin qurulmasının uğursuz olduğunu söyləyəcək və onu qırmızı rəngə boyayacaq.

  • Kombinezon kodunuzun neçə faizinin testlərlə əhatə olunduğunu göstərən bir vasitədir.

  • BetterCode Hub kod keyfiyyətini təhlil etmək üçün başqa bir vasitədir. Yalnız nəyin pis olduğunu izah etməyəcək, həm də səbəbini izah edəcək və bu barədə məlumat əldə edə biləcəyiniz bir kitaba keçid verəcək çox faydalı bir şey.

Bu xidmətlərin hər biri kod əhatəsi layihəsi kimi məlumat nəticələri ilə öz nişanına malikdir. Və bu nişanı layihənin əsas təsvirinə - README faylına əlavə etmək olar. Tapşırıq hazır idi - nəzərdən keçirmək üçün göndərdim. Baxışdan sonra mən dərhal təzə yaddaşdan hər şərh üçün Github məsələsi yaratdım ki, bu da mənə bu layihəni təkmilləşdirməyə kömək edəcək. İşəgötürəndən təkmilləşdirmə tapşırığı yox idi, ona görə də bir müddət layihəni unutdum...

Kitabxana yolu. İyul 2018

Logo

Bir anda gördüm ki, insanlar mənim layihəmə tez-tez baş çəkirlər və bu, hər gün olur. Mən buna heyran oldum və daha da heyrətləndim ki, təxminən bir ildən sonra MƏSƏL yaradıldı, orada hansısa qrafik dizaynerin mənə layihəm üçün loqo yaratmağı təklif etdiyi yazılıb. Deyirlər ki, o, Opensource məhsulları üçün bunu etməyi sevir və bunu tamamilə pulsuz edəcək. Əməkdaşlığa başladıq. Bir neçə variant təklif edildi, lakin sonda bununla bağlı qərar verdik:
Müsahibə testi tapşırığı necə açıq mənbəli kitabxanaya çevrildi - 5
O vaxt mən hələ gənc idim və açıq mənbə icması ilə tanış deyildim və belə bir təklifin özü mənim üçün vəhşi idi və soruşdum ki, o niyə bunu edir? O cavab verdi: "Lolz oh, sadəcə olaraq mən açıq mənbəli layihələrə töhfə verməyi sevirəm. Bir növ həyat məqsədləri olan şey..." ( məsələ buradadır ). Fərqli insanların sizi açıq mənbəli layihələr vasitəsilə tapmasının və belə maraqlı şeylər təklif etməsinin nə qədər gözəl olduğunu ilk o zaman hiss etdim!

Birinci tərəf qüsuru

Gördüm ki, Çindən olan müəyyən bir tərtibatçı mənim üçün bir problem yaratdı və o, kitabxananın işində bir qüsur tapdığını, böyük şəkillərdən istifadə etsəniz, StackOverflowError alacağınızı söylədi . Adam bundan istifadə etmək qərarına gəldi və səhv tapdı. Və mən sadəcə tapmadım. və onun haqqında da yazdı. Bu, kitabxananın inkişafında yeni bir addımdır. Üstəlik, həqiqətən də bir həllim yox idi. Müəyyən bir məqamda Rusiyadan olan sınaqçılardan biri həll yolu təklif etdi. Amma çiy idi və düzgün hazırlanmamışdı və mən bunu qəbul etmədim. Kitabxananı Maven Central-da nəşr etmək vaxtı çatanda, bu qüsuru olan bir şeyi həll etmək lazım idi, mən onunla birlikdə nəşr etmək istəmədim. Bundan əlavə, heç vaxt düzəltmədiyim başqa bir qüsur var idi və bu da bir çox narahatlıq gətirdi.

Komanda xəttinin istifadəsi. Payız 2018

İnkişafın növbəti mərhələsi kitabxanadan komanda xətti ilə istifadə etmək istəyən isveçli (Renato Athaydes) ilə əlaqə idi və bunun üçün bəzi dəyişikliklər və əlavələr etmək lazım idi. Mən yenə də buna heyran və təəccübləndim. Qrafik dizayner mənə yazdıqdan sonra təəccübüm bir qədər az oldu, amma yenə də çox yüksək oldu. Kiminsə koduma həqiqətən ehtiyacı olduğu fikri məni inanılmaz hisslərlə doldurdu. Lazımi dəyişiklikləri edib kodu hazırladı. Kod nəzərdən keçirdim, yəni dəyişikliklərə baxdım, dəyişdirilən şərhlər var idi və dəyişikliklər artıq kitabxanada idi. Mən bu dəyişiklikləri v2.0 versiyası olaraq təyin etdim.Növbəti addım kitabxananı Maven Central-a əlavə etmək idi - mərkəzi repozitoriya, oradan onu istənilən layihə üçün yükləyə və ondan asılılıq kimi istifadə edə bilərsiniz. O zaman bunu uzaqdan da olsa necə edəcəyim barədə heç bir fikrim yox idi, ona görə də məşğul olduğumu dedim və ondan layihəni qurmaq üçün lazım olan bütün addımları yerinə yetirməsini xahiş etdim. Ancaq bu, ümumiyyətlə kifayət etmədi və ən maraqlısı Maven Central ilə əlaqə qurmaq idi. Bu, ilk dəfə edə bilmədiyim vəhşi bir ağrıdır və yalnız aprelin 15-də layihəni Maven Central-da dərc edə bildim. Bu, asan deyildi, amma başqalarının dediyi kimi, "Java kodunu dərc etmək istəyən hər kəs bundan keçir." Kitabxananı nəşr etməzdən əvvəl, nəhayət, uzun müddətdir davam edən qüsurlarla nə və necə edəcəyimi tapdım və yeni versiya v2.0.2 -ni buraxdım , orada mənə kömək edənlərin hamısına təşəkkür etdim, nə və necə etdiyimi təsvir etdim. .

Maven Central-da nəşr. Bahar 2019

Kitabxananı düzgün dərc etmək üçün versiyaların tərtib edilməsini və versiyaları necə düzgün qurmağı yaxşı başa düşməlisiniz. Bu sxemə sadiq qalacağam:
  • XX.YY.BBBB , burada XX əvvəlki ilə uyğun gəlməyən dəyişikliklərə səbəb olan əsas versiya yeniləməsidir (məsələn, metodlarda qaytarılan nəticənin dəyişdirilməsi);
  • YY kiçik bir yeniləmədir - BBBB-nin nə olduğunu dəyişməyən daxili dəyişiklik və ya genişləndirmə - bunlar düzəldilmiş qüsurlardır.
  • Məsələn, 2.0.2 versiyası o deməkdir ki, əsas versiya 2-dir, kiçik yeniləmələr olmayıb və qüsurlar üçün iki yeniləmə var.
Sonra, groupIdartifactId-i necə düzgün qurmaq lazım olduğunu anlamaq vacib idi . Onlar bir dəfə seçilməli və daha sonra istifadə edilməli idi. Və kodun saxlandığı paketi təşkil edirlər. Oldu: ua.comparison.image İndi: com.github.romankh3.image.comparison Və bu daha yaxşıdır, çünki hamı bunun GitHub-dan bir layihə olduğunu və romankh3 ləqəbli bir şəxsdən tapıla biləcəyini bilir. Bütün bunları edəndə v2.1.0 yeni versiyasını buraxdım .

İsveçlilərlə ünsiyyət. May 2019

Kitabxananı nəşr etdirdikdən sonra başqa bir isveçli (Mika Kytöläinen) mənə e-poçt göndərdi və dostundan kitabxanamda dəyişiklik etməyi xahiş etdi. Deyir ki, həqiqətən də buna ehtiyacım var və biz bunu tez edib etsək çox sevinəcək. Təbii ki, mən lazım olan dəyişikliklərin əleyhinə deyildim. O, düzbucaqlı çəkən xətt qalınlığı konfiqurasiyasını əlavə etməyi təklif etdi. Görmə qabiliyyəti zəif olanlar üçün bu faydalı dəyişiklik olacaq. Kodu hazırladı . Daha bir neçə dəyişiklik əlavə edərək, v2.2.0 versiyasını buraxdım

Alman ilə ünsiyyət. May 2019

Bundan sonra bir alman onu sınaq üçün istifadə etmək istədiyini, lakin funksionallığı olmadığını söyləyən bir məsələ yaratdı. O, çox maraqlı olan bir çox təkliflər irəli sürdü, o, təklif etdi ki, yalnız müqayisə nəticəsində nəticə ilə nəticələnən şəkli qaytarmaq əvəzinə, bir sıra məlumatları qaytarın: nə müqayisə edilib, nəticə (lazım olduqda) və orada olan vəziyyət. MATCH, MISMATCH, SIZE_MISMATCH olacaq. Hətta dəyişikliklər etdi. Amma əvvəlki məcəlləni ümumiyyətlə nəzərə almadılar və tələsik düzəldiliblər. Mən onları rədd etdim və lazım bildiyim kimi həyata keçirməyi təklif etdim. Buna baxmayaraq, o, daha çox cavab verdi və mən qərara gəldim ki, bunu özüm edib yeni versiyanı buraxıram. Eyni zamanda, Mika Kytöläinen daha bir maraqlı funksionallıq təklif etdi - müqayisəyə daxil edilməyəcək sahələri əlavə etdi. Bu real bir haldır. Və bütün bunlar v3.0.0 -da buraxıldı

Həqiqi bir layihədə istifadə edin

Mayın sonunda Kiyevdən bir avtomatlaşdırma testçisi mənə məktub yazdı, o, kitabxana ilə maraqlandı və ondan pul gətirən real layihədə istifadə etmək istəyir. Bu, bir sıçrayış idi! Onu pet-layihədə hardasa istifadə etmək bir şeydir, amma real layihədə istifadə etmək tamam başqa məsələdir. Bunun nə olduğunu və necə işlədiyini müzakirə etdik. Tətbiq çox maraqlıdır: onların tətbiqində çap olunmuş çeklər var və yoxlamaq lazım idi ki, çeklər müəyyən şablona uyğun yaradılıb və dəyişmir. Ancaq bir problem var idi ki, tarix və vaxt kimi bölmələr həmişə dəyişir və nəzərə alınmamalı idi. Biz artıq bəzi sahələrə məhəl qoymamaq üçün funksionallıq əlavə etmişdik, lakin o, hələ də real istifadə üçün çox xam olduğu ortaya çıxdı və biz hələ də bir neçə həftə bu barədə birlikdə səmərəli işlədik. Nəticə v3.1.1 versiyasının buraxılışı oldu

Niş tapmaq

Bundan sonra anladım ki, kitabxanam üçün əsl yer ondan testlərdə istifadə olunur. Bunu etmək üçün testçilər üçün bir növ forum tapmaq və bəzi rəylər almaq və şöhrəti artırmaq üçün bu barədə onlara yazmaq qərarına gəldim. Mən rusdilli bir forum tapdım və orada bir məqalə dərc etdim: Test şəkillərinin təşkili - iki oxşarın müqayisəsi . Orada mən tətbiq etdiyim və yeni v3.2.0 və sonra v.3.3.0 versiyasını buraxdığım kod və funksionallıq haqqında real rəy aldım .

İndi

Hazırda kitabxanada Github-da 60 ulduz və 33 çəngəl var. Avtomatçılar üçün forumdakı məqalədən başqa heç bir şəkildə təbliğ etmədiyimi nəzərə alsaq, bu, çox gözəl olduğunu düşünürəm. Sona qədər oxuyan hər kəsə təşəkkürlər. Əslində gözlədiyimdən daha uzun məqalə oldu. Maven Central-da kitabxananı necə dərc etmək barədə məqalə. Əlavə edəcəyiniz bir şey varsa, yazın! Kitabxananı yaxşılaşdırmaq üçün təklif edəcəyiniz bir şey varsa, yazın! Hər şeyi oxuyacağam və ona lazımi vaxt ayıracağam. Məqaləni bəyənən və faydalı hesab edən hər kəs - onu qiymətləndirin və şərhlərdə yazın. Həmçinin, mənim github hesabıma abunə olun romankh3 Digər məqalələrimə də baxın:
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION