diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index 41d3ff532..da50dd102 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -18,6 +18,10 @@ export const locales = { label: 'Português', lang: 'pt', }, + ru: { + label: 'Русский', + lang: 'ru', + }, }; // https://astro.build/config @@ -44,6 +48,7 @@ export default defineConfig({ es: 'Guías', fr: 'Guides', pt: 'Guias', + ru: 'Руководство', }, }, { @@ -53,6 +58,7 @@ export default defineConfig({ es: 'Desafíos', fr: 'Challenges', pt: 'Desafios', + ru: 'Задачи', }, }, ], diff --git a/docs/src/content/docs/ru/guides/checkout-answer.md b/docs/src/content/docs/ru/guides/checkout-answer.md new file mode 100644 index 000000000..57b54d49c --- /dev/null +++ b/docs/src/content/docs/ru/guides/checkout-answer.md @@ -0,0 +1,48 @@ +--- +title: Изучайте чужие решения +description: Руководство по просмотру чужого ответа. +sidebar: + order: 3 +--- + +Все ответы на испытания Angular представлены в виде Pull Request (PR). Чтобы их просмотреть и изучить, нужно перейти на страницу **Files Changes** на GitHub. Однако, если вы не знакомы с интерфейсом, процесс может быть не очевидным. Иногда посмотреть на решение в вашей любимой IDE может быть удобнее. + +Это руководство поможет вам с этим. + +## Проверьте чужой PR локально + +### Синхронизируйте свой репозиторий + +В начале вам нужно синхронизировать вашу копию репозитория, чтобы убедиться, что она находится в актуальном состоянии. + +Это можно сделать, нажав на кнопку **Sync fork** на главной странице репозитория. + +![Sync project header](../../../../assets/fork-sync.png) + +На изображении выше видно, что моя ветка отстает от основной ветки на 8 коммитов, и мне нужно синхронизировать ее, чтобы она была в актуальном состоянии. + +![Sync project update modal](../../../../assets/sync-fork-update.png) + +### Перейдите к PR + +Перейдите к PR, который вы хотите изучить локально, и узнайте его ID. Вы найдете его в заголовке PR (как показано ниже). + +![PR header](../../../../assets/PR-header.png) + +Далее откройте терминал в каталоге проекта и выполните следующую команду: + +```bash +gh pr checkout +``` + +Если вы не помните команду, нажмите на кнопку "Code" в правой части заголовка, и вы сможете легко скопировать/вставить команду. + +![PR code modal](../../../../assets/PR-code-btn-modal.png) + +:::note[Примечание] +Если команда не сработала, Github CLI подскажет, что делать. +::: + +🔥Теперь вы можете изучить решение локально и запустить его для тестирования.🔥 + + diff --git a/docs/src/content/docs/ru/guides/contribute.md b/docs/src/content/docs/ru/guides/contribute.md new file mode 100644 index 000000000..ed83760a4 --- /dev/null +++ b/docs/src/content/docs/ru/guides/contribute.md @@ -0,0 +1,20 @@ +--- +title: Вносите свой вклад +description: Описание как помочь проекту +sidebar: + order: 4 +--- + +Вы можете помочь проекту многими способами: + +🔥 Создавайте новые испытания, следуя инструкциям [тут](/guides/create-challenge). + +🔥 Проходите испытания и отправляйте свои решения на ревью (руководство [тут](/guides/resolve-challenge)). + +🔥 Проводите ревью чужих решений, оставляя конструктивные и вежливые комментарии. + +🔥 Исправляйте опечатки и ошибки в документации. + +🔥 Оставляйте issues, чтобы предложить идеи новых испытаний или сообщить об ошибках. + +🔥 Поддерживайте проект [тут](https://github.com/sponsors/tomalaforge). diff --git a/docs/src/content/docs/ru/guides/create-challenge.md b/docs/src/content/docs/ru/guides/create-challenge.md new file mode 100644 index 000000000..7f09f370d --- /dev/null +++ b/docs/src/content/docs/ru/guides/create-challenge.md @@ -0,0 +1,54 @@ +--- +title: Создайте свое испытание +description: Руководство по созданию испытания +sidebar: + order: 5 +--- + +У вас есть идея, которой вы хотите поделиться, интересная ошибка, с которой вы боретесь в одном из своих проектов, или что-то необычное в Angular, что вы обнаружили. Всё это - хорошая отправная точка, чтобы создать испытание и поделиться её решением с другими. + +Но как начать создавать испытания? + +## Шаблон создания испытания + +Чтобы упростить этот процесс, я создал генератор Nx, который настроит все за вас и поможет вам быстрее начать. Проще всего его запустить в консоли Nx: перейдите в раздел Nx Console > generate > @angular-challenges/cli - challenge + +### Параметры + +#### обязательные параметры + +- title: Название, которое вы хотите дать испытанию. + :::note[Примечание] + Название должно быть не больше 25 символов. + ::: + +- challengeDifficulty: Сложность испытания. Есть три уровня сложности : 🟢 простой / 🟠 средний / 🔴 трудный +- name: Имя NX приложения. + :::note[Примечание] + Имя должно быть написано **kebab-case** + ::: +- docRepository: Категория испытания: Nx, Angular, Angular Performance, Rxjs, NgRx, Typescript. + +#### необязательные параметры + +- directory: Если вы не хотите, чтобы приложение находилось в стандартной папке внутри `apps`. +- addTest: Если хотите добавить конфигурацию теста. + +### Что будет создано + +- Генератор создаст все файлы, необходимые для нового рабочего приложения. Все эти файлы будут созданы внутри `apps/${directory}/${name}` +- Файл Markdown с минимальными настройками будет создан внутри `docs/src/content/docs/challenges/${docRepository}` + +## Создание испытания + +Все что осталось - создать испытание. 🚀 + +:::danger[Опасно] +Не забудьте обновить документацию, чтобы описать свою задачу и дать инструкции. +::: + +Дальше действовать будете вы!!! 💪 + +## Отправка решения + +Не забудьте представить своё решение задачи в течение недели. diff --git a/docs/src/content/docs/ru/guides/faq.md b/docs/src/content/docs/ru/guides/faq.md new file mode 100644 index 000000000..f3fe0c6a5 --- /dev/null +++ b/docs/src/content/docs/ru/guides/faq.md @@ -0,0 +1,17 @@ +--- +title: Часто задаваемые вопросы +description: Ответы на вопросы +sidebar: + order: 7 +--- + +
+ Почему мое приложение не запускается, или почему я вижу ошибки в терминале при запуске `nx serve`? + +Чаще всего эта проблема возникает из-за того, что node_modules устарели, и вам нужно обновить их, выполнив команду `npm ci`. + +Если установка завершилась неудачно, вы можете попробовать решить эту проблему, удалив папку node_modules с помощью команды `rm -rf node_modules` или `npx npkill` а затем снова выполнить `npm ci`. + +Если проблема сохранится, пожалуйста, сообщите о ней [тут](https://github.com/tomalaforge/angular-challenges/issues/new). + +
diff --git a/docs/src/content/docs/ru/guides/getting-started.md b/docs/src/content/docs/ru/guides/getting-started.md new file mode 100644 index 000000000..163b468ab --- /dev/null +++ b/docs/src/content/docs/ru/guides/getting-started.md @@ -0,0 +1,58 @@ +--- +title: Первые шаги +description: Руководство о том, как начать работу с испытаниями Angular. +sidebar: + order: 1 +--- + +Чтобы начать работу с испытаниями Angular, выполните следующие шаги: + +## Создайте аккаунт на Github + +Если вы захотите отправить свое решение для испытания, вам потребуется аккаунт на GitHub. Кроме того, иметь учетную запись на GitHub всегда полезно, тем более это бесплатно. + +## Скопируйте github проект + +Перейдите в [Angular Challenges Repository](https://github.com/tomalaforge/angular-challenges) и нажмите на кнопку Fork в вверху страницы. Это создаст копию репозитория на вашей GitHub странице. + +## Клонируйте репозиторий на свой компьютер + +Выберите папку на своем компьютере и клонируйте репозиторий. + +Откройте терминал, перейдите в выбранный каталог и наберите команду: + +```bash +git clone https://github.com/[YOUR_GITHUB_NAME]/angular-challenges.git +``` + +:::note + +Вы можете найти URL адрес клонированного репозитория, нажав на кнопку <> Code в вашем собственном экземпляре репозитория Angular Challenges. + +![Header of github workpspace](../../../../assets/header-github.png) + +::: + +## Откройте проект в вашей любимой среде разработки + +Откройте проект в любой IDE на ваш выбор. + +## Установите все зависимости + +```bash +npm ci +``` + +## Выберите задачу + +Ваш проект сейчас поднят и запущен. Осталось только выбрать испытание 🚀 + +Каждое испытание состоит из: + +- Имя: описывает о чем испытание. +- Номер: порядковый номер создания. Этот номер не несет какого-то смысла, но служит для ссылки в секции Github Pull Request. +- Бейдж: показывает уровень сложности. Полностью субъективно 😅 + - 🟢 простое + - 🟠 среднее + - 🔴 сложное diff --git a/docs/src/content/docs/ru/guides/rebase.md b/docs/src/content/docs/ru/guides/rebase.md new file mode 100644 index 000000000..7ca098f2f --- /dev/null +++ b/docs/src/content/docs/ru/guides/rebase.md @@ -0,0 +1,55 @@ +--- +title: Сделайте rebase вашей ветки +description: Руководство по rebase ветки на последние изменения +sidebar: + order: 6 +--- + +Иногда в проект могут вноситься изменения. Я стараюсь вносить изменения, которые ничего не сломают, но иногда этого не избежать. + +В большинстве случаев вам не придется делать rebase вашего решения, но вот руководство, которое поможет вам понять, как это сделать. + +:::note[Примечание] +Это руководство применимо к любому проекту с открытым исходным кодом. +::: + +## Шаги rebase + +### Синхронизируйте ваш репозиторий + +Во-первых, вам нужно синхронизировать вашу копию, чтобы убедиться, что она содержит последние изменения. + +Вы можете сделать это, нажав на кнопку Sync fork на главной странице вашего репозитория. + +![Sync project header](../../../../assets/fork-sync.png) + +На изображении выше видно, что моя ветка отстает от основной ветки на 8 коммитов, и мне нужно синхронизировать ее, чтобы она была в актуальном состоянии. + +![Sync project update modal](../../../../assets/sync-fork-update.png) + +### Откройте терминал + +Откройте любой терминал, будь то терминал в любимой IDE или отдельное приложение. + +### Гит + +Выполните следующие команды, чтобы сделать rebase локальной ветки: + +- git checkout main +- git pull +- git checkout [your branch] +- git rebase main +- Разрешите конфликты + +На этом этапе rebase может остановиться, потому что в вашей локальной ветке есть конфликтующие файлы с основной веткой. Исправьте это. После того как закончите: + +- git add . +- git rebase --continue + +Если в вашей ветке нет конфликтов, будет показано сообщение об успехе. + +### Отправьте свою работу в удаленный репозиторий + +Наконец, отправьте свою работу на GitHub: + +- git push -f diff --git a/docs/src/content/docs/ru/guides/resolve-challenge.md b/docs/src/content/docs/ru/guides/resolve-challenge.md new file mode 100644 index 000000000..4a26d9dca --- /dev/null +++ b/docs/src/content/docs/ru/guides/resolve-challenge.md @@ -0,0 +1,93 @@ +--- +title: Пройдите испытание +description: Инструкция по прохождению испытания +sidebar: + order: 2 +--- + +В этом руководстве вы узнаете, как пройти испытание и отправить свое решение. + +## Вступление + +Этот репозиторий работает под управлением [Nx](https://nx.dev/getting-started/intro). Nx - это монорепозиторий, который позволяет вам хранить несколько приложений в одном рабочем пространстве. +Каждое испытание - это отдельное приложение. Если вы откроете каталог `apps`, то обнаружите несколько директорий, каждая из которых относится к определенной задаче. Каждый каталог представляет собой полноценное приложение `Nx`. Чтобы запустить и начать работу с одним из них, откройте терминал и выполните команду: + +```bash +npx nx serve <ИМЯ_ПРИЛОЖЕНИЯ> +``` + +:::note[Примечание] +Если вы не уверены в названии испытания `ИМЯ_ПРИЛОЖЕНИЯ`, откройте файл README.md. Там написана команда `serve` со ссылкой на документацию по испытанию. +::: + +:::note[Примечание] +Если `nx` установлен глобально на вашем компьютере, вы можете опустить команду `npx`. +Чтобы установить `nx` глобально, выполните + +```bash +npm i -g nx +``` + +::: + +## Создайте Git Ветку + +Прежде чем приступить к реализации вашего решения испытания, создайте ветку git для фиксации своей работы. + +```bash +git checkout -b +``` + +## Пройдите испытание + +Изучите инструкции, чтобы пройти испытание. + +## Сделайте коммит и отправьте код в репозиторий + +Последний шаг - это создание коммита, который следовал бы правилам из [Соглашения о коммитах](https://www.conventionalcommits.org/ru/v1.0.0/). + +Наконец, отправьте свою работу в удаленный репозиторий с помощью следующей команды: + +```bash + git push --set-upstream origin +``` + +:::tip[Не запоминай команду] +Вам не нужно запоминать команду в точности. Нужно просто запомнить `git push`, и если вы впервые загружаете эту ветку в репозиторий, `git` подскажет вам полную команду. +::: + +## Отправьте свое решение в основной репозиторий + +Теперь все ваше решение находится в вашем экземпляре репозитория Angular Challenges. + +Следующий шаг - перейдите на главную страницу [Angular Challenges](https://github.com/tomalaforge/angular-challenges) и создайте новый запрос на слитие (Pull Request). + +Github должен показать уведомление, чтобы помочь вам создать pull request. + +Если этого не случилось, то вы либо неправильно выполнили один из предыдущих шагов, либо вам нужно перейти на вкладку Pull Request и нажать кнопку New pull request. + +После того как вы выберете две ветки для сравнения, вы попадете на следующую страницу: + +![New pull request screen](../../../../assets/new-pull-request.png) + +В заголовке напишите Answer:, затем номер вашего испытания. После этого можете добавить все, что пожелаете. + +:::danger[Опасно] +Порядковый номер очень важен. Он позволит другим узнать, какое испытание вы пытаетесь решить. +::: + +В разделе описания вы можете добавить вопросы, проблемы, с которыми столкнулись, или все остальное, чем захотите поделиться. Если нечего написать, можете оставить этот раздел пустым. + +Теперь вы можете нажать на кнопку Create pull request. + +Я прочитаю и проведу ревью вашего решения, когда у меня будет свободное время. + +

Не переживайте если я не прокомментировал ваше решение сразу же. Я делаю это бесплатно в свое свободное время. Если вы хотите меня поддержать, вы можете это сделать с помощью поддержать на github. Это покажет, что моя работа полезна для вас или вашей команды.

+ +:::note[Примечание] +Все желающие могут оставлять комментарии и читать другие PR. +::: + +:::tip[OSS чемпион] +🔥 После того как вы пройдете это руководство, вы сможете внести свой вклад в любой другой публичный репозиторий на Github. Да, это настолько просто.🔥 +::: diff --git a/docs/src/content/docs/ru/index.mdx b/docs/src/content/docs/ru/index.mdx new file mode 100644 index 000000000..f95ea5873 --- /dev/null +++ b/docs/src/content/docs/ru/index.mdx @@ -0,0 +1,79 @@ +--- +title: Добро пожаловать в испытания Angular +description: Начните с прохождения этих испытаний и прокачайтесь как Angular разработчик. +template: splash +noCommentSection: true +hero: + tagline: Начните сейчас и станьте экспертом Angular! + image: + file: ../../../assets/angular-challenge.webp + actions: + - text: Начать + link: /ru/guides/getting-started/ + icon: right-arrow + variant: primary + - text: Перейти к последней задаче + link: /ru/challenges/angular/39-injection-token/ + icon: rocket + - text: Добавить звезду + link: https://github.com/tomalaforge/angular-challenges + icon: github + variant: secondary +--- + +import { Card, CardGrid } from '@astrojs/starlight/components'; +import MyIcon from '../../../components/MyIcon.astro'; + + + + Этот репозиторий содержит 43 испытания, связанных с Angular, Nx, RxJS, Ngrx and Typescript. + Испытания основаны на реальных задачах или инструментах для того, чтобы прокачать вас. + + + + Одна из целей этого репозитория снизить барьер для разработки + открытого программного обеспечения (OSS). Решив эти задачи, вы поймете, + как начать вносить свой вклад в любой другой проект с открытым исходным кодом. + + + + Изучение и использование нового фреймворка всегда сопряжено с трудностями. + В этом наборе испытаний содержатся реальные примеры задач, чтобы закрепить на практике то, чему вы научились. + Любой может оставить комментарий или предложить помощь. + + Учиться одному - здорово, но обучение вместе с другими поможет вам добиться большего. + + + + + У вас есть идея или интересный баг? Не стесняйтесь;{' '} + Создавайте свои собственные испытания не теряя времени. + + + + Прохождение этих испытаний подготовит вас к техническим задачам, с которыми вы + можете столкнуться во время собеседований на позицию фронтенд-разработчика. + + + + Это бесплатный проект, и он будет оставаться таковым как можно дольше. + Однако вся работа ведется в мое свободное время, включая создание новых испытаний и ревью их решений(PRs). + Спонсорство может поддержать меня и способствовать развитию проекта. + + + + +--- + + + + diff --git a/docs/src/content/i18n/ru.json b/docs/src/content/i18n/ru.json new file mode 100644 index 000000000..3974f45a5 --- /dev/null +++ b/docs/src/content/i18n/ru.json @@ -0,0 +1,22 @@ +{ + "page.title.challenge": "Испытание", + "author.createdBy": "Создано", + "buttons.star": "Дать звезду", + "buttons.sponsor": "Спонсор", + + "404.text": "Страница не найдена. Проверьте URL-адрес или воспользуйтесь строкой поиска.", + + "challenge.footer": { + "note": "Примечание", + "running": "Запустите проект, выполнив команду:", + "start": "Название вашего PR должно начинаться со слов", + "reminder": "Не забудьте", + "communityAnswers": "Решения сообщества", + "authorAnswer": "Решение автора", + "blogPost": "Статья", + "gettingStarted": { + "title": "Чтобы пройти это испытание, прочитайте:", + "link": "Первые шаги" + } + } +}