JavaRush /Java Blogu /Random-AZ /GitHub Kodu Axtarış: Daha çox tap, daha az axtar - GitHub...
Roman Beekeeper
Səviyyə

GitHub Kodu Axtarış: Daha çox tap, daha az axtar - GitHub axtarış sistemini işə saldı

Qrupda dərc edilmişdir
Hər kəsə salam, əziz dostlar! GitHub-da yeni funksiyaların həvəskarı kimi mən çox maraqlı idim ki, tezliklə hamımız GitHub kod bazasında tez və səmərəli axtarış apara biləcəyik. Bu, çox rahat ola bilər, xüsusən də alətdən istifadə etmək üçün mürəkkəb bir yol tapmaq lazımdırsa. “GitHub Kod Axtarışı: Daha çox tap, daha az axtar” - GitHub axtarış sistemini işə saldı - 1Bu, xüsusilə GitHub-a gələcək rəqibin Rusiyada açılması ilə rezonans doğurur. Buna görə də, GitHub, şübhəsiz ki, bazarda lider olmalarına baxmayaraq, mütləq uğurlarına arxalanmamalıdır. Biz irəliləməli və inkişaf etməliyik, əks halda bir saat belə yoxdur və rəqiblər yetişib uzaqlaşacaqlar. Və bu qədər inanılmaz görünməsin. Nümunə olaraq: neçə nəfər hələ də Nokia telefonlarından istifadə edir? Kim bilir ki, onlar telefon düzəldirdilər? Bir vaxtlar onlar sadəcə olaraq əlçatmaz, mübahisəsiz bazar liderləri idilər... İndi isə haradasa statistik səhvlər səltənətində peyda olurlar.

İlk təəssürat

GitHub kodunuzu və GitHub-da dərc edilmiş milyardlarla kod sətirlərini axtara, naviqasiya edə və təhlil edə biləcəyiniz bir layihə yaratdı. Qeyd etmək vacibdir ki, axtarış miqyaslı, sürətli və dəqiqdir. Xüsusilə kod axtarışı üçün sıfırdan yaradılmışdır. Naviqasiya parametrləri olmayan 10 əsas proqramlaşdırma dili üçün işləyir (biz siyahının gələcəkdə artacağına ümid edirik). Siz müntəzəm ifadədən istifadə edərək axtarış edə bilərsiniz, bu çox gözəldir. Digər filtrlər də mövcuddur:
  • təşkilat tərəfindən;
  • proqramlaşdırma dilləri üzrə;
  • xüsusi sahibi tərəfindən;
  • fayl uzantısı ilə;
  • müntəzəm ifadə ilə.
Siyahı artıq təsir edicidir! Məlum oldu ki, axtarış motoru bizə mürəkkəb axtarış sorğuları yaratmaq imkanı verir ki, burada axtarışın lazım olduğu sərhədləri dəqiq müəyyən edə bilərik. Mühərrikin ikinci mühüm hissəsi kod naviqasiyasıdır 😳 İnkişaf mühitləri nələr üçün əlverişlidir və insanlar niyə onlar üçün pul ödəyirlər? Çünki onlar həyatımızı asanlaşdırır, kodda naviqasiya etməyimizə kömək edir ki, kodun inkişaf və oxunma sürəti artır. Və GitHub indi bizə bu gözəl xüsusiyyəti təklif edir. Bu inanılmazdır. Bəli, bilirəm ki, hazırda GitHub-da naviqasiyaya bənzər bir şey var, lakin funksionallıq hələ də çox qısa və kobuddur. Yəni, inkişaf mühiti olmadan, müəyyən metodların harada istifadə edildiyini, harada müəyyən edildiyini axtara bilərsiniz. Bu sadəcə gözəldir. GitHub sən məni xoşbəxt edirsən. Siniflərdə idxal üçün naviqasiya da mövcuddur. Bu, GitHub-da müəyyən bir kitabxananın tapılması və öyrənilməsi ilə bağlı bir çox problemləri həll edir. İndi bu proses dəfələrlə sürətləndirilib. Və hamısı pulsuzdur. Sadəcə əla. Ona tələbat olacaqmı? Əminəm ki, bəli!

Axtarış haqqında daha ətraflı danışaq

Baxmaq və özünüzü axtarmağa çalışmaq çox maraqlıdır: bu, necə deyərlər, rahatdırmı? Hələlik bu funksiya ictimaiyyətə açıq deyil və siz keçiddən istifadə edərək özünüzü gözləmə siyahısına əlavə edə bilərsiniz . Bütün nöqtələri orada doldururuq, suallar sadədir, mən onları burada təsvir etməyəcəyəm. Nəticədə, biz gözləmə siyahısına əlavə olunur və davam edirik. Nəticədə cavab belə olacaq: “GitHub Code Search: Daha çox tap, daha az axtar” - GitHub axtarış sistemini işə saldı - 2Sadəcə gözləmək lazımdır. Məni əlavə edən kimi sizə hər şeyi mütləq göstərəcəyəm. Gecikməyin, özünüzü əlavə edin ki, daha sonra başa düşə və zövqünüzə görə istifadə edə biləsiniz) Və əlbəttə ki, yeni aləti dərhal sınaqdan keçirə bilməməyiniz utancvericidir, ona görə də onların sənədlərini təhlil edək və aşağıda təsvir edək. işimiz üçün bu alətdən necə istifadə edə biləcəyimizi daha ətraflı izah edin. İndi axtarış haqqında. O , yazdığım kitabxanada məna kəsb edən siniflərdən və konstruksiyalardan istifadə edəcək . Bu, mənim üçün daha aydın və asan olacaq və ümid edirəm ki, sizin üçün də asan olacaq.

Əsas axtarış

ImageComparison fayl adlarında və onların məzmununda tam olaraq sorğu ilə axtarış edən ən sadə axtarışdır. Burada hər şey çox sadə görünür. Sinif adı, harada elan edildiyi və harada istifadə edildiyini aydın tapmaq istəyiriksə, belə bir axtarış bizə bu işdə kömək edəcəkdir. Boşluqlarla ayrılmış çoxlu sözlər daxil etdiyiniz zaman nəticə onların hamısı üçün ayrı-ayrılıqda axtarış olacaq: Şəkil müqayisəsi , yəni o, həm Şəkil , həm də Müqayisə üçün faylları və kodu tapacaq . Boşluqları ehtiva edən sətir axtarmaq lazımdırsa, onda sadəcə dırnaq işarələrindən istifadə etməlisiniz. Məsələn: “ImageComparison comparison = new ImageComparison()” və sonra axtarış bütün sətirlə uyğunlaşacaq. Qaçmaq üçün həmişə olduğu kimi “\” istifadə edirik. İndiyə qədər hər şey intuitivdir və çox vaxt belə edilir. Bundan əlavə, biz bu əsas axtarışa filtrlər əlavə edə bilərik. Buna görə də onların hər biri haqqında danışaq. Bunlar artıq yaratdığımız filtr üçün məntiqi “AND” olacaq.

Repozitoriyaya görə süzün

Əsas filtrimiz hazır olduqdan sonra axtarışımızı və axtarışımızı xüsusi repozitoriyaya görə daralda bilərik ki, bu da çox rahatdır. Sinfin hansı qovluqda yerləşdiyini axtarmaq lazım deyil, sadəcə olaraq yaza bilərsiniz:
repo:romankh3/image-comparison ImageComparisonResult
Harada repo təyin etməliyik :${user_name}/${repo_name} . Siz həmçinin sadəcə OR əlavə etməklə bir neçə depoda axtarış edə bilərsiniz:
repo:romankh3/image-müqayisə və ya repo:romankh3/usage-image-comparison ImageComparisonResult
GitHub-da qeyd edildiyi kimi, hazırda onlar adın normal ifadə kimi göstərildiyi anbarlarda axtarışı dəstəkləmirlər... Bu o deməkdir ki, onlar belə bir xüsusiyyət əlavə etməyi planlaşdırırlar və bu o deməkdir ki, layihə elan edilən yerdə dayanmayacaq. funksionallıq və daha da inkişaf edəcək.

Təşkilata görə süzün

Təşkilat və ya istifadəçi tərəfindən axtarış, depoda axtarışla eyni şəkildə aparılır, yalnız açar söz repo deyil , org olacaq :
org:romankh3 Şəkil Müqayisə
Və sonra axtarış istifadəçinin/təşkilatın bütün depolarından keçəcək.

Proqramlaşdırma dillərinə görə süzün

Siz həmçinin müəyyən proqramlaşdırma dilində fayllar üçün axtarış təyin edə bilərsiniz. Burada tikinti anbar və təşkilatla eynidir, yalnız açar söz dildir :
dil:java ImageComparison
Repozitoriyada olduğu kimi, OR açar sözündən istifadə edərək eyni anda bir neçə dildə axtarışı dəstəkləyir:
dil:java VEYA dil:ruby ImageComparison
GitHub tərəfindən dəstəklənən dillərin tam siyahısını burada tapa bilərsiniz . Görəsən BrainFuck varmı? 😂

Fayl yolu ilə süzün

Layihədəki hər bir faylın öz yolu var və siz həmçinin filtr əlavə etməklə axtarış edə bilərsiniz. Məsələn, ImageComparisonResult faylı var , onun yolu var:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
Beləliklə, yolu src/main/java/com/github/romankh3/image ilə başlayan bütün sinifləri tapmaq üçün sizə lazımdır:
yol:src/main/java/com/github/romankh3/image
Test dərslərinin axtarış nəticələrimizdən kənarda qalmasını istəmədiyimiz hallarda faydalı ola bilər. Və ya əksinə, yalnız testlər. Bu, axtarışınızı daha çevik edir. Fayl yolu ilə filtr müntəzəm ifadədən istifadə etməklə təyin edilə bilər. Məsələn, tapmaq lazımdır
yol:src/*/*.js

Boolean əməliyyatları

Və təbii ki, bütün filtrlərin qurulmasının kulminasiyası bu məsələni Boolean əməliyyatlarından istifadə etməklə birləşdirməkdir. Bunun üçün bizdə VƏ, YA, VƏ DEYİL. Düşünürəm ki, bu bizə kifayət etməlidir. Məsələn, mürəkkəb bir axtarış sorğusu yaradaq: müəyyən bir istifadəçi/təşkilat üçün Java və ya Kotlin istehsalı kodu:
repo:romankh3 AND (dil:java VEYA dil:kotlin) VƏ DEYİL yol:*/test/*
Və bu, sizə deyirəm, sadəcə inanılmazdır. Axtarış sorğusu o qədər sadə, tez, yığcam və aydın şəkildə yazılıb ki, sorğunun axtarışında və oxunmasında heç bir problem olmayacaq.

Kiçik bir geri çəkilmə

Sevincimiz hələ soyumasa da, 2018-ci ilə qayıdıb bir şeyi xatırlamaq istərdim... Yadınızda saxlayın, hamı Microsoftun GitHub aldığını biləndə hamı layihənin basdırılacağını düşünürdü? Onun taleyi ikinci Skype-ın yoludur? Hər kəs layihələrini GitLab-a köçürməyə necə başladı? Ancaq düzünü desəm, bu şırınganın ardınca mən nəsə yaratdım və əziyyət çəkdim. Amma düzünü desəm, layihələri köçürdüyüm yerə bir daha getməmişəm. Və nədənsə istəmirəm. Bəs niyə? Bununla bağlı fikirlər də var. Nəzərinizə çatdırım ki, GitHub-u Bill Gates-ə satdıqdan sonra layihəyə pulsuz olaraq şəxsi depolara sahib olmaq imkanı əlavə edildi, GitHub Actions CI/CD prosesi üçün buraxıldı və daha çox. İndi də güclü axtarış motoru. Bu, layihəni batırmaq istəyi kimi səslənmir. Bu daha çox Microsoft-un mənfəətdən vergi ödəmək istəmədiyi və ilin sonuna qədər 9 milyard dollardan çox uğurlu alış-veriş etdiyi kimidir 😁 Bütün bunlardan sonra bu layihəni inkişaf etdirməyə qərar verdilər. Düzdür, açıq mənbəli tərtibatçı üçün bu, onların kodlarını saxlamaq üçün əla yerdir. GitHub-dan çıxmadan məhsulunuzu tam inkişaf etdirə bilərsiniz.

Sonda

Məqaləni bir anda yazdım. Sözlər və duyğuların geyzer kimi axması çox xoşuma gəlir. Texnologiyanı irəli aparan da budur. Beləliklə, barmağımızı nəbzdə saxlayırıq və vəziyyəti buraxmırıq. Əminəm ki, hər birimiz ondan istifadə etməyi öyrənməliyik. GitHub-da qeydiyyatdan keçməmiş hər kəs üçün bunu etməyi çox tövsiyə edirəm. Buna dəyər. Həmişə olduğu kimi, dostlar, bütün ictimai fəaliyyətlərimi birləşdirdiyim telegram kanalıma abunə olmağı unutmayın . Burada dərc etdiyim məqalələrə əlavə olaraq, inkişaf dünyasından və ümumiyyətlə İT sahəsindən məni maraqlandıran mövzulara toxunduğum daha qısa yazılar yazıram. Artıq orada 800-dən çox abunəçi var! Və əlbəttə ki, məqalələr üçün bütün demo layihələri dərc etdiyim, kitabxanalarımı yenilədiyim və açıq mənbəli təşkilatları inkişaf etdirdiyim GitHub hesabım . Budur, oxuduğunuz üçün hamınıza təşəkkür edirəm, sağollaşmayaq 👌
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION