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 . Bu 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:
İkinci şəkil var:
Fərqləri tapmaq və aşağıda göstərildiyi kimi dairəyə çəkmək lazım idi:
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:
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!
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:-
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.
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: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.
İ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ımAlman 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ışı olduNiş 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:- Müsahibə zamanı texniki suallar
- Necə iş tapmaq olar? CV göndərmək üçün məsləhətlər
- Peşəkar tükənmə. Necə müqavimət göstərmək olar?
- Uğur tarixi. Həftədə 20 saat proqramlaşdırma, magistr dərəcəsi və şəxsi həyat
- Aviabiletlərin qiymətinə nəzarət sisteminin yaradılması: addım-addım təlimat [1-ci hissə]
- Skyscanner API üçün müştəri yaratmaq və onu jCenter və Maven Central-da dərc etmək üçün bələdçi [1-ci hissə]
- Giriş: nə, necə, harada və nə ilə?
- Intellij IDEA-da debug: yeni başlayanlar üçün bələdçi
GO TO FULL VERSION