JavaRush /وبلاگ جاوا /Random-FA /جستجوی کد GitHub: بیشتر بیابید، کمتر جستجو کنید - GitHub ...
Roman Beekeeper
مرحله

جستجوی کد GitHub: بیشتر بیابید، کمتر جستجو کنید - GitHub یک موتور جستجو راه اندازی کرد

در گروه منتشر شد
سلام به همه دوستان عزیز! به عنوان یک عاشق ویژگی های جدید در GitHub، بسیار علاقه مند بودم بدانم که به زودی همه ما قادر خواهیم بود به سرعت و کارآمد پایه کد GitHub را جستجو کنیم. این می تواند بسیار راحت باشد، به خصوص اگر شما نیاز به پیدا کردن یک راه پیچیده برای استفاده از یک ابزار دارید. "جستجوی کد GitHub: بیشتر بیابید، کمتر جستجو کنید" - GitHub یک موتور جستجو راه اندازی کرد - 1این به ویژه با این واقعیت که یک رقیب آینده برای GitHub در روسیه افتتاح شد، طنین انداز می شود. بنابراین، GitHub با وجود اینکه بدون شک در بازار پیشتاز است، قطعاً نباید روی کارها استراحت کند. ما باید به جلو برویم و توسعه پیدا کنیم، در غیر این صورت حتی یک ساعت هم نیست و رقبا عقب می افتند و از بین می روند. و اجازه دهید آنقدر باورنکردنی به نظر نرسد. به عنوان مثال: چند نفر هنوز از تلفن های نوکیا استفاده می کنند؟ چه کسی حتی می داند که آنها گوشی ساخته اند؟ زمانی آنها به سادگی رهبران بازار غیرقابل انکار و دست نیافتنی بودند... و اکنون جایی در قلمرو خطاهای آماری ظاهر می شوند.

اولین برداشت

GitHub پروژه ای ایجاد کرده است که در آن می توانید کد خود و میلیاردها خط کد منتشر شده در GitHub را جستجو، پیمایش و تجزیه و تحلیل کنید. توجه به این نکته ضروری است که جستجو مقیاس پذیر، سریع و دقیق است. از ابتدا به طور خاص برای جستجوی کد ایجاد شده است. ناوبری برای 10 زبان برنامه نویسی اصلی بدون تنظیمات کار می کند (ما امیدواریم که لیست در آینده افزایش یابد). شما می توانید با استفاده از یک عبارت منظم جستجو کنید که بسیار جالب است. فیلترهای دیگر نیز موجود است:
  • توسط سازمان؛
  • در مورد زبان های برنامه نویسی؛
  • توسط مالک خاص؛
  • با پسوند فایل؛
  • با بیان منظم
لیست در حال حاضر چشمگیر است! به نظر می رسد که موتور جستجو به ما فرصت ایجاد پرس و جوهای جستجوی پیچیده را می دهد که در آن می توانیم مرزهایی را که در امتداد آنها جستجو مورد نیاز است را به وضوح مشخص کنیم. دومین بخش مهم موتور ناوبری کد است 😳 محیط های توسعه برای چه چیزی مناسب هستند و چرا مردم برای آنها پول می پردازند؟ از آنجایی که آنها زندگی ما را آسان می کنند، به ما کمک می کنند تا در کد حرکت کنیم تا سرعت توسعه و خواندن کد افزایش یابد. و GitHub اکنون این ویژگی جالب را به ما ارائه می دهد. این باور نکردنی است. بله، می دانم که در حال حاضر چیزی شبیه به ناوبری در GitHub وجود دارد، اما عملکرد هنوز بسیار کوتاه و خام است. یعنی بدون محیط توسعه، می‌توانید مکان‌هایی را جستجو کنید که از روش‌های خاصی استفاده می‌شود، کجا تعریف شده‌اند. این فقط فوق العاده است. GitHub شما مرا خوشحال می کنید. ناوبری برای واردات در کلاس ها نیز موجود است. این امر بسیاری از مشکلات را در یافتن و مطالعه یک کتابخانه خاص در GitHub حل می کند. اکنون این روند چندین برابر تسریع شده است. و این همه رایگان است. فقط عالی آیا او مورد تقاضا خواهد بود؟ مطمئنم بله!

بیایید با جزئیات بیشتری در مورد جستجو صحبت کنیم

بسیار جالب است که نگاهی بیندازید و سعی کنید خودتان را جستجو کنید: آیا به همان اندازه که می گویند راحت است؟ در حال حاضر، این ویژگی به صورت عمومی در دسترس نیست و می توانید با استفاده از پیوند خود را به لیست انتظار اضافه کنید . ما تمام نکات را در آنجا پر می کنیم، سوالات ساده هستند، من آنها را در اینجا شرح نمی دهم. در نتیجه به لیست انتظار اضافه می شویم و ادامه می دهیم. در نتیجه، پاسخ این خواهد بود: "جستجوی کد GitHub: بیشتر بیابید، کمتر جستجو کنید" - GitHub یک موتور جستجو راه اندازی کرد - 2فقط باید صبر کنید. به محض اینکه اضافه شدم، حتما همه چیز را به شما نشان خواهم داد. معطل نکنید، خودتان را اضافه کنید تا بتوانید بعداً آن را بفهمید و از آن برای خوشحالی خود استفاده کنید) و البته شرم آور است که نمی توانید ابزار جدید را فوراً امتحان کنید، بنابراین بیایید مستندات آنها را تجزیه و تحلیل کنیم و شرح دهیم جزئیات بیشتر چگونه می توانیم از این ابزار برای کار خود استفاده کنیم. حالا در مورد جستجو از کلاس‌ها و ساختارهایی استفاده می‌کند که در کتابخانه‌ای که من می‌نویسم منطقی هستند. این کار را برای من واضح تر و آسان تر می کند و امیدوارم برای شما هم راحت تر باشد.

جستجوی اساسی

ImageComparison ساده ترین جستجویی است که دقیقاً با پرس و جو در نام فایل ها و محتوای آنها جستجو می کند. همه چیز در اینجا بسیار ساده به نظر می رسد. اگر بخواهیم به وضوح با نام کلاس، جایی که اعلام شده و در کجا استفاده می شود، پیدا کنیم، چنین جستجویی به ما در این امر کمک می کند. وقتی چندین کلمه را وارد می‌کنید که با فاصله از هم جدا شده‌اند، نتیجه جستجوی همه آنها به طور جداگانه خواهد بود: مقایسه تصویر ، به این معنی که فایل‌ها و کدهای تصویر و مقایسه را پیدا می‌کند . اگر نیاز به جستجوی رشته ای حاوی فاصله دارید، فقط باید از نقل قول استفاده کنید. به عنوان مثال: "ImageComparison krahasim = new ImageComparison()" و سپس جستجو با کل رشته مطابقت خواهد داشت. برای فرار، مثل همیشه از "\" استفاده می کنیم. تا اینجای کار، همه چیز شهودی است و اغلب به همین صورت انجام می شود. علاوه بر این، می‌توانیم فیلترهایی را به این جستجوی اولیه اضافه کنیم. بنابراین، اجازه دهید در مورد هر یک از آنها صحبت کنیم. اینها برای فیلتری که قبلاً ایجاد کرده‌ایم «AND» منطقی خواهند بود.

فیلتر بر اساس مخزن

هنگامی که فیلتر اصلی ما آماده شد، می‌توانیم جستجو و جستجوی خود را با یک مخزن خاص محدود کنیم، که بسیار راحت است. نیازی نیست به دنبال این باشید که کلاس در کدام پوشه قرار دارد، فقط می توانید بنویسید:
repo:romankh3/image-comparison ImageComparisonResult
جایی که باید repo را مشخص کنیم:${user_name}/${repo_name} . شما همچنین می توانید با افزودن یک OR در چندین مخزن جستجو کنید:
repo:romankh3/image-comparison OR repo:romankh3/usage-image comparison ImageComparisonResult
همانطور که در GitHub گفته شد، آنها در حال حاضر از جستجو در مخازنی که نام آن به عنوان یک عبارت معمولی مشخص شده است پشتیبانی نمی کنند ... این بدان معنی است که آنها قصد دارند چنین ویژگی را اضافه کنند و به این معنی است که پروژه در حالت اعلام شده متوقف نمی شود. عملکرد و بیشتر توسعه خواهد یافت.

فیلتر بر اساس سازمان

جستجو بر اساس سازمان یا کاربر دقیقاً به همان روش جستجو توسط مخزن انجام می شود، فقط کلمه کلیدی repo نیست ، بلکه org خواهد بود :
org:romankh3 مقایسه تصویر
و سپس جستجو از طریق تمام مخازن کاربر/سازمان انجام می شود.

فیلتر بر اساس زبان های برنامه نویسی

همچنین می توانید جستجوی فایل ها را در یک زبان برنامه نویسی خاص مشخص کنید. در اینجا ساختار مانند مخزن و سازمان است، فقط کلمه کلیدی زبان است :
زبان:جاوا مقایسه تصویر
درست مانند مخزن، از جستجو در چندین زبان به طور همزمان با استفاده از کلمه کلیدی OR پشتیبانی می کند:
language:java OR language:ruby ImageComparison
لیست کاملی از زبان های پشتیبانی شده توسط GitHub را می توانید در اینجا بیابید . من تعجب می کنم که آیا BrainFuck وجود دارد؟ 😂

فیلتر بر اساس مسیر فایل

هر فایل در پروژه مسیر خاص خود را دارد و همچنین می توانید با افزودن فیلتر در آن جستجو کنید. به عنوان مثال، یک فایل ImageComparisonResult وجود دارد که مسیر زیر را دارد:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
بنابراین، برای پیدا کردن تمام کلاس‌هایی که مسیرشان با src/main/java/com/github/romankh3/image شروع می‌شود ، نیاز دارید:
مسیر:src/main/java/com/github/romankh3/image
می تواند در مواردی مفید باشد که نمی خواهیم کلاس های آزمایشی از نتایج جستجوی ما حذف شوند. یا برعکس فقط تست. این باعث می شود جستجوی شما انعطاف پذیرتر شود. یک فیلتر بر اساس مسیر فایل را می توان با استفاده از یک عبارت منظم مشخص کرد. مثلاً باید پیدا کنیم
path:src/*/*.js

عملیات بولی

و البته، نقطه اوج ساختن تمام فیلترها، ترکیب این ماده با هم با استفاده از عملیات بولی است. برای این ما AND، OR، AND NOT داریم. فکر می کنم این باید برای ما کافی باشد. به عنوان مثال، بیایید یک عبارت جستجوی پیچیده ایجاد کنیم: کد از جاوا یا تولید Kotlin برای یک کاربر/سازمان خاص:
repo:romankh3 AND (زبان:java یا زبان:kotlin) AND NOT مسیر:*/test/*
و این، به شما می گویم، به سادگی باورنکردنی است. درخواست جستجو به قدری ساده، سریع، مختصر و واضح نوشته شده است که در جستجو و خواندن درخواست مشکلی پیش نخواهد آمد.

یک عقب نشینی کوچک

در حالی که لذت ما هنوز خنک نشده است، من می خواهم به سال 2018 برگردم و چیزی را به یاد بیاورم... یادتان هست، وقتی همه فهمیدند که مایکروسافت در حال خرید GitHub است، همه فکر می کردند که این پروژه به خاک سپرده می شود؟ که سرنوشت او مسیر اسکایپ دوم است؟ چگونه همه شروع به انتقال پروژه های خود به GitLab کردند؟ اما بیایید صادق باشیم، در پی این هیاهو من چیزی ایجاد کردم و متحمل شدم. اما راستش را بخواهید، من هرگز از جایی که پروژه ها را جابجا کردم، بازدید نکردم. و به نوعی من نمی خواهم. و چرا؟ در این مورد نیز افکاری وجود دارد. اجازه دهید یادآوری کنم که پس از فروش GitHub به بیل گیتس، این پروژه قابلیت داشتن مخازن خصوصی به صورت رایگان را اضافه کرد، GitHub Actions برای فرآیند CI/CD منتشر شد و موارد دیگر. و اکنون نیز یک موتور جستجوی قدرتمند است. این به نظر میل به غرق کردن پروژه نیست. بیشتر شبیه این است که مایکروسافت نخواسته مالیات بر سود بپردازد و تا پایان سال یک خرید موفق به مبلغ بیش از 9 میلیارد دلار انجام دهد 😁 و بعد از همه اینها تصمیم گرفتند این پروژه را توسعه دهند. و این درست است که برای یک توسعه‌دهنده منبع باز این مکان عالی برای ذخیره کد آنهاست. شما می توانید بدون ترک GitHub محصول خود را به طور کامل توسعه دهید.

در پایان

من مقاله را یکجا نوشتم. من واقعاً دوست دارم کلمات و احساسات مانند یک آبفشان جاری شوند. این چیزی است که تکنولوژی را به جلو می برد. بنابراین ما انگشت خود را روی نبض نگه می داریم و شرایط را رها نمی کنیم. من مطمئن هستم که هر یک از ما باید استفاده از آن را یاد بگیریم. برای کسانی که در GitHub ثبت نام نکرده اند، به شدت توصیه می کنم این کار را انجام دهند. ارزشش را دارد. مثل همیشه دوستان فراموش نکنید که در کانال تلگرام من عضو شوید که در آن تمام فعالیت های عمومی خود را با هم ترکیب می کنم. علاوه بر مقاله‌هایی که در اینجا منتشر می‌کنم، پست‌های کوتاه‌تری در آنجا می‌نویسم که در آن موضوعاتی را که از دنیای توسعه و به طور کلی IT مورد علاقه من هستند، لمس می‌کنم. در حال حاضر بیش از 800 مشترک در آنجا وجود دارد! و البته، حساب GitHub من ، جایی که من تمام پروژه های آزمایشی را برای مقالات منتشر می کنم، کتابخانه های خود را به روز می کنم و سازمان های منبع باز را توسعه می دهم. فقط همین، ممنون از همه شما که خواندید، خداحافظی نکنیم 👌
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION