{"meta":{"title":"Поиск и понимание примера кода","intro":"Улучшайте навыки программирования, обучая пример кода на GitHub.","product":"Начало работы","breadcrumbs":[{"href":"/ru/get-started","title":"Начало работы"},{"href":"/ru/get-started/learning-to-code","title":"Узнайте, как кодировать"},{"href":"/ru/get-started/learning-to-code/finding-and-understanding-example-code","title":"Поиск примера кода"}],"documentType":"article"},"body":"# Поиск и понимание примера кода\n\nУлучшайте навыки программирования, обучая пример кода на GitHub.\n\n## Как узнать из кода на GitHub?\n\nОбучение проектов на GitHub — отличный способ **обучения новых методов и **поиска вдохновения** для собственных проектов**.\n\nОднако с миллионами общедоступных репозиториев на GitHub, поиск кода, применяемого к проекту, может быть подавляющим. Даже после поиска идеального репозитория может быть трудно перейти к базе кода, чтобы найти полезные примеры.\n\nВместо того чтобы понять весь проект, лучше выбрать одну функцию или функцию и узнать, как она работает. Мы можем использовать функции поиска Copilot Chat и GitHub, чтобы найти функцию и следовать за ней через базу кода. Это отличный способ узнать, как мы можем увидеть, как функция работает весь путь от серверной части к интерфейсу.\n\nВ этом руководстве вы узнаете, как это сделать **, выполнив пример сценария**: узнайте, как загружать и отображать данные из файлов на веб-сайте Jekyll. Затем вы можете применить советы и методы к другим проектам и языкам программирования.\n\n## Поиск примера проекта\n\nПервым шагом является поиск подходящего проекта для обучения.\n\n### Используйте Copilot Chat для идентификации репозитория\n\nСамый быстрый способ найти проект с кодом, который можно узнать, заключается в том, чтобы попросить [Copilot Chat](https://github.com/copilot) найти репозитории, соответствующие вашим критериям.\n\nОткройте [Copilot Chat](https://github.com/copilot) и запустите чат общего назначения. Затем спросите:\n\n> Можно ли найти некоторые популярные репозитории, использующие Jekyll для отображения данных из файлов в репозитории?\n\nCopilot вернет ссылки на соответствующие репозитории, и вы можете задать дополнительные вопросы о репозиториях.\n\nЧасто Copilot завершает ответ с ссылкой на GitHub с дополнительными результатами. Далее мы рассмотрим эти результаты.\n\n### Использование поиска для определения дополнительных параметров\n\nЕсли Copilot включили ссылку на результаты поиска, следуйте ссылке. Если нет, создайте собственный поисковый запрос, выполнив приведенные ниже действия.\n\n1. Перейдите к расширенному поиску[](https://github.com/search/advanced).\n2. В разделе \"Дополнительные параметры\" используйте раскрывающийся список \"Написанный на этом языке\" для выбора языка программирования. Для нашего сайта Jekyll мы будем выбирать HTML.\n3. При необходимости в разделе \"Параметры репозиториев\" рядом с параметром \"С этим множеством звезд\", введите `>150`. Это поможет вам найти популярные репозитории, которые, вероятно, хорошо поддерживаются.\n4. В верхней части страницы нажмите кнопку **\"Поиск**\".\n\n> \\[!TIP]\n> Мы можем дополнительно сузить результаты поиска, добавив разделы и текст в поисковый запрос. Например, `topic:jekyll \"blog\"` возвращать репозитории владелец классифицировался как связанный с Jekyll и словом \"блог\" в имени или описании репозитория. Список популярных тем см. в разделах [GitHub](https://github.com/topics).\n\n### Выбор проекта\n\nПосле просмотра результатов из Copilot и поиска мы решили использовать репозиторий [`github/choosealicense.com`](https://github.com/github/choosealicense.com) . Этот репозиторий содержит исходный код [Choose a License](https://choosealicense.com/) — сайта Jekyll, который делится информацией о open source лицензиях.\n\nНас особенно интересует страница [Licenses](https://choosealicense.com/licenses/), где представлены популярные лицензии open source из файлов данных. <!-- markdownlint-disable-line search-replace -->\n\n## Ориентирование на себя в проекте\n\nПрежде чем искать код для отображения файлов данных, давайте настроимся в репозитории в целом.\n\nТрудно узнать, где начать при первом посещении репозитория. Хотя каждый проект будет упорядочивать себя по отдельности, существуют распространенные методы документации, которые мы обычно можем полагаться на получение наших данных.\n\n### Файл README.md\n\nВсегда рекомендуется читать **файл README.md** , который является первой страницей репозитория и автоматически отображается под списком файлов. Различные средства обслуживания будут включать разные сведения, но часто можно найти сведения о проекте, как создать его на локальном компьютере и ссылки на документацию.\n\n[\n`github/choosealicense.com`\n](https://github.com/github/choosealicense.com) В репозитории README.md-файл объясняет, где живут файлы лицензий (`/_licenses`), атрибуты каждой лицензии и как получить веб-сайт, работающий на компьютере.\n\n### Использование Copilot Chat\n\nЕсли файл README.md не дает вам всех ответов, вы можете попросить Copilot помочь вам перейти к репозиторию и найти функциональные возможности.\n\nЧтобы открыть переменные данных.copilot. copilot\\_chat\\_short %} нажмите на значок **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-copilot\" aria-label=\"Copilot\" role=\"img\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"></path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"></path></svg>** рядом с строкой поиска и задайте свой вопрос. Например:\n\n> Что такое основная целевая страница для этого веб-сайта Jekyll?\n\nПри запросе Copilot вопросов о репозитории он может возвращать соответствующие файлы, объяснить часть, с помощью которых они играют в функциональных возможностях, и включить ссылки.\n\n### Вики-сайт репозитория\n\nДругой возможный источник информации — вики-сайт\\*\\* репозитория\\*\\*, раздел репозитория специально для размещения документации. Каждый репозиторий на GitHub оснащен возможностью использовать вики-сайт, но не каждый репозиторий использует его. Чтобы получить доступ к вики-сайту, щелкните вкладку **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-book\" aria-label=\"book\" role=\"img\"><path d=\"M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z\"></path></svg> Wiki** в репозитории.\n\n### Выпуски\n\nЕсли исходный код репозитория встраивается в исполняемый файл, некоторые ответственный за репозиторий будут использовать выпуски\\*\\* репозитория \\*\\*для публикации двоичных файлов. Вы можете скачать и запустить эти двоичные файлы, чтобы изучить, как работает приложение при изучении базы кода, не создавая проект самостоятельно.\n\nВыпуски репозитория можно найти на боковой панели справа от списка файлов и README.md.\n\n### Внутренняя документация\n\nВы также можете найти внутреннюю документацию в содержимом репозитория. Это может быть один файл Markdown или каталог, полный файлов Markdown. Распространенные имена для поиска: \"docs\", \"документация\", \"wiki\", \"resources\", \"help\" и \"manual\".\n\n## Навигация по исходному коду\n\nТеперь, когда мы понимаем общую структуру репозитория, пришло время использовать поиск GitHub для поиска конкретных функциональных возможностей, которые мы ищем.\n\nКогда вы находитесь в репозитории и щелкните поле поиска в верхней части страницы, GitHub автоматически добавит `repo` квалификатор поиска, чтобы результаты поиска были ограничены в репозитории, который вы просматриваете.\n\nЧтобы приступить к работе, нам нужно что-то найти. Это может быть строка текста, уникального для проверяемой функции, или мы могли бы просмотреть html-источник страницы и найти конкретный `class` или `id` атрибут.\n\nВ нашем примере мы найдем текст в верхней части [страницы](https://choosealicense.com/licenses/) лицензий, используя следующий запрос: [`repo:github/choosealicense \"If you’re looking for a reference table?\"`](https://github.com/search?q=repo%3Agithub%2Fchoosealicense.com+%22If+you%E2%80%99re+looking+for+a+reference+table%22\\&type=code) Возвращается один результат, файл с именем `licenses.html`.\n\nТеперь мы можем щелкнуть результат и углубиться!\n[\n`licenses.html`\n](https://github.com/github/choosealicense.com/blob/gh-pages/licenses.html) является источником страницы \"Лицензии\" мы искали. Мы видим строку, которую мы искали, и что каждая из лицензий включена в код ниже:\n\n```markdown\n{% include license-overview.html license-id=\"agpl-3.0\" %}\n```\n\n## Общие сведения о исходном коде\n\nТеперь, когда мы нашли конкретный код, который мы заинтересованы, мы можем перейти к его пониманию.\n\n### Запрос Copilot Chat о коде\n\nВы можете использовать Copilot для получения дополнительных сведений о файле или даже определенных строках кода. Copilot объединяет сведения о языке программирования с контекстом из репозитория, чтобы получить подробные ответы на ваши вопросы.\n\nДавайте попросите Copilot объяснить, что происходит в строке 11 с тегом `{% include %}` . Щелкните номер строки. Затем справа от строки нажмите <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-copilot\" aria-label=\"copilot icon\" role=\"img\"><path d=\"M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z\"></path><path d=\"M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z\"></path></svg>. В окне чата попросите:\n\n> Что происходит в этой строке?\n\nCopilot объяснит, что строка включает `license-overview.html` файл и передает их в `\"agpl-3.0\"` качестве отображаемого `license-id` .\n\n> \\[!TIP]\n> Если вы не понимаете ответ от Copilot Chat, вы всегда можете попросить его упростить или расширить в определенной части.\n\n### Чтение комментариев\n\nКомментарии — это доступные для чтения заметки, которые можно использовать для понимания кода и не выполняются. Обычно они разделены символами, такими как `//` или `/*`.\n\nЕсть несколько типов комментариев для поиска:\n\n* **Строка**: одно строковый комментарий, описывающие то, что делает определенная строка\n* **Блок**: много строковый комментарий, которые могут описать, что делает вся функция или файл.\n* **Файл**: блок-комментарий в самом начале файла, предоставляющий обзор этой конкретной части базы кода.\n\n### Поиск функций в ссылках на язык программирования\n\nКаждый язык программирования будет иметь ссылку в Интернете, объясняя каждый аспект языка.\n\nПри использовании поисковой системы для поиска языка программирования и функции необходимо найти ссылку на эталонную страницу этой функции.\n\nВ нашем примере поиск `jekyll include` в поисковой системе должен вернуть [документацию \"Включает\" в документации](https://jekyllrb.com/docs/includes/) Jekyll. Если ознакомиться с документацией Jekyll, мы видим, что сами лицензии являются коллекцией в каталоге[](https://jekyllrb.com/docs/collections/)`_licenses`.[](https://github.com/github/choosealicense.com/tree/gh-pages/_licenses)\n\n> \\[!TIP] Если вы не можете найти функцию в справочнике по языку программирования, скорее всего, эта функция определена в самой базе кода. Попросите [GitHub Copilot](https://github.com/copilot) найти его.\n\nЧтобы сводные сведения о том, что мы узнали: [`licenses.html`](https://github.com/github/choosealicense.com/blob/gh-pages/licenses.html) файл включает в себя [`/_includes/license-overview.html`](https://github.com/github/choosealicense.com/blob/gh-pages/_includes/license-overview.html) каждую лицензию. Файл [`/_includes/license-overview.html`](https://github.com/github/choosealicense.com/blob/gh-pages/_includes/license-overview.html) соответствует `license-id` предоставленной лицензии в [`/_licenses`](https://github.com/github/choosealicense.com/tree/gh-pages/_licenses) коллекции и отображает сведения.\n\n### Экспериментирование с небольшими изменениями\n\nЕсли вы можете локально запустить проект на компьютере, отличный способ узнать, чтобы внести небольшие изменения, чтобы увидеть, что происходит.\n\nВы можете начать с изменения текста, а затем перейти к внесению больших изменений, таких как экспериментирование с тем, как функции и файлы взаимодействуют друг с другом.\n\nПопробуйте найти [`license-overview.html`](https://github.com/github/choosealicense.com/blob/gh-pages/_includes/license-overview.html) файл в `_includes` каталоге, а затем внести изменения в способ отображения лицензии или экспериментировать с тем, как лицензия загружается из коллекции.\n\nВы можете изменить метаданные в начале одного из файлов лицензий, изменить атрибуты, отображаемые в `license-overview.html`, или даже попробовать добавить собственный атрибут. После внесения изменений его можно протестировать, выполнив README.md инструкции по просмотру в браузере.\n\n### Применение того, что мы узнали\n\nРепозиторий [`github/choosealicense.com`](https://github.com/github/choosealicense.com) является отличным примером большого проекта Jekyll и демонстрирует, сколько возможно с Jekyll и GitHub Pages. Можете ли вы применить то, что вы узнали из структуры репозитория, как он использует коллекции и как он включает данные лицензии для создания собственного проекта?\n\n## Следующие шаги\n\nТеперь, когда вы понимаете, как работает пример кода, может потребоваться повторно использовать его в собственном проекте. Повторное использование кода является мощной частью разработки программного обеспечения, но есть важные шаги, чтобы сделать это правильно и юридически. Полный учебник см. в разделе [Повторное использовать код других пользователей в проектах](/ru/get-started/learning-to-code/reusing-other-peoples-code-in-your-projects)."}