JavaRush /Java blogi /Random-UZ /Qanday qilib intervyu testi ochiq manba kutubxonasiga ayl...

Qanday qilib intervyu testi ochiq manba kutubxonasiga aylandi

Guruhda nashr etilgan
Hammaga salom, JavaRush jamoasi! O'zim haqida bir oz: Men 2016 yilning bahoridan beri Java dasturiy ta'minot muhandisi sifatida ishlayman. Men bu erga kelishni va o'qish paytida hal qilmagan muammolarni hal qilishni yaxshi ko'raman. Bugun men sizga kutubxona haqida gapirib beraman - Rasmlarni taqqoslash . Bu GitHub'da hamma uchun ochiq bo'lgan ochiq manbali kutubxona . Qanday qilib intervyu test topshirig'i ochiq kodli kutubxonaga aylandi - 1Ushbu maqolaning maqsadi ochiq kodli mahsulotni yaratish shunchaki vaqtni behuda sarflash emasligini etkazishdir, yo'q! Bu butun rivojlanish jarayoni ustidan nazoratga ega bo'lganingizda, har bir tafsilotni o'rganishingiz kerak bo'lganda, turli tomonlardan olingan boy tajriba. Ochiq manba - bu atrofingizdagi dunyo. Hazil qilmayapman, bu kutubxona mavjud bo‘lgan davrda men AQSh, Hindiston, Xitoy, Misr, Rossiya, Germaniya, Ukraina, Shvetsiya, Yangi Zelandiya, Norvegiya kabi turli mamlakatlardan kelgan odamlar bilan muloqot qilganman. Ya'ni, bu birgalikda ishlab chiqish, murosalarni topish, kodni tekshirish va hokazolarda haqiqiy tajriba. Bu kirish edi, endi tartibda boshlaylik:

Sinov. 2017 yil avgust oyining boshi

Hammasi men kompaniyalardan birida intervyu olganimdan boshlandi, u erda birinchi qadam test topshirig'ini yozish edi. Vazifa bir xil o'lchamdagi ikkita rasmni solishtiradigan kod yozish, ular orasidagi farqni topish, ularni guruhlash va atrofida to'rtburchak chizish edi. Birinchi rasm mavjud:
Qanday qilib intervyu test topshirig'i ochiq manba kutubxonasiga aylandi - 2
Ikkinchi rasm bor:
Qanday qilib intervyu test topshirig'i ochiq manba kutubxonasiga aylandi - 3
Farqlarni topib, ularni quyida ko'rsatilgandek aylantirmoq kerak edi:
Qanday qilib intervyu test topshirig'i ochiq manba kutubxonasiga aylandi - 4
Ko'rib turganingizdek, foydalanuvchi nomi maydonida farq bor , u qizil uchburchak bilan o'ralgan. Vazifaning batafsil tavsifi . Men buni nafaqat funktsional nuqtai nazardan to'g'ri, balki xijolat bo'lmasligi uchun chiroyli qilishni xohlashga qaror qildim. Buning uchun men buni GitHub -da loyiha sifatida nashr etishga qaror qildim . Men uzoq vaqtdan beri GitHub-ni o'rganishni va u bilan ishlash tajribasini olishni xohlardim. Tezkor ko'rib chiqqach, kod sifatini tahlil qilish, testlar bilan kod qamrovini yaratish va h.k. uchun uchinchi tomon xizmatlarini qo'shish yaxshi bo'lardi. Quyidagi vositalar qo'shildi:
  • Codacy - kod sifati. Bu haqiqatan ham e'tibor berishga arziydi.

  • Travis CI CI (uzluksiz integratsiya) vositasi bo'lib, u loyihani quradi, sinovlarni o'tkazadi va loyiha muvaffaqiyatli qurilgan yoki yo'qligini aytadi. Misol uchun, agar yangi o'zgarishlar natijasida testlardan biri o'tmagan bo'lsa, u loyihani qurish muvaffaqiyatsiz bo'lganligini aytadi va uni qizil rangga bo'yadi.

  • Kombinezonlar - bu sizning kodingizning necha foizi testlar bilan qoplanganini ko'rsatadigan vositadir.

  • BetterCode Hub kod sifatini tahlil qilish uchun yana bir vositadir. Bu juda foydali narsa, bu sizga nafaqat nima yomonligini aytib beradi, balki nima uchun ekanligini tasvirlab beradi va bu haqda bilim olishingiz mumkin bo'lgan kitobga havola beradi.

Ushbu xizmatlarning har biri kodni qoplash loyihasi kabi ma'lumotlar natijalari bilan o'z nishoniga ega. Va bu nishonni loyihaning asosiy tavsifiga - README fayliga qo'shish mumkin. Vazifa tayyor edi - men uni ko'rib chiqish uchun yubordim. Ko'rib chiqqandan so'ng, men darhol yangi xotiradan har bir sharh uchun Github muammosini yaratdim , bu esa menga ushbu loyihani yaxshilashga yordam beradi. Ish beruvchidan hech qanday takomillashtirish topshirig'i yo'q edi, shuning uchun men loyihani bir muddat unutib qo'ydim ...

Kutubxona yo'li. 2018 yil iyul

Logotip

Bir payt men odamlar mening loyihamga tez-tez tashrif buyurishlarini va bu har kuni sodir bo'lishini bilib oldim. Men bundan hayratda qoldim va bundan ham hayratda qoldim, taxminan bir yil o'tgach, MASAL yaratildi, unda qaysidir grafik dizayner menga loyiham uchun logotip yaratishni taklif qilayotgani yozilgan edi. Aytishlaricha, u buni Opensource mahsulotlari uchun qilishni yaxshi ko'radi va buni mutlaqo bepul qiladi. Biz hamkorlik qilishni boshladik. Bir nechta variantlar taklif qilindi, ammo oxir-oqibat biz bunga qaror qildik:
Qanday qilib intervyu test topshirig'i ochiq kodli kutubxonaga aylandi - 5
O'shanda men hali yosh edim va ochiq manbalar hamjamiyatiga noma'lum edim va bunday taklifning haqiqati men uchun vahshiy edi va men so'radim: u nega bunday qilyapti? U shunday deb javob berdi: "Ochig'i, men ochiq manbali loyihalarga hissa qo'shishni yaxshi ko'raman. Hayotiy maqsadlarga o'xshash narsa..." ( muammoning o'zi shu yerda ). O'shanda men turli xil odamlar sizni ochiq manbali loyihalar orqali topib, bunday qiziqarli narsalarni taklif qilishlari qanchalik ajoyib ekanini his qildim!

Birinchi yon nuqson

Men Xitoydan ma'lum bir ishlab chiquvchi men uchun muammo yaratganini payqadim , unda u kutubxona ishida nuqson topgani, agar siz katta hajmdagi rasmlardan foydalansangiz, StackOverflowErrorga ega bo'lasiz . Erkak foyda olishga qaror qildi va xato topdi. Va men shunchaki topmadim. va u haqida ham yozgan. Bu kutubxona rivojlanishidagi yangi qadamdir. Bundan tashqari, menda haqiqatan ham yechim yo'q edi. Muayyan nuqtada, Rossiyadan kelgan sinovchilardan biri yechim taklif qildi. Lekin u xom va to'g'ri tayyorlanmagan va men buni qabul qilmadim. Maven Central kutubxonasini nashr qilish vaqti kelganida, bu nuqson bilan biror narsani hal qilish kerak edi, men uni u bilan birga nashr qilishni xohlamadim. Bundan tashqari, men hech qachon tuzatmagan yana bir kamchilik bor edi va u ham juda ko'p noqulayliklar keltirdi.

Buyruqlar qatoridan foydalanish. 2018 yil kuz

Rivojlanishning keyingi bosqichi kutubxonadan buyruq satri orqali foydalanmoqchi bo'lgan shved (Renato Athaydes) bilan aloqa qilish edi va buning uchun ba'zi o'zgartirishlar va qo'shimchalar kiritish kerak edi. Men bundan yana hayratda qoldim va hayratda qoldim. Grafik dizayner menga yozganidan so'ng, mening hayratim biroz kamroq edi, lekin baribir juda yuqori. Kimgadir mening kodim haqiqatan ham kerak, degan fikr meni aql bovar qilmaydigan his-tuyg'ularga to'ldirdi. U kerakli o'zgarishlarni kiritdi va kodni tayyorladi. Men kodni ko'rib chiqishni o'tkazdim, ya'ni o'zgarishlarni ko'rib chiqdim, o'zgartirilgan sharhlar bor edi va o'zgarishlar allaqachon kutubxonada edi. Men bu oʻzgarishlarni v2.0 versiyasi sifatida belgiladim.Keyingi qadam kutubxonani Maven Central – markaziy omborga qoʻshish boʻldi, u yerdan uni istalgan loyiha uchun yuklab olishingiz va undan bogʻliqlik sifatida foydalanishingiz mumkin. O'sha paytda men buni qanday qilishni, hatto masofadan turib ham qilishni bilmasdim, shuning uchun men band ekanligimni aytdim va undan loyihani o'rnatish uchun zarur bo'lgan barcha bosqichlarni bajarishini so'radim. Ammo bu umuman etarli emas edi va eng qiziq narsa Maven Central bilan aloqa o'rnatish edi. Bu dahshatli og'riq, men buni birinchi marta qila olmadim va faqat 15 aprelda loyihani Maven Central-da nashr etishga muvaffaq bo'ldim. Bu oson emas edi, lekin boshqalar aytganidek, "o'zining Java kodini nashr etmoqchi bo'lgan har bir kishi bu jarayondan o'tadi". Kutubxonani nashr etishdan oldin, men nihoyat uzoq vaqtdan beri davom etayotgan nuqsonlar bilan nima qilish va qanday qilish kerakligini topdim va yangi versiyani chiqardim v2.0.2 , unda menga yordam bergan barchaga minnatdorchilik bildirdim, nima qilganimni va qanday qilganimni tasvirlab berdim. .

Maven Central nashriyoti. 2019-yil bahori

Kutubxonani to'g'ri nashr qilish uchun siz versiyani va versiyalarni qanday qilib to'g'ri o'rnatishni yaxshi tushunishingiz kerak. Men ushbu sxemaga amal qilaman:
  • XX.YY.BBBB , bu erda XX - oldingi versiyaga mos kelmaydigan o'zgarishlarni (masalan, usullarda qaytariladigan natijani o'zgartirish) olib keladigan asosiy versiya yangilanishi;
  • YY kichik yangilanish - BBBB nima ekanligini o'zgartirmaydigan ichki o'zgarish yoki kengayish - bular tuzatilgan nuqsonlardir.
  • Masalan, 2.0.2 versiyasi asosiy versiya 2 ekanligini, kichik yangilanishlar bo'lmaganligini va nuqsonlar uchun ikkita yangilanish mavjudligini anglatadi.
Keyinchalik, groupId va artifactId ni qanday qilib to'g'ri o'rnatishni aniqlash muhim edi . Ular bir marta tanlanishi va undan keyin ishlatilishi kerak edi. Va ular kod saqlanadigan paketni tashkil qiladi. Oldin: ua.comparison.image Endi: com.github.romankh3.image.comparison Va bu aniq yaxshiroq, chunki bu GitHub loyihasi ekanligini hamma biladi va uni romankh3 laqabli odamdan topish mumkin. Bularning barchasini qilganimda, men v2.1.0 yangi versiyasini chiqardim .

Shvedlar bilan aloqa. 2019 yil may

Kutubxonani nashr etganimdan so'ng, boshqa bir shved (Mika Kytöläinen) menga elektron pochta orqali xabar yubordi va do'stidan kutubxonamga o'zgartirish kiritishni so'radi. Uning aytishicha, bu menga haqiqatan ham kerak va biz buni tezda bajarsak, u juda xursand bo'ladi. Albatta, men kerak bo'lgan o'zgarishlarga qarshi emasdim. U to'rtburchak chizilgan chiziq qalinligi konfiguratsiyasini qo'shishni taklif qildi. Ko'rish qobiliyati past bo'lganlar uchun bu foydali o'zgarish bo'ladi. Kod tayyorlandi . Yana bir nechta o'zgarishlarni qo'shib, v2.2.0 versiyasini chiqardim

Nemis bilan muloqot. 2019 yil may

Shundan so'ng, bir nemis uni sinovdan o'tkazish uchun foydalanmoqchi ekanligini, ammo uning funksionalligi yo'qligini aytadi . U juda qiziq bo'lgan ko'plab takliflar bilan chiqdi, u taqqoslash natijasida olingan natija bilan faqat olingan rasmni qaytarish o'rniga, ma'lumotlar to'plamini qaytarishni taklif qildi: taqqoslangan narsa, natija (agar kerak bo'lsa) va u erda bo'lgan holat. MATCH, MISMATCH, SIZE_MISMATCH bo'ladi. Hatto o'zgarishlarni ham qildi. Ammo ular avvalgi kodni umuman hisobga olmadilar va shoshilinch ravishda amalga oshirildi. Men ularni rad etdim va o'zim xohlagancha bajarishni taklif qildim. Shunga qaramay, u ko'proq javob berdi va men buni o'zim qilish va yangi versiyani chiqarishga qaror qildim. Shu bilan birga, Mika Kytöläinen yana bir qiziqarli funksiyani taklif qildi - taqqoslashga kiritilmaydigan joylarni qo'shish. Bu haqiqiy holat. Va bularning barchasi 3.0.0 versiyasida chiqarilgan

Haqiqiy loyihada foydalaning

May oyining oxirida, Kievlik avtomatlashtirish sinovchisi menga xat yozdi, u kutubxonaga qiziqib qoldi va undan pul olib keladigan haqiqiy loyihada foydalanishni xohlaydi. Bu yutuq edi! Uni uy hayvonlari loyihasida biron bir joyda ishlatish bir narsa, lekin uni haqiqiy loyihada ishlatish butunlay boshqa masala. Biz nima va qanday ishlashini muhokama qildik. Ilova juda qiziq: ularning arizasida ular bosilgan cheklar mavjud va cheklar ma'lum bir shablon bo'yicha yaratilganligini va u o'zgarmasligini tekshirish kerak edi. Ammo muammo bor edi, masalan, sana va vaqt kabi bo'limlar doimo o'zgarib turadi va ularga e'tibor bermaslik kerak edi. Biz allaqachon ba'zi hududlarni e'tiborsiz qoldirish uchun funksionallikni qo'shgan edik, lekin u hali ham haqiqiy foydalanish uchun juda xom bo'lib chiqdi va biz bu borada bir necha hafta davomida birga samarali ishladik. Natijada v3.1.1 versiyasi chiqdi

Joy topish

Shundan so'ng, men kutubxonam uchun haqiqiy joy undan testlarda foydalanishini angladim. Buning uchun men testerlar uchun qandaydir forum topib, fikr-mulohazalarni olish va shuhratni oshirish uchun ularga bu haqda yozishga qaror qildim. Men rus tilidagi forumni topdim va u erda maqola e'lon qildim: Tasvirlarni sinab ko'rishni tashkil qilish - ikkita o'xshashni taqqoslash . Unda men qo'llagan va chiqargan kod va funksionallik haqida haqiqiy fikr-mulohazalarni oldim v3.2.0 , keyin esa v.3.3.0 .

Hozir

Kutubxonada hozirda Github-da 60 ta yulduz bor va 33 ta vilkalar mavjud. O'ylaymanki, men buni avtomatchilar forumidagi maqoladan tashqari hech qanday tarzda targ'ib qilmaganligimni hisobga olsak, bu juda ajoyib. Oxirigacha o'qigan barchaga rahmat. Bu aslida men kutganimdan ancha uzunroq maqola bo'lib chiqdi. Maven Central-da kutubxonani qanday nashr qilish haqida maqola. Agar qo'shadigan narsangiz bo'lsa, yozing! Kutubxonani yaxshilash uchun biror narsa taklif qilsangiz, yozing! Men hamma narsani o'qiyman va bunga vaqt ajrataman. Maqolani yoqtirgan va uni foydali deb topgan har bir kishi - uni baholang va sharhlarda yozing. Shuningdek, mening github hisobimga obuna bo'ling romankh3 Boshqa maqolalarimni ham ko'ring:
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION