Рабочий стол > DL Руководство пользователя > ... > Вспомогательные средства установки задач по программированию > Установка интерактивных задач NEERC (Питер) > Information > Сравнить страницу
Установка интерактивных задач NEERC (Питер) Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Ключ
Эти линии были удалены. Это слово было удалено.
Эти линии были добавлены. Это слово было добавлено.

Просмотр истории страницы


Есть 3 изменений. Просмотреть первое изменение .

 h1. Установка интерактивных задач NEERC
  
 В этом году на NEERC начали cтавить интерактивные задачи с тестированием на Java. Эти задачи удалось поставить на DL; здесь задокументирован процесс установки.
  
 Jan 2014. Автоматически обнаруживаются и установливаются задачи данного типа при загрузке DL Master'ом.
  Jan 2014. Автоматически обнаруживаются и устанавливаются задачи данного типа при загрузке DL Master'ом.
  
 h2. Содержание
  
 [Описание системы|#NEERC]
 [Слой совместимости для DL|#DL]
 [Процесс установки|#setup]
 [#TODO]
  
 h2. {anchor:NEERC}Описание системы
  
 В папке с задачей есть следующие файлы:
 - {{problem.xml}} (файл конфигурации)
 - {{Interact.jar}} (программа-собеседник) + исходники
 - {{coact.exe}} (программа-тестер)
 - {{Check.jar}} (программа-чекер) + исходники
  
 В {{problem.xml}} (файл конфигурации) есть тег {{<interactor type="%simple">}}. В нём указан файл программы-собеседника ({{Interact.jar}}) и способ запуска ({{Java7}}).
  
 {{Interact.jar}} \- программа-собеседник (читает {{<taskname>.in}}, даёт вывод для решения, получает ввод для него же и выводит информацию о процессе тестирования в {{<taskname>.out}}).
  
 {{coact.exe}} запускается со следующими параметрами:
 {code}
 coact.exe <timelimit(seconds)> <memlimit(bytes)> <interactor> <solution>
 {code}
 Например:
 {code}
 coact.exe 2s 268435456 interact.exe sol.exe
 {code}
 При этом он умеет обрабатывать кавычки в параметрах:
 {code}
 coact.exe 2s 268435456 "java -jar Interact.jar" sol.exe
 {code}
 {{Check.jar}} \- реализация класса чекера для библиотеки {{testlib4j.jar}}. Он запускается следующей командой:
 {code}
 java -cp "<путь>testlib4j.jar;Check.jar" ru.ifmo.testlib.CheckerFramework Check <infile> <chkfile> <outfile>
 {code}
 Он читает {{<taskname>.out}}, генерирует комментарий и завершает работу; результат он возвращает кодом выполнения:
 * 0: OK
 * 1: Wrong Answer
 * 2: Presentation Error
  
 h2. {anchor:DL}Слой совместимости для DL
  
 Задача ставится как интерактивная, с чекером, все файлы забираются с собой:
 {code:title=task.cfg}
 CHECKER = 1
 CHECKSUBJECT = FILE
 CHECKFILES = {*.*}
 TYPE = INTERACTIVE
 {code}
 Для запуска {{coact.exe}} был написан скрипт {{coact.bat}} с одним параметром (скомпилированный файл решения). В [{{StdSwp}}|http://dl.gsu.by/images/agulenko/stdswp.zip] был добавлен код, передающий управление этому скрипту при его наличии; также добавлен код, обнаруживающий файл {{solution.bat}} и передающий его первую непустую строку как команду запуска решения (файл генерируется при компиляции Java-решений). Поскольку ограничение по времени проверяет {{coact.exe}}, оно же для {{StdSwp}} повышено:
 {code:title=task.cfg}
 TIME_LIMIT = 5
 {code}
 На данный момент TIME_LIMIT вычисляется как ограничение задачи + 3 секунды.
  
 Для обработки чекера был написан вспомогательный чекер [{{InteractChecker.jar}}|http://dl.gsu.by/images/agulenko/neerc/InteractChecker.jar] ([исходники|http://dl.gsu.by/images/agulenko/neerc/InteractChecker-src.rar]), запускаемый с помощью скрипта {{checker.bat}} (из-за особенностей Delta пришлось дописать [{{checker.exe}}|http://dl.gsu.by/images/agulenko/neerc/checker.pas], просто вызывающий этот скрипт).
  
 h2. {anchor:setup}Процесс установки
  
 * Убираем все посторонние файлы из корня задачи, в первую очередь авторские решения и скомпилированные из них экзешники.
** Для переноса в подпапку {{old/}} можно запускать команду вроде
 {code}
 move *.exe *.cpp *.pas *.py *.java old/
 {code}
 ** В корне нужно оставить (или вернуть после переноса) следующие файлы:
 {code}
 coact.exe
 checker.exe
 {code}
 * Устанавливаем слой совместимости с DL
 ** Копируем файлы из [{{release.rar}}|http://dl.gsu.by/images/agulenko/neerc/release.rar] в папку с задачей
 ** Добавляем в начало {{task.cfg}} следующие строки:
 {code:title=task.cfg}
 CHECKER = 1
 CHECKSUBJECT = FILE
 CHECKFILES = {*.*}
 TYPE = INTERACTIVE
 {code}
 ** Меняем {{TIME_LIMIT}} в {{task.cfg}}; ставим ограничения в {{coact.bat}}
 * Тестируем
 ** Пробуем отсылать авторские решения на {{Pascal}}/{{C+\+}}/{{Java}}
 *** При наличии непонятных проблем проверить папку установленной задачи на наличие посторонних файлов (в частности, {{*.exe}})
  
 h2. {anchor:TODO}TODO
  
 * Интерфейс:
 ** Изменить отображаемое ограничение по времени (значение в {{task.cfg}} больше фактического)
 * Тестирование:
 ** прикрутить тестирование решений на Java (прежде всего авторских):
 *** добавил в скрипты компиляции Java генерацию {{solution.bat}}, в {{stdswp}} -- передачу его содержимого как команды запуска решения
 **** разнести изменения файлов {{compile_java?.cmd}} и {{stdswp.exe}} по машинам (нету на Nit5)
 ** установить Java 7 на сервер тестирования (нету на Nit и Nit3)
 *** или можно портировать {{Interact}} и {{Check}} под Java 6:
 **** копируем файлы из [{{prepare.rar}}|http://dl.gsu.by/images/agulenko/neerc/prepare.rar] в папку с задачей
 **** запускаем {{prepare.bat}}
 **** при наличии ошибок компиляции правим код в указанных местах и снова запускаем {{prepare.bat}}
 **** удаляем содержимое {{prepare.rar}} из папки с задачей
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами