Что такое daysper
Последняя правка 3791 день назад
Материал из Daysper manual
Перейти к навигации
Перейти к поиску
Реклама daysper[править | править код]
Режиссер: Я не понял, а это зачем все надо?
Пом.реж.: О! Эта система имеет множество преимуществ перед старой организацией процесса.
Daysper — это кроссплатформенная замена t.cmd. Точнее, даже весьма продвинутая замена.
Если вы готовите задачи для олимпиад по программированию, вам обычно надо автоматизировать множество действий: как минимум, генерацию тестов, ответов на них и проверку собственных решений. Для этого вы можете каждый раз писать батнички, можете использовать какую-нибудь систему поддержки задач типа t.cmd, t.sh, Полигон и т.п. Daysper — еще одна подобная система, обладающая рядом особенностей:
- Кроссплатформенность. Daysper (написанный на C++) можно скомпилировать под Windows, можно под Linux, работать он будет одинаково. С задачей, подготовленной под daysper, можно работать под обеими системами ничего не переделывая (конечно, в пределах переносимости генераторов тестов, решений и т.п.).
- Трансляция в скрипты. Любые действия с файлами daysper выполняет так: сначала создается скрипт (cmd или sh, в зависимости от ОС) для выполнения необходимых действий, потом это скрипт запускается. Скрипт уже не требует наличия daysper'а.
- Экспортирование задач. Как следствие предыдущего пункта, daysper может создать в задаче скрипты генерации (и очистки), после чего тесты можно будет генерировать без daysper. Благодаря этому вы можете дать задачу кому-нибудь, у кого нет daysper'а, и он сможет хоть как-то с ней работать (см. команду daysper export).
- Ручные answer-файлы. Answer-файлы к тестам могут создаваться как с помощью эталонных решений, так и "вручную" (например, к ручным тестам могут быть предусмотрены ручные ответы); последние не будут зависеть от эталонного решения вообще.
- Поддержка валидаторов. К каждой задаче может быть написан валидатор, который будет автоматически использован для проверки корректности тестов.
- Специальный язык для генерации тестов. Скрипт генерации тестов пишется на простом специальном языке и не требует указания стандартных действий типа указания конкретной строки для компиляции, написания кода для валидации тестов и генерации ответов.
- Абстрагирование от номеров тестов. В скрипте генерации нигде не указываются конкретные имена файлов с тестами и answer-файлами (а используются шаблоны имен). Благодаря этому изменить систему наименования тестов (например, с 01/01.a на input.001/answer.001) можно очень легко.
- Тестсеты. По каждой задаче может быть подготовлено несколько наборов тестов (тестсетов), которые при генерации можно конкатенировать в любом порядке. Благодаря этому, например, тесты их условия можно выделить в отдельный тестсет и далее либо использовать их, либо нет.
- Работа в отдельном каталоге. Все действия (генерацию тестов, проверку решений и т.д.) daysper выполняет в подкаталоге work каталога задачи, предварительно скопировав туда все необходимые файлы. Благодаря этому уменьшается риск затереть или случайно удалить генераторы тестов, ручные тесты и т.д.
- Работа с условиями. Daysper умеет автоматически подготавливать к компиляции и компилировать TeX-условия задач. См. TeX в daysper и команды daysper statement и daysper contest statements.
- Автоматическая генерация примеров в условиях задач. Вы можете создать специальный тестсет st, тесты которого daysper может автоматически вставить в условия как пример тестов.
- Контесты. Daysper поддерживает создание контестов, т.е. вы можете указать список задач контеста — и daysper сам сформирует TeX-условия контеста, скомпилирует их, а также подготовит тесты для заливки в тестирующую систему (сейчас поддерживается только ejudge).
- Каталог задачи — обычный каталог. Все файлы, относящиеся к задаче, храняться в отдельном каталоге задачи; для работы с задачей вы можете использовать любые программы (например, можете поместить ее под svn или использовать какие-нибудь внешние программы для обработки сразу нескольких задач).
- daysper легко устанавливается. На самом деле вам надо лишь скопировать исполняемый файл daysper и при необходимости создать или отредактировать файл daysper.ini.
- Настраиваемость. Можно легко изменить строки компиляции для разных языков, формат названий input- и answer-файлов и т.д., для этого не надо копаться в исходниках daysper.
Планы на будущее[править | править код]
В ближайших планах:
- Поддержка run в каком-нибудь виде
- Поддержка трансляции в makefile.