freeCodeCamp/docs/i18n/Russian/how-to-work-on-coding-chall...

541 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Как работать над вызовами кодирования
Наша цель состоит в том, чтобы развить интересный и понятный опыт интерактивного обучения.
Проектирование интерактивных задач кодирования является сложным делом. Было бы намного проще написать длительное объяснение или создать видео учебник, и есть место для тех, кто находится на Средней и YouTube. Тем не менее, для нашей основной учебной программы мы придерживаемся того, что работает лучше всего для большинства людей - полностью интерактивный опыт в видеоигре.
Мы хотим, чтобы лагеря достигли состояния потока. Мы хотим, чтобы они придали импульс и проникли через нашу учебную программу с как можно меньшим количеством змей. Мы хотим, чтобы они с уверенностью участвовали в проектах и пользовались широкими возможностями программирования.
Создание этих вызовов требует огромного творческого потенциала и внимания к деталям. Достаточно много помощи. Вы будете получать поддержку со стороны целого коллектива участников, которым вы можете отказаться от идей и демо своих испытаний. Оставайтесь активными в [комнате участников](https://gitter.im/freecodecamp/contributors) и задайте много вопросов.
С вашей помощью мы можем разработать интерактивный учебный план, который поможет миллионам людей научиться программировать в течение многих лет.
Контент для каждого испытания хранится в собственном файле markdown. Этот файл markdown позже преобразуется в HTML, используя наши инструменты для создания интерактивных веб-страниц.
Все содержимое учебника свободно CodeCamp.org можно найти в каталоге [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges).
## Настройка инструментария для учебной программы
Прежде чем работать в учебном плане, вам нужно будет создать инструмент, который поможет вам проверить изменения. Вы можете использовать любую опцию из нижеперечисленных вариантов:
- Вы можете [настроить freeCodeCamp локально](how-to-setup-freecodecamp-locally.md). Это **настоятельно рекомендуется** для регулярных/повторных взносов. Эта настройка позволяет вам работать и тестировать изменения.
- Используйте Gitpod, бесплатную среду онлайн dev. Нажав на кнопку ниже, вы запустите готовое к коду окружение для свободного CodeCamp в вашем браузере. Это занимает всего несколько минут.
[![Открыть в Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
- Отредактируйте файлы на интерфейсе GitHub, нажав на значок карандаша для соответствующего файла. Хотя это самый быстрый способ, он **не рекомендуется**, потому что вы не можете проверить ваши изменения на GitHub. Если наши сопровождающие приходят к выводу, что изменения, внесенные вами, должны быть протестированы локально, то вам нужно будет следовать вышеуказанным методам снова.
## Шаблон вызова
Ниже приведен шаблон того, как выглядят файлы markdown вызова. Чтобы увидеть упорядоченный шаблон, мы примем его на [ниже](#upcoming-challenge-template).
````md
---
id: Уникальный идентификатор (буквенно-цифровый, MongoDB_id)
title: Challenge Title
challengeType: 0
videoUrl: 'url of video explanation'
---
## Описание
<section id='description'>
Описание вызова и что необходимо для прохождения
</section>
## Инструкции
<section id='instructions'>
Инструкции о том, что именно нужно сделать.
</section>
## Тесты
<section id='tests'>
```yml
tests:
- текст: Должен возвращать "foo"
тестовая строка: "Строковая функция, возможно использование Chai asserts"
````
</section>
## Семена вызова
<section id='challengeSeed'>
<div id='{ext}-seed'>
```{ext}
код, отображаемый в редакторе по умолчанию.
Это необходимый раздел для вызова.
```
</div>
### Перед тестом
<div id='{ext}-setup'>
```{ext}
Optional Test tear down code.
```
</div>
### После теста
<div id='{ext}-teardown'>
```{ext}
Дополнительный тестовый код.
```
</div>
</section>
## Решение
<section id='solution'>
```{ext}
// требуется решение
```
</section>
````
> [!ПРИМЕЧАНИЕ]
>
> 1. В вышеуказанных разделах примеры `{ext}`:
>
> - `html` - HTML/CSS
> - `js` - JavaScript
> - `jsx` - JSX
>
> 2. Для раздела `Tests` выше `text` и `testString` должны быть действительными YAML строками. `testString` может быть строчной функцией или выражением, с помощью которого можно утверждать Chai.
## Многочисленные вызовы
Каждое испытание требует `id`. Если вы не указали один, то MongoDB создаст новый случайный тип при сохранении данных; Однако, мы не хотим, чтобы это делали, поскольку мы хотим, чтобы идентификаторы вызовов были последовательными в различных средах (поэтапно, , много различных разработчиков и т.п.).
Чтобы сгенерировать новый в оболочке (предполагая, что MongoDB работает отдельно):
1. Запустите команду «mongo».
2. Запустите команду `ObjectId()`.
Например:
```bash
$ mongo
Оболочка MongoDB версии v3.6.1
подключающаяся к mongodb://127.0.0.1:27017
MongoDB сервер версия: 3.4.10
...
$ ObjectId()
ObjectId("5a474d78df58bafeb3535d34")
````
Результатом является новая помощь, например `5a474d78df58bafeb35d34` выше.
После того, как у вас есть свой идентификатор, поместите его в файл markdown в качестве идентификатора `в верхней части` , напр.
```yml
---
id: 5a474d78df58bafeb35d34
title: Challenge Title
```
## Задачи в области именования
Тяжелое назование. Мы сделали это проще, введя некоторые ограничения.
Все названия заданий должны быть явными и следовать этой схеме:
\[verb\]\[положение объекта\]
Вот несколько примеров названий вызовов:
- Используйте нотацию по часовой стрелке для указания отступа элемента
- Конденсирующие массивы с .reduce
- Используйте нотации скобки, чтобы найти первый символ в строке
## Описания/инструкции для вызова
Приговоры должны быть четкими и краткими с минимальным жаргоном. If used, jargon should be immediately defined in plain English.
Коротко хранить абзацы (около 1-4 предложений). Люди чаще читают несколько коротких абзацев, чем стенка текста.
Текст вызова должен использовать второго человека ("вы"), чтобы помочь ему разговорный звук. Таким образом текст и инструкции, как представляется, непосредственно говорят в кампере, работая с этой проблемой. Постарайтесь не использовать первого человека ("Я", "мы", "да" и "нас").
Не использовать исходящие ссылки. Они прерывают поток. В ходе этих вызовов лагерям никогда не придется ничего делать в Google. Если есть ресурсы, которые вы считаете, что лагеря выиграют от них, добавьте их в статью, посвященную руководству по вызову.
Вы можете добавить диаграммы в случае крайней необходимости.
Не используйте эмодзи или смайлики в испытаниях. Free CodeCamp имеет глобальное сообщество, и культурное значение эмодзи или эмоций может быть различным по всему миру. Также, emojis может показаться по-разному на разных системах.
Надлежащие существительные должны использовать правильную заглавную букву, когда это возможно. Ниже приведен список слов, которые должны появиться в вызовах.
- JavaScript (заглавные буквы в "J" и "S" и без аббревиатур)
- Node.js
- Разработка фронт-энда (прилагательное форма с тире) - это когда вы работаете на передней части (существительная форма без тире). То же самое относится и к "обратно конца", "полный стек", и многие другие составные термины.
### 2-минутное правило
Каждый вызов должен быть разрешен в течение 120 секунд родным англичанином, который завершил задания перед ним. Это включает в себя время, необходимое для прочтения направлений/инструкций для понимания кода сиденья, Напишите свой собственный код и получите все тесты для прохождения.
Если для завершения испытания потребуется более двух минут, у вас есть два варианта:
- Упростить вызов, или
- Разделить задачу на два вызова.
2-минутное правило вынуждает вас, дизайнер вызовов, чтобы сделать ваши указания четкими, ваш seed код и ваши тесты прямо вперед.
Мы отслеживаем, сколько времени требуется для решения изменений и использования этой информации для определения задач, которые необходимо упростить или разбить.
### Модульность
Каждое задание должно обучать именно одному понятию, и это понятие должно быть видно из названия вызова.
Мы можем укрепить ранее покрытые концепции путем повторения и вариаций - например, вносит h1 элементы в один вызов, затем h3 элементы позже.
Наша цель состоит в том, чтобы иметь тысячи 2-минутных испытаний. Они могут объединять усилия и повторять ранее охваченные концепции.
### Форматирование вызова
Ниже приведены конкретные руководящие принципы для форматирования текста и примеров:
- Ключевые слова языка находятся в тегах `<code>`. Например, имена тегов HTML или имена свойств CSS
- Первый экземпляр ключевого слова при его определении или общие ключевые слова (т.е. "object" или "immutable") находятся в `<dfn>` тегов
- Ссылки на части кода (т.е. функция, метод или имена переменных) должны быть завернуты в `<code>` тегов. Пример ниже:
- Используйте <code>parseInt</code> для преобразования переменной <code>realNumber</code> в целое число.
- Блоки многострочного кода **должны предшествовать пустой строкой**. Следующая строка должна начинаться с трех backtick'ов, за которыми следует немедленно один из [поддерживаемых языков](https://prismjs.com/#supported-languages). Чтобы заполнить блок кода, вы должны начать новую строку, в которой есть только три backticks и **еще одна пустая строка**. **Примечание:** Если вы собираетесь использовать код примера в YAML, используйте `yaml` вместо `yml` для языка справа от обратной связи.
Пример ниже:
````md
Ниже приведен пример кода:
```{language}
[ВАШ КОД ЗДЕСЬ]
````
````
- Дополнительная информация в виде заметки должна быть отформатирована `<strong>Примечание:</strong> Отказ от текста заметки... - При необходимости нескольких заметок, затем перечислите все заметки в отдельных предложениях, используя формат `<strong>Примечания:</strong> Текст первой заметки. Второй текст заметки.
- Используйте двойные кавычки, где это применимо
## Письменные тесты
Испытания должны иметь минимальное количество тестов, необходимых для проверки понимания кемпером.
Наша цель заключается в том, чтобы сообщить единую точку, которую задача пытается преподавать, и проверить, что они поняли этот момент.
Тестирование вызовов может использовать библиотеки для установки Node.js и Chai.js. Также, при необходимости, к переменной `code` можно получить доступ созданный пользователем код.
## Форматирование кода seed seed
Ниже приведены конкретные рекомендации по форматированию кода seed задания:
- Используйте два пробела для отступа
- JavaScript операторы заканчиваются точкой с точкой с запятой
- используйте двойные кавычки, где это применимо
- Произведенные комментарии должны иметь пробел между символами комментария и самими комментариями
`// Исправьте эту строку`
## Подсказки и решения
Каждое задание имеет кнопку `Получить Hint`, , чтобы пользователь мог получить доступ к любым подсказкам/решениям, которые были созданы для вызова. Подсказки по учебному плану/темы находятся на [нашем форуме](https://forum.freecodecamp.org/c/guide) в категории `Guide`.
Если вы нашли проблему с подсказками или решениями вызова, вы можете внести предложения в [категорию участников](https://forum.freecodecamp.org/c/contributors) на форуме. Модераторы и пользователи с уровнем доверия 3 рассмотрят комментарии и решат, включить ли изменения в соответствующую тему подсказки/решения.
### Добавление новых подсказок/тем решений
Пройдите следующие шаги при добавлении новых подсказок/связанных с решениями темы.
1. Начните с тех же шагов для создания новой темы, но оставьте отзыв о следующей для создания заголовка.
2. Название темы должно начинаться с `freeCodeCamp Challenge Guide: `, совпадающий с фактическим названием учебного задания. Например, если вызов называется "`Chunky Monkey`", название темы будет "`freeCodeCamp Challenge Guide: Chunky Monkey`".
3. `camperbot` должен быть владельцем этих тем/записей, поэтому вам нужно будет запросить администратора для смены владельца основного сообщения на `camperbot`.
4. После создания новой темы создается ID темы форума. Она находится в конце URL темы форума. Этот идентификатор должен быть добавлен на первый план файла задания в учебном плане через нормальный процесс запроса на слияние для кнопки `Получить хинт` для связи с темой.
### Руководящие принципы для содержания подсказок и тем решений
При предложении решения для задания учебного плана с темой Руководства, необходимо добавить полный код. Это включает в себя все исходные коды семенного кода, а также любые изменения, необходимые для прохождения всех испытательных испытаний. Следующий шаблон должен использоваться при создании новых подсказок/тем решений:
``md
# Вызовите Имя Здесь
---
## Пояснение проблемы
Таким образом, что нужно сделать без повторного описания задачи и/или инструкций. Это опциональная секция
#### Связанные ссылки
- [Текст ссылки](link_url_goes_here)
- [Текст ссылки](link_url_goes_here)
---
## Подсказки
### Подсказка 1
Подсказка идет
### Подсказка 2
Подсказка идет
---
## Разрешения
<details><summary>Решение 1 (Нажмите, чтобы Показать/Скрыть)</summary>
```js
function myFunc() {
консоль. og('Привет мир!');
}
````
#### Объяснение кода
- Здесь пояснение кода
- Здесь пояснение кода
#### Соответствующие ссылки
- [Текст ссылки](link_url_goes_here)
- [Текст ссылки](link_url_goes_here)
</details>
````
## Испытания на тестирование
Прежде чем вы [создаете запрос на слияние](how-to-open-a-pull-request. г) для ваших изменений, вы должны подтвердить, что внесенные вами изменения не случайно вызывают проблем с вызовом.
1. Чтобы проверить все вызовы, запустите команду ниже из корневого каталога
````
тест npm:curriculum
```
2. Вы также можете протестировать блок или суперблок испытаний с помощью этих команд
```
npm запустить тест:учебный план --block='Основы HTML и HTML5'
```
```
npm запуск test:curriculum --superblock=отзывчивый web-дизайн
```
Вы также можете самостоятельно протестировать одно испытание, выполнив следующие шаги:
1. Переключиться на папку «Учебный план»:
```
cd учебный план
```
2. Выполните следующие действия для каждого файла вызова, для которого вы изменили:
```
тест npm -- -g 'полный английский заголовок вызова'
```
Как только вы подтвердили, что каждое испытание, которое вы проработали при прохождении тестов, [пожалуйста, создайте запрос на слияние](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md).
> [!TIP]
> Вы можете установить переменную окружения `LOCALE` в `.env` на язык испытания, который необходимо проверить.
>
> Принятые значения являются `english` и `chinese`, а `english` устанавливается по умолчанию.
## Шаблон предстоящего вызова
Шаблон испытания в процессе обновления до более чистой и менее вложенной структуры. Это не было полностью завершено, но следующие должны быть близки к окончательной структуре:
``mdx
---
id: Уникальный идентификатор (буквенно-цифровый, MongoDB_id)
title: 'Challenge Title'
challengeType: Integer, defined in `client/utils/challengeTypes. s`
videoUrl: 'url of video explanation'
forumTopicId: 12345
---
import Script from './script. dx';
## --step-description--
Текст описания, в markdown
```html
<div>
пример кода
</div>
```
## --step-hints--
![test-id-1]
Имеется произвольное количество трофеев идентификаторов, инструкций (в markdown) и блоков кода.
```js
Код для теста
```
![test-id-2]
Больше инструкций в синтаксисе markdown
```js
Больше кода
```
## --step-seed--
### --pre-user-код--
```lang
Код вычисляется перед пользователем
```
### --after-user-код--
```lang
Код оценивается после пользователей, и перед тестами
```
### --seed-содержимое--
![index-html]
```html
Некоторые html
```
```css
Некоторые css
```
```js
Некоторые js
```
![index-js]
<Script ></p>
<h1 spaces-before="0">
--solution-marker--
</h1>
<p spaces-before="0">
Точно так же, как семена
</p>
<h2 spaces-before="0">
--next-solution-маркер
</h2>
<p spaces-before="0">
То же самое
</p>
<h1 spaces-before="0">
--question-marker--
</h1>
<h2 spaces-before="0">
--text-marker--
</h2>
<p spaces-before="0">
Вопрос будет здесь (используется только для видеоиспытаний)
</p>
<h2 spaces-before="0">
--answers-маркера--
</h2>
<p spaces-before="0">
Ответ 1
</p>
<hr />
<p spaces-before="0">
Ответ 2
</p>
<hr />
<p spaces-before="0">
Ответ 2
</p>
<h2 spaces-before="0">
--solution-marker--
</h2>
<p spaces-before="0">
\<number of correct answer\>
</p>
<p spaces-before="0">
````
</p>
<h3 spaces-before="0">
Полезные ссылки
</h3>
<p spaces-before="0">
Создание и редактирование вызовов:
</p>
<ol start="1">
<li>
<p spaces-before="0">
<a href="https://github.com/freeCodeCamp/freeCodeCamp/blob/master/client/utils/challengeTypes.js#L1-L13">типы вызовов</a> - что означает числовый тип задания (перечислить).
</p>
</li>
<li>
<p spaces-before="0">
<a href="https://www.youtube.com/watch?v=iOdD84OSfAE#t=2h49m55s">Вклад в FreeCodeCamp - написание ES6 испытаний</a> - видео, следующего за <a href="https://twitter.com/ArrowoodTech">Ethan Arrowood</a> , поскольку он вносит вклад в старую версию учебного плана.
</p>
</li>
</ol>