JavaRush /Java blogi /Random-UZ /GitHub Code Search: Ko'proq toping, kamroq qidiring - Git...

GitHub Code Search: Ko'proq toping, kamroq qidiring - GitHub qidiruv tizimini ishga tushirdi

Guruhda nashr etilgan
Hammaga salom, aziz do'stlar! GitHub-da yangi xususiyatlarni sevuvchi sifatida men yaqinda barchamiz GitHub kod bazasini tez va samarali qidirishimiz mumkinligini bilish juda qiziq edi. Bu juda qulay bo'lishi mumkin, ayniqsa siz asbobdan foydalanishning murakkab usulini topishingiz kerak bo'lsa. "GitHub Code Search: Ko'proq toping, kamroq qidiring" - GitHub qidiruv tizimini ishga tushirdi - 1Bu, ayniqsa, Rossiyada GitHub uchun bo'lajak raqobatchi ochilganligi bilan rezonans beradi. Shuning uchun, GitHub, shubhasiz, bozorda etakchi bo'lishiga qaramay, o'z yutuqlari bilan cheklanmasligi kerak. Biz oldinga siljishimiz va rivojlanishimiz kerak, aks holda bu bir soat ham emas va raqobatchilar quvib ketishadi. Va bu juda aql bovar qilmaydigan ko'rinmasin. Misol tariqasida: qancha odam hali ham Nokia telefonlaridan foydalanadi? Ular telefonlar yasaganini kim biladi? Bir vaqtlar ular shunchaki erishib bo'lmaydigan, shubhasiz bozor etakchilari edi ... Va endi ular statistik xatolik sohasida paydo bo'ladi.

Birinchi taassurot

GitHub siz o'z kodingizni va GitHub-da chop etilgan milliardlab kod qatorlarini qidirishingiz, navigatsiya qilishingiz va tahlil qilishingiz mumkin bo'lgan loyihani yaratdi. Shuni ta'kidlash kerakki, qidiruv keng ko'lamli, tez va aniq. U maxsus kod qidirish uchun noldan yaratilgan. Navigatsiya 10 ta asosiy dasturlash tillari uchun sozlamalarsiz ishlaydi (kelajakda roʻyxat oʻsadi deb umid qilamiz). Oddiy ifoda yordamida qidirishingiz mumkin, bu juda ajoyib. Boshqa filtrlar ham mavjud:
  • tashkilot bo'yicha;
  • dasturlash tillari bo'yicha;
  • aniq egasi tomonidan;
  • fayl kengaytmasi bo'yicha;
  • muntazam ifoda orqali.
Ro'yxat allaqachon ta'sirli! Ma'lum bo'lishicha, qidiruv tizimi bizga murakkab qidiruv so'rovlarini yaratish imkoniyatini beradi, bunda biz qidirish kerak bo'lgan chegaralarni aniq belgilashimiz mumkin. Dvigatelning ikkinchi muhim qismi - kod navigatsiyasi 😳 Rivojlanish muhitlari nima uchun qulay va nima uchun odamlar ular uchun pul to'laydilar? Chunki ular bizning hayotimizni osonlashtiradi, kod bo'ylab harakatlanishimizga yordam beradi, shunda kodni ishlab chiqish va o'qish tezligi oshadi. Va GitHub endi bizga ushbu ajoyib xususiyatni taklif qiladi. Bu aqlga sig'maydi. Ha, bilaman, hozirda GitHub-da navigatsiyaga o'xshash narsa allaqachon mavjud, ammo funksionallik hali ham juda qisqa va qo'pol. Ya'ni, ishlab chiqish muhitisiz, siz ma'lum usullar qo'llanilgan joyni, ular aniqlangan joyni qidirishingiz mumkin. Bu shunchaki ajoyib. GitHub siz meni xursand qilasiz. Sinflarda import qilish uchun navigatsiya ham mavjud. Bu GitHub-da ma'lum bir kutubxonani topish va o'rganishdagi ko'plab muammolarni hal qiladi. Endi bu jarayon ko'p marta tezlashdi. Va hammasi bepul. Shunchaki ajoyib. U talabga ega bo'ladimi? Ishonchim komilki, ha!

Keling, qidiruv haqida batafsilroq gaplashaylik

Bir qarash va o'zingizni izlashga harakat qilish juda qiziq: bu ular aytganidek qulaymi? Hozircha bu xususiyat hamma uchun ochiq emas va havola orqali o'zingizni kutish ro'yxatiga qo'shishingiz mumkin . Biz u erda barcha fikrlarni to'ldiramiz, savollar oddiy, men ularni bu erda tasvirlamayman. Natijada, biz kutish ro'yxatiga qo'shildik va davom etamiz. Natijada, javob quyidagicha bo'ladi: "GitHub Code Search: Ko'proq toping, kamroq qidiring" - GitHub qidiruv tizimini ishga tushirdi - 2siz shunchaki kutishingiz kerak. Meni qo'shishim bilan men sizga hamma narsani albatta ko'rsataman. Kechiktirmang, o'zingizni qo'shing, shunda keyinroq tushunib olasiz va undan zavqlanishingiz mumkin) Va, albatta, yangi vositani darhol sinab ko'ra olmasligingiz juda achinarli, shuning uchun keling, ularning hujjatlarini tahlil qilamiz va tavsiflaymiz ushbu vositani ishimiz uchun qanday ishlatishimiz haqida batafsilroq. Endi qidiruv haqida. Bu men yozayotgan kutubxonada mantiqiy bo'lgan sinflar va konstruktsiyalardan foydalanadi . Bu men uchun tushunarli va oson bo'ladi va umid qilamanki, siz uchun ham osonroq bo'ladi.

Asosiy qidiruv

ImageComparison eng oddiy qidiruv boʻlib, fayl nomlari va ularning tarkibidagi soʻrov bilan aniq qidiradi. Bu erda hamma narsa juda oddiy ko'rinadi. Agar biz sinf nomini, qaerda e'lon qilinganini va qayerda ishlatilishini aniq topmoqchi bo'lsak, bunday qidiruv bizga bu borada yordam beradi. Bo'shliqlar bilan ajratilgan bir nechta so'zlarni kiritganingizda, natijada ularning barchasini alohida qidirish bo'ladi: Rasmni taqqoslash , ya'ni u Tasvir va Taqqoslash uchun fayllar va kodlarni topadi . Agar siz bo'shliqlarni o'z ichiga olgan qatorni qidirishingiz kerak bo'lsa, unda siz shunchaki tirnoqlardan foydalanishingiz kerak. Masalan: “ImageComparison solishtirish = new ImageComparison()” va keyin qidiruv butun qatorga mos keladi. Qochish uchun biz har doimgidek “\” dan foydalanamiz. Hozirgacha hamma narsa intuitiv va ko'pincha shunday amalga oshiriladi. Bundan tashqari, biz ushbu asosiy qidiruvga filtr qo'shishimiz mumkin. Shuning uchun, keling, ularning har biri haqida gapiraylik. Bu biz yaratgan filtr uchun mantiqiy "AND" bo'ladi.

Repozitariy bo'yicha filtrlash

Bizning asosiy filtrimiz tayyor bo'lgach, biz qidiruvimizni va ma'lum bir ombor bo'yicha qidiruvimizni qisqartirishimiz mumkin, bu juda qulay. Sinf qaysi papkada joylashganligini qidirishingiz shart emas, shunchaki yozishingiz mumkin:
repo: romankh3/image-comparison ImageComparisonResult
Qayerda repo ko'rsatishimiz kerak :${user_name}/${repo_name} . Bundan tashqari, oddiygina OR qo‘shish orqali bir nechta omborlar bo‘ylab qidirishingiz mumkin:
repo:romankh3/image-qiyoslash YOKI repo:romankh3/usage-image-comparison ImageComparisonResult
GitHub-da ta'kidlanganidek, hozirda ular nomi muntazam ifoda sifatida ko'rsatilgan omborlarda qidirishni qo'llab-quvvatlamaydi ... Bu ular bunday xususiyatni qo'shishni rejalashtirganini anglatadi va bu loyiha e'lon qilingan joyda to'xtab qolmasligini anglatadi. funksionallikka ega va yanada rivojlanadi.

Tashkilot bo'yicha filtrlash

Tashkilot yoki foydalanuvchi bo'yicha qidirish xuddi ombor bo'yicha qidirish bilan bir xil tarzda amalga oshiriladi, faqat kalit so'z repo emas , balki org bo'ladi :
org: romankh3 Tasvir solishtirish
Va keyin qidiruv foydalanuvchi/tashkilotning barcha omborlari orqali o'tadi.

Dasturlash tillari bo'yicha filtrlash

Bundan tashqari, ma'lum bir dasturlash tilida fayllarni qidirishni belgilashingiz mumkin. Bu erda qurilish ombor va tashkilot bilan bir xil, faqat kalit so'z tildir :
til: java ImageComparison
Xuddi omborda bo'lgani kabi, u OR kalit so'zidan foydalangan holda bir vaqtning o'zida bir nechta tillarda qidirishni qo'llab-quvvatlaydi:
til:java YOKI til:ruby ImageComparison
GitHub tomonidan qo'llab-quvvatlanadigan tillarning to'liq ro'yxatini bu yerda topishingiz mumkin . Qiziq, BrainFuck bormi? 😂

Fayl yo'li bo'yicha filtrlash

Loyihadagi har bir fayl o'z yo'liga ega va siz filtr qo'shish orqali ham qidirishingiz mumkin. Masalan, ImageComparisonResult fayli bor , uning yo'li bor:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
Shunday qilib, yo'li src/main/java/com/github/romankh3/image bilan boshlanadigan barcha sinflarni topish uchun sizga kerak bo'ladi:
yo'l: src/main/java/com/github/romankh3/image
Test darslari qidiruv natijalarimizdan chetda qolishini istamagan hollarda foydali bo'lishi mumkin. Yoki aksincha, faqat testlar. Bu sizning qidiruvingizni yanada moslashuvchan qiladi. Fayl yo'li bo'yicha filtr muntazam ifoda yordamida belgilanishi mumkin. Masalan, biz topishimiz kerak
yoʻl:src/*/*.js

Mantiqiy operatsiyalar

Va, albatta, barcha filtrlarni qurishning kulminatsion nuqtasi bu masalani mantiqiy operatsiyalar yordamida birlashtirishdir. Buning uchun bizda VA, YOKI, VA YO'Q. Menimcha, bu biz uchun etarli bo'lishi kerak. Masalan, murakkab qidiruv so'rovini yarataylik: ma'lum bir foydalanuvchi/tashkilot uchun Java yoki Kotlin ishlab chiqarishidan kod:
repo: romankh3 VA (til: java YOKI til: kotlin) VA EMAS yo'li:*/test/*
Va bu, men sizga aytaman, shunchaki aql bovar qilmaydigan narsa. Qidiruv so'rovi shunchalik sodda, tez, qisqa va aniq yozilganki, so'rovni qidirish va o'qishda hech qanday muammo bo'lmaydi.

Kichkina dam olish

Bizning quvonchimiz hali sovib ketmagan bo‘lsa-da, 2018-yilga qaytib, bir narsani eslamoqchiman... Esingizda bo‘lsin, Microsoft GitHub’ni sotib olayotganini hamma bilgach, hamma loyiha ko‘miladi deb o‘ylagandi? Uning taqdiri ikkinchi Skypening yo'lidirmi? Qanday qilib hamma o'z loyihalarini GitLab-ga ko'chirishni boshladi? Ammo rostini aytsam, bu shov-shuv ortidan men nimadir yaratdim va azob chekdim. Lekin rostini aytsam, men loyihalarni ko'chirgan joyga boshqa bormaganman. Va negadir men xohlamayman. Nega? Bu borada ham fikrlar bor. Eslatib o'taman, GitHub Bill Geytsga sotilgandan so'ng, loyiha shaxsiy omborlarga bepul ega bo'lish imkoniyatini qo'shdi, GitHub Actions CI/CD jarayoni uchun chiqarildi va yana ko'p narsalar. Va endi kuchli qidiruv tizimi. Bu loyihani cho'ktirish istagiga o'xshamaydi. Bu ko'proq Microsoft foydadan soliq to'lashni istamagan va yil oxirigacha 9 milliard dollardan ko'proqqa muvaffaqiyatli xarid qilganga o'xshaydi 😁 Va shundan keyin ular ushbu loyihani ishlab chiqishga qaror qilishdi. To'g'ri, ochiq kodli dasturchi uchun bu ularning kodlarini saqlash uchun ajoyib joy. GitHub'dan chiqmasdan mahsulotingizni to'liq ishlab chiqishingiz mumkin.

Oxirida

Men maqolani bir zumda yozdim. Men so'zlar va his-tuyg'ular geyzer kabi oqayotganini juda yaxshi ko'raman. Bu texnologiyani oldinga siljitadigan narsa. Shunday qilib, biz barmog'imizni pulsda ushlab turamiz va vaziyatni qo'yib yubormaymiz. Ishonchim komilki, har birimiz undan foydalanishni o'rganishimiz kerak. GitHub-da ro'yxatdan o'tmaganlar uchun men buni qilishni tavsiya qilaman. Bunga arziydi. Har doimgidek, do'stlar, mening barcha ommaviy faoliyatimni birlashtirgan telegram kanalimga obuna bo'lishni unutmang . Men bu erda nashr etadigan maqolalarimga qo'shimcha ravishda, men u erda men rivojlanish va umuman IT olamidan meni qiziqtirgan mavzularga to'xtaladigan qisqaroq postlar yozaman. U yerda allaqachon 800 dan ortiq obunachilar bor! Va, albatta, mening GitHub hisobim , u erda maqolalar uchun barcha demo loyihalarni nashr etaman, kutubxonalarimni yangilayman va ochiq manbali tashkilotlarni rivojlantiraman. Hammasi shu, o'qiganingiz uchun rahmat, xayrlashmaylik 👌
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION