Проектная лаборатория
Собственный BitTorrent
Этап 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 go2. Откройте папку в IDE
cd ./my-bittorrentРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage jv8Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.