Начало работы с ada-judge
ada-judge – это совершенно новая платформа для проведения соревнований по программированию, написанная на языке Rust. Она не зависит от сторонних сервисов, таких как Codeforces Polygon, и является полностью самостоятельной. Основной функционал ada-judge включает:
- Создание контестов в формате IOI
- Создание задач, в том числе интерактивных и с двойным запуском
- Тестирование посылок на языках Rust, C++, C и Go с изолированным запуском решений
- Администрирование контестов, задач и пользователей
Развёртывание
Для того, чтобы развернуть ada-judge на своём сервере, необходимы docker и git.
- Склонируйте основной
git-репозиторийada-judge:
Или зеркало (оно обновляется раз в 8 часов):git clone https://codeberg.org/oneprog/ada-judgegit clone https://github.com/OneProgGit/ada-judge - Перейдите в директорию со склонированным репозиторием и создайте там конфигурационный файл
.env, заполните его в следующем формате:# Данные PostgreSQL POSTGRES_USER= POSTGRES_PASSWORD= POSTGRES_DB= # Данные Redis REDIS_PASSWORD= REDIS_USER= REDIS_USER_PASSWORD= # Параметры JWT JWT_SECRET= JWT_EXP_HOURS= # Имя контейнера песочницы `submissions-judger` SANDBOX_IMAGE=sandbox # Количество параллельных инвокеров WORKERS_COUNT= - Создайте директорию
submissions_envs, где будут храниться посылки. - Соберите и запустите
ada-judge:docker-compose build; docker-compose up -d ada-judgeготов к использованию!
ada-judge-app
ada-judge-app – это нативное GUI-приложение для ada-judge, доступное для Linux, Mac и Windows. Есть два способа его установки:
- Готовые бинарники. Самый простой способ, но обновления поступают реже, а также недоступны некоторые платформы, такие как Windows/Linux ARM.
- Через
cargo. В этом случае компиляция будет происходить на вашем устройстве. Для этого способа необходим тулчейнRustверсии 1.97.0 и новее. Выполните в терминале команду:cargo install ada-judge-app
ada-judge-cli
ada-judge-cli – это терминальное приложение, созданное для упрощения создания задач. Для установки необходим тулчейн Rust версии 1.97.0 и новее. Выполните в терминале команду:
cargo install ada-judge-cli
Регистрация
Самый простой способ создать аккаунт ada-judge – использовать ada-judge-app.
- Откройте его:
ada-judge-app - Нажмите
создать аккаунт >>: - Заполните поля и нажмите
создать аккаунт >>: - Чтобы получить права владельца, необходимо, находясь в директории с репозиторием, выполнить:
> docker-compose exec -t postgres bash > psql -U <пользователь PostgreSQL> -d <база данных PostgreSQL> > update users set admin_level='owner' where id = <ваш id>; UPDATE 1
Создание контестов
Для того, чтобы создать контест, в ada-judge-app нужно:
- Нажать на кнопку
создать +на главной странице: - В появившемся окне заполнить нужные поля и нажать
создать +:
Создание задач
ada-judge позволяет создавать задачи удобно и быстро, сочетая ada-judge-cli и ada-judge-app.
Шаги с CLI
- Перейдите в директорию, где будут лежать ваши задачи
- Создайте шаблон задачи:
ada-judge-cli problem ./<название задачи> prepare - Типичная структура задачи такая:
├── checker ├── config.toml └── tests ├── <тест> │ ├── in # входные данные теста │ └── out # выходные данные теста - Отредактируйте
config.tomlв следующем формате:name = "<название задачи>" type = "<тип задачи>" # default -- обычная задача, interactive -- интерактивная, run_twice -- с двойным запуском contest_id = <id контеста> problem_index = <индекс задачи в контеста, начиная с 0> time_limit_ms = <лимит по времени, мс> memory_limit_mb = <лимит по памяти, МБ> checker_path = "<путь до бинарника чекера>" tests_path = "<путь до директории с тестами>" # Подгруппы [[subgroups]] type = "<тип подгруппы>" # sample -- примеры, main - основная tests = [<тесты подгруппы>] score = <баллы за подгруппу> depends_on = [<индексы подгрупп, прохождение которых требуется для тестирование на этой подгруппе, начиная с 0 в порядке их следования в файле конфига>] - Можно добавить тесты к задаче:
ada-judge-cli problem <название задачи> insert-tests <начиная с> <заканчивая на, включительно> - Можно протестировать решение на тестах:
ada-judge-cli problem <название задачи> run <путь к бинарнику решения> <начиная с> <заканчивая на, включительно> - Архивируйте задачу:
ada-judge-cli problem <название задачи> zip
Шаги с GUI
- Откройте вкладку
Задачи: - Нажмите
выбрать задачу для добавления...: - Выберите архив задачи
- Нажмите
+ создать задачу