Проектная лаборатория

Собственный BitTorrent

0 / 19этапов пройдено

Этап 11 · Основные этапы

Скачивание всего файла

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы скачаете весь файл и сохраните его на диск.

Для начала можно скачать все фрагменты у одного пира. Нужно скачать каждый фрагмент, проверить его целостность по хешу и объединить фрагменты в файл.

Тесты

Тестирующая система запустит вашу программу следующим образом:

$ ./your_program.sh download -o /tmp/test.txt sample.torrent

Она проверит, что файл скачан правильно.

Необязательно: для ускорения можно скачивать данные у нескольких пиров одновременно. Например, заведите очередь задач из фрагментов, которые нужно скачать. Обработчик (соединение с пиром) может брать фрагмент из очереди, пытаться скачать его, проверять целостность и записывать скачанный фрагмент в буфер. При любой ошибке — проблеме с сетью, несовпадении хешей, отсутствии фрагмента у пира и т. п. — возвращайте фрагмент в очередь для повторной попытки.

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init bittorrent ./my-bittorrent --language go

2. Откройте папку в IDE

cd ./my-bittorrent

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage jv8

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста